On 12/09/2011, at 11:01 PM, Tarek Ziadé wrote:
On Mon, Sep 12, 2011 at 10:43 AM, Dylan Jay <[email protected]> wrote:
...
then why not allow a change to parsing of setuptools style
dependencies?
or perhaps point me to the discussion that explains what I'm missing.
Its also been mentioned that in order to make this parsing work you
need to
run setup.py to get the requires.txt for setuptools packages and
this is a
security concern. However many packages already have the egg-info
commend
run before upload so there is no need to run setup.py. For those
packages
where there is a need I think security concerns could be overcome
with the
use of the restrictedpython package. Anything trying to import
anything but
the bare minimum is skipped.
the egg-info produced by setuptools is dependent on the platform it's
run on, so running on the target client is what you need to get the
right values for sure.
true. but I'd guess that 99% of eggs have the same set of requirements
regardless of platform.
And if we had someway to label these requirements on pypi as "dodgy-
setuptools" and should be used only as a hint rather the exact set of
requirements for your particular platform?
with PEP 345-style metadata, you have ways to define static
per-platform metadata.
In fact, one of the goal is to have setup.cfg published at pypi
My interest in this is the idea that we could get distutils2 and/or
zc.buildout to be able to download regular updates of metadata
including
dependencies, then perhaps those tools could avoid certain kinds of
conflict
errors which are a pain to debug without that information. For
instance, the
current design of zc.buildout means that:
Download Bob. Bob 1.0 requires Fred >= 2.0.
Download Fred 3.0
Download Marry. Marry 1.0 requires Fred < 2.5
Conflict error. Marry 1.0 requires Fred < 2.5 but we already have
Fred 3.0.
If instead we knew in advance of this conflict we could have chosen
to
download Fred 2.4 or at least warned the user there was a potential
conflict
and they should pick a compatible version. In the case of
preinstalled
packages, it could offer to downgrade Fred from 3.0 to 2.4.
I think Pip solves this by downloading all dependencies beforehand, no
? and it works for all platforms.
yes it can be solved by downloading all dependencies but you'd have to
download all versions of all dependencies potentially to avoid a
conflict in the worst case.
The bottom line is that spending efforts on adding on server side
platform-specific metadata that are not guaranteed to be accurate for
your target platform, is not worth it since you can already do
something accurate on client side at this time.
see above.
PEP 345 will provide an improvement in the long term since you will be
able to read dependencies, but also the file list, without having to
download the package.
IOW, installers will speed up because they will be able to build
dependency graphs on the fly -- as long as all packages are PEP 345,
which won't happen before a while.
can't wait, but in the meantime I can't see why installers can't use
these hints to speed things up as long as they use it with the caveat
that requirements could potentially differ once actually installed.
Cheers
Tarek
--
Tarek Ziadé | http://ziade.org
_______________________________________________
Catalog-SIG mailing list
[email protected]
http://mail.python.org/mailman/listinfo/catalog-sig