2025-09-08T08:52:59,409 Created temporary directory: /tmp/pip-build-tracker-jlfokjrt 2025-09-08T08:52:59,410 Initialized build tracking at /tmp/pip-build-tracker-jlfokjrt 2025-09-08T08:52:59,410 Created build tracker: /tmp/pip-build-tracker-jlfokjrt 2025-09-08T08:52:59,410 Entered build tracker: /tmp/pip-build-tracker-jlfokjrt 2025-09-08T08:52:59,411 Created temporary directory: /tmp/pip-wheel-auzgiub0 2025-09-08T08:52:59,414 Created temporary directory: /tmp/pip-ephem-wheel-cache-qbl43opb 2025-09-08T08:52:59,468 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-08T08:52:59,471 2 location(s) to search for versions of twitchobserver: 2025-09-08T08:52:59,471 * https://pypi.org/simple/twitchobserver/ 2025-09-08T08:52:59,471 * https://www.piwheels.org/simple/twitchobserver/ 2025-09-08T08:52:59,471 Fetching project page and analyzing links: https://pypi.org/simple/twitchobserver/ 2025-09-08T08:52:59,471 Getting page https://pypi.org/simple/twitchobserver/ 2025-09-08T08:52:59,472 Found index url https://pypi.org/simple/ 2025-09-08T08:52:59,617 Fetched page https://pypi.org/simple/twitchobserver/ as application/vnd.pypi.simple.v1+json 2025-09-08T08:52:59,621 Found link https://files.pythonhosted.org/packages/8f/e7/5f9dbc21bc295c2bdc0df94c7b5073b95c7825c4f35f0a20d4780106e5de/twitchobserver-0.7.1.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.1 2025-09-08T08:52:59,621 Found link https://files.pythonhosted.org/packages/40/28/827333d3ec1a504764460a2c85accaa8a55f1feb549326c1941a15cf9d12/twitchobserver-0.7.2.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.2 2025-09-08T08:52:59,622 Found link https://files.pythonhosted.org/packages/ea/42/a3284b05813a48325e281d5e9088d06adc9376976e9d6a20fe7e43f46547/twitchobserver-0.7.3.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.3 2025-09-08T08:52:59,622 Found link https://files.pythonhosted.org/packages/3f/fe/0973fd50dc84561f16ddbd8a2cb6b24e538567ce30b9909ba3478a20d442/twitchobserver-0.7.4.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.4 2025-09-08T08:52:59,623 Found link https://files.pythonhosted.org/packages/7d/f8/5d516d66f67a665a3aa03ca86b2d6e604738f6cb51c8909449ff547757d2/twitchobserver-0.7.5.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.5 2025-09-08T08:52:59,623 Found link https://files.pythonhosted.org/packages/11/f2/1735237955152327b311a64906f7ea90b20bb96ff0e7555e5dd860c2b11b/twitchobserver-0.7.6.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.6 2025-09-08T08:52:59,624 Found link https://files.pythonhosted.org/packages/47/71/e744ab8eadc2878c0f353ab8a910ce9ca14dd173a752b8a75bdbe8cd2c92/twitchobserver-0.7.7.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.7.7 2025-09-08T08:52:59,624 Found link https://files.pythonhosted.org/packages/e5/3d/57944a9bd44295d941c3b2d3bd4df1065bcf2ec493c3d3f616e89f1d0325/twitchobserver-0.8.0.tar.gz (from https://pypi.org/simple/twitchobserver/), version: 0.8.0 2025-09-08T08:52:59,625 Fetching project page and analyzing links: https://www.piwheels.org/simple/twitchobserver/ 2025-09-08T08:52:59,625 Getting page https://www.piwheels.org/simple/twitchobserver/ 2025-09-08T08:52:59,627 Found index url https://www.piwheels.org/simple/ 2025-09-08T08:52:59,730 Fetched page https://www.piwheels.org/simple/twitchobserver/ as text/html 2025-09-08T08:52:59,732 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.8.0-py3-none-any.whl#sha256=1cccbd08c4d263d811e2a11fc46ad620ebfb54da948fa08cd2023beb902eba86 (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,732 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.7.7-py3-none-any.whl#sha256=2f4c4569334ee0d0e830bf5aabcf5b66f53f1f2ce6e9417954eed9a3b9744273 (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,732 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.7.6-py3-none-any.whl#sha256=72688b6c23c95024ade1eedccff5d7e985c7fbd9bae8aa43328825a923aa3b2f (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,733 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.7.5-py3-none-any.whl#sha256=a76076a0ddf95e709385cc8f3685f8c6f0e6560c05f791089fa5fd0b45b26373 (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,733 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.7.4-py3-none-any.whl#sha256=098f28301cecf6a07c99a367a4faf1f29b09c55da28f48fb039f469eca784166 (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,733 Skipping link: No binaries permitted for twitchobserver: https://archive1.piwheels.org/simple/twitchobserver/twitchobserver-0.7.2-py3-none-any.whl#sha256=13e541c10094559322729dd2586402339b62c94f7730a6072077fb8b8c860b9c (from https://www.piwheels.org/simple/twitchobserver/) 2025-09-08T08:52:59,733 Skipping link: not a file: https://www.piwheels.org/simple/twitchobserver/ 2025-09-08T08:52:59,734 Skipping link: not a file: https://pypi.org/simple/twitchobserver/ 2025-09-08T08:52:59,761 Given no hashes to check 1 links for project 'twitchobserver': discarding no candidates 2025-09-08T08:52:59,762 Collecting twitchobserver==0.7.1 2025-09-08T08:52:59,763 Created temporary directory: /tmp/pip-unpack-8h6rf2n5 2025-09-08T08:52:59,900 Downloading twitchobserver-0.7.1.tar.gz (7.0 kB) 2025-09-08T08:52:59,921 Added twitchobserver==0.7.1 from https://files.pythonhosted.org/packages/8f/e7/5f9dbc21bc295c2bdc0df94c7b5073b95c7825c4f35f0a20d4780106e5de/twitchobserver-0.7.1.tar.gz to build tracker '/tmp/pip-build-tracker-jlfokjrt' 2025-09-08T08:52:59,923 Running setup.py (path:/tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/setup.py) egg_info for package twitchobserver 2025-09-08T08:52:59,923 Created temporary directory: /tmp/pip-pip-egg-info-r7ftmzej 2025-09-08T08:52:59,924 Preparing metadata (setup.py): started 2025-09-08T08:52:59,924 Running command python setup.py egg_info 2025-09-08T08:53:00,455 /tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/twitchobserver/twitchobserver.py:69: SyntaxWarning: invalid escape sequence '\S' 2025-09-08T08:53:00,455 _sever_message_re = re.compile('(?:@(\S*)\s+)?:(\w*|tmi.twitch.tv)(?:!\w*)?(?:@\w*.tmi.twitch.tv)?\s+([A-Z]*|\d{3})\s+([^\r\n]*)') 2025-09-08T08:53:00,455 /tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/twitchobserver/twitchobserver.py:72: SyntaxWarning: invalid escape sequence '\w' 2025-09-08T08:53:00,455 _privmsg_params_re = re.compile('#(\w+) :([\s\S]*)') 2025-09-08T08:53:00,455 /tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/twitchobserver/twitchobserver.py:75: SyntaxWarning: invalid escape sequence '\w' 2025-09-08T08:53:00,456 _whisper_params_re = re.compile('(\w+)\s+:([\s\S]*)') 2025-09-08T08:53:00,456 /tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/twitchobserver/twitchobserver.py:78: SyntaxWarning: invalid escape sequence '\w' 2025-09-08T08:53:00,456 _mode_params_re = re.compile('#(\w+)\s+([+-]o)\s+(\w+)') 2025-09-08T08:53:00,470 Traceback (most recent call last): 2025-09-08T08:53:00,472 File "", line 2, in 2025-09-08T08:53:00,472 exec(compile(''' 2025-09-08T08:53:00,472 ~~~~^^^^^^^^^^^^ 2025-09-08T08:53:00,472 # This is -- a caller that pip uses to run setup.py 2025-09-08T08:53:00,472 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,472 ...<32 lines>... 2025-09-08T08:53:00,472 exec(compile(setup_py_code, filename, "exec")) 2025-09-08T08:53:00,472 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,473 ''' % ('/tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/setup.py',), "", "exec")) 2025-09-08T08:53:00,473 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,473 File "", line 35, in 2025-09-08T08:53:00,473 File "/tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/setup.py", line 7, in 2025-09-08T08:53:00,473 long_description=open('README.md').read(), 2025-09-08T08:53:00,473 ~~~~^^^^^^^^^^^^^ 2025-09-08T08:53:00,473 FileNotFoundError: [Errno 2] No such file or directory: 'README.md' 2025-09-08T08:53:00,558 ERROR: python setup.py egg_info exited with 1 2025-09-08T08:53:00,571 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-08T08:53:00,571 exec(compile('"'"''"'"''"'"' 2025-09-08T08:53:00,571 # This is -- a caller that pip uses to run setup.py 2025-09-08T08:53:00,571 # 2025-09-08T08:53:00,571 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-08T08:53:00,571 # import from `distutils.core` to work with newer packaging standards. 2025-09-08T08:53:00,571 # - It provides a clear error message when setuptools is not installed. 2025-09-08T08:53:00,571 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-08T08:53:00,571 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-08T08:53:00,571 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-08T08:53:00,571 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-08T08:53:00,571 import os, sys, tokenize, traceback 2025-09-08T08:53:00,571 2025-09-08T08:53:00,571 try: 2025-09-08T08:53:00,571 import setuptools 2025-09-08T08:53:00,571 except ImportError: 2025-09-08T08:53:00,571 print( 2025-09-08T08:53:00,571 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-08T08:53:00,571 "the build environment with exception:", 2025-09-08T08:53:00,571 file=sys.stderr, 2025-09-08T08:53:00,571 ) 2025-09-08T08:53:00,571 traceback.print_exc() 2025-09-08T08:53:00,571 sys.exit(1) 2025-09-08T08:53:00,571 2025-09-08T08:53:00,571 __file__ = %r 2025-09-08T08:53:00,571 sys.argv[0] = __file__ 2025-09-08T08:53:00,571 2025-09-08T08:53:00,571 if os.path.exists(__file__): 2025-09-08T08:53:00,571 filename = __file__ 2025-09-08T08:53:00,571 with tokenize.open(__file__) as f: 2025-09-08T08:53:00,571 setup_py_code = f.read() 2025-09-08T08:53:00,571 else: 2025-09-08T08:53:00,571 filename = "" 2025-09-08T08:53:00,571 setup_py_code = "from setuptools import setup; setup()" 2025-09-08T08:53:00,571 2025-09-08T08:53:00,571 exec(compile(setup_py_code, filename, "exec")) 2025-09-08T08:53:00,571 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-r7ftmzej[/] 2025-09-08T08:53:00,571 [bold magenta]cwd[/]: /tmp/pip-wheel-auzgiub0/twitchobserver_e9e1f8fa6a414d84bb84fa9a78fb319e/ 2025-09-08T08:53:00,571 Preparing metadata (setup.py): finished with status 'error' 2025-09-08T08:53:00,572 ERROR: metadata generation failed 2025-09-08T08:53:00,578 Exception information: 2025-09-08T08:53:00,578 Traceback (most recent call last): 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-08T08:53:00,578 call_subprocess( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 args, 2025-09-08T08:53:00,578 ^^^^^ 2025-09-08T08:53:00,578 ...<2 lines>... 2025-09-08T08:53:00,578 spinner=spinner, 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-08T08:53:00,578 raise error 2025-09-08T08:53:00,578 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-08T08:53:00,578 2025-09-08T08:53:00,578 The above exception was the direct cause of the following exception: 2025-09-08T08:53:00,578 2025-09-08T08:53:00,578 Traceback (most recent call last): 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-08T08:53:00,578 status = _inner_run() 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-08T08:53:00,578 return self.run(options, args) 2025-09-08T08:53:00,578 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-08T08:53:00,578 return func(self, options, args) 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-08T08:53:00,578 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-08T08:53:00,578 result = self._result = resolver.resolve( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-08T08:53:00,578 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-08T08:53:00,578 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-08T08:53:00,578 if not criterion.candidates: 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-08T08:53:00,578 return bool(self._sequence) 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-08T08:53:00,578 self._bool = any(self) 2025-09-08T08:53:00,578 ~~~^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-08T08:53:00,578 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-08T08:53:00,578 ^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-08T08:53:00,578 candidate = func() 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-08T08:53:00,578 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 link, template, name, version 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-08T08:53:00,578 self._link_candidate_cache[link] = LinkCandidate( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 link, 2025-09-08T08:53:00,578 ^^^^^ 2025-09-08T08:53:00,578 ...<3 lines>... 2025-09-08T08:53:00,578 version=version, 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-08T08:53:00,578 super().__init__( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 link=link, 2025-09-08T08:53:00,578 ^^^^^^^^^^ 2025-09-08T08:53:00,578 ...<4 lines>... 2025-09-08T08:53:00,578 version=version, 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-08T08:53:00,578 self.dist = self._prepare() 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-08T08:53:00,578 dist = self._prepare_distribution() 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-08T08:53:00,578 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-08T08:53:00,578 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-08T08:53:00,578 dist = _get_prepared_distribution( 2025-09-08T08:53:00,578 req, 2025-09-08T08:53:00,578 ...<3 lines>... 2025-09-08T08:53:00,578 self.check_build_deps, 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-08T08:53:00,578 abstract_dist.prepare_distribution_metadata( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 finder, build_isolation, check_build_deps 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-08T08:53:00,578 self.req.prepare_metadata() 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-08T08:53:00,578 self.metadata_directory = generate_metadata_legacy( 2025-09-08T08:53:00,578 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-08T08:53:00,578 build_env=self.build_env, 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ...<3 lines>... 2025-09-08T08:53:00,578 details=details, 2025-09-08T08:53:00,578 ^^^^^^^^^^^^^^^^ 2025-09-08T08:53:00,578 ) 2025-09-08T08:53:00,578 ^ 2025-09-08T08:53:00,578 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-08T08:53:00,578 raise MetadataGenerationFailed(package_details=details) from error 2025-09-08T08:53:00,578 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-08T08:53:00,600 Removed twitchobserver==0.7.1 from https://files.pythonhosted.org/packages/8f/e7/5f9dbc21bc295c2bdc0df94c7b5073b95c7825c4f35f0a20d4780106e5de/twitchobserver-0.7.1.tar.gz from build tracker '/tmp/pip-build-tracker-jlfokjrt' 2025-09-08T08:53:00,600 Removed build tracker: '/tmp/pip-build-tracker-jlfokjrt'