400 Client Error when trying to install prodigy using poetry

I'm trying to install prodigy using poetry but I get the following error (omitted everything after ? with ...)

400 Client Error: Bad Request for url: https://s3.eu-west-1.amazonaws.com/data.prodi.gy/dist/prodigy-1.11.7-cp310-cp310-linux_aarch64.whl?...

I'm also puzzled why it says cp310 since I'm running python 3.9.9 but maybe that's not related.

To reproduce

Init a poetry project with poetry init and add the following to pyproject.toml


[[tool.poetry.source]]
name = "prodigy"
url = "https://[LICENCE_KEY]@download.prodi.gy/index"

Then try to install prodigy by running poetry add prodigy.

Further context

If I run poetry run pip install -r requirements.txt with --extra-index-url set then it works just fine. A very notable difference in the url's requested is

https://s3.eu-west-1.amazonaws.com/data.prodi.gy/dist/prodigy-1.11.7-cp39-cp39-linux_x86_64.whl?....

versus the above.

Ah, it looks like you're unfortunately running into this known poetry issue with HTTP Basic Auth credentials in URLs (which is still open):

In the meantime, you could pre-download the wheels and use Poetry to install from a path: Installing from wheels. · Issue #76 · python-poetry/poetry · GitHub

1 Like

I guess I could yes but then it wouldn't be platform agnostic, right? I need to support ubuntu, mac, mac m1 unfortunately.

I'm not super familiar with poetry but does it have something equivalent to pip's -f option that you can point to a local directory of files and that will automatically pick the best-matching wheel for the given platform? https://prodi.gy/docs/install#wheel

Another option would be to run a mini local PyPi index that serves the wheels – but that's of course a bit more involved.

1 Like

Update

The following appears to work now using Poetry version 1.2.0b3 on macOS version 12.5.1 (Intel):

poetry source add prodigy "https://download.prodi.gy"
poetry config http-basic.prodigy <personal license> ""
poetry add --source=prodigy prodigy

We haven't tested for different OS/Poetry versions but want to post in case it may help others.

1 Like

Thanks for this. In theory it's awesome - unfortunately I'm seeing some issues: config http-basic: Unable to store the password for poetry-repository-prodigy in the key ring: Can't store password on keychain: (-25299, 'Unknown Error') · Issue #6607 · python-poetry/poetry · GitHub

Hi @ines

The poetry team requests access to the wheels to further investigate. Do you mind reaching out? See this comment. Obviously I won’t share with them - that’s for you to decide.

Turns out I had to do

poetry config http-basic.prodigy <personal license>

and then just confirm an empty password. Otherwise I got 403 Client Error: Forbidden for url: https://s3.eu-we...