dash/underscore on name of package uploaded on pypi

Terry Reedy tjreedy at udel.edu
Thu Feb 28 16:07:36 EST 2019


On 2/28/2019 11:09 AM, ast wrote:
> Hello
> 
> I just uploaded a package on pypi, whose name is "arith_lib"
> 
> The strange thing is that on pypi the package is renamed "arith-lib"
> The underscore is substitued with a dash
> 
> If we search for this package:
> 
> pip search arith
> 
> arith-lib (2.0.0) - A set of functions for miscellaneous arithmetic
> (so a dash)
> 
> For installation both:
> 
> pip install -U arith_lib
> pip install -U arith-lib
> 
> are working well
> 
> and in both case I got a directory with an underscore
> 
> C:\Program Files\Python36-32\Lib\site-packages
> 
> 28/02/2019  16:57    <REP>          arith_lib
> 28/02/2019  16:57    <REP>          arith_lib-2.0.0.dist-info
> 
> What happens ?

To expand on Paul's answer.

English uses '-' both as a connector for compound names and as a 
subtraction operator.  Context usually makes the choice obvious.  But 
context-free parsers must choose just one, and for computation, 
subtraction wins.  'arith-lib' is parsed as (arith) - (lib).  Many 
algorithm languages use '_' instead of '-' as the compounder for 
identifiers (object names).

In addition,  Python uses filenames -(minus) '.py' as identifiers for 
imported modules.  So if the repository allows '-' in package names, 
installers must convert '-' to '_'.  But if the repository allows 
'arith_lib' and 'arith-lib' to be distinct names for different packages, 
both would be installed with the same file name.  So the repository 
standardizes on one form, and it went with English instead of Pythonese.

-- 
Terry Jan Reedy




More information about the Python-list mailing list