At 08:02 PM 8/4/2011 -0700, Michael wrote:
Forgive me if I ask a stupid question but what characters are
allowed in a project name on PyPI and by Distribute/Setuptools?
Setuptools allows names that have been processed through safe_name.
As such, modifying the safe_name method to recognize undescore breaks pip.
Why are you modifying the safe_name function? If you change it,
it'll no longer be safe. ;-)
Doing "pip install pyramid_beaker" installs the package successfully
however any package tools (i.e pip) report the project as
"pyramid-beaker" and as such becomes unusable name if PyPI is
queried via RPC Interfaces. Trying to turn all the dashes back
underscores breaks packages that have underscores in them (i.e.
sphinxcontrib-programoutput). And if the package were to use both,
it would be impossible to determine what it is without running all
the permutations.
I would appreciate if any one could advise me on this matter and let
me know if this is a bug underscore treatment with
Distribute/Setuptools, pip or PyPI.
It's a PyPI incompatibility - neither the distutils nor PyPI were
originally designed for a world involving automatically-resolved
dependencies, where names needed to be unambiguous. That is, PyPI
and distutils had an implicit assumption that 1) people would choose
reasonable names and 2) be able to handle it when other people didn't.
Setuptools, on the other hand, needs unambiguous naming, and
therefore has a canonicalization algorithm that's designed to work
reasonably well with distutils' file naming conventions. Distutils
normally uses '-' to separate name parts in a filename, and
(sometimes) escapes '-' using '_'. So setuptools canonicalizes all
punctuation to '-', and escapes it as '_'.
Some of PyPI's code has been changed to work with this approach, and
some has not.
[pyramid-beaker does not exist on PyPI, since its pyramid_beaker)
From setuptools POV, the package name is pyramid-beaker, because '_'
is reserved for escaping punctuation in filenames.
If you want to look up a setuptools package name using PyPI XML-RPC,
you can't always use the name directly; you may have to perform a
PyPI search operation to obtain the package's PyPI name first.
_______________________________________________
Distutils-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/distutils-sig