2025-09-07T21:51:07,783 Created temporary directory: /tmp/pip-build-tracker-zg6jreuj 2025-09-07T21:51:07,784 Initialized build tracking at /tmp/pip-build-tracker-zg6jreuj 2025-09-07T21:51:07,784 Created build tracker: /tmp/pip-build-tracker-zg6jreuj 2025-09-07T21:51:07,784 Entered build tracker: /tmp/pip-build-tracker-zg6jreuj 2025-09-07T21:51:07,784 Created temporary directory: /tmp/pip-wheel-a9gep81h 2025-09-07T21:51:07,787 Created temporary directory: /tmp/pip-ephem-wheel-cache-jmh4ryeu 2025-09-07T21:51:07,847 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-07T21:51:07,849 2 location(s) to search for versions of letter: 2025-09-07T21:51:07,849 * https://pypi.org/simple/letter/ 2025-09-07T21:51:07,849 * https://www.piwheels.org/simple/letter/ 2025-09-07T21:51:07,850 Fetching project page and analyzing links: https://pypi.org/simple/letter/ 2025-09-07T21:51:07,850 Getting page https://pypi.org/simple/letter/ 2025-09-07T21:51:07,851 Found index url https://pypi.org/simple/ 2025-09-07T21:51:07,997 Fetched page https://pypi.org/simple/letter/ as application/vnd.pypi.simple.v1+json 2025-09-07T21:51:08,003 Found link https://files.pythonhosted.org/packages/39/14/33d7255d1e87649fb3f173b7a5acff881a1c2185b100190eea705fa70937/letter-0.0.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.1 2025-09-07T21:51:08,004 Found link https://files.pythonhosted.org/packages/07/9f/3651926bde888be416cf8f028bf04e9c2627b7e29f3566577c9bef3f816c/letter-0.0.1.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.1.1 2025-09-07T21:51:08,005 Found link https://files.pythonhosted.org/packages/2c/d4/e7ff37220050a52cd6e7c93671ab871712b208e15ec1f7f4de32edcf9a0b/letter-0.0.1.2.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.1.2 2025-09-07T21:51:08,005 Found link https://files.pythonhosted.org/packages/60/4e/9cb7e267fb29001f82c9cc3faeb3b8799d8d61eb7dbb7667e16af250d98d/letter-0.0.1.3.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.1.3 2025-09-07T21:51:08,006 Found link https://files.pythonhosted.org/packages/7e/88/bd6c8b928e70144e9c240ba55a93e1964e37d410993b251a57024593bb1b/letter-0.0.1.4.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.1.4 2025-09-07T21:51:08,006 Found link https://files.pythonhosted.org/packages/d9/a3/ed6b35c458685195ebfed1007a4feafda7d8384c19b329eb62cca7f1bcfd/letter-0.0.2.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.2 2025-09-07T21:51:08,007 Found link https://files.pythonhosted.org/packages/22/e8/756f31098b2760858ea25a10f9c69953a30764c910eacd2fb01aa4aec3ae/letter-0.0.3.tar.gz (from https://pypi.org/simple/letter/), version: 0.0.3 2025-09-07T21:51:08,007 Found link https://files.pythonhosted.org/packages/f0/08/be0df5319869ed9972336aa4f204dae6c974e7dceee1f21d4faa2e0b6744/letter-0.1.0.tar.gz (from https://pypi.org/simple/letter/), version: 0.1.0 2025-09-07T21:51:08,008 Found link https://files.pythonhosted.org/packages/eb/0b/ccaec80bd851d48c05fec631c23bef43146aa0134561b0e96f2ffa5a653a/letter-0.2.0.tar.gz (from https://pypi.org/simple/letter/), version: 0.2.0 2025-09-07T21:51:08,008 Found link https://files.pythonhosted.org/packages/2b/4a/6bd7df5c1f05ca18fa505b4b9b830994153d1c732422753ddf7969e7363d/letter-0.2.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.2.1 2025-09-07T21:51:08,009 Found link https://files.pythonhosted.org/packages/c1/d8/d98bbed12b068c0354493dfd8d1c78334225827b7e8f163b69567fdabc11/letter-0.2.2.tar.gz (from https://pypi.org/simple/letter/), version: 0.2.2 2025-09-07T21:51:08,010 Found link https://files.pythonhosted.org/packages/94/cc/1c63c489dca04d2b86ba0a7cc17955d961aa4db74eb4d6f734a7828c1ddc/letter-0.2.2.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.2.2.1 2025-09-07T21:51:08,010 Found link https://files.pythonhosted.org/packages/f0/38/ee3cb0b13fe2c0af0998535c28adc24efe573f77bf7aca05ec1bfed54609/letter-0.3.tar.gz (from https://pypi.org/simple/letter/), version: 0.3 2025-09-07T21:51:08,011 Found link https://files.pythonhosted.org/packages/2f/11/aae007a2d58b90f437072495d052dc236125054f8561469b0b2fdbd56bd5/letter-0.3.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.3.1 2025-09-07T21:51:08,011 Found link https://files.pythonhosted.org/packages/3f/cf/8339e0432ce449ea6f90d020fce97e0d712201afc8be4d4ad5a0dfd3c1a7/letter-0.4.1.tar.gz (from https://pypi.org/simple/letter/), version: 0.4.1 2025-09-07T21:51:08,012 Found link https://files.pythonhosted.org/packages/d0/2e/31d22ac746597a544174838033b1d73e6d1eb65200833ac0f50752262e74/letter-0.4.2.tar.gz (from https://pypi.org/simple/letter/), version: 0.4.2 2025-09-07T21:51:08,012 Found link https://files.pythonhosted.org/packages/07/15/e37bd22079a0c39a3ad6b1e23e60cd6f293c5fae4d2567671224005b2605/letter-0.4.3.tar.gz (from https://pypi.org/simple/letter/), version: 0.4.3 2025-09-07T21:51:08,013 Found link https://files.pythonhosted.org/packages/6b/f2/256bf3793948aafa127684de2adefc7099f2055805bde587f4c661132a47/letter-0.5.tar.gz (from https://pypi.org/simple/letter/), version: 0.5 2025-09-07T21:51:08,014 Fetching project page and analyzing links: https://www.piwheels.org/simple/letter/ 2025-09-07T21:51:08,014 Getting page https://www.piwheels.org/simple/letter/ 2025-09-07T21:51:08,015 Found index url https://www.piwheels.org/simple/ 2025-09-07T21:51:08,107 Fetched page https://www.piwheels.org/simple/letter/ as text/html 2025-09-07T21:51:08,110 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.5-py3-none-any.whl#sha256=e7f7156228d54ab053bcd19cd49ea5d25dc01f67c4bbc6faacd196a9a1299d2a (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,110 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.4.3-py3-none-any.whl#sha256=ac3297e17b418133cf0ca1a3ab2c52e5c8738f7b4718bba5082f8c33cc2f08d6 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,110 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.4.2-py3-none-any.whl#sha256=08b000f3bab8b0b1d96ee13b30a883f4693db625e6e50396cd31423d9913f24f (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,110 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.4.1-py3-none-any.whl#sha256=dc814bd938da3664fa7c53c717bf57ca601ef87398ad2d63ae417cd8704748c0 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.3.1-py3-none-any.whl#sha256=947d162d36b7f3a07b2232116e126b34c28fe25d215aebdf8a9d232f0c1c8ecf (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.3-py3-none-any.whl#sha256=9cbc42159c49c42b55ffe3e929be576b5d889db79845866f7e7298b182659eb7 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.2.2.1-py3-none-any.whl#sha256=2902092d0cfbaa3e7287548281d3de4e19b19f77a6ca5d63143e5c2116b70499 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.2.2-py3-none-any.whl#sha256=8770b8157b86c1d252556d3b30bf986ebb1a7491fe6169f3d961c67e31d5f5b3 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.2.1-py3-none-any.whl#sha256=fc3911831853ed7a22e1675ac908417b5b7d0974f569a7552cc50778cac6ac34 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.2.0-py3-none-any.whl#sha256=b5db512dc0a6bf2d0a53621c4a367f6607fc481e77b32bead7c1bb61af546853 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.1.0-py3-none-any.whl#sha256=3c85e3e6a6fe692deaae1e0f806e41b0f20867d88b99a1c0e8953c8ee822819a (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,111 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.3-py3-none-any.whl#sha256=1ed8690f6f4386a55ac7be3a696a2e72a0418d7c9bba09f840d5dd8dc5456bd6 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.2-py3-none-any.whl#sha256=1da66137cfa1399ef97cac40887d0565eb616b042299342e6e445aa526a223bb (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.1.4-py3-none-any.whl#sha256=4711d096a28bac63bc09ab27b7b62a4b5e511283a4faac137ef9f29ad32f32d3 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.1.3-py3-none-any.whl#sha256=6bddc6f8251b89701a8e155f6febac4754b8d7cd0a01c896f041df9e340dd2a1 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.1.2-py3-none-any.whl#sha256=133cf290d2ef5367211030a970764913ea139721ac8549cec4174e1dfe528e41 (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: No binaries permitted for letter: https://archive1.piwheels.org/simple/letter/letter-0.0.1-py3-none-any.whl#sha256=21c6ae6df06a74bed6ecb506b54859aa30d19c3b81382016531bec00d4cc6e0b (from https://www.piwheels.org/simple/letter/) 2025-09-07T21:51:08,112 Skipping link: not a file: https://www.piwheels.org/simple/letter/ 2025-09-07T21:51:08,112 Skipping link: not a file: https://pypi.org/simple/letter/ 2025-09-07T21:51:08,138 Given no hashes to check 1 links for project 'letter': discarding no candidates 2025-09-07T21:51:08,139 Collecting letter==0.0.1.1 2025-09-07T21:51:08,141 Created temporary directory: /tmp/pip-unpack-qwtemu_p 2025-09-07T21:51:08,276 Downloading letter-0.0.1.1.tar.gz (7.3 kB) 2025-09-07T21:51:08,299 Added letter==0.0.1.1 from https://files.pythonhosted.org/packages/07/9f/3651926bde888be416cf8f028bf04e9c2627b7e29f3566577c9bef3f816c/letter-0.0.1.1.tar.gz to build tracker '/tmp/pip-build-tracker-zg6jreuj' 2025-09-07T21:51:08,302 Running setup.py (path:/tmp/pip-wheel-a9gep81h/letter_d83f6bbc10624eec9f10f0d8590563dc/setup.py) egg_info for package letter 2025-09-07T21:51:08,302 Created temporary directory: /tmp/pip-pip-egg-info-e371j60q 2025-09-07T21:51:08,303 Preparing metadata (setup.py): started 2025-09-07T21:51:08,304 Running command python setup.py egg_info 2025-09-07T21:51:09,279 error in letter setup command: 'install_requires' must be a string or iterable of strings containing valid project/version requirement specifiers; Expected end or semicolon (after name and no valid version specifier) 2025-09-07T21:51:09,279 ffs=>0.0.6.1 2025-09-07T21:51:09,279 ^ 2025-09-07T21:51:09,389 ERROR: python setup.py egg_info exited with 1 2025-09-07T21:51:09,401 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-07T21:51:09,401 exec(compile('"'"''"'"''"'"' 2025-09-07T21:51:09,401 # This is -- a caller that pip uses to run setup.py 2025-09-07T21:51:09,401 # 2025-09-07T21:51:09,401 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-07T21:51:09,401 # import from `distutils.core` to work with newer packaging standards. 2025-09-07T21:51:09,401 # - It provides a clear error message when setuptools is not installed. 2025-09-07T21:51:09,401 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-07T21:51:09,401 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-07T21:51:09,401 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-07T21:51:09,401 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-07T21:51:09,401 import os, sys, tokenize, traceback 2025-09-07T21:51:09,401 2025-09-07T21:51:09,401 try: 2025-09-07T21:51:09,401 import setuptools 2025-09-07T21:51:09,401 except ImportError: 2025-09-07T21:51:09,401 print( 2025-09-07T21:51:09,401 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-07T21:51:09,401 "the build environment with exception:", 2025-09-07T21:51:09,401 file=sys.stderr, 2025-09-07T21:51:09,401 ) 2025-09-07T21:51:09,401 traceback.print_exc() 2025-09-07T21:51:09,401 sys.exit(1) 2025-09-07T21:51:09,401 2025-09-07T21:51:09,401 __file__ = %r 2025-09-07T21:51:09,401 sys.argv[0] = __file__ 2025-09-07T21:51:09,401 2025-09-07T21:51:09,401 if os.path.exists(__file__): 2025-09-07T21:51:09,401 filename = __file__ 2025-09-07T21:51:09,401 with tokenize.open(__file__) as f: 2025-09-07T21:51:09,401 setup_py_code = f.read() 2025-09-07T21:51:09,401 else: 2025-09-07T21:51:09,401 filename = "" 2025-09-07T21:51:09,401 setup_py_code = "from setuptools import setup; setup()" 2025-09-07T21:51:09,401 2025-09-07T21:51:09,401 exec(compile(setup_py_code, filename, "exec")) 2025-09-07T21:51:09,401 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-a9gep81h/letter_d83f6bbc10624eec9f10f0d8590563dc/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-e371j60q[/] 2025-09-07T21:51:09,401 [bold magenta]cwd[/]: /tmp/pip-wheel-a9gep81h/letter_d83f6bbc10624eec9f10f0d8590563dc/ 2025-09-07T21:51:09,401 Preparing metadata (setup.py): finished with status 'error' 2025-09-07T21:51:09,402 ERROR: metadata generation failed 2025-09-07T21:51:09,407 Exception information: 2025-09-07T21:51:09,407 Traceback (most recent call last): 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-07T21:51:09,407 call_subprocess( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 args, 2025-09-07T21:51:09,407 ^^^^^ 2025-09-07T21:51:09,407 ...<2 lines>... 2025-09-07T21:51:09,407 spinner=spinner, 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-07T21:51:09,407 raise error 2025-09-07T21:51:09,407 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-07T21:51:09,407 2025-09-07T21:51:09,407 The above exception was the direct cause of the following exception: 2025-09-07T21:51:09,407 2025-09-07T21:51:09,407 Traceback (most recent call last): 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-07T21:51:09,407 status = _inner_run() 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-07T21:51:09,407 return self.run(options, args) 2025-09-07T21:51:09,407 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-07T21:51:09,407 return func(self, options, args) 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-07T21:51:09,407 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-07T21:51:09,407 result = self._result = resolver.resolve( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-07T21:51:09,407 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-07T21:51:09,407 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-07T21:51:09,407 if not criterion.candidates: 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-07T21:51:09,407 return bool(self._sequence) 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-07T21:51:09,407 self._bool = any(self) 2025-09-07T21:51:09,407 ~~~^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-07T21:51:09,407 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-07T21:51:09,407 ^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-07T21:51:09,407 candidate = func() 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-07T21:51:09,407 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 link, template, name, version 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-07T21:51:09,407 self._link_candidate_cache[link] = LinkCandidate( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 link, 2025-09-07T21:51:09,407 ^^^^^ 2025-09-07T21:51:09,407 ...<3 lines>... 2025-09-07T21:51:09,407 version=version, 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-07T21:51:09,407 super().__init__( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 link=link, 2025-09-07T21:51:09,407 ^^^^^^^^^^ 2025-09-07T21:51:09,407 ...<4 lines>... 2025-09-07T21:51:09,407 version=version, 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-07T21:51:09,407 self.dist = self._prepare() 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-07T21:51:09,407 dist = self._prepare_distribution() 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-07T21:51:09,407 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-07T21:51:09,407 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-07T21:51:09,407 dist = _get_prepared_distribution( 2025-09-07T21:51:09,407 req, 2025-09-07T21:51:09,407 ...<3 lines>... 2025-09-07T21:51:09,407 self.check_build_deps, 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-07T21:51:09,407 abstract_dist.prepare_distribution_metadata( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 finder, build_isolation, check_build_deps 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-07T21:51:09,407 self.req.prepare_metadata() 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-07T21:51:09,407 self.metadata_directory = generate_metadata_legacy( 2025-09-07T21:51:09,407 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-07T21:51:09,407 build_env=self.build_env, 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ...<3 lines>... 2025-09-07T21:51:09,407 details=details, 2025-09-07T21:51:09,407 ^^^^^^^^^^^^^^^^ 2025-09-07T21:51:09,407 ) 2025-09-07T21:51:09,407 ^ 2025-09-07T21:51:09,407 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-07T21:51:09,407 raise MetadataGenerationFailed(package_details=details) from error 2025-09-07T21:51:09,407 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-07T21:51:09,431 Removed letter==0.0.1.1 from https://files.pythonhosted.org/packages/07/9f/3651926bde888be416cf8f028bf04e9c2627b7e29f3566577c9bef3f816c/letter-0.0.1.1.tar.gz from build tracker '/tmp/pip-build-tracker-zg6jreuj' 2025-09-07T21:51:09,431 Removed build tracker: '/tmp/pip-build-tracker-zg6jreuj'