[Python-Dev] [Catalog-sig] egg_info in PyPI

Tarek Ziadé ziade.tarek at gmail.com
Sat Sep 18 16:58:06 CEST 2010


On Sat, Sep 18, 2010 at 4:01 PM, Michael Foord
<fuzzyman at voidspace.org.uk> wrote:
>  Ok, I'm sorry - PEP 345 information is available via the PyPI API. (So
> exposing egg_info would not be promoting it *over* distutils2 but it would
> still be promoting and blessing it).
>
> Tarek's main point still stands though. The dependency information in the
> egg_info is tied to the platform and Python version that the package was
> *built* on. Neither pip nor easy_install use the egg_info to determine this;
> instead they re-generate it to get the correct information for the target
> platform.
>
> So if the use case is to provide dependency information exposing egg_info is
> not the right way to do it - and tools that use it will be using potentially
> (and frequently) inaccurate information. I stand by the point that once we
> start providing this information tools will start using it, and they
> shouldn't be. (So your question "when can tools computing dependencies for
> widely used packages actually expect that these metadata will be available?"
> is not answered by providing access to egg_info.)
>
> This problem (static availability of dependency information) is *exactly*
> the problem PEP 345 solves, so we should be pushing for progress on this
> front (distutils2a1 is already out and distutils2a2 will be out soon).

Sorry to take back the discussion late I was away for a while.

My main concern, like Michael says, is to see PyPI publish some
information that are known to be accurate only on one platform, the
one that is used to create the egg_info. Granted, most of the time the
information is the same no matter what the platform is, but still: you
don't know if this is the case when you read those metadata . The only
way to do it properly is to re-run egg_info.

So, right now Pip and easy_install are running egg_info to re-build
those data before they start the install process. They re-generate the
egg_info every time, and then browse the list of dependencies to get
them.

If you upload the egg_info data at PyPI so people can browse the
dependencies, you basically make the assumption that the egg_info
produced will work no matter what the platform is, unless you
associate with the egg_info the platform that was used.

So, I don't understand what is the benefit here, since a serious
installer will re-run egg_info every time.

Coming from the Plone/buildout community, I would be concerned if
buildout would rely on this. json, ldap, mysql you name it --I have
tons of other examples--  all those dependencies will not be accurate
unless you re-run setup.py egg_info. "Good enough metadata" sounds
completely wrong to me.

Cheers
Tarek

-- 
Tarek Ziadé | http://ziade.org


More information about the Python-Dev mailing list