2025-09-10T22:15:35,221 Created temporary directory: /tmp/pip-build-tracker-yjm7_6pm 2025-09-10T22:15:35,222 Initialized build tracking at /tmp/pip-build-tracker-yjm7_6pm 2025-09-10T22:15:35,222 Created build tracker: /tmp/pip-build-tracker-yjm7_6pm 2025-09-10T22:15:35,222 Entered build tracker: /tmp/pip-build-tracker-yjm7_6pm 2025-09-10T22:15:35,223 Created temporary directory: /tmp/pip-wheel-e8mpq9y7 2025-09-10T22:15:35,226 Created temporary directory: /tmp/pip-ephem-wheel-cache-b8gl01o7 2025-09-10T22:15:35,288 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-10T22:15:35,290 2 location(s) to search for versions of duo-universal: 2025-09-10T22:15:35,290 * https://pypi.org/simple/duo-universal/ 2025-09-10T22:15:35,290 * https://www.piwheels.org/simple/duo-universal/ 2025-09-10T22:15:35,291 Fetching project page and analyzing links: https://pypi.org/simple/duo-universal/ 2025-09-10T22:15:35,291 Getting page https://pypi.org/simple/duo-universal/ 2025-09-10T22:15:35,292 Found index url https://pypi.org/simple/ 2025-09-10T22:15:35,438 Fetched page https://pypi.org/simple/duo-universal/ as application/vnd.pypi.simple.v1+json 2025-09-10T22:15:35,443 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/36/d5/0b996b5bdb46a1df573f9d60890b61d292494e301fa64a8c002b71a757e9/duo_universal-1.0.1-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) 2025-09-10T22:15:35,443 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/bb/4e/555245a409c74d94320b4eaa029abfd99f4718fa6e82f91918da46713170/duo_universal-1.1.0-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) 2025-09-10T22:15:35,444 Found link https://files.pythonhosted.org/packages/13/c9/48592662839bda12b1b3e27056cc604f861e50100a72df15c2770a2ed7f7/duo_universal-1.1.0.tar.gz (from https://pypi.org/simple/duo-universal/), version: 1.1.0 2025-09-10T22:15:35,444 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/44/1e/e13340a903f344425cedc54592563db20b9f3139c3f80cdb91d491b2a964/duo_universal-2.0.1-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,445 Found link https://files.pythonhosted.org/packages/d6/92/cc5b265b94e35aeeb29b96b6238378be97930fc855ad8745b86bb926e5b4/duo_universal-2.0.1.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.0.1 2025-09-10T22:15:35,446 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/1c/fb/64cb022469e9fb496d2d590576f00fd219edfcf8a44ced6076a0f30a8aaa/duo_universal-2.0.2-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,446 Found link https://files.pythonhosted.org/packages/14/55/c92c1a8a7ddb50fdc1db24b20c982e6a4f1d7cd71e63f638b851cb7f272f/duo_universal-2.0.2.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.0.2 2025-09-10T22:15:35,447 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/6d/fb/1b3a03def97052d523ce95cf112f085edb8b86663b5ac5cc7a8edd83ed87/duo_universal-2.0.3-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,447 Found link https://files.pythonhosted.org/packages/2d/66/b4fbfaa211eda3547695c7aae0781d9b462b5e84b4280f4cfa4001dccd27/duo_universal-2.0.3.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.0.3 2025-09-10T22:15:35,448 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/48/6f/50d5a47f0f933b8bbe58c5917ff0886ce35abbdc892611bb776a2fc45dac/duo_universal-2.1.0-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,448 Found link https://files.pythonhosted.org/packages/c2/a8/ffbe43b423295b30d842dccbbfddcf9a5b86ca21c8c2252fe2d20f37c73b/duo_universal-2.1.0.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.1.0 2025-09-10T22:15:35,448 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/3c/04/5b63bec296dd81d476bc0f1796d9e6bbe6300a806627f09a9bcd20e5139d/duo_universal-2.1.1-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,449 Found link https://files.pythonhosted.org/packages/be/ed/487b4d55739cfd31aa6c1c850edee8067e6eb8974a6233b8c071f2f1513b/duo_universal-2.1.1.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.1.1 2025-09-10T22:15:35,449 Skipping link: No binaries permitted for duo-universal: https://files.pythonhosted.org/packages/84/7c/d4579712d150255e0cf268df498bcbca106a0238cd872bc45005f64afe99/duo_universal-2.2.0-py2.py3-none-any.whl (from https://pypi.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,450 Found link https://files.pythonhosted.org/packages/42/5a/0b2280fd79f00170b8494331451c347e40ebe696cb8621cb9c6827203bd5/duo_universal-2.2.0.tar.gz (from https://pypi.org/simple/duo-universal/) (requires-python:>=3), version: 2.2.0 2025-09-10T22:15:35,450 Fetching project page and analyzing links: https://www.piwheels.org/simple/duo-universal/ 2025-09-10T22:15:35,451 Getting page https://www.piwheels.org/simple/duo-universal/ 2025-09-10T22:15:35,453 Found index url https://www.piwheels.org/simple/ 2025-09-10T22:15:35,539 Fetched page https://www.piwheels.org/simple/duo-universal/ as text/html 2025-09-10T22:15:35,541 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-2.2.0-py2.py3-none-any.whl#sha256=3cc023b0ec71e09926fd389d4b060c671c3056ed4fb23f336e2eea1d08a06b53 (from https://www.piwheels.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,542 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-2.1.1-py2.py3-none-any.whl#sha256=0e142b5279fc1455ef9a162024d2339e6e359cf5bd4c9f1b5ea93c8fa59455e9 (from https://www.piwheels.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,542 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-2.1.0-py2.py3-none-any.whl#sha256=c57703e8a204dfe24df8b9b62e74d27b7f33c77e12ad7c76ba97134ae15ffc9f (from https://www.piwheels.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,542 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-2.0.3-py2.py3-none-any.whl#sha256=e1430664c076b3b0cd5a750fe52b958f513312342ef446bcb172fee425243bd7 (from https://www.piwheels.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,542 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-2.0.1-py2.py3-none-any.whl#sha256=ad3187f899ca6bafc7e0ee2ecc5d58fe308795bb2a34e845566e8f9aabe52f64 (from https://www.piwheels.org/simple/duo-universal/) (requires-python:>=3) 2025-09-10T22:15:35,542 Skipping link: No binaries permitted for duo-universal: https://archive1.piwheels.org/simple/duo-universal/duo_universal-1.1.0-py2.py3-none-any.whl#sha256=04b95cebdc31230b3ca24f53391f72ba5c92a501beb1c228f6c7075bce0a353f (from https://www.piwheels.org/simple/duo-universal/) 2025-09-10T22:15:35,542 Skipping link: not a file: https://www.piwheels.org/simple/duo-universal/ 2025-09-10T22:15:35,543 Skipping link: not a file: https://pypi.org/simple/duo-universal/ 2025-09-10T22:15:35,567 Given no hashes to check 1 links for project 'duo-universal': discarding no candidates 2025-09-10T22:15:35,569 Collecting duo-universal==2.0.2 2025-09-10T22:15:35,570 Created temporary directory: /tmp/pip-unpack-nh8m1jv_ 2025-09-10T22:15:35,767 Downloading duo_universal-2.0.2.tar.gz (16 kB) 2025-09-10T22:15:35,795 Added duo-universal==2.0.2 from https://files.pythonhosted.org/packages/14/55/c92c1a8a7ddb50fdc1db24b20c982e6a4f1d7cd71e63f638b851cb7f272f/duo_universal-2.0.2.tar.gz to build tracker '/tmp/pip-build-tracker-yjm7_6pm' 2025-09-10T22:15:35,797 Running setup.py (path:/tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/setup.py) egg_info for package duo-universal 2025-09-10T22:15:35,797 Created temporary directory: /tmp/pip-pip-egg-info-hufx7q3w 2025-09-10T22:15:35,797 Preparing metadata (setup.py): started 2025-09-10T22:15:35,798 Running command python setup.py egg_info 2025-09-10T22:15:36,356 Traceback (most recent call last): 2025-09-10T22:15:36,357 File "", line 2, in 2025-09-10T22:15:36,357 exec(compile(''' 2025-09-10T22:15:36,358 ~~~~^^^^^^^^^^^^ 2025-09-10T22:15:36,358 # This is -- a caller that pip uses to run setup.py 2025-09-10T22:15:36,358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,358 ...<32 lines>... 2025-09-10T22:15:36,358 exec(compile(setup_py_code, filename, "exec")) 2025-09-10T22:15:36,358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,358 ''' % ('/tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/setup.py',), "", "exec")) 2025-09-10T22:15:36,358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,359 File "", line 35, in 2025-09-10T22:15:36,359 File "/tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/setup.py", line 30, in 2025-09-10T22:15:36,359 with open(requirements_dev_filename) as fd: 2025-09-10T22:15:36,359 ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,359 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/tests/requirements.txt' 2025-09-10T22:15:36,444 ERROR: python setup.py egg_info exited with 1 2025-09-10T22:15:36,456 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-10T22:15:36,456 exec(compile('"'"''"'"''"'"' 2025-09-10T22:15:36,456 # This is -- a caller that pip uses to run setup.py 2025-09-10T22:15:36,456 # 2025-09-10T22:15:36,456 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-10T22:15:36,456 # import from `distutils.core` to work with newer packaging standards. 2025-09-10T22:15:36,456 # - It provides a clear error message when setuptools is not installed. 2025-09-10T22:15:36,456 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-10T22:15:36,456 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-10T22:15:36,456 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-10T22:15:36,456 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-10T22:15:36,456 import os, sys, tokenize, traceback 2025-09-10T22:15:36,456 2025-09-10T22:15:36,456 try: 2025-09-10T22:15:36,456 import setuptools 2025-09-10T22:15:36,456 except ImportError: 2025-09-10T22:15:36,456 print( 2025-09-10T22:15:36,456 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-10T22:15:36,456 "the build environment with exception:", 2025-09-10T22:15:36,456 file=sys.stderr, 2025-09-10T22:15:36,456 ) 2025-09-10T22:15:36,456 traceback.print_exc() 2025-09-10T22:15:36,456 sys.exit(1) 2025-09-10T22:15:36,456 2025-09-10T22:15:36,456 __file__ = %r 2025-09-10T22:15:36,456 sys.argv[0] = __file__ 2025-09-10T22:15:36,456 2025-09-10T22:15:36,456 if os.path.exists(__file__): 2025-09-10T22:15:36,456 filename = __file__ 2025-09-10T22:15:36,456 with tokenize.open(__file__) as f: 2025-09-10T22:15:36,456 setup_py_code = f.read() 2025-09-10T22:15:36,456 else: 2025-09-10T22:15:36,456 filename = "" 2025-09-10T22:15:36,456 setup_py_code = "from setuptools import setup; setup()" 2025-09-10T22:15:36,456 2025-09-10T22:15:36,456 exec(compile(setup_py_code, filename, "exec")) 2025-09-10T22:15:36,456 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-hufx7q3w[/] 2025-09-10T22:15:36,456 [bold magenta]cwd[/]: /tmp/pip-wheel-e8mpq9y7/duo-universal_04e29f03eb8e4e88a2ea814fd48d295d/ 2025-09-10T22:15:36,456 Preparing metadata (setup.py): finished with status 'error' 2025-09-10T22:15:36,457 ERROR: metadata generation failed 2025-09-10T22:15:36,462 Exception information: 2025-09-10T22:15:36,462 Traceback (most recent call last): 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-10T22:15:36,462 call_subprocess( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 args, 2025-09-10T22:15:36,462 ^^^^^ 2025-09-10T22:15:36,462 ...<2 lines>... 2025-09-10T22:15:36,462 spinner=spinner, 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-10T22:15:36,462 raise error 2025-09-10T22:15:36,462 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-10T22:15:36,462 2025-09-10T22:15:36,462 The above exception was the direct cause of the following exception: 2025-09-10T22:15:36,462 2025-09-10T22:15:36,462 Traceback (most recent call last): 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-10T22:15:36,462 status = _inner_run() 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-10T22:15:36,462 return self.run(options, args) 2025-09-10T22:15:36,462 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-10T22:15:36,462 return func(self, options, args) 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-10T22:15:36,462 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-10T22:15:36,462 result = self._result = resolver.resolve( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-10T22:15:36,462 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-10T22:15:36,462 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-10T22:15:36,462 if not criterion.candidates: 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-10T22:15:36,462 return bool(self._sequence) 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-10T22:15:36,462 self._bool = any(self) 2025-09-10T22:15:36,462 ~~~^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-10T22:15:36,462 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-10T22:15:36,462 ^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-10T22:15:36,462 candidate = func() 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-10T22:15:36,462 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 link, template, name, version 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-10T22:15:36,462 self._link_candidate_cache[link] = LinkCandidate( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 link, 2025-09-10T22:15:36,462 ^^^^^ 2025-09-10T22:15:36,462 ...<3 lines>... 2025-09-10T22:15:36,462 version=version, 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-10T22:15:36,462 super().__init__( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 link=link, 2025-09-10T22:15:36,462 ^^^^^^^^^^ 2025-09-10T22:15:36,462 ...<4 lines>... 2025-09-10T22:15:36,462 version=version, 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-10T22:15:36,462 self.dist = self._prepare() 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-10T22:15:36,462 dist = self._prepare_distribution() 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-10T22:15:36,462 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-10T22:15:36,462 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-10T22:15:36,462 dist = _get_prepared_distribution( 2025-09-10T22:15:36,462 req, 2025-09-10T22:15:36,462 ...<3 lines>... 2025-09-10T22:15:36,462 self.check_build_deps, 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-10T22:15:36,462 abstract_dist.prepare_distribution_metadata( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 finder, build_isolation, check_build_deps 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-10T22:15:36,462 self.req.prepare_metadata() 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-10T22:15:36,462 self.metadata_directory = generate_metadata_legacy( 2025-09-10T22:15:36,462 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T22:15:36,462 build_env=self.build_env, 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ...<3 lines>... 2025-09-10T22:15:36,462 details=details, 2025-09-10T22:15:36,462 ^^^^^^^^^^^^^^^^ 2025-09-10T22:15:36,462 ) 2025-09-10T22:15:36,462 ^ 2025-09-10T22:15:36,462 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-10T22:15:36,462 raise MetadataGenerationFailed(package_details=details) from error 2025-09-10T22:15:36,462 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-10T22:15:36,483 Removed duo-universal==2.0.2 from https://files.pythonhosted.org/packages/14/55/c92c1a8a7ddb50fdc1db24b20c982e6a4f1d7cd71e63f638b851cb7f272f/duo_universal-2.0.2.tar.gz from build tracker '/tmp/pip-build-tracker-yjm7_6pm' 2025-09-10T22:15:36,483 Removed build tracker: '/tmp/pip-build-tracker-yjm7_6pm'