While commenting on the global package index configuration PEP I realised I don’t know if the PyPI upload API is standardised anywhere. I can’t find anything on packaging.python.org, and the Warehouse docs just explain API URL and fields (here) but not how the server should handle the request.
I did find PEP 301 which talks about an upload API for distutils, but it looks different to Warehouse’s.
Is there a specification (PEP or otherwise) of the upload API, or do other package repositories have to copy Warehouse as the de facto implementation?
Is it though?.. Not sure if I’m understanding this correctly, but even the HTTP error codes are different from Artifactory, so I don’t think so. This thing has been my pet peeve for some time now. E.g. if you upload the same distribution again, and the repo doesn’t allow for overwrites, you get (this list is 1 year old, had it in my notes):
Artifactory: Upload failed (403): Forbidden
Nexus: Upload failed (400): Repository does not allow updating assets: <group name>
pypiserver: Upload failed (409): Conflict
devpi: Server response (200): OK - doesn’t care when using basic configuration