Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

400 response, no error message #1809

Open
ernimd opened this issue Nov 13, 2024 · 6 comments · May be fixed by #1815
Open

400 response, no error message #1809

ernimd opened this issue Nov 13, 2024 · 6 comments · May be fixed by #1815

Comments

@ernimd
Copy link

ernimd commented Nov 13, 2024

(topfarm) ernie@andromeda:~/code/TopFarm2$ hatch publish -r test
dist/topfarm-2.3.7.post6.tar.gz ... failed
Error uploading to repository: https://test.pypi.org/legacy/ - Client error '400 Bad Request' for url 'https://test.pypi.org/legacy/'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400
(topfarm) ernie@andromeda:~/code/TopFarm2$ pixi list | grep hatch
 WARN The feature 'tensorflow' is defined but not used in any environment
hatch                          1.13.0         pyhd8ed1ab_0           173 KiB     conda  hatch-1.13.0-pyhd8ed1ab_0.conda
hatchling                      1.26.3         pypyhff2d567_0         55.5 KiB    conda  hatchling-1.26.3-pypyhff2d567_0.conda
(topfarm) ernie@andromeda:~/code/TopFarm2$ 

The problem reappears with the latest release of hatchling. I would really appreciate hatch giving some human-readable feedback about the issue rather than status codes of http requests...

@ernimd
Copy link
Author

ernimd commented Nov 13, 2024

Something like:

            response = self.client.post(
                self.repo,
                data=data,
                files={'content': (artifact.name, f, 'application/octet-stream')},
                auth=(self.user, self.auth),
            )
            import httpx
            try:
                response.raise_for_status()
            except httpx.HTTPStatusError as exc:
                exc.args = (exc.args[0], f"{response.text}")
                raise exc

In the PackageIndex, upload_artifact function. After digging in and getting this error message, I can clearly see what happened here:

<html>
 <head>
  <title>400 This filename has already been used, use a different version. See https://test.pypi.org/help/#file-name-reuse for more information.</title>
 </head>
 <body>
  <h1>400 This filename has already been used, use a different version. See https://test.pypi.org/help/#file-name-reuse for more information.</h1>
  The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/>
This filename has already been used, use a different version. See https://test.pypi.org/help/#file-name-reuse for more information.


 </body>
</html>

I am up for contributing a fix, if you're interested in this.

@ofek
Copy link
Collaborator

ofek commented Nov 13, 2024

Thank you for debugging! I don't quite understand what the error means, can you please explain?

@ernimd
Copy link
Author

ernimd commented Nov 13, 2024

I am trying to upload a version name that pypi has already recorded before, and is not a valid upload, but this is just my specific case. These error messages could be useful for all users of hatch. Lmk what you think about the proposed change : )

@ofek
Copy link
Collaborator

ofek commented Nov 13, 2024

Oh, so that error happens when you try to upload an artifact that already exists? I thought I accounted for that case https://github.com/pypa/hatch/blob/hatch-v1.13.0/src/hatch/publish/index.py#L117

@ernimd
Copy link
Author

ernimd commented Nov 13, 2024

That check does not trigger for some reason. But this error message is more general, could be applied for any unaccounted errors like in this case. At least, the users see what's wrong with their config. Now it's a black box: 400 Error. Only jesus knows what happened on pypi side. It's just a matter of parsing the HTTP error text and displaying it in terminal...

@ofek
Copy link
Collaborator

ofek commented Nov 13, 2024

Yes please feel free to open a PR! I'm just confused about why this particular issue is happening.

@ernimd ernimd linked a pull request Nov 18, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants