2025-09-14T18:06:48,169 Created temporary directory: /tmp/pip-build-tracker-rc3a5_uh 2025-09-14T18:06:48,170 Initialized build tracking at /tmp/pip-build-tracker-rc3a5_uh 2025-09-14T18:06:48,170 Created build tracker: /tmp/pip-build-tracker-rc3a5_uh 2025-09-14T18:06:48,170 Entered build tracker: /tmp/pip-build-tracker-rc3a5_uh 2025-09-14T18:06:48,171 Created temporary directory: /tmp/pip-wheel-4id3u0rr 2025-09-14T18:06:48,174 Created temporary directory: /tmp/pip-ephem-wheel-cache-muodhsga 2025-09-14T18:06:48,229 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-14T18:06:48,231 2 location(s) to search for versions of needlr: 2025-09-14T18:06:48,231 * https://pypi.org/simple/needlr/ 2025-09-14T18:06:48,231 * https://www.piwheels.org/simple/needlr/ 2025-09-14T18:06:48,231 Fetching project page and analyzing links: https://pypi.org/simple/needlr/ 2025-09-14T18:06:48,232 Getting page https://pypi.org/simple/needlr/ 2025-09-14T18:06:48,233 Found index url https://pypi.org/simple/ 2025-09-14T18:06:48,378 Fetched page https://pypi.org/simple/needlr/ as application/vnd.pypi.simple.v1+json 2025-09-14T18:06:48,380 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/2b/41/a60be24c5fa3dde056c50d119cfeb89005a7614ea540d3b12754925a56d1/needlr-0.1.4-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,381 Found link https://files.pythonhosted.org/packages/a4/18/2c9d2d0a4db65b7b4b98873e5826255dd750a6cb1d0f9a9ea1d8eafe5775/needlr-0.1.4.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.4 2025-09-14T18:06:48,381 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/d7/51/c63d003fcb3d302e1c76a315777b9bb81f0575a10c66a873e493edac06a5/needlr-0.1.5-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,381 Found link https://files.pythonhosted.org/packages/38/ae/11986d946ab455399d75ee677bb823a067dca390de285dcdce209e355855/needlr-0.1.5.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.5 2025-09-14T18:06:48,381 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/fd/b3/745eda31e606fa1c0fff37e1dd164b017fd11fa294cec97fd095ec4f0bd9/needlr-0.1.6-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,381 Found link https://files.pythonhosted.org/packages/30/2d/4133c9a695a30c76ebb1abeec9f0e23cc61f097a8a415f5aea44b1c01566/needlr-0.1.6.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.6 2025-09-14T18:06:48,382 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/fc/7c/58a552aaf5fea1e48f856ec4561db1d41d1e36ad2dc2418e431763cb2bea/needlr-0.1.7-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,382 Found link https://files.pythonhosted.org/packages/a2/3f/216f740090c756df69769fd2931da4bca7f39f00291cc7246b508822d6dd/needlr-0.1.7.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.7 2025-09-14T18:06:48,382 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/19/77/ebe22247afe18202b42c77a688a41c9f3239e898c98e561f1caa6c05e67c/needlr-0.1.8-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,382 Found link https://files.pythonhosted.org/packages/4e/3b/ab5ea916e4d9cfb31748b51d5f0290db94a0c7c1d8e61ae810c11cc2afb7/needlr-0.1.8.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.8 2025-09-14T18:06:48,382 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/37/a5/175b89f06569eb0ddf8725c821a6465ca61464cb60867ce58cd0e8b9f685/needlr-0.1.9-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,382 Found link https://files.pythonhosted.org/packages/26/69/59493502c41154724c44bdbc1cbad0e8d3055557e3a4a47c03953074b7b1/needlr-0.1.9.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.1.9 2025-09-14T18:06:48,383 Skipping link: No binaries permitted for needlr: https://files.pythonhosted.org/packages/bb/2c/606fa1ab2bbc9b78623176bb6f59e286727a35b54a98fbca1a529278a198/needlr-0.2.1-py3-none-any.whl (from https://pypi.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,383 Found link https://files.pythonhosted.org/packages/bb/5b/cf400c794357add6a44cd8adbadfe7f173713ea0118403101498fb62fdd4/needlr-0.2.1.tar.gz (from https://pypi.org/simple/needlr/) (requires-python:>=3.8), version: 0.2.1 2025-09-14T18:06:48,383 Fetching project page and analyzing links: https://www.piwheels.org/simple/needlr/ 2025-09-14T18:06:48,383 Getting page https://www.piwheels.org/simple/needlr/ 2025-09-14T18:06:48,384 Found index url https://www.piwheels.org/simple/ 2025-09-14T18:06:48,481 Fetched page https://www.piwheels.org/simple/needlr/ as text/html 2025-09-14T18:06:48,483 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.2.1-py3-none-any.whl#sha256=c840341fea31737dcd693798e9b99a8233035115f9739ca606c18b0929a4491e (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,483 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.1.9-py3-none-any.whl#sha256=9fdc4082f99b6cf82729a36bc8f198b4e0e3b92fa146691b535516e94dd8f4a9 (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,483 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.1.8-py3-none-any.whl#sha256=7045b972d035a84bd69b250d66583298258cbae7c1997d2149c943baa93e367b (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,484 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.1.7-py3-none-any.whl#sha256=4dd0cf17bff66cc67d713dff86d299fad73e22877c87af4de27eb1145bfc7a12 (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,484 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.1.6-py3-none-any.whl#sha256=cb9c16f1026a5ca00319e83b63e5ec852becce077e9af33f06549f2abc668acc (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,484 Skipping link: No binaries permitted for needlr: https://archive1.piwheels.org/simple/needlr/needlr-0.1.5-py3-none-any.whl#sha256=172cd22517b42d030f46189b0c8f6ce9b3b189cbfdc2613aadff82e134638f10 (from https://www.piwheels.org/simple/needlr/) (requires-python:>=3.8) 2025-09-14T18:06:48,484 Skipping link: not a file: https://www.piwheels.org/simple/needlr/ 2025-09-14T18:06:48,484 Skipping link: not a file: https://pypi.org/simple/needlr/ 2025-09-14T18:06:48,509 Given no hashes to check 1 links for project 'needlr': discarding no candidates 2025-09-14T18:06:48,510 Collecting needlr==0.1.4 2025-09-14T18:06:48,511 Created temporary directory: /tmp/pip-unpack-nxtwko8s 2025-09-14T18:06:48,648 Downloading needlr-0.1.4.tar.gz (26 kB) 2025-09-14T18:06:48,721 Added needlr==0.1.4 from https://files.pythonhosted.org/packages/a4/18/2c9d2d0a4db65b7b4b98873e5826255dd750a6cb1d0f9a9ea1d8eafe5775/needlr-0.1.4.tar.gz to build tracker '/tmp/pip-build-tracker-rc3a5_uh' 2025-09-14T18:06:48,723 Running setup.py (path:/tmp/pip-wheel-4id3u0rr/needlr_8132c7295df542d4ad27ca1795772cf8/setup.py) egg_info for package needlr 2025-09-14T18:06:48,723 Created temporary directory: /tmp/pip-pip-egg-info-ymvy5ddy 2025-09-14T18:06:48,723 Preparing metadata (setup.py): started 2025-09-14T18:06:48,724 Running command python setup.py egg_info 2025-09-14T18:06:49,244 Traceback (most recent call last): 2025-09-14T18:06:49,245 File "", line 2, in 2025-09-14T18:06:49,246 exec(compile(''' 2025-09-14T18:06:49,246 ~~~~^^^^^^^^^^^^ 2025-09-14T18:06:49,246 # This is -- a caller that pip uses to run setup.py 2025-09-14T18:06:49,246 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,246 ...<32 lines>... 2025-09-14T18:06:49,246 exec(compile(setup_py_code, filename, "exec")) 2025-09-14T18:06:49,246 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,246 ''' % ('/tmp/pip-wheel-4id3u0rr/needlr_8132c7295df542d4ad27ca1795772cf8/setup.py',), "", "exec")) 2025-09-14T18:06:49,247 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,247 File "", line 35, in 2025-09-14T18:06:49,247 File "/tmp/pip-wheel-4id3u0rr/needlr_8132c7295df542d4ad27ca1795772cf8/setup.py", line 3, in 2025-09-14T18:06:49,247 with open('requirements.txt', encoding='utf-16') as f: 2025-09-14T18:06:49,247 ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,247 FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt' 2025-09-14T18:06:49,331 ERROR: python setup.py egg_info exited with 1 2025-09-14T18:06:49,344 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-14T18:06:49,344 exec(compile('"'"''"'"''"'"' 2025-09-14T18:06:49,344 # This is -- a caller that pip uses to run setup.py 2025-09-14T18:06:49,344 # 2025-09-14T18:06:49,344 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-14T18:06:49,344 # import from `distutils.core` to work with newer packaging standards. 2025-09-14T18:06:49,344 # - It provides a clear error message when setuptools is not installed. 2025-09-14T18:06:49,344 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-14T18:06:49,344 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-14T18:06:49,344 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-14T18:06:49,344 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-14T18:06:49,344 import os, sys, tokenize, traceback 2025-09-14T18:06:49,344 2025-09-14T18:06:49,344 try: 2025-09-14T18:06:49,344 import setuptools 2025-09-14T18:06:49,344 except ImportError: 2025-09-14T18:06:49,344 print( 2025-09-14T18:06:49,344 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-14T18:06:49,344 "the build environment with exception:", 2025-09-14T18:06:49,344 file=sys.stderr, 2025-09-14T18:06:49,344 ) 2025-09-14T18:06:49,344 traceback.print_exc() 2025-09-14T18:06:49,344 sys.exit(1) 2025-09-14T18:06:49,344 2025-09-14T18:06:49,344 __file__ = %r 2025-09-14T18:06:49,344 sys.argv[0] = __file__ 2025-09-14T18:06:49,344 2025-09-14T18:06:49,344 if os.path.exists(__file__): 2025-09-14T18:06:49,344 filename = __file__ 2025-09-14T18:06:49,344 with tokenize.open(__file__) as f: 2025-09-14T18:06:49,344 setup_py_code = f.read() 2025-09-14T18:06:49,344 else: 2025-09-14T18:06:49,344 filename = "" 2025-09-14T18:06:49,344 setup_py_code = "from setuptools import setup; setup()" 2025-09-14T18:06:49,344 2025-09-14T18:06:49,344 exec(compile(setup_py_code, filename, "exec")) 2025-09-14T18:06:49,344 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-4id3u0rr/needlr_8132c7295df542d4ad27ca1795772cf8/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-ymvy5ddy[/] 2025-09-14T18:06:49,344 [bold magenta]cwd[/]: /tmp/pip-wheel-4id3u0rr/needlr_8132c7295df542d4ad27ca1795772cf8/ 2025-09-14T18:06:49,344 Preparing metadata (setup.py): finished with status 'error' 2025-09-14T18:06:49,345 ERROR: metadata generation failed 2025-09-14T18:06:49,350 Exception information: 2025-09-14T18:06:49,350 Traceback (most recent call last): 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-14T18:06:49,350 call_subprocess( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 args, 2025-09-14T18:06:49,350 ^^^^^ 2025-09-14T18:06:49,350 ...<2 lines>... 2025-09-14T18:06:49,350 spinner=spinner, 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-14T18:06:49,350 raise error 2025-09-14T18:06:49,350 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-14T18:06:49,350 2025-09-14T18:06:49,350 The above exception was the direct cause of the following exception: 2025-09-14T18:06:49,350 2025-09-14T18:06:49,350 Traceback (most recent call last): 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-14T18:06:49,350 status = _inner_run() 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-14T18:06:49,350 return self.run(options, args) 2025-09-14T18:06:49,350 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-14T18:06:49,350 return func(self, options, args) 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-14T18:06:49,350 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-14T18:06:49,350 result = self._result = resolver.resolve( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-14T18:06:49,350 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-14T18:06:49,350 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-14T18:06:49,350 if not criterion.candidates: 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-14T18:06:49,350 return bool(self._sequence) 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-14T18:06:49,350 self._bool = any(self) 2025-09-14T18:06:49,350 ~~~^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-14T18:06:49,350 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-14T18:06:49,350 ^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-14T18:06:49,350 candidate = func() 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-14T18:06:49,350 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 link, template, name, version 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-14T18:06:49,350 self._link_candidate_cache[link] = LinkCandidate( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 link, 2025-09-14T18:06:49,350 ^^^^^ 2025-09-14T18:06:49,350 ...<3 lines>... 2025-09-14T18:06:49,350 version=version, 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-14T18:06:49,350 super().__init__( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 link=link, 2025-09-14T18:06:49,350 ^^^^^^^^^^ 2025-09-14T18:06:49,350 ...<4 lines>... 2025-09-14T18:06:49,350 version=version, 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-14T18:06:49,350 self.dist = self._prepare() 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-14T18:06:49,350 dist = self._prepare_distribution() 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-14T18:06:49,350 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-14T18:06:49,350 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-14T18:06:49,350 dist = _get_prepared_distribution( 2025-09-14T18:06:49,350 req, 2025-09-14T18:06:49,350 ...<3 lines>... 2025-09-14T18:06:49,350 self.check_build_deps, 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-14T18:06:49,350 abstract_dist.prepare_distribution_metadata( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 finder, build_isolation, check_build_deps 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-14T18:06:49,350 self.req.prepare_metadata() 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-14T18:06:49,350 self.metadata_directory = generate_metadata_legacy( 2025-09-14T18:06:49,350 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T18:06:49,350 build_env=self.build_env, 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ...<3 lines>... 2025-09-14T18:06:49,350 details=details, 2025-09-14T18:06:49,350 ^^^^^^^^^^^^^^^^ 2025-09-14T18:06:49,350 ) 2025-09-14T18:06:49,350 ^ 2025-09-14T18:06:49,350 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-14T18:06:49,350 raise MetadataGenerationFailed(package_details=details) from error 2025-09-14T18:06:49,350 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-14T18:06:49,371 Removed needlr==0.1.4 from https://files.pythonhosted.org/packages/a4/18/2c9d2d0a4db65b7b4b98873e5826255dd750a6cb1d0f9a9ea1d8eafe5775/needlr-0.1.4.tar.gz from build tracker '/tmp/pip-build-tracker-rc3a5_uh' 2025-09-14T18:06:49,371 Removed build tracker: '/tmp/pip-build-tracker-rc3a5_uh'