2025-09-14T08:32:33,580 Created temporary directory: /tmp/pip-build-tracker-xmk56e41 2025-09-14T08:32:33,581 Initialized build tracking at /tmp/pip-build-tracker-xmk56e41 2025-09-14T08:32:33,581 Created build tracker: /tmp/pip-build-tracker-xmk56e41 2025-09-14T08:32:33,582 Entered build tracker: /tmp/pip-build-tracker-xmk56e41 2025-09-14T08:32:33,582 Created temporary directory: /tmp/pip-wheel-xyntferl 2025-09-14T08:32:33,586 Created temporary directory: /tmp/pip-ephem-wheel-cache-wis3ya70 2025-09-14T08:32:33,652 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-14T08:32:33,655 2 location(s) to search for versions of mdpw: 2025-09-14T08:32:33,655 * https://pypi.org/simple/mdpw/ 2025-09-14T08:32:33,655 * https://www.piwheels.org/simple/mdpw/ 2025-09-14T08:32:33,655 Fetching project page and analyzing links: https://pypi.org/simple/mdpw/ 2025-09-14T08:32:33,655 Getting page https://pypi.org/simple/mdpw/ 2025-09-14T08:32:33,657 Found index url https://pypi.org/simple/ 2025-09-14T08:32:33,813 Fetched page https://pypi.org/simple/mdpw/ as application/vnd.pypi.simple.v1+json 2025-09-14T08:32:33,815 Skipping link: No binaries permitted for mdpw: https://files.pythonhosted.org/packages/db/ce/de06092625a0d8b42b8af775d1a6aed45f2b27a03f7329fc1990ea0f506a/mdpw-0.0.1-py3-none-any.whl (from https://pypi.org/simple/mdpw/) 2025-09-14T08:32:33,815 Skipping link: No binaries permitted for mdpw: https://files.pythonhosted.org/packages/48/77/91ecbaf3b7b4b2cc67c05f5b2a4b1c5b028dbc481c5715700ee016b8af9a/mdpw-0.0.2-py3-none-any.whl (from https://pypi.org/simple/mdpw/) 2025-09-14T08:32:33,815 Found link https://files.pythonhosted.org/packages/98/90/9b490551e6796c61fcf97203a80111246630e4330ed3198c5314c3cc560e/mdpw-0.0.2.tar.gz (from https://pypi.org/simple/mdpw/), version: 0.0.2 2025-09-14T08:32:33,815 Skipping link: No binaries permitted for mdpw: https://files.pythonhosted.org/packages/bb/0a/bee4dc581ffc6009b22e0337af4abead794493f1cbbdef2bd13b824a6bd9/mdpw-0.0.3-py3-none-any.whl (from https://pypi.org/simple/mdpw/) 2025-09-14T08:32:33,816 Found link https://files.pythonhosted.org/packages/a9/40/862612ce80fe9dc13c9ac9858308092b9353c8bc45614fd84d179a3c11e5/mdpw-0.0.3.tar.gz (from https://pypi.org/simple/mdpw/), version: 0.0.3 2025-09-14T08:32:33,816 Fetching project page and analyzing links: https://www.piwheels.org/simple/mdpw/ 2025-09-14T08:32:33,817 Getting page https://www.piwheels.org/simple/mdpw/ 2025-09-14T08:32:33,818 Found index url https://www.piwheels.org/simple/ 2025-09-14T08:32:33,924 Fetched page https://www.piwheels.org/simple/mdpw/ as text/html 2025-09-14T08:32:33,925 Skipping link: No binaries permitted for mdpw: https://archive1.piwheels.org/simple/mdpw/mdpw-0.0.2-py3-none-any.whl#sha256=6bd43f99cb3e2bd82cee4775b41f8b22fcd7efa925d2aa39c0ed67176d6fd5ac (from https://www.piwheels.org/simple/mdpw/) 2025-09-14T08:32:33,926 Skipping link: not a file: https://www.piwheels.org/simple/mdpw/ 2025-09-14T08:32:33,926 Skipping link: not a file: https://pypi.org/simple/mdpw/ 2025-09-14T08:32:33,953 Given no hashes to check 1 links for project 'mdpw': discarding no candidates 2025-09-14T08:32:33,954 Collecting mdpw==0.0.3 2025-09-14T08:32:33,956 Created temporary directory: /tmp/pip-unpack-_5gb9q0l 2025-09-14T08:32:34,104 Downloading mdpw-0.0.3.tar.gz (5.3 kB) 2025-09-14T08:32:34,122 Added mdpw==0.0.3 from https://files.pythonhosted.org/packages/a9/40/862612ce80fe9dc13c9ac9858308092b9353c8bc45614fd84d179a3c11e5/mdpw-0.0.3.tar.gz to build tracker '/tmp/pip-build-tracker-xmk56e41' 2025-09-14T08:32:34,123 Running setup.py (path:/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/setup.py) egg_info for package mdpw 2025-09-14T08:32:34,124 Created temporary directory: /tmp/pip-pip-egg-info-u8cn829o 2025-09-14T08:32:34,124 Preparing metadata (setup.py): started 2025-09-14T08:32:34,125 Running command python setup.py egg_info 2025-09-14T08:32:34,670 Traceback (most recent call last): 2025-09-14T08:32:34,672 File "", line 2, in 2025-09-14T08:32:34,672 exec(compile(''' 2025-09-14T08:32:34,672 ~~~~^^^^^^^^^^^^ 2025-09-14T08:32:34,672 # This is -- a caller that pip uses to run setup.py 2025-09-14T08:32:34,673 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,673 ...<32 lines>... 2025-09-14T08:32:34,673 exec(compile(setup_py_code, filename, "exec")) 2025-09-14T08:32:34,673 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,673 ''' % ('/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/setup.py',), "", "exec")) 2025-09-14T08:32:34,673 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,674 File "", line 35, in 2025-09-14T08:32:34,674 File "/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/setup.py", line 45, in 2025-09-14T08:32:34,674 tests_require=_test_requirements(), 2025-09-14T08:32:34,675 ~~~~~~~~~~~~~~~~~~^^ 2025-09-14T08:32:34,675 File "/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/setup.py", line 17, in _test_requirements 2025-09-14T08:32:34,675 return [name.rstrip() for name in open(path.join(root_dir, 'test-requirements.txt')).readlines()] 2025-09-14T08:32:34,675 ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,676 File "", line 921, in open 2025-09-14T08:32:34,676 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/test-requirements.txt' 2025-09-14T08:32:34,676 MDPW 2025-09-14T08:32:34,676 ==== 2025-09-14T08:32:34,676 This package generates a PrettyMIDI object from Array of Array. 2025-09-14T08:32:34,677 Here is a sample code. 2025-09-14T08:32:34,677 :: 2025-09-14T08:32:34,678 import mdpw 2025-09-14T08:32:34,678 a = ['s',['n',64,1,64,1],['n',68,1,64,1],['n',71,1,64,1], 2025-09-14T08:32:34,678 ['c',['n',64,1,64,1],['n',68,1,64,1],['n',71,1,64,1]]] 2025-09-14T08:32:34,678 mdpw.compile(a, 120).write("hello.mid") 2025-09-14T08:32:34,679 'n' means a note and followed values are pitch, duration, velocity and instrument. The instrument 129 means Drum. 2025-09-14T08:32:34,679 's' means to play sequentially and 'c' means to play simultaneously. 2025-09-14T08:32:34,680 Here is anther sample code. 2025-09-14T08:32:34,680 :: 2025-09-14T08:32:34,680 from mdpw import INSTRUMENTS as I 2025-09-14T08:32:34,680 from mdpw import DRUMS as D 2025-09-14T08:32:34,681 from mdpw import note, seq, chord, compile 2025-09-14T08:32:34,681 dph = D['PedalHi-Hat'] 2025-09-14T08:32:34,681 i = I['Drum'] 2025-09-14T08:32:34,681 hh = ['s',['n',dph,1,127,i],['n',dph,1],['n',dph,1],['n',dph,1]] 2025-09-14T08:32:34,681 b = seq(note(64,.5,0,I['ElectricBassPick']),note(64,1,127),note(64,1),note(64,1)) 2025-09-14T08:32:34,681 m = chord(seq(hh,hh,hh,hh),seq(b,b,b,b)) 2025-09-14T08:32:34,682 compile(m, 120).write("sample.mid") 2025-09-14T08:32:34,682 In fact, the functions 'note', 'seq', 'chord' return arrays. 2025-09-14T08:32:34,682 You can generate a round chant like this: 2025-09-14T08:32:34,682 :: 2025-09-14T08:32:34,682 import mdpw 2025-09-14T08:32:34,682 from mdpw import note as n 2025-09-14T08:32:34,683 from mdpw import seq as s 2025-09-14T08:32:34,683 from mdpw import chord as c 2025-09-14T08:32:34,683 from mdpw import compile 2025-09-14T08:32:34,683 m0 = s(n(64,1,64,17), n(66), n(68), n(69), n(68),n(66),n(64),n(0,1,0)) 2025-09-14T08:32:34,683 m01 = s(n(64,.5,64,17),n(64), n(66), n(66), n(68),n(68), n(69),n(69), n(68),n(68),n(66),n(66),n(64,1),n(0,1,0)) 2025-09-14T08:32:34,683 m1 = s(n(68,1,64,17), n(69), n(71), n(73), n(71),n(69),n(68),n(0,1,0)) 2025-09-14T08:32:34,684 m2 = s(n(64,2,125,17), n(64), n(64), n(64)) 2025-09-14T08:32:34,684 a = s(m0, m1, m2,m01) 2025-09-14T08:32:34,684 r = n(0,8,0,1) 2025-09-14T08:32:34,684 a =c(a, s(r, a), s(r, r, a)) 2025-09-14T08:32:34,684 mdpw.compile(a, 120).write("frog.mid") 2025-09-14T08:32:34,771 ERROR: python setup.py egg_info exited with 1 2025-09-14T08:32:34,786 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-14T08:32:34,786 exec(compile('"'"''"'"''"'"' 2025-09-14T08:32:34,786 # This is -- a caller that pip uses to run setup.py 2025-09-14T08:32:34,786 # 2025-09-14T08:32:34,786 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-14T08:32:34,786 # import from `distutils.core` to work with newer packaging standards. 2025-09-14T08:32:34,786 # - It provides a clear error message when setuptools is not installed. 2025-09-14T08:32:34,786 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-14T08:32:34,786 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-14T08:32:34,786 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-14T08:32:34,786 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-14T08:32:34,786 import os, sys, tokenize, traceback 2025-09-14T08:32:34,786 2025-09-14T08:32:34,786 try: 2025-09-14T08:32:34,786 import setuptools 2025-09-14T08:32:34,786 except ImportError: 2025-09-14T08:32:34,786 print( 2025-09-14T08:32:34,786 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-14T08:32:34,786 "the build environment with exception:", 2025-09-14T08:32:34,786 file=sys.stderr, 2025-09-14T08:32:34,786 ) 2025-09-14T08:32:34,786 traceback.print_exc() 2025-09-14T08:32:34,786 sys.exit(1) 2025-09-14T08:32:34,786 2025-09-14T08:32:34,786 __file__ = %r 2025-09-14T08:32:34,786 sys.argv[0] = __file__ 2025-09-14T08:32:34,786 2025-09-14T08:32:34,786 if os.path.exists(__file__): 2025-09-14T08:32:34,786 filename = __file__ 2025-09-14T08:32:34,786 with tokenize.open(__file__) as f: 2025-09-14T08:32:34,786 setup_py_code = f.read() 2025-09-14T08:32:34,786 else: 2025-09-14T08:32:34,786 filename = "" 2025-09-14T08:32:34,786 setup_py_code = "from setuptools import setup; setup()" 2025-09-14T08:32:34,786 2025-09-14T08:32:34,786 exec(compile(setup_py_code, filename, "exec")) 2025-09-14T08:32:34,786 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-u8cn829o[/] 2025-09-14T08:32:34,786 [bold magenta]cwd[/]: /tmp/pip-wheel-xyntferl/mdpw_6d0d30773cf8446f970945951f61878d/ 2025-09-14T08:32:34,786 Preparing metadata (setup.py): finished with status 'error' 2025-09-14T08:32:34,787 ERROR: metadata generation failed 2025-09-14T08:32:34,794 Exception information: 2025-09-14T08:32:34,794 Traceback (most recent call last): 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-14T08:32:34,794 call_subprocess( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 args, 2025-09-14T08:32:34,794 ^^^^^ 2025-09-14T08:32:34,794 ...<2 lines>... 2025-09-14T08:32:34,794 spinner=spinner, 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-14T08:32:34,794 raise error 2025-09-14T08:32:34,794 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-14T08:32:34,794 2025-09-14T08:32:34,794 The above exception was the direct cause of the following exception: 2025-09-14T08:32:34,794 2025-09-14T08:32:34,794 Traceback (most recent call last): 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-14T08:32:34,794 status = _inner_run() 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-14T08:32:34,794 return self.run(options, args) 2025-09-14T08:32:34,794 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-14T08:32:34,794 return func(self, options, args) 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-14T08:32:34,794 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-14T08:32:34,794 result = self._result = resolver.resolve( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-14T08:32:34,794 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-14T08:32:34,794 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-14T08:32:34,794 if not criterion.candidates: 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-14T08:32:34,794 return bool(self._sequence) 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-14T08:32:34,794 self._bool = any(self) 2025-09-14T08:32:34,794 ~~~^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-14T08:32:34,794 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-14T08:32:34,794 ^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-14T08:32:34,794 candidate = func() 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-14T08:32:34,794 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 link, template, name, version 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-14T08:32:34,794 self._link_candidate_cache[link] = LinkCandidate( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 link, 2025-09-14T08:32:34,794 ^^^^^ 2025-09-14T08:32:34,794 ...<3 lines>... 2025-09-14T08:32:34,794 version=version, 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-14T08:32:34,794 super().__init__( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 link=link, 2025-09-14T08:32:34,794 ^^^^^^^^^^ 2025-09-14T08:32:34,794 ...<4 lines>... 2025-09-14T08:32:34,794 version=version, 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-14T08:32:34,794 self.dist = self._prepare() 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-14T08:32:34,794 dist = self._prepare_distribution() 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-14T08:32:34,794 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-14T08:32:34,794 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-14T08:32:34,794 dist = _get_prepared_distribution( 2025-09-14T08:32:34,794 req, 2025-09-14T08:32:34,794 ...<3 lines>... 2025-09-14T08:32:34,794 self.check_build_deps, 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-14T08:32:34,794 abstract_dist.prepare_distribution_metadata( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 finder, build_isolation, check_build_deps 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-14T08:32:34,794 self.req.prepare_metadata() 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-14T08:32:34,794 self.metadata_directory = generate_metadata_legacy( 2025-09-14T08:32:34,794 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-14T08:32:34,794 build_env=self.build_env, 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ...<3 lines>... 2025-09-14T08:32:34,794 details=details, 2025-09-14T08:32:34,794 ^^^^^^^^^^^^^^^^ 2025-09-14T08:32:34,794 ) 2025-09-14T08:32:34,794 ^ 2025-09-14T08:32:34,794 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-14T08:32:34,794 raise MetadataGenerationFailed(package_details=details) from error 2025-09-14T08:32:34,794 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-14T08:32:34,819 Removed mdpw==0.0.3 from https://files.pythonhosted.org/packages/a9/40/862612ce80fe9dc13c9ac9858308092b9353c8bc45614fd84d179a3c11e5/mdpw-0.0.3.tar.gz from build tracker '/tmp/pip-build-tracker-xmk56e41' 2025-09-14T08:32:34,819 Removed build tracker: '/tmp/pip-build-tracker-xmk56e41'