2023-09-17T00:28:24,505 Created temporary directory: /tmp/pip-build-tracker-gbow77_s 2023-09-17T00:28:24,506 Initialized build tracking at /tmp/pip-build-tracker-gbow77_s 2023-09-17T00:28:24,507 Created build tracker: /tmp/pip-build-tracker-gbow77_s 2023-09-17T00:28:24,507 Entered build tracker: /tmp/pip-build-tracker-gbow77_s 2023-09-17T00:28:24,508 Created temporary directory: /tmp/pip-wheel-az9z4yt2 2023-09-17T00:28:24,511 Created temporary directory: /tmp/pip-ephem-wheel-cache-6qk05cas 2023-09-17T00:28:24,532 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-09-17T00:28:24,536 2 location(s) to search for versions of mdreg: 2023-09-17T00:28:24,536 * https://pypi.org/simple/mdreg/ 2023-09-17T00:28:24,536 * https://www.piwheels.org/simple/mdreg/ 2023-09-17T00:28:24,537 Fetching project page and analyzing links: https://pypi.org/simple/mdreg/ 2023-09-17T00:28:24,538 Getting page https://pypi.org/simple/mdreg/ 2023-09-17T00:28:24,539 Found index url https://pypi.org/simple/ 2023-09-17T00:28:24,798 Fetched page https://pypi.org/simple/mdreg/ as application/vnd.pypi.simple.v1+json 2023-09-17T00:28:24,802 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/bc/10/c83070f17306c03d644c7c76d8859872032edc1fc0df2a97380d4e93d708/mdreg-0.3.0-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4) 2023-09-17T00:28:24,803 Found link https://files.pythonhosted.org/packages/78/c8/ba73412c97b1eedd387919d54687fb19b22173a3ba98a9a77136320259eb/mdreg-0.3.0.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4), version: 0.3.0 2023-09-17T00:28:24,804 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/6b/67/cd996be7b682acd1e126cc4e01f6f267fbfff5a7e5fca5c51e065c7b4497/mdreg-0.3.1-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4) 2023-09-17T00:28:24,805 Found link https://files.pythonhosted.org/packages/eb/8b/0358e3454beda70f4259a4d86932f6e072225039955f5a20d39144173ede/mdreg-0.3.1.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4), version: 0.3.1 2023-09-17T00:28:24,805 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/fc/9b/9783352214c7a6c6b4ca4821d04b43431d151dde90c965ca654c5da8ecc8/mdreg-0.3.2-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4) 2023-09-17T00:28:24,806 Found link https://files.pythonhosted.org/packages/b3/e6/46b6e3e7ea02fa0e9e2e574282003059b2e1a9eff7a6a8190ee5257219ce/mdreg-0.3.2.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4), version: 0.3.2 2023-09-17T00:28:24,807 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/eb/cc/009dc7b646f1d2d04050ae64541b6824c05389aa7bda945cb15e4e09ee6d/mdreg-0.3.3-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4) 2023-09-17T00:28:24,808 Found link https://files.pythonhosted.org/packages/18/62/38a61e16f5e992005b50e2b953f90fe3eb11bae5ab211a6960a9d57c77f2/mdreg-0.3.3.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6, <4), version: 0.3.3 2023-09-17T00:28:24,809 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/7d/ce/c978beca9650814b8edcddba5a7ff5573543307070f960c0eb7feec17957/mdreg-0.3.4-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:24,810 Found link https://files.pythonhosted.org/packages/53/8e/89bb979b810b86482df67a4ae8393cd66c7b43f73bcdf463d8647de0e74d/mdreg-0.3.4.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6), version: 0.3.4 2023-09-17T00:28:24,811 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/f7/c0/15afa6ef8924d5643277b9fef0b79c5560fea1146a2b2b65e85741b6ee56/mdreg-0.3.5-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:24,812 Found link https://files.pythonhosted.org/packages/f8/0c/c82e36fb517a1b0ff55867faac4f244742451a7dfa8ccd1be29a433cb8a9/mdreg-0.3.5.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6), version: 0.3.5 2023-09-17T00:28:24,812 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/54/40/aa8baa682552a94319ea93b241cf2ecf998a1bf0aebe66de4c9399c54999/mdreg-0.3.6-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:24,814 Found link https://files.pythonhosted.org/packages/79/85/bdbf14dfd10b079138f5e5f0885f60206318e3468760d23f23c22c4f6b13/mdreg-0.3.6.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6), version: 0.3.6 2023-09-17T00:28:24,814 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/a5/1b/48db59c55e4238cdbd68747bf6365e2864dd195f8c57fb8e8ddb4768e137/mdreg-0.3.7-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:24,815 Found link https://files.pythonhosted.org/packages/e6/5b/16528b763bb003eb9d0332ce47dbcf446fd1367790d17757ec5831082303/mdreg-0.3.7.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6), version: 0.3.7 2023-09-17T00:28:24,816 Skipping link: No binaries permitted for mdreg: https://files.pythonhosted.org/packages/b6/bb/c78bb87dfac20455065ec083b5330fdc2012591d4d7522ac88f6a10bdd3e/mdreg-0.3.8-py3-none-any.whl (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:24,816 Found link https://files.pythonhosted.org/packages/4f/f7/47321f6137507e7ff9532409f40a205430712a4e79b44d5336052a923dc3/mdreg-0.3.8.tar.gz (from https://pypi.org/simple/mdreg/) (requires-python:>=3.6), version: 0.3.8 2023-09-17T00:28:24,817 Fetching project page and analyzing links: https://www.piwheels.org/simple/mdreg/ 2023-09-17T00:28:24,818 Getting page https://www.piwheels.org/simple/mdreg/ 2023-09-17T00:28:24,819 Found index url https://www.piwheels.org/simple/ 2023-09-17T00:28:25,090 Fetched page https://www.piwheels.org/simple/mdreg/ as text/html 2023-09-17T00:28:25,093 Skipping link: No binaries permitted for mdreg: https://www.piwheels.org/simple/mdreg/mdreg-0.3.8-py3-none-any.whl#sha256=26b03dd2f8b3f000a166951fed6805880fe8decffe550f2327ba0f859e106cc6 (from https://www.piwheels.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:25,094 Skipping link: No binaries permitted for mdreg: https://www.piwheels.org/simple/mdreg/mdreg-0.3.7-py3-none-any.whl#sha256=445b61f0185645af57288306a89f23a1c441aedd57726661eef30f4a23484ba3 (from https://www.piwheels.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:25,095 Skipping link: No binaries permitted for mdreg: https://www.piwheels.org/simple/mdreg/mdreg-0.3.6-py3-none-any.whl#sha256=7230f82660b1ffde739a93ab083cc79516d665df5c6adbdc4c5a408cb41407f4 (from https://www.piwheels.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:25,096 Skipping link: No binaries permitted for mdreg: https://www.piwheels.org/simple/mdreg/mdreg-0.3.5-py3-none-any.whl#sha256=bf741071ce63495726a43fcb272985baefdfd15c582b6723803977118d8fc37e (from https://www.piwheels.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:25,097 Skipping link: No binaries permitted for mdreg: https://www.piwheels.org/simple/mdreg/mdreg-0.3.4-py3-none-any.whl#sha256=d360bb8491484762fab111a00dd3ba9152592ee1fe5e1ee940f3f2261ed9db1d (from https://www.piwheels.org/simple/mdreg/) (requires-python:>=3.6) 2023-09-17T00:28:25,097 Skipping link: not a file: https://www.piwheels.org/simple/mdreg/ 2023-09-17T00:28:25,098 Skipping link: not a file: https://pypi.org/simple/mdreg/ 2023-09-17T00:28:25,126 Given no hashes to check 1 links for project 'mdreg': discarding no candidates 2023-09-17T00:28:25,146 Collecting mdreg==0.3.0 2023-09-17T00:28:25,148 Created temporary directory: /tmp/pip-unpack-nrr3831x 2023-09-17T00:28:25,363 Downloading mdreg-0.3.0.tar.gz (20 kB) 2023-09-17T00:28:25,418 Added mdreg==0.3.0 from https://files.pythonhosted.org/packages/78/c8/ba73412c97b1eedd387919d54687fb19b22173a3ba98a9a77136320259eb/mdreg-0.3.0.tar.gz to build tracker '/tmp/pip-build-tracker-gbow77_s' 2023-09-17T00:28:25,420 Running setup.py (path:/tmp/pip-wheel-az9z4yt2/mdreg_78230b98c1fe49f3b613ab9b96aa0c15/setup.py) egg_info for package mdreg 2023-09-17T00:28:25,421 Created temporary directory: /tmp/pip-pip-egg-info-co6i7vb5 2023-09-17T00:28:25,422 Preparing metadata (setup.py): started 2023-09-17T00:28:25,423 Running command python setup.py egg_info 2023-09-17T00:28:25,874 Traceback (most recent call last): 2023-09-17T00:28:25,875 File "", line 2, in 2023-09-17T00:28:25,875 File "", line 34, in 2023-09-17T00:28:25,876 File "/tmp/pip-wheel-az9z4yt2/mdreg_78230b98c1fe49f3b613ab9b96aa0c15/setup.py", line 13, in 2023-09-17T00:28:25,877 with open('requirements.txt', encoding='utf-8') as f: 2023-09-17T00:28:25,878 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:25,879 FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt' 2023-09-17T00:28:25,879 # Description 2023-09-17T00:28:25,880 Python implementation of model-based image coregistration 2023-09-17T00:28:25,881 for quantitative medical imaging applications. 2023-09-17T00:28:25,882 The distribution comes with a number of common signal models and uses [ITK-Elastix](https://github.com/InsightSoftwareConsortium/ITKElastix) for deformable image registration. 2023-09-17T00:28:25,884 ## Installation 2023-09-17T00:28:25,884 Run `pip install mdreg`. 2023-09-17T00:28:25,886 ## Example data 2023-09-17T00:28:25,886 Example data in [DICOM format](https://shorturl.at/rwCUV) are provided for testing the setup. 2023-09-17T00:28:25,888 ## How to use 2023-09-17T00:28:25,889 Input data must be image arrays in numpy format, with dimensions `(x,y,z,t)` or `(x,y,t)`. 2023-09-17T00:28:25,889 To perform MDR on an image array `im` with default settings do: 2023-09-17T00:28:25,891 ```python 2023-09-17T00:28:25,892 from mdreg import MDReg 2023-09-17T00:28:25,894 mdr = MDReg() 2023-09-17T00:28:25,895 mdr.set_array(im) 2023-09-17T00:28:25,896 mdr.fit() 2023-09-17T00:28:25,897 ``` 2023-09-17T00:28:25,899 When fitting is complete the motion-corrected data are in `mdr.coreg` in the same dimensions 2023-09-17T00:28:25,900 as the original `im`. The calculated deformation fields in format `(x,y,d,t)` or `(x,y,z,d,t)` 2023-09-17T00:28:25,901 can be found as `mdr.deformation`. The dimension `d` holds `x`, `y` components 2023-09-17T00:28:25,902 of the deformation field, and a third `z` component if the input array is 3D. 2023-09-17T00:28:25,904 The default settings will apply a linear signal model and coregistration 2023-09-17T00:28:25,905 as defined in the elastix parameter file `Bsplines.txt`. 2023-09-17T00:28:25,907 # Customization 2023-09-17T00:28:25,909 MDR can be configured to apply different signal models and elastix coregistration settings. 2023-09-17T00:28:25,910 A number of example models and alternative elastix parameter files are included 2023-09-17T00:28:25,910 in the distribution as templates. 2023-09-17T00:28:25,913 The following example fits a mono-exponential decay and applies an elastix parameter file 2023-09-17T00:28:25,913 `par_file` optimized for a previous DTI-MRI study: 2023-09-17T00:28:25,915 ```python 2023-09-17T00:28:25,915 from mdreg import MDReg 2023-09-17T00:28:25,916 from mdreg.models import exponential_decay 2023-09-17T00:28:25,918 mdr = MDReg() 2023-09-17T00:28:25,919 mdr.set_array(im) 2023-09-17T00:28:25,920 mdr.signal_model = exponential_decay 2023-09-17T00:28:25,921 mdr.read_elastix(par_file) 2023-09-17T00:28:25,922 mdr.fit() 2023-09-17T00:28:25,923 ``` 2023-09-17T00:28:25,925 The signal model often depends on fixed constants and signal parameters 2023-09-17T00:28:25,925 such as sequence parameters in MRI, or patient-specific constants. These 2023-09-17T00:28:25,926 should all be grouped in a list and set before running the signal model. 2023-09-17T00:28:25,928 Equally elastix parameters can be fine tuned, either by importing a 2023-09-17T00:28:25,929 dedicated elastix file, or by modifying the settings. 2023-09-17T00:28:25,931 Then a number of parameters are available to optimize MDR such as 2023-09-17T00:28:25,932 the precision (stopping criterion) and maximum number of iterations. 2023-09-17T00:28:25,934 Some examples: 2023-09-17T00:28:25,935 ```python 2023-09-17T00:28:25,936 from mdreg import MDReg 2023-09-17T00:28:25,937 from mdreg.models import exponential_decay 2023-09-17T00:28:25,938 t = [0.0, 1.25, 2.50, 3.75] # time points for exponential in sec 2023-09-17T00:28:25,940 mdr = MDReg() 2023-09-17T00:28:25,940 mdr.set_array(im) 2023-09-17T00:28:25,941 mdr.signal_parameters = t 2023-09-17T00:28:25,941 mdr.signal_model = exponential_decay 2023-09-17T00:28:25,942 mdr.set_elastix(MaximumNumberOfIterations = 256) # change defaults 2023-09-17T00:28:25,942 mdr.precision = 0.5 # default = 1 2023-09-17T00:28:25,943 mdr.max_iterations = 3 # default = 5 2023-09-17T00:28:25,944 mdr.fit() 2023-09-17T00:28:25,944 ``` 2023-09-17T00:28:25,945 `mdreg` comes with a number of options to 2023-09-17T00:28:25,946 export results and diagnostics: 2023-09-17T00:28:25,947 ```python 2023-09-17T00:28:25,948 mdr.export_unregistered = True # export parameters and fit without registration 2023-09-17T00:28:25,948 mdr.export_path = filepath # default is a results folder in the current working directory 2023-09-17T00:28:25,949 mdr.export() # export results after calling fit. 2023-09-17T00:28:25,950 ``` 2023-09-17T00:28:25,951 This export creates movies of original images, motion corrected images, 2023-09-17T00:28:25,951 modelfits, and maps of the fitted parameters. 2023-09-17T00:28:25,953 # Model fitting without motion correction 2023-09-17T00:28:25,954 `MDReg` also can be used to perform model fitting 2023-09-17T00:28:25,955 without correcting the motion. The following script 2023-09-17T00:28:25,956 fits a linearised exponential model to each pixel and exports data 2023-09-17T00:28:25,957 of model and fit: 2023-09-17T00:28:25,959 ```python 2023-09-17T00:28:25,959 from mdreg import MDReg 2023-09-17T00:28:25,960 from mdreg.models import exponential_decay 2023-09-17T00:28:25,962 mdr = MDReg() 2023-09-17T00:28:25,963 mdr.set_array(im) 2023-09-17T00:28:25,963 mdr.signal_model = linear_exponential_decay 2023-09-17T00:28:25,964 mdr.fit_signal() 2023-09-17T00:28:25,965 mdr.export_data() 2023-09-17T00:28:25,965 mdr.export_fit() 2023-09-17T00:28:25,966 ``` 2023-09-17T00:28:25,967 # Defining new MDR models 2023-09-17T00:28:25,968 A model must be defined as a separate module or class with two required functions `main()` and `pars()`. 2023-09-17T00:28:25,969 `pars()` must return a list of strings specifying the names of the model parameters. 2023-09-17T00:28:25,970 `main(im, const)` performs the pixel based model fitting and has two required arguments. 2023-09-17T00:28:25,970 `im` is a numpy ndarray with dimensions `(x,y,z,t)`, `(x,y,t)` or `(x,t)`. `const` is a list 2023-09-17T00:28:25,971 of any constant model parameters. 2023-09-17T00:28:25,971 The function must return the fit to the model as an numpy ndarray with the same dimensions 2023-09-17T00:28:25,972 as `im`, and an ndarray `pars` with dimensions `(x,y,z,p)`, `(x,y,p)` or `(x,p)`. Here `p` enumerates 2023-09-17T00:28:25,972 the model parameters. 2023-09-17T00:28:25,973 ## Context 2023-09-17T00:28:25,974 `mdreg` was first developed for use in quantitative renal MRI in the iBEAt study, 2023-09-17T00:28:25,975 and validated against group-wise model-free registration 2023-09-17T00:28:25,975 (Tagkalakis F, et al. Model-based motion correction outperforms a model-free method in quantitative renal MRI. Abstract-1383, ISMRM 2021). 2023-09-17T00:28:25,976 ## Acknowledgement 2023-09-17T00:28:25,977 The iBEAt study is part of the BEAt-DKD project. The BEAt-DKD project has received funding from the Innovative Medicines Initiative 2 Joint Undertaking under grant agreement No 115974. This Joint Undertaking receives support from the European Union’s Horizon 2020 research and innovation programme and EFPIA with JDRF. For a full list of BEAt-DKD partners, see www.beat-dkd.eu. 2023-09-17T00:28:25,979 ## Authors 2023-09-17T00:28:25,979 Kanishka Sharma, Joao Almeida e Sousa, Steven Sourbron 2023-09-17T00:28:25,981 ERROR: [present-rich] python setup.py egg_info exited with 1 2023-09-17T00:28:25,994 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2023-09-17T00:28:25,994 exec(compile('"'"''"'"''"'"' 2023-09-17T00:28:25,994 # This is -- a caller that pip uses to run setup.py 2023-09-17T00:28:25,994 # 2023-09-17T00:28:25,994 # - It imports setuptools before invoking setup.py, to enable projects that directly 2023-09-17T00:28:25,994 # import from `distutils.core` to work with newer packaging standards. 2023-09-17T00:28:25,994 # - It provides a clear error message when setuptools is not installed. 2023-09-17T00:28:25,994 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2023-09-17T00:28:25,994 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2023-09-17T00:28:25,994 # manifest_maker: standard file '"'"'-c'"'"' not found". 2023-09-17T00:28:25,994 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2023-09-17T00:28:25,994 import os, sys, tokenize 2023-09-17T00:28:25,994 2023-09-17T00:28:25,994 try: 2023-09-17T00:28:25,994 import setuptools 2023-09-17T00:28:25,994 except ImportError as error: 2023-09-17T00:28:25,994 print( 2023-09-17T00:28:25,994 "ERROR: Can not execute `setup.py` since setuptools is not available in " 2023-09-17T00:28:25,994 "the build environment.", 2023-09-17T00:28:25,994 file=sys.stderr, 2023-09-17T00:28:25,994 ) 2023-09-17T00:28:25,994 sys.exit(1) 2023-09-17T00:28:25,994 2023-09-17T00:28:25,994 __file__ = %r 2023-09-17T00:28:25,994 sys.argv[0] = __file__ 2023-09-17T00:28:25,994 2023-09-17T00:28:25,994 if os.path.exists(__file__): 2023-09-17T00:28:25,994 filename = __file__ 2023-09-17T00:28:25,994 with tokenize.open(__file__) as f: 2023-09-17T00:28:25,994 setup_py_code = f.read() 2023-09-17T00:28:25,994 else: 2023-09-17T00:28:25,994 filename = "" 2023-09-17T00:28:25,994 setup_py_code = "from setuptools import setup; setup()" 2023-09-17T00:28:25,994 2023-09-17T00:28:25,994 exec(compile(setup_py_code, filename, "exec")) 2023-09-17T00:28:25,994 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-az9z4yt2/mdreg_78230b98c1fe49f3b613ab9b96aa0c15/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-co6i7vb5[/] 2023-09-17T00:28:25,994 [bold magenta]cwd[/]: /tmp/pip-wheel-az9z4yt2/mdreg_78230b98c1fe49f3b613ab9b96aa0c15/ 2023-09-17T00:28:25,995 Preparing metadata (setup.py): finished with status 'error' 2023-09-17T00:28:25,996 ERROR: [present-rich] metadata generation failed 2023-09-17T00:28:26,002 Exception information: 2023-09-17T00:28:26,002 Traceback (most recent call last): 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 64, in generate_metadata 2023-09-17T00:28:26,002 call_subprocess( 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/utils/subprocess.py", line 224, in call_subprocess 2023-09-17T00:28:26,002 raise error 2023-09-17T00:28:26,002 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2023-09-17T00:28:26,002 2023-09-17T00:28:26,002 The above exception was the direct cause of the following exception: 2023-09-17T00:28:26,002 2023-09-17T00:28:26,002 Traceback (most recent call last): 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper 2023-09-17T00:28:26,002 status = run_func(*args) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/req_command.py", line 248, in wrapper 2023-09-17T00:28:26,002 return func(self, options, args) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2023-09-17T00:28:26,002 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve 2023-09-17T00:28:26,002 result = self._result = resolver.resolve( 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve 2023-09-17T00:28:26,002 state = resolution.resolve(requirements, max_rounds=max_rounds) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve 2023-09-17T00:28:26,002 self._add_to_criteria(self.state.criteria, r, parent=None) 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria 2023-09-17T00:28:26,002 if not criterion.candidates: 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__ 2023-09-17T00:28:26,002 return bool(self._sequence) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__ 2023-09-17T00:28:26,002 return any(self) 2023-09-17T00:28:26,002 ^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in 2023-09-17T00:28:26,002 return (c for c in iterator if id(c) not in self._incompatible_ids) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built 2023-09-17T00:28:26,002 candidate = func() 2023-09-17T00:28:26,002 ^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link 2023-09-17T00:28:26,002 self._link_candidate_cache[link] = LinkCandidate( 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 293, in __init__ 2023-09-17T00:28:26,002 super().__init__( 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__ 2023-09-17T00:28:26,002 self.dist = self._prepare() 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare 2023-09-17T00:28:26,002 dist = self._prepare_distribution() 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in _prepare_distribution 2023-09-17T00:28:26,002 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 538, in prepare_linked_requirement 2023-09-17T00:28:26,002 return self._prepare_linked_requirement(req, parallel_builds) 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 653, in _prepare_linked_requirement 2023-09-17T00:28:26,002 dist = _get_prepared_distribution( 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 69, in _get_prepared_distribution 2023-09-17T00:28:26,002 abstract_dist.prepare_distribution_metadata( 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/distributions/sdist.py", line 61, in prepare_distribution_metadata 2023-09-17T00:28:26,002 self.req.prepare_metadata() 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/req/req_install.py", line 568, in prepare_metadata 2023-09-17T00:28:26,002 self.metadata_directory = generate_metadata_legacy( 2023-09-17T00:28:26,002 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T00:28:26,002 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 71, in generate_metadata 2023-09-17T00:28:26,002 raise MetadataGenerationFailed(package_details=details) from error 2023-09-17T00:28:26,002 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2023-09-17T00:28:26,015 Removed mdreg==0.3.0 from https://files.pythonhosted.org/packages/78/c8/ba73412c97b1eedd387919d54687fb19b22173a3ba98a9a77136320259eb/mdreg-0.3.0.tar.gz from build tracker '/tmp/pip-build-tracker-gbow77_s' 2023-09-17T00:28:26,015 Removed build tracker: '/tmp/pip-build-tracker-gbow77_s'