question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. ItΒ collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Poetry add failing with RuntimeError

See original GitHub issue
  • I am on the latest Poetry version.
  • I have searched the issues of this repo and believe that this is not a duplicate.
  • If an exception occurs when executing a command, I executed it again in debug mode (-vvv option).

Issue

When I try to do β€˜poetry add’, a RuntimeError is raised. I’ve encountered this issue with different pip modules. Here is the relevant data:

JKARY-M-V80G:svs-alto jkary$ poetry self update
Updating to 1.1.3
 - Downloading poetry-1.1.3-darwin.tar.gz 100%

Poetry (1.1.3) is installed now. Great!
JKARY-M-V80G:svs-alto jkary$ poetry add ansible
Using version ^2.10.1 for ansible

Updating dependencies
Resolving dependencies... (5.1s)

  RuntimeError

  generator didn't stop after throw()

  at ~/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py:161 in __exit__
      157β”‚                 # by 'except BaseException'.
      158β”‚                 if sys.exc_info()[1] is value:
      159β”‚                     return False
      160β”‚                 raise
    β†’ 161β”‚             raise RuntimeError("generator didn't stop after throw()")
      162β”‚
      163β”‚
      164β”‚ class _AsyncGeneratorContextManager(_GeneratorContextManagerBase,
      165β”‚                                     AbstractAsyncContextManager):
JKARY-M-V80G:svs-alto jkary$ poetry --version
Poetry version 1.1.3
JKARY-M-V80G:svs-alto jkary$ python --version
Python 3.7.2
JKARY-M-V80G:svs-alto jkary$ poetry add -vvv ansible
Using virtualenv: /Users/jkary/src/python/svs-alto/.venv
PyPI: No release information found for ansible-1.9.0, skipping
PyPI: No release information found for ansible-2.0.0, skipping
PyPI: 166 packages found for ansible *
Using version ^2.10.1 for ansible

Updating dependencies
Resolving dependencies...
   1: fact: svs-alto is 0.1.0
   1: derived: svs-alto
   1: fact: svs-alto depends on python-xml2dict (^0.1.1)
   1: fact: svs-alto depends on jupyter (^1.0.0)
   1: fact: svs-alto depends on pandas (^1.1.0)
   1: fact: svs-alto depends on openpyxl (^3.0.4)
   1: fact: svs-alto depends on yaml-1.3 (^0.1.0)
   1: fact: svs-alto depends on pyyaml (^5.3.1)
   1: fact: svs-alto depends on json2yaml (^1.1.1)
   1: fact: svs-alto depends on xlrd (^1.2.0)
   1: fact: svs-alto depends on jinja2 (^2.11.2)
   1: fact: svs-alto depends on virl2_client (2.1.0-rc.1 lib/virl2-client)
   1: fact: svs-alto depends on ucsmsdk (^0.9.10)
   1: fact: svs-alto depends on ansible (^2.10.1)
   1: fact: svs-alto depends on black (^19.10b0)
   1: fact: svs-alto depends on pytest (^6.0.1)
   1: fact: svs-alto depends on black (^19.10b0)
   1: fact: svs-alto depends on pytest (^6.0.1)
   1: selecting svs-alto (0.1.0)
   1: derived: pytest (^6.0.1)
   1: derived: black (^19.10b0)
   1: derived: ansible (^2.10.1)
   1: derived: ucsmsdk (^0.9.10)
   1: derived: virl2_client (2.1.0-rc.1 lib/virl2-client)
   1: derived: jinja2 (^2.11.2)
   1: derived: xlrd (^1.2.0)
   1: derived: json2yaml (^1.1.1)
   1: derived: pyyaml (^5.3.1)
   1: derived: yaml-1.3 (^0.1.0)
   1: derived: openpyxl (^3.0.4)
   1: derived: pandas (^1.1.0)
   1: derived: jupyter (^1.0.0)
   1: derived: python-xml2dict (^0.1.1)
   1: fact: pytest (6.1.1) depends on attrs (>=17.4.0)
   1: fact: pytest (6.1.1) depends on iniconfig (*)
   1: fact: pytest (6.1.1) depends on packaging (*)
   1: fact: pytest (6.1.1) depends on pluggy (>=0.12,<1.0)
   1: fact: pytest (6.1.1) depends on py (>=1.8.2)
   1: fact: pytest (6.1.1) depends on toml (*)
   1: fact: pytest (6.1.1) depends on importlib-metadata (>=0.12)
   1: fact: pytest (6.1.1) depends on atomicwrites (>=1.0)
   1: fact: pytest (6.1.1) depends on colorama (*)
   1: selecting pytest (6.1.1)
   1: derived: colorama (*)
   1: derived: atomicwrites (>=1.0)
   1: derived: importlib-metadata (>=0.12)
   1: derived: toml (*)
   1: derived: py (>=1.8.2)
   1: derived: pluggy (>=0.12,<1.0)
   1: derived: packaging (*)
   1: derived: iniconfig (*)
   1: derived: attrs (>=17.4.0)
   1: fact: black (19.10b0) depends on click (>=6.5)
   1: fact: black (19.10b0) depends on attrs (>=18.1.0)
   1: fact: black (19.10b0) depends on appdirs (*)
   1: fact: black (19.10b0) depends on toml (>=0.9.4)
   1: fact: black (19.10b0) depends on typed-ast (>=1.4.0)
   1: fact: black (19.10b0) depends on regex (*)
   1: fact: black (19.10b0) depends on pathspec (>=0.6,<1)
   1: selecting black (19.10b0)
   1: derived: pathspec (>=0.6,<1)
   1: derived: regex (*)
   1: derived: typed-ast (>=1.4.0)
   1: derived: toml (>=0.9.4)
   1: derived: appdirs (*)
   1: derived: attrs (>=18.1.0)
   1: derived: click (>=6.5)
PyPI: No release information found for ansible-1.9.0, skipping
PyPI: No release information found for ansible-2.0.0, skipping
PyPI: 1 packages found for ansible >=2.10.1,<3.0.0
   1: fact: ansible (2.10.1) depends on ansible-base (>=2.10.2,<2.11)
   1: selecting ansible (2.10.1)
   1: derived: ansible-base (>=2.10.2,<2.11)
PyPI: 1 packages found for ansible-base >=2.10.2,<2.11
   1: fact: ucsmsdk (0.9.10) depends on pyparsing (*)
   1: fact: ucsmsdk (0.9.10) depends on six (*)
   1: selecting ucsmsdk (0.9.10)
   1: derived: six (*)
   1: derived: pyparsing (*)
   1: fact: virl2-client (2.1.0-rc.1 /Users/jkary/src/python/svs-alto/lib/virl2-client) depends on requests (^2)
   1: selecting virl2-client (2.1.0-rc.1 /Users/jkary/src/python/svs-alto/lib/virl2-client)
   1: derived: requests (^2)
   1: fact: jinja2 (2.11.2) depends on MarkupSafe (>=0.23)
   1: selecting jinja2 (2.11.2)
   1: derived: MarkupSafe (>=0.23)
   1: selecting xlrd (1.2.0)
   1: fact: json2yaml (1.1.1) depends on pyyaml (*)
   1: fact: json2yaml (1.1.1) depends on pyaml (*)
   1: fact: json2yaml (1.1.1) depends on docopt (*)
   1: selecting json2yaml (1.1.1)
   1: derived: docopt (*)
   1: derived: pyaml (*)
   1: selecting pyyaml (5.3.1)
   1: fact: yaml-1.3 (0.1.0) depends on ruamel.appconfig (*)
   1: fact: yaml-1.3 (0.1.0) depends on ruamel.std.argparse (>=0.8)
   1: selecting yaml-1.3 (0.1.0)
   1: derived: ruamel.std.argparse (>=0.8)
   1: derived: ruamel.appconfig (*)
   1: fact: openpyxl (3.0.5) depends on jdcal (*)
   1: fact: openpyxl (3.0.5) depends on et-xmlfile (*)
   1: selecting openpyxl (3.0.5)
   1: derived: et-xmlfile (*)
   1: derived: jdcal (*)
   1: fact: pandas (1.1.3) depends on python-dateutil (>=2.7.3)
   1: fact: pandas (1.1.3) depends on pytz (>=2017.2)
   1: fact: pandas (1.1.3) depends on numpy (>=1.15.4)
   1: selecting pandas (1.1.3)
   1: derived: numpy (>=1.15.4)
   1: derived: pytz (>=2017.2)
   1: derived: python-dateutil (>=2.7.3)
   1: fact: jupyter (1.0.0) depends on notebook (*)
   1: fact: jupyter (1.0.0) depends on qtconsole (*)
   1: fact: jupyter (1.0.0) depends on jupyter-console (*)
   1: fact: jupyter (1.0.0) depends on nbconvert (*)
   1: fact: jupyter (1.0.0) depends on ipykernel (*)
   1: fact: jupyter (1.0.0) depends on ipywidgets (*)
   1: selecting jupyter (1.0.0)
   1: derived: ipywidgets (*)
   1: derived: ipykernel (*)
   1: derived: nbconvert (*)
   1: derived: jupyter-console (*)
   1: derived: qtconsole (*)
   1: derived: notebook (*)
   1: selecting python-xml2dict (0.1.1)
   1: selecting colorama (0.4.4)
   1: selecting atomicwrites (1.4.0)
   1: fact: importlib-metadata (2.0.0) depends on zipp (>=0.5)
   1: selecting importlib-metadata (2.0.0)
   1: derived: zipp (>=0.5)
   1: selecting toml (0.10.1)
   1: selecting py (1.9.0)
   1: fact: pluggy (0.13.1) depends on importlib-metadata (>=0.12)
   1: selecting pluggy (0.13.1)
   1: fact: packaging (20.4) depends on pyparsing (>=2.0.2)
   1: fact: packaging (20.4) depends on six (*)
   1: selecting packaging (20.4)
   1: derived: pyparsing (>=2.0.2)
   1: selecting iniconfig (1.1.1)
   1: selecting attrs (20.2.0)
   1: selecting pathspec (0.8.0)
   1: selecting regex (2020.10.15)
   1: selecting typed-ast (1.4.1)
   1: selecting appdirs (1.4.4)
   1: selecting click (7.1.2)
PyPI: Getting info for ansible-base (2.10.2) from PyPI
PyPI: No dependencies found, downloading archives
PyPI: Downloading sdist: ansible-base-2.10.2.tar.gz
   1: Version solving took 5.247 seconds.
   1: Tried 1 solutions.

  Stack trace:

  26  ~/.poetry/lib/poetry/_vendor/py3.7/clikit/console_application.py:131 in run
       129β”‚             parsed_args = resolved_command.args
       130β”‚
     β†’ 131β”‚             status_code = command.handle(parsed_args, io)
       132β”‚         except KeyboardInterrupt:
       133β”‚             status_code = 1

  25  ~/.poetry/lib/poetry/_vendor/py3.7/clikit/api/command/command.py:120 in handle
       118β”‚     def handle(self, args, io):  # type: (Args, IO) -> int
       119β”‚         try:
     β†’ 120β”‚             status_code = self._do_handle(args, io)
       121β”‚         except KeyboardInterrupt:
       122β”‚             if io.is_debug():

  24  ~/.poetry/lib/poetry/_vendor/py3.7/clikit/api/command/command.py:171 in _do_handle
       169β”‚         handler_method = self._config.handler_method
       170β”‚
     β†’ 171β”‚         return getattr(handler, handler_method)(args, io, self)
       172β”‚
       173β”‚     def __repr__(self):  # type: () -> str

  23  ~/.poetry/lib/poetry/_vendor/py3.7/cleo/commands/command.py:92 in wrap_handle
        90β”‚         self._command = command
        91β”‚
     β†’  92β”‚         return self.handle()
        93β”‚
        94β”‚     def handle(self):  # type: () -> Optional[int]

  22  ~/.poetry/lib/poetry/console/commands/add.py:174 in handle
       172β”‚
       173β”‚         try:
     β†’ 174β”‚             status = self._installer.run()
       175β”‚         except Exception:
       176β”‚             self.poetry.file.write(original_content)

  21  ~/.poetry/lib/poetry/installation/installer.py:103 in run
       101β”‚         local_repo = Repository()
       102β”‚
     β†’ 103β”‚         return self._do_install(local_repo)
       104β”‚
       105β”‚     def dry_run(self, dry_run=True):  # type: (bool) -> Installer

  20  ~/.poetry/lib/poetry/installation/installer.py:235 in _do_install
       233β”‚             )
       234β”‚
     β†’ 235β”‚             ops = solver.solve(use_latest=self._whitelist)
       236β”‚         else:
       237β”‚             self._io.write_line("Installing dependencies from lock file")

  19  ~/.poetry/lib/poetry/puzzle/solver.py:65 in solve
        63β”‚         with self._provider.progress():
        64β”‚             start = time.time()
     β†’  65β”‚             packages, depths = self._solve(use_latest=use_latest)
        66β”‚             end = time.time()
        67β”‚

  18  ~/.poetry/lib/poetry/puzzle/solver.py:234 in _solve
       232β”‚         try:
       233β”‚             result = resolve_version(
     β†’ 234β”‚                 self._package, self._provider, locked=locked, use_latest=use_latest
       235β”‚             )
       236β”‚

  17  ~/.poetry/lib/poetry/mixology/__init__.py:7 in resolve_version
       5β”‚     solver = VersionSolver(root, provider, locked=locked, use_latest=use_latest)
       6β”‚
     β†’ 7β”‚     return solver.solve()
       8β”‚

  16  ~/.poetry/lib/poetry/mixology/version_solver.py:84 in solve
        82β”‚             while next is not None:
        83β”‚                 self._propagate(next)
     β†’  84β”‚                 next = self._choose_package_version()
        85β”‚
        86β”‚             return self._result()

  15  ~/.poetry/lib/poetry/mixology/version_solver.py:397 in _choose_package_version
       395β”‚             version = locked
       396β”‚
     β†’ 397β”‚         version = self._provider.complete_package(version)
       398β”‚
       399β”‚         conflict = False

  14  ~/.poetry/lib/poetry/puzzle/provider.py:436 in complete_package
       434β”‚                     package.version.text,
       435β”‚                     extras=list(package.dependency.extras),
     β†’ 436β”‚                     repository=package.dependency.source_name,
       437β”‚                 ),
       438β”‚             )

  13  ~/.poetry/lib/poetry/repositories/pool.py:135 in package
       133β”‚             for idx, repo in enumerate(self._repositories):
       134β”‚                 try:
     β†’ 135β”‚                     package = repo.package(name, version, extras=extras)
       136β”‚                 except PackageNotFound:
       137β”‚                     continue

  12  ~/.poetry/lib/poetry/repositories/pypi_repository.py:162 in package
       160β”‚         extras=None,  # type: (Union[list, None])
       161β”‚     ):  # type: (...) -> Package
     β†’ 162β”‚         return self.get_release_info(name, version).to_package(name=name, extras=extras)
       163β”‚
       164β”‚     def search(self, query):

  11  ~/.poetry/lib/poetry/repositories/pypi_repository.py:228 in get_release_info
       226β”‚
       227β”‚         cached = self._cache.remember_forever(
     β†’ 228β”‚             "{}:{}".format(name, version), lambda: self._get_release_info(name, version)
       229β”‚         )
       230β”‚

  10  ~/.poetry/lib/poetry/_vendor/py3.7/cachy/repository.py:174 in remember_forever
       172β”‚             return val
       173β”‚
     β†’ 174β”‚         val = value(callback)
       175β”‚
       176β”‚         self.forever(key, val)

   9  ~/.poetry/lib/poetry/_vendor/py3.7/cachy/helpers.py:6 in value
       4β”‚ def value(val):
       5β”‚     if callable(val):
     β†’ 6β”‚         return val()
       7β”‚
       8β”‚     return val

   8  ~/.poetry/lib/poetry/repositories/pypi_repository.py:228 in <lambda>
       226β”‚
       227β”‚         cached = self._cache.remember_forever(
     β†’ 228β”‚             "{}:{}".format(name, version), lambda: self._get_release_info(name, version)
       229β”‚         )
       230β”‚

   7  ~/.poetry/lib/poetry/repositories/pypi_repository.py:308 in _get_release_info
       306β”‚                 return data.asdict()
       307β”‚
     β†’ 308β”‚             info = self._get_info_from_urls(urls)
       309β”‚
       310β”‚             data.requires_dist = info.requires_dist

   6  ~/.poetry/lib/poetry/repositories/pypi_repository.py:423 in _get_info_from_urls
       421β”‚                 return self._get_info_from_wheel(platform_specific_wheels[0])
       422β”‚
     β†’ 423β”‚         return self._get_info_from_sdist(urls["sdist"][0])
       424β”‚
       425β”‚     def _get_info_from_wheel(self, url):  # type: (str) -> PackageInfo

   5  ~/.poetry/lib/poetry/repositories/pypi_repository.py:451 in _get_info_from_sdist
       449β”‚             self._download(url, str(filepath))
       450β”‚
     β†’ 451β”‚             return PackageInfo.from_sdist(filepath)
       452β”‚
       453β”‚     def _download(self, url, dest):  # type: (str, str) -> None

   4  ~/.poetry/lib/poetry/inspection/info.py:561 in from_sdist
       559β”‚         """
       560β”‚         if path.is_file():
     β†’ 561β”‚             return cls._from_sdist_file(path=path)
       562β”‚
       563β”‚         # if we get here then it is neither an sdist instance nor a file

   3  ~/.poetry/lib/poetry/inspection/info.py:291 in _from_sdist_file
       289β”‚
       290β”‚             # now this is an unpacked directory we know how to deal with
     β†’ 291β”‚             new_info = cls.from_directory(path=sdist_dir)
       292β”‚
       293β”‚         if not info:

   2  ~/.poetry/lib/poetry/inspection/info.py:541 in from_directory
       539β”‚                         info = cls.from_setup_files(path)
       540β”‚                     else:
     β†’ 541β”‚                         info = cls._pep517_metadata(path)
       542β”‚                 except PackageInfoError:
       543β”‚                     if not info:

   1  ~/.poetry/lib/poetry/inspection/info.py:506 in _pep517_metadata
       504β”‚                     )
       505β”‚                 finally:
     β†’ 506β”‚                     os.chdir(cwd.as_posix())
       507β”‚
       508β”‚         if info:

  RuntimeError

  generator didn't stop after throw()

  at ~/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py:161 in __exit__
      157β”‚                 # by 'except BaseException'.
      158β”‚                 if sys.exc_info()[1] is value:
      159β”‚                     return False
      160β”‚                 raise
    β†’ 161β”‚             raise RuntimeError("generator didn't stop after throw()")
      162β”‚
      163β”‚
      164β”‚ class _AsyncGeneratorContextManager(_GeneratorContextManagerBase,
      165β”‚                                     AbstractAsyncContextManager):
JKARY-M-V80G:svs-alto jkary$

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:8
  • Comments:18 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
wotoricommented, Sep 13, 2021

nothing helps me, getting this error again and again

Updating dependencies
Resolving dependencies... (10.2s)

  RuntimeError

  generator didn't stop after throw()

  at /usr/lib/python3.8/contextlib.py:162 in __exit__
      158β”‚                 # by 'except BaseException'.
      159β”‚                 if sys.exc_info()[1] is value:
      160β”‚                     return False
      161β”‚                 raise
    β†’ 162β”‚             raise RuntimeError("generator didn't stop after throw()")
      163β”‚ 
      164β”‚ 
      165β”‚ class _AsyncGeneratorContextManager(_GeneratorContextManagerBase,
      166β”‚                                     AbstractAsyncContextManager):

somewhy even when venv was activated global command was pointed to local version of poetry, non installd to venv virtual. I removed global poetry first and then double checked with β€˜which poetry’ command that it uses the exactly version in current venv then everething started working as expected.

p.s. yes, as told above, python -m poetry install should do the trick localy in venv

1reaction
bitphagecommented, Jan 5, 2021

Same issue here, with poetry 1.1.4 installed via get-poetry.py script

% poetry add ruamel.yaml
Using version ^0.16.12 for ruamel.yaml                                    

Updating dependencies
Resolving dependencies... (0.8s)

  RuntimeError

  generator didn't stop after throw()

  at /usr/lib/python3.7/contextlib.py:161 in __exit__
      157β”‚                 # by 'except BaseException'.
      158β”‚                 if sys.exc_info()[1] is value:
      159β”‚                     return False
      160β”‚                 raise
    β†’ 161β”‚             raise RuntimeError("generator didn't stop after throw()")
      162β”‚ 
      163β”‚ 
      164β”‚ class _AsyncGeneratorContextManager(_GeneratorContextManagerBase,
      165β”‚                                     AbstractAsyncContextManager):

Update: in the same environment, for example poetry add boto3 works fine.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Python poetry install failure - invalid hashes - Stack Overflow
There are several issue reports about invalid hashes. One common cause is running multiple Poetry instances simultaneously;Β ...
Read more >
History | Poetry - Python dependency management and ...
Fix an issue where poetry show --outdated failed with a runtime error related to direct origin dependencies (#6016). Fix an issue where only...
Read more >
poetry - PyPI
Poetry helps you declare, manage and install dependencies of Python projects, ensuring you have the right stack everywhere. Poetry Install.
Read more >
Poetry install fails inside GitHub actions on a private repo
5/x64/lib VIRTUALENV_PIP: 22.1.2 VENV: .venv/bin/activate RuntimeError Poetry could not find a pyproject.toml file in /home/runner/work/news/Β ...
Read more >
Error: Replit: Package operation failed.
... -m poetry install Installing dependencies from lock file Package operations: 1 install, 0 updates, 0 removals β€’ Installing pandas (1.3.0) RuntimeError ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found