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

Poetry 1.1.11 | AttributeError 'Link' object has no attribute 'name' #4701

Closed
danielbellhv opened this issue Nov 2, 2021 · 16 comments
Closed
Labels
kind/bug Something isn't working as expected

Comments

@danielbellhv
Copy link

danielbellhv commented Nov 2, 2021

Specification:

  • Windows 10,
  • Visual Studio Code,
  • Python 3.8.10 & Poetry 1.1.11,
  • Ubuntu Bash.

Terminal | poetry install (Updated):

me@PF2DCSXD:/mnt/c/Users/user/Documents/GitHub/workers-python/workers/composite_key$ poetry install
Updating dependencies
Resolving dependencies... (464.3s)

Writing lock file

Package operations: 55 installs, 11 updates, 0 removals

  • Updating pyparsing (3.0.4 -> 2.4.7)
  • Updating pyyaml (5.4.1 -> 6.0)
  • Updating soupsieve (2.2.1 -> 2.3)
  • Installing arrow (1.2.1)
  • Updating botocore (1.22.8 -> 1.22.10)
  • Installing chardet (4.0.0)
  • Updating itsdangerous (1.1.0 -> 2.0.1)
  • Updating jinja2 (2.11.3 -> 3.0.2)
  • Updating packaging (20.9 -> 21.2)
  • Installing text-unidecode (1.3)
  • Updating werkzeug (1.0.1 -> 2.0.2)
  • Installing binaryornot (0.4.4)
  • Installing bokeh (2.4.1): Failed

  AttributeError

  'Link' object has no attribute 'name'

  at ~/.local/share/pypoetry/venv/lib/python3.8/site-packages/poetry/installation/executor.py:632 in _download_link
      628│                 raise RuntimeError(
      629│                     "Invalid hashes ({}) for {} using archive {}. Expected one of {}.".format(
      630│                         ", ".join(sorted(archive_hashes)),
      631│                         package,
    → 632│                         archive.name,
      633│                         ", ".join(sorted(hashes)),
      634│                     )
      635│                 )
      636│

  • Updating configparser (5.0.2 -> 5.1.0)
  • Updating flask (1.1.4 -> 2.0.2)
  • Installing jinja2-time (0.2.0)
  • Installing poyo (0.5.0)
  • Installing python-slugify (5.0.2)

Please let me know if there is anything else I can add to post.

Stack Overflow post

@danielbellhv danielbellhv added kind/bug Something isn't working as expected status/triage This issue needs to be triaged labels Nov 2, 2021
@mkniewallner
Copy link
Member

Possibly a duplicate of #4688.
If it is indeed a duplicate, the issue was in a dependency of poetry, and a new version fixing the issue was recently released.

I guess that to check if it is fixed, you need to either bump cachecontrol that is installed in the same environment as Poetry to 0.12.9, or alternatively to reinstall Poetry entirely.

@Ivoz
Copy link

Ivoz commented Nov 2, 2021

What python are you trying to install this for? Pathlib is inbuilt into Python since 3.4

@danielbellhv
Copy link
Author

danielbellhv commented Nov 3, 2021

Possibly a duplicate of #4688. If it is indeed a duplicate, the issue was in a dependency of poetry, and a new version fixing the issue was recently released.

I guess that to check if it is fixed, you need to either bump cachecontrol that is installed in the same environment as Poetry to 0.12.9, or alternatively to reinstall Poetry entirely.

I attempted to update, but it errors:

me@PF2DCSXD:/mnt/c/Users/user/Documents/GitHub/workers-python/workers/composite_key/compositekey/tests$ poetry self:update
The command "self:update" is not defined.

How else can I update to the latest version?

@danielbellhv
Copy link
Author

What python are you trying to install this for? Pathlib is inbuilt into Python since 3.4

Python 3.8.10

@danielbellhv
Copy link
Author

danielbellhv commented Nov 3, 2021

Update: I have been able to somewhat solve part of the problem.

Had to re-install Poetry... the proper way, as solved here.


However, now I am getting a new issue, again consistent with all package that won't install:
AttributeError 'Link' object has no attribute 'name'

Latest terminal output in top post^

I've made a Stack Overflow regarding this here.

I'm still keeping this thread active, as this exact series of problems may very well occur for others.

@danielbellhv danielbellhv changed the title Poetry 1.1.11 | Unable to find installation candidates for all packages. Poetry 1.1.11 | AttributeError 'Link' object has no attribute 'name' Nov 3, 2021
@danielbellhv
Copy link
Author

Only one instance of the error left. Deleted the poetry.lock file and ran poetry install again.

@danielbellhv
Copy link
Author

I was able to get pathlib recognised but still have this outstanding issue @Ivoz

@mattsta
Copy link

mattsta commented Nov 9, 2021

Looks like this should be archive.filename instead because archive is a Link and Link has .filename but no .name:

632archive.name,

Though, looks like in current source those lines were refactored a bit since the most recent pypi release (but still has the archive.name bug):

if archive_hash not in {f["hash"] for f in package.files}:
raise RuntimeError(
f"Invalid hash for {package} using archive {archive.name}"
)
self._hashes[package.name] = archive_hash

So that should cover the first error, but not underlying cause of where poetry isn't matching proper hashes sometimes.

@danielbellhv
Copy link
Author

@mattsta Would it be safe to replace those lines numbers with the code you've pasted in poetry/poetry/installation/executor.py, or is that already the code in that file? Thanks for your and other's correspondence.

@mikkelam
Copy link

mikkelam commented Nov 15, 2021

I was struggling with the same as OP and I figured out that the hashes were cached so i deleted /.cache/pypoetry/ along with my poetry.lock and then it worked.
EDIT: this was debian

@ingvaldlorentzen
Copy link

Removing ~/Library/Caches/pypoetry did the trick on macOS with Poetry install via Homebrew.

@danielbellhv
Copy link
Author

I was able to solve this Issue too, as well as other Poetry problems as detailed here!

TL;DR - rm poetry/ -r and curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3

@rachmadaniHaryono
Copy link

rachmadaniHaryono commented Nov 21, 2021

#4701 (comment)

above solution don't work for me

the op of this thread found the error when installing bokeh and possibly other package as well, but i can recreate it from empty project


  • OS version and name: ubuntu 21.10
  • Poetry version: 1.1.11
  • Link of a Gist with the contents of your pyproject.toml file:
  1. create empty project with poetry
pyproject.toml

[tool.poetry]
name = "temp"
version = "0.1.0"
description = ""
authors = ["author <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.9"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

  1. poetry add flask-admin
error

$ poetry add flask-admin
Using version ^1.5.8 for Flask-Admin

Updating dependencies
Resolving dependencies... (0.8s)

Package operations: 1 install, 0 updates, 0 removals

  • Installing flask-admin (1.5.8): Failed

  AttributeError

  'Link' object has no attribute 'name'

  at ~/.local/share/pypoetry/venv/lib/python3.9/site-packages/poetry/installation/executor.py:632 in _download_link
      628│                 raise RuntimeError(
      629│                     "Invalid hashes ({}) for {} using archive {}. Expected one of {}.".format(
      630│                         ", ".join(sorted(archive_hashes)),
      631│                         package,
    → 632│                         archive.name,
      633│                         ", ".join(sorted(hashes)),
      634│                     )
      635│                 )
      636│


Failed to add packages, reverting the pyproject.toml file to its original content.

3. i try to uninstall with get-poetry --uninstall
uninstall

$ python3 get-poetry.py --uninstall
# We are sorry to see you go!

This will uninstall Poetry.

It will remove the `poetry` command from Poetry's bin directory, located at:

$HOME/.poetry/bin

This will also remove Poetry from your system's PATH.


Are you sure you want to uninstall Poetry? (y/[n]) y

4. but after i check poetry command, it is still installed so i just remove symbolic link
$ which poetry
/home/r3r/.local/bin/poetry
$ ll ~/.local/bin/poetry
lrwxrwxrwx 1 r3r r3r 47 Nov  7 12:26 /home/r3r/.local/bin/poetry -> /home/r3r/.local/share/pypoetry/venv/bin/poetry
$ rm ~/.local/bin/poetry
rm: remove symbolic link '/home/r3r/.local/bin/poetry'? y
$ poetry --version
poetry: command not found
  1. reinstall as suggested above

  2. when i try poetry add flask-admin, the same error on 2 happen again


temporary solution 1 : poetry run pip install flask-admin

but flask-admin have to be installed everytime you run poetry install

temporary solution 2: edit executor.py

on my case it is on ~/.local/share/pypoetry/venv/lib/python3.9/site-packages/poetry/installation/executor.py

so i edit based on this comment #4701 (comment)

archive.name if hasattr(archive, 'name') else archive.filename,

this is little bit different with recent poetry code

but i got another error

$ poetry add flask-admin
Using version ^1.5.8 for Flask-Admin

Updating dependencies
Resolving dependencies... (0.1s)

Package operations: 1 install, 0 updates, 0 removals

  • Installing flask-admin (1.5.8): Failed

  RuntimeError

  Invalid hashes (sha256:e7e11ee8bf67ad176dd1224c137e860f5d387357d7331fc650f0a9eef03cdc83) for flask-admin (1.5.8) using archive Flask-Admin-1.5.8.tar.gz. Expected one of sha256:eb06a1f31b98881dee53a55c64faebd1990d6aac38826364b280df0b2679ff74.

  at ~/.poetry/lib/poetry/installation/executor.py:628 in _download_link
      624│                     )
      625│                 )
      626│
      627│             if archive_hashes.isdisjoint(hashes):
    → 628│                 raise RuntimeError(
      629│                     "Invalid hashes ({}) for {} using archive {}. Expected one of {}.".format(
      630│                         ", ".join(sorted(archive_hashes)),
      631│                         package,
      632│                         archive.name if hasattr(archive, 'name') else archive.filename,


Failed to add packages, reverting the pyproject.toml file to its original content.

this is another error not related to this issue, but i still can't find if there is issue similar to this

so in the end i use temporary solution 1 for flask-admin


there is some solution for this issue here #4085, but i can't find which one fit for me yet without using temporary solution 2 to get RuntimeError

@danielbellhv
Copy link
Author

@rachmadaniHaryono Whenever I next have an AttributeError again; I'll try your solutions out. Thank you :)

@rachmadaniHaryono
Copy link

rachmadaniHaryono commented Nov 28, 2021

after update to version 1.1.12 i can confirm that i can get actual error just like my last post without modifying executor.py

$ poetry add flask-admin
Using version ^1.5.8 for Flask-Admin

Updating dependencies
Resolving dependencies... (5.7s)

Writing lock file

Package operations: 8 installs, 0 updates, 0 removals

  • Installing markupsafe (2.0.1)
  • Installing click (8.0.3)
  • Installing itsdangerous (2.0.1)
  • Installing jinja2 (3.0.3)
  • Installing werkzeug (2.0.2)
  • Installing flask (2.0.2)
  • Installing wtforms (3.0.0)
  • Installing flask-admin (1.5.8): Failed

  RuntimeError

  Invalid hashes (sha256:e7e11ee8bf67ad176dd1224c137e860f5d387357d7331fc650f0a9eef03cdc83) for flask-admin (1.5.8) using archive Flask-Admin-1.5.8.tar.gz. Expected one of sha256:eb06a1f31b98881dee53a55c64faebd1990d6aac38826364b280df0b2679ff74.

  at ~/.poetry/lib/poetry/installation/executor.py:627 in _download_link
      623│                     )
      624│                 )
      625│
      626│             if archive_hashes.isdisjoint(hashes):
    → 627│                 raise RuntimeError(
      628│                     "Invalid hashes ({}) for {} using archive {}. Expected one of {}.".format(
      629│                         ", ".join(sorted(archive_hashes)),
      630│                         package,
      631│                         archive_path.name,


Failed to add packages, reverting the pyproject.toml file to its original content.

this seems fixed on #4549

Copy link

github-actions bot commented Mar 2, 2024

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
kind/bug Something isn't working as expected
Projects
None yet
Development

No branches or pull requests

8 participants