2023-09-17T04:58:09,728 Created temporary directory: /tmp/pip-build-tracker-5tkuzsfv 2023-09-17T04:58:09,729 Initialized build tracking at /tmp/pip-build-tracker-5tkuzsfv 2023-09-17T04:58:09,729 Created build tracker: /tmp/pip-build-tracker-5tkuzsfv 2023-09-17T04:58:09,730 Entered build tracker: /tmp/pip-build-tracker-5tkuzsfv 2023-09-17T04:58:09,731 Created temporary directory: /tmp/pip-wheel-02aqztig 2023-09-17T04:58:09,733 Created temporary directory: /tmp/pip-ephem-wheel-cache-tfv0sw7w 2023-09-17T04:58:09,755 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-09-17T04:58:09,758 2 location(s) to search for versions of mdreg: 2023-09-17T04:58:09,758 * https://pypi.org/simple/mdreg/ 2023-09-17T04:58:09,758 * https://www.piwheels.org/simple/mdreg/ 2023-09-17T04:58:09,759 Fetching project page and analyzing links: https://pypi.org/simple/mdreg/ 2023-09-17T04:58:09,760 Getting page https://pypi.org/simple/mdreg/ 2023-09-17T04:58:09,761 Found index url https://pypi.org/simple/ 2023-09-17T04:58:09,900 Fetched page https://pypi.org/simple/mdreg/ as application/vnd.pypi.simple.v1+json 2023-09-17T04:58:09,904 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-17T04:58:09,905 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-17T04:58:09,906 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-17T04:58:09,907 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-17T04:58:09,908 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-17T04:58:09,909 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-17T04:58:09,909 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-17T04:58:09,910 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-17T04:58:09,911 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-17T04:58:09,912 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-17T04:58:09,912 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-17T04:58:09,913 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-17T04:58:09,914 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-17T04:58:09,915 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-17T04:58:09,915 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-17T04:58:09,916 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-17T04:58:09,917 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-17T04:58:09,917 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-17T04:58:09,918 Fetching project page and analyzing links: https://www.piwheels.org/simple/mdreg/ 2023-09-17T04:58:09,919 Getting page https://www.piwheels.org/simple/mdreg/ 2023-09-17T04:58:09,920 Found index url https://www.piwheels.org/simple/ 2023-09-17T04:58:10,178 Fetched page https://www.piwheels.org/simple/mdreg/ as text/html 2023-09-17T04:58:10,181 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-17T04:58:10,182 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-17T04:58:10,182 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-17T04:58:10,183 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-17T04:58:10,184 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-17T04:58:10,184 Skipping link: not a file: https://www.piwheels.org/simple/mdreg/ 2023-09-17T04:58:10,185 Skipping link: not a file: https://pypi.org/simple/mdreg/ 2023-09-17T04:58:10,204 Given no hashes to check 1 links for project 'mdreg': discarding no candidates 2023-09-17T04:58:10,222 Collecting mdreg==0.3.3 2023-09-17T04:58:10,224 Created temporary directory: /tmp/pip-unpack-1h1nh5ru 2023-09-17T04:58:10,435 Downloading mdreg-0.3.3.tar.gz (21 kB) 2023-09-17T04:58:10,492 Added mdreg==0.3.3 from https://files.pythonhosted.org/packages/18/62/38a61e16f5e992005b50e2b953f90fe3eb11bae5ab211a6960a9d57c77f2/mdreg-0.3.3.tar.gz to build tracker '/tmp/pip-build-tracker-5tkuzsfv' 2023-09-17T04:58:10,494 Running setup.py (path:/tmp/pip-wheel-02aqztig/mdreg_b414390b2a6545959bc46e74693a1eab/setup.py) egg_info for package mdreg 2023-09-17T04:58:10,495 Created temporary directory: /tmp/pip-pip-egg-info-asi0x3fv 2023-09-17T04:58:10,496 Preparing metadata (setup.py): started 2023-09-17T04:58:10,497 Running command python setup.py egg_info 2023-09-17T04:58:10,938 Traceback (most recent call last): 2023-09-17T04:58:10,939 File "", line 2, in 2023-09-17T04:58:10,939 File "", line 34, in 2023-09-17T04:58:10,940 File "/tmp/pip-wheel-02aqztig/mdreg_b414390b2a6545959bc46e74693a1eab/setup.py", line 13, in 2023-09-17T04:58:10,941 with open('requirements.txt', encoding='utf-8') as f: 2023-09-17T04:58:10,941 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:10,942 FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt' 2023-09-17T04:58:10,943 # Description 2023-09-17T04:58:10,944 Python implementation of model-based image coregistration 2023-09-17T04:58:10,944 for quantitative medical imaging applications. 2023-09-17T04:58:10,946 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-17T04:58:10,947 ## Installation 2023-09-17T04:58:10,948 Run `pip install mdreg`. 2023-09-17T04:58:10,949 ## Example data 2023-09-17T04:58:10,950 Example data in [DICOM format](https://shorturl.at/rwCUV) are provided for testing the setup. 2023-09-17T04:58:10,951 ## How to use 2023-09-17T04:58:10,951 Input data must be image arrays in numpy format, with dimensions `(x,y,z,t)` or `(x,y,t)`. 2023-09-17T04:58:10,952 To perform MDR on an image array `im` with default settings do: 2023-09-17T04:58:10,954 ```python 2023-09-17T04:58:10,955 from mdreg import MDReg 2023-09-17T04:58:10,956 mdr = MDReg() 2023-09-17T04:58:10,957 mdr.set_array(im) 2023-09-17T04:58:10,958 mdr.fit() 2023-09-17T04:58:10,959 ``` 2023-09-17T04:58:10,960 When fitting is complete the motion-corrected data are in `mdr.coreg` in the same dimensions 2023-09-17T04:58:10,961 as the original `im`. The calculated deformation fields in format `(x,y,d,t)` or `(x,y,z,d,t)` 2023-09-17T04:58:10,962 can be found as `mdr.deformation`. The dimension `d` holds `x`, `y` components 2023-09-17T04:58:10,963 of the deformation field, and a third `z` component if the input array is 3D. 2023-09-17T04:58:10,965 The default settings will apply a linear signal model and coregistration 2023-09-17T04:58:10,966 as defined in the elastix parameter file `Bsplines.txt`. 2023-09-17T04:58:10,968 # Customization 2023-09-17T04:58:10,969 MDR can be configured to apply different signal models and elastix coregistration settings. 2023-09-17T04:58:10,970 A number of example models and alternative elastix parameter files are included 2023-09-17T04:58:10,971 in the distribution as templates. 2023-09-17T04:58:10,972 The following example fits a mono-exponential decay, uses a mask `im_mask` for co-registration and applies an elastix parameter file `par_file` optimized for a previous DTI-MRI study: 2023-09-17T04:58:10,974 ```python 2023-09-17T04:58:10,975 from mdreg import MDReg 2023-09-17T04:58:10,975 from mdreg.models import exponential_decay 2023-09-17T04:58:10,977 mdr = MDReg() 2023-09-17T04:58:10,978 mdr.set_array(im) 2023-09-17T04:58:10,978 mdr.set_mask(im_mask) 2023-09-17T04:58:10,979 mdr.signal_model = exponential_decay 2023-09-17T04:58:10,980 mdr.read_elastix(par_file) 2023-09-17T04:58:10,981 mdr.fit() 2023-09-17T04:58:10,981 ``` 2023-09-17T04:58:10,983 `im_mask` must be a binary (0s and 1s) or boolean (Trues and Falses) image array in numpy format with the same dimensions as `im`. 2023-09-17T04:58:10,984 The signal model often depends on fixed constants and signal parameters 2023-09-17T04:58:10,985 such as sequence parameters in MRI, or patient-specific constants. These 2023-09-17T04:58:10,986 should all be grouped in a list and set before running the signal model. 2023-09-17T04:58:10,988 Equally elastix parameters can be fine tuned, either by importing a 2023-09-17T04:58:10,988 dedicated elastix file, or by modifying the settings. 2023-09-17T04:58:10,990 You may also choose if you wish to run the process in multiple cores (`parallel`) and to print the co-registration progress to the terminal plus a text file (`log`) or not. 2023-09-17T04:58:10,991 Then, a number of parameters are available to optimize MDR such as 2023-09-17T04:58:10,992 the precision (stopping criterion) and maximum number of iterations. 2023-09-17T04:58:10,993 Some examples: 2023-09-17T04:58:10,994 ```python 2023-09-17T04:58:10,995 from mdreg import MDReg 2023-09-17T04:58:10,996 from mdreg.models import exponential_decay 2023-09-17T04:58:10,997 t = [0.0, 1.25, 2.50, 3.75] # time points for exponential in sec 2023-09-17T04:58:10,998 mdr = MDReg() 2023-09-17T04:58:10,999 mdr.set_array(im) 2023-09-17T04:58:11,000 mdr.signal_parameters = t 2023-09-17T04:58:11,000 mdr.signal_model = exponential_decay 2023-09-17T04:58:11,001 mdr.set_elastix(MaximumNumberOfIterations = 256) # change defaults 2023-09-17T04:58:11,002 mdr.precision = 0.5 # default = 1 2023-09-17T04:58:11,002 mdr.max_iterations = 3 # default = 5 2023-09-17T04:58:11,003 mdr.parallel = False # default = True 2023-09-17T04:58:11,004 mdr.log = True # default = False 2023-09-17T04:58:11,005 mdr.fit() 2023-09-17T04:58:11,005 ``` 2023-09-17T04:58:11,007 `mdreg` comes with a number of options to 2023-09-17T04:58:11,007 export results and diagnostics: 2023-09-17T04:58:11,009 ```python 2023-09-17T04:58:11,009 mdr.export_unregistered = True # export parameters and fit without registration 2023-09-17T04:58:11,010 mdr.export_path = filepath # default is a results folder in the current working directory 2023-09-17T04:58:11,010 mdr.export() # export results after calling fit. 2023-09-17T04:58:11,011 ``` 2023-09-17T04:58:11,012 This export creates movies of original images, motion corrected images, 2023-09-17T04:58:11,013 modelfits, and maps of the fitted parameters. 2023-09-17T04:58:11,014 # Model fitting without motion correction 2023-09-17T04:58:11,016 `MDReg` also can be used to perform model fitting 2023-09-17T04:58:11,016 without correcting the motion. The following script 2023-09-17T04:58:11,017 fits a linearised exponential model to each pixel and exports data 2023-09-17T04:58:11,018 of model and fit: 2023-09-17T04:58:11,019 ```python 2023-09-17T04:58:11,020 from mdreg import MDReg 2023-09-17T04:58:11,021 from mdreg.models import exponential_decay 2023-09-17T04:58:11,022 mdr = MDReg() 2023-09-17T04:58:11,023 mdr.set_array(im) 2023-09-17T04:58:11,023 mdr.signal_model = linear_exponential_decay 2023-09-17T04:58:11,024 mdr.fit_signal() 2023-09-17T04:58:11,025 mdr.export_data() 2023-09-17T04:58:11,025 mdr.export_fit() 2023-09-17T04:58:11,026 ``` 2023-09-17T04:58:11,028 # Defining new MDR models 2023-09-17T04:58:11,029 A model must be defined as a separate module or class with two required functions `main()` and `pars()`. 2023-09-17T04:58:11,030 `pars()` must return a list of strings specifying the names of the model parameters. 2023-09-17T04:58:11,031 `main(im, const)` performs the pixel based model fitting and has two required arguments. 2023-09-17T04:58:11,032 `im` is a numpy ndarray with dimensions `(x,y,z,t)`, `(x,y,t)` or `(x,t)`. `const` is a list 2023-09-17T04:58:11,032 of any constant model parameters. 2023-09-17T04:58:11,034 The function must return the fit to the model as an numpy ndarray with the same dimensions 2023-09-17T04:58:11,034 as `im`, and an ndarray `pars` with dimensions `(x,y,z,p)`, `(x,y,p)` or `(x,p)`. Here `p` enumerates 2023-09-17T04:58:11,035 the model parameters. 2023-09-17T04:58:11,036 ## Context 2023-09-17T04:58:11,038 `mdreg` was first developed for use in quantitative renal MRI in the iBEAt study, 2023-09-17T04:58:11,038 and validated against group-wise model-free registration 2023-09-17T04:58:11,038 (Tagkalakis F, et al. Model-based motion correction outperforms a model-free method in quantitative renal MRI. Abstract-1383, ISMRM 2021). 2023-09-17T04:58:11,039 ## Acknowledgement 2023-09-17T04:58:11,040 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-17T04:58:11,040 ## Authors 2023-09-17T04:58:11,041 Kanishka Sharma, Joao Almeida e Sousa, Steven Sourbron 2023-09-17T04:58:11,042 ERROR: [present-rich] python setup.py egg_info exited with 1 2023-09-17T04:58:11,055 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2023-09-17T04:58:11,055 exec(compile('"'"''"'"''"'"' 2023-09-17T04:58:11,055 # This is -- a caller that pip uses to run setup.py 2023-09-17T04:58:11,055 # 2023-09-17T04:58:11,055 # - It imports setuptools before invoking setup.py, to enable projects that directly 2023-09-17T04:58:11,055 # import from `distutils.core` to work with newer packaging standards. 2023-09-17T04:58:11,055 # - It provides a clear error message when setuptools is not installed. 2023-09-17T04:58:11,055 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2023-09-17T04:58:11,055 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2023-09-17T04:58:11,055 # manifest_maker: standard file '"'"'-c'"'"' not found". 2023-09-17T04:58:11,055 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2023-09-17T04:58:11,055 import os, sys, tokenize 2023-09-17T04:58:11,055 2023-09-17T04:58:11,055 try: 2023-09-17T04:58:11,055 import setuptools 2023-09-17T04:58:11,055 except ImportError as error: 2023-09-17T04:58:11,055 print( 2023-09-17T04:58:11,055 "ERROR: Can not execute `setup.py` since setuptools is not available in " 2023-09-17T04:58:11,055 "the build environment.", 2023-09-17T04:58:11,055 file=sys.stderr, 2023-09-17T04:58:11,055 ) 2023-09-17T04:58:11,055 sys.exit(1) 2023-09-17T04:58:11,055 2023-09-17T04:58:11,055 __file__ = %r 2023-09-17T04:58:11,055 sys.argv[0] = __file__ 2023-09-17T04:58:11,055 2023-09-17T04:58:11,055 if os.path.exists(__file__): 2023-09-17T04:58:11,055 filename = __file__ 2023-09-17T04:58:11,055 with tokenize.open(__file__) as f: 2023-09-17T04:58:11,055 setup_py_code = f.read() 2023-09-17T04:58:11,055 else: 2023-09-17T04:58:11,055 filename = "" 2023-09-17T04:58:11,055 setup_py_code = "from setuptools import setup; setup()" 2023-09-17T04:58:11,055 2023-09-17T04:58:11,055 exec(compile(setup_py_code, filename, "exec")) 2023-09-17T04:58:11,055 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-02aqztig/mdreg_b414390b2a6545959bc46e74693a1eab/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-asi0x3fv[/] 2023-09-17T04:58:11,056 [bold magenta]cwd[/]: /tmp/pip-wheel-02aqztig/mdreg_b414390b2a6545959bc46e74693a1eab/ 2023-09-17T04:58:11,057 Preparing metadata (setup.py): finished with status 'error' 2023-09-17T04:58:11,058 ERROR: [present-rich] metadata generation failed 2023-09-17T04:58:11,064 Exception information: 2023-09-17T04:58:11,064 Traceback (most recent call last): 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 64, in generate_metadata 2023-09-17T04:58:11,064 call_subprocess( 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/utils/subprocess.py", line 224, in call_subprocess 2023-09-17T04:58:11,064 raise error 2023-09-17T04:58:11,064 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2023-09-17T04:58:11,064 2023-09-17T04:58:11,064 The above exception was the direct cause of the following exception: 2023-09-17T04:58:11,064 2023-09-17T04:58:11,064 Traceback (most recent call last): 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper 2023-09-17T04:58:11,064 status = run_func(*args) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/req_command.py", line 248, in wrapper 2023-09-17T04:58:11,064 return func(self, options, args) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2023-09-17T04:58:11,064 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve 2023-09-17T04:58:11,064 result = self._result = resolver.resolve( 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve 2023-09-17T04:58:11,064 state = resolution.resolve(requirements, max_rounds=max_rounds) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve 2023-09-17T04:58:11,064 self._add_to_criteria(self.state.criteria, r, parent=None) 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria 2023-09-17T04:58:11,064 if not criterion.candidates: 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__ 2023-09-17T04:58:11,064 return bool(self._sequence) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__ 2023-09-17T04:58:11,064 return any(self) 2023-09-17T04:58:11,064 ^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in 2023-09-17T04:58:11,064 return (c for c in iterator if id(c) not in self._incompatible_ids) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built 2023-09-17T04:58:11,064 candidate = func() 2023-09-17T04:58:11,064 ^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link 2023-09-17T04:58:11,064 self._link_candidate_cache[link] = LinkCandidate( 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 293, in __init__ 2023-09-17T04:58:11,064 super().__init__( 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__ 2023-09-17T04:58:11,064 self.dist = self._prepare() 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare 2023-09-17T04:58:11,064 dist = self._prepare_distribution() 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in _prepare_distribution 2023-09-17T04:58:11,064 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 538, in prepare_linked_requirement 2023-09-17T04:58:11,064 return self._prepare_linked_requirement(req, parallel_builds) 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 653, in _prepare_linked_requirement 2023-09-17T04:58:11,064 dist = _get_prepared_distribution( 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 69, in _get_prepared_distribution 2023-09-17T04:58:11,064 abstract_dist.prepare_distribution_metadata( 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/distributions/sdist.py", line 61, in prepare_distribution_metadata 2023-09-17T04:58:11,064 self.req.prepare_metadata() 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/req/req_install.py", line 568, in prepare_metadata 2023-09-17T04:58:11,064 self.metadata_directory = generate_metadata_legacy( 2023-09-17T04:58:11,064 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-09-17T04:58:11,064 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 71, in generate_metadata 2023-09-17T04:58:11,064 raise MetadataGenerationFailed(package_details=details) from error 2023-09-17T04:58:11,064 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2023-09-17T04:58:11,076 Removed mdreg==0.3.3 from https://files.pythonhosted.org/packages/18/62/38a61e16f5e992005b50e2b953f90fe3eb11bae5ab211a6960a9d57c77f2/mdreg-0.3.3.tar.gz from build tracker '/tmp/pip-build-tracker-5tkuzsfv' 2023-09-17T04:58:11,077 Removed build tracker: '/tmp/pip-build-tracker-5tkuzsfv'