wheel icon indicating copy to clipboard operation
wheel copied to clipboard

Follow PEP 503's normalisation for dist-info folder name and wheel name

Open pradyunsg opened this issue 3 years ago • 6 comments

See https://discuss.python.org/t/revisiting-distribution-name-normalization/12348/ for the long form discussion.

Basically, wheel-generated wheels do not canonicalise name of the dist-info folder to remove . from the name of the folder. This means that packages generated with wheel can have package.name-1.0.0.dist-info instead of package_name-1.0.0.dist-info.

pradyunsg avatar Jan 11 '22 16:01 pradyunsg

This has been discussed at length over at #411.

agronholm avatar Jan 11 '22 16:01 agronholm

I have some local code to address this, but I need to ensure that it can also work with wheels generated by older versions of wheel.

agronholm avatar Jan 11 '22 16:01 agronholm

The discussion on discourse was - at least as I understood it - about what to do for distribution names in wheel filenames. The agreement is to move towards similar normalisation rules everywhere, so not just package_name-1.0.0.dist-info but also package_name-1.0.0-py3-none-any.whl.

takluyver avatar Jan 11 '22 16:01 takluyver

Sure, but there are potential issues which may come up when the same project is packaged by a newer version of wheel and it produces a different file name. I would just like to acknowledge this and start to think about what we can (or cannot) do to "soften the blow".

agronholm avatar Jan 11 '22 16:01 agronholm

I agree with @agronholm - the discussion over on Discourse hasn't yet really addressed transition questions like this (as far as I can recall). I'm not sure what is needed here (maybe it's just something simple like "all tools must be prepared to read non-normalised filenames, which may come from older versions of tools, but must always write normalised forms") but I think we should get consensus so that (a) all tools are behaving the same, and (b) the agreed behaviour gets documented somewhere.

pfmoore avatar Jan 11 '22 16:01 pfmoore

In the spec, the name normalisation based on PEP 503 is a 'should' and we've said that "tools consuming wheels must be prepared to accept . (FULL STOP) and uppercase letters, however, as these were allowed by an earlier version of this specification."

Admittedly there wasn't much discussion about this, but it seems fairly self evident: we've got a rule for how to consistently generate new wheel filenames, but we can't change all the ones already made, so you can't assume that all wheels will have a normalised filename.

takluyver avatar Jan 12 '22 11:01 takluyver

I'm closing this as I'm now working on a proper API in https://github.com/pypa/packaging/pull/805.

agronholm avatar May 22 '24 16:05 agronholm