twine: Namespace packages with dots in them fail to upload to PyPI
Your Environment
- Operating system:
- Python version:
3.7.8
- twine installation method:
pip from official PyPI
- Installed twine version:
twine-3.4.0-py3-none-any.whl
$ twine --version
twine version 3.4.0 (importlib_metadata: 3.7.3, packaging: 20.9, pkginfo:
1.7.0, requests: 2.25.1, requests-toolbelt: 0.9.1, tqdm: 4.59.0)
- Package repository target
- The package’s
PKG-INFOfile
Metadata-Version: 2.1
Name: mosaik.SimConfig
Version: 0.1.0rc20210315231626
Summary: The missing implementation of mosaik's SimConfig dictionary.
Home-page: https://gitlab.com/offis.energy/mosaik/mosaik.simconfig
Author: Bengt Lüers
Author-email: bengt.lueers@gmail.com
License: UNKNOWN
Description: # mosaik SimConfig
The missing implementation of mosaik's SimConfig dictionary.
[...]
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: PyPy
Description-Content-Type: text/markdown
.pypirc file
cat: /root/.pypirc: No such file or directory
The Issue
When I run twine, I get an error:
$ twine upload --verbose dist/*
Using configuration from /root/.pypirc
Uploading distributions to https://upload.pypi.org/legacy/
dist/mosaik.SimConfig-0.1.0rc20210315223057-py2.py3-none-any.whl (14.0 KB)
username set by command options
password set by command options
username: Bengt
password: <hidden>
Uploading mosaik.SimConfig-0.1.0rc20210315223057-py2.py3-none-any.whl
100%|██████████| 20.7k/20.7k [00:00<00:00, 31.8kB/s]
Content received from server:
<html>
<head>
<title>400 Start filename for 'mosaik-simconfig' with 'mosaik-simconfig'.</title>
</head>
<body>
<h1>400 Start filename for 'mosaik-simconfig' with 'mosaik-simconfig'.</h1>
The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/>
Start filename for 'mosaik-simconfig' with 'mosaik-simconfig'.
</body>
</html>
HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/
Start filename for 'mosaik-simconfig' with 'mosaik-simconfig'.
Source: https://gitlab.com/offis.energy/mosaik/mosaik.simconfig/-/jobs/1100239627
Additional occurrences:
https://gitlab.com/mosaik.hdf5-storage/mosaik.hdf5-storage/-/jobs/1100176050 https://gitlab.com/offis.energy/mosaik/mosaik.scenario-tools/-/jobs/1100175841 https://gitlab.com/offis.energy/mosaik/mosaik.eid/-/jobs/1100176922 https://gitlab.com/offis.energy/mosaik/mosaik.householdsim_semver/-/jobs/1100175569
Steps to Reproduce
- python setup.py bdist_wheel
- pip install --quiet --upgrade twine
- twine --version # required for reporting bugs
- twine upload --verbose dist/*
Source: https://gitlab.com/offis.energy/mosaik/mosaik.simconfig/-/blob/master/.gitlab-ci.yml#L88
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 2
- Comments: 17 (14 by maintainers)
Commits related to this issue
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14acf15c3 introduced a regression that was causing some namespace packages with dots in ... — committed to pablogsal/twine by pablogsal 3 years ago
- Fix the "safe_name" attribute of PackageFile for backwards compatibility (#745) * Fix the "safe_name" attribute of PackageFile for backwards compatibility Commit 0bd26af11b8f97ca97ccb9859693d7a14a... — committed to pypa/twine by pablogsal 3 years ago
The fix has been released: https://pypi.org/project/twine/3.4.1/
Thanks @pablogsal for the quick fix, and @Bengt and @godlygeek for the initial report.
That would certainly break valid distribution names like
namespace.foobar. I don’t think it’s a great idea. Remember, 503 is about the Simple Index specification, not metadata.@Bengt thanks for the excellent report that made it easy to track down and fix this
I guess one final thought here specifically is that what we’re calling namespaces here should probably be spoken as “pseudonamespaces” since there is really no implication to them in the project name currently.
Actual namespace support is something that has been discussed and is likely to see fruition in the near future.
Same problem here, just broke my build. Downgrading to 3.3.0 as a workaround solves the issue.
The breaking change appears to be https://github.com/pypa/twine/commit/0bd26af11b8f97ca97ccb9859693d7a14acf15c3#diff-30ee60b48548622c54dfa266e095021f403ad23ab4848c74b2deed5df329ae00R62