kevin218 / Eureka

Eureka! is a data reduction and analysis pipeline intended for time-series observations with JWST.
https://eurekadocs.readthedocs.io/
MIT License
58 stars 45 forks source link

[Bug]: Matplotlib 3.8 breaks installs #568

Closed jbrande closed 10 months ago

jbrande commented 10 months ago

FAQ check

Instrument

Other (any stage)

What happened?

Trying to do a clean install of eureka on a fresh environment/ubuntu machine, I got a bunch of ImportError: cannot import name 'docstring' from 'matplotlib' errors when running the pytest suite. This appears to be an issue with matplotlib 3.8, as I downgraded to 3.7.3 and things seem to run fine now.

Error traceback output

_ ERROR collecting tests/test_MIRI.py __ ImportError while importing test module '/home/jbrande/Planetary/Eureka/tests/test_MIRI.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: ../../../miniconda3/envs/eureka/lib/python3.9/importlib/init.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) test_MIRI.py:12: in from eureka.lib.readECF import MetaClass ../src/eureka/init.py:24: in from . import S1_detector_processing ../src/eureka/S1_detector_processing/init.py:2: in from . import s1_process ../src/eureka/S1_detector_processing/s1_process.py:9: in from eureka.S1_detector_processing.ramp_fitting import Eureka_RampFitStep ../src/eureka/S1_detector_processing/ramp_fitting.py:22: in from . import group_level ../src/eureka/S1_detector_processing/group_level.py:12: in from ..S3_data_reduction import background as bkg ../src/eureka/S3_data_reduction/init.py:4: in from . import hst_scan ../src/eureka/S3_data_reduction/hst_scan.py:4: in import image_registration as imr ../../../miniconda3/envs/eureka/lib/python3.9/site-packages/image_registration/init.py:14: in from .cross_correlation_shifts import cross_correlation_shifts, cross_correlation_shifts_FITS ../../../miniconda3/envs/eureka/lib/python3.9/site-packages/image_registration/cross_correlation_shifts.py:2: in from .fft_tools import correlate2d ../../../miniconda3/envs/eureka/lib/python3.9/site-packages/image_registration/fft_tools/init.py:5: in from .upsample import dftups,upsample_image ../../../miniconda3/envs/eureka/lib/python3.9/site-packages/image_registration/fft_tools/upsample.py:5: in from . import zoom ../../../miniconda3/envs/eureka/lib/python3.9/site-packages/image_registration/fft_tools/zoom.py:4: in from matplotlib import docstring E ImportError: cannot import name 'docstring' from 'matplotlib' (/home/jbrande/miniconda3/envs/eureka/lib/python3.9/site-packages/matplotlib/init.py)

What operating system are you using?

Ubuntu 22.04 on WSL2

What version of Python are you running?

3.9.7

What Python packages do you have installed?

Name Version Build Channel

_libgcc_mutex 0.1 main _openmp_mutex 5.1 1_gnu alabaster 0.7.13 pypi_0 pypi anyio 4.0.0 pypi_0 pypi argon2-cffi 23.1.0 pypi_0 pypi argon2-cffi-bindings 21.2.0 pypi_0 pypi arrow 1.3.0 pypi_0 pypi asciitree 0.3.3 pypi_0 pypi asdf 2.15.2 pypi_0 pypi asdf-astropy 0.4.0 pypi_0 pypi asdf-coordinates-schemas 0.2.0 pypi_0 pypi asdf-standard 1.0.3 pypi_0 pypi asdf-transform-schemas 0.3.0 pypi_0 pypi asdf-unit-schemas 0.1.0 pypi_0 pypi asdf-wcs-schemas 0.2.0 pypi_0 pypi asteval 0.9.31 pypi_0 pypi astraeus 0.3 pypi_0 pypi astropy 5.3.4 pypi_0 pypi astropy-healpix 1.0.0 pypi_0 pypi astroquery 0.4.6 pypi_0 pypi astroscrappy 1.1.0 pypi_0 pypi asttokens 2.4.0 pypi_0 pypi async-lru 2.0.4 pypi_0 pypi attrs 23.1.0 pypi_0 pypi babel 2.13.0 pypi_0 pypi backcall 0.2.0 pypi_0 pypi batman-package 2.4.9 pypi_0 pypi bayesicfitting 3.2.0 pypi_0 pypi beautifulsoup4 4.12.2 pypi_0 pypi bleach 6.0.0 pypi_0 pypi bokeh 2.4.3 pypi_0 pypi bottleneck 1.3.7 pypi_0 pypi ca-certificates 2023.08.22 h06a4308_0 ccdproc 2.4.1 pypi_0 pypi celerite 0.4.2 pypi_0 pypi certifi 2023.7.22 pypi_0 pypi cffi 1.16.0 pypi_0 pypi cftime 1.6.2 pypi_0 pypi charset-normalizer 3.3.0 pypi_0 pypi click 8.1.7 pypi_0 pypi cloudpickle 2.2.1 pypi_0 pypi comm 0.1.4 pypi_0 pypi contourpy 1.1.1 pypi_0 pypi corner 2.2.2 pypi_0 pypi crds 11.17.6 pypi_0 pypi cryptography 41.0.4 pypi_0 pypi cycler 0.12.0 pypi_0 pypi cython 3.0.3 pypi_0 pypi dask 2023.9.3 pypi_0 pypi debugpy 1.8.0 pypi_0 pypi decorator 5.1.1 pypi_0 pypi defusedxml 0.7.1 pypi_0 pypi docutils 0.20.1 pypi_0 pypi drizzle 1.14.3 pypi_0 pypi dynesty 2.1.3 pypi_0 pypi emcee 3.1.4 pypi_0 pypi entrypoints 0.4 pypi_0 pypi eureka 0.10.dev154+gb9fe863a pypi_0 pypi exceptiongroup 1.1.3 pypi_0 pypi executing 2.0.0 pypi_0 pypi exotic-ld 3.0.0 pypi_0 pypi fasteners 0.19 pypi_0 pypi fastjsonschema 2.18.1 pypi_0 pypi filelock 3.12.4 pypi_0 pypi fonttools 4.43.0 pypi_0 pypi fqdn 1.5.1 pypi_0 pypi fsspec 2023.9.2 pypi_0 pypi future 0.18.3 pypi_0 pypi george 0.4.0 pypi_0 pypi gwcs 0.19.0 pypi_0 pypi h5netcdf 1.2.0 pypi_0 pypi h5py 3.9.0 pypi_0 pypi html5lib 1.1 pypi_0 pypi idna 3.4 pypi_0 pypi image-registration 0.2.7.dev22+ged3ea3b pypi_0 pypi imageio 2.31.5 pypi_0 pypi imagesize 1.4.1 pypi_0 pypi importlib-metadata 6.8.0 pypi_0 pypi importlib-resources 6.1.0 pypi_0 pypi iniconfig 2.0.0 pypi_0 pypi ipykernel 6.25.2 pypi_0 pypi ipython 8.16.1 pypi_0 pypi ipython-genutils 0.2.0 pypi_0 pypi ipywidgets 8.1.1 pypi_0 pypi isoduration 20.11.0 pypi_0 pypi jaraco-classes 3.3.0 pypi_0 pypi jedi 0.19.1 pypi_0 pypi jeepney 0.8.0 pypi_0 pypi jinja2 3.1.2 pypi_0 pypi jmespath 1.0.1 pypi_0 pypi json5 0.9.14 pypi_0 pypi jsonpointer 2.4 pypi_0 pypi jsonschema 4.19.1 pypi_0 pypi jsonschema-specifications 2023.7.1 pypi_0 pypi jupyter 1.0.0 pypi_0 pypi jupyter-client 8.3.1 pypi_0 pypi jupyter-console 6.6.3 pypi_0 pypi jupyter-core 5.3.2 pypi_0 pypi jupyter-events 0.7.0 pypi_0 pypi jupyter-lsp 2.2.0 pypi_0 pypi jupyter-server 2.7.3 pypi_0 pypi jupyter-server-terminals 0.4.4 pypi_0 pypi jupyterlab 4.0.6 pypi_0 pypi jupyterlab-pygments 0.2.2 pypi_0 pypi jupyterlab-server 2.25.0 pypi_0 pypi jupyterlab-widgets 3.0.9 pypi_0 pypi jwst 1.10.2 pypi_0 pypi keyring 24.2.0 pypi_0 pypi kiwisolver 1.4.5 pypi_0 pypi lazy-loader 0.3 pypi_0 pypi ld_impl_linux-64 2.38 h1181459_1 libffi 3.3 he6710b0_2 libgcc-ng 11.2.0 h1234567_1 libgomp 11.2.0 h1234567_1 libstdcxx-ng 11.2.0 h1234567_1 lmfit 1.2.2 pypi_0 pypi locket 1.0.0 pypi_0 pypi markupsafe 2.1.3 pypi_0 pypi matplotlib 3.7.3 pypi_0 pypi matplotlib-inline 0.1.6 pypi_0 pypi mistune 3.0.2 pypi_0 pypi more-itertools 10.1.0 pypi_0 pypi nbclient 0.8.0 pypi_0 pypi nbconvert 7.9.2 pypi_0 pypi nbformat 5.9.2 pypi_0 pypi ncurses 6.4 h6a678d5_0 nest-asyncio 1.5.8 pypi_0 pypi netcdf4 1.6.4 pypi_0 pypi networkx 3.1 pypi_0 pypi notebook 7.0.4 pypi_0 pypi notebook-shim 0.2.3 pypi_0 pypi numcodecs 0.11.0 pypi_0 pypi numpy 1.24.4 pypi_0 pypi numpydoc 1.6.0 pypi_0 pypi opencv-python 4.8.1.78 pypi_0 pypi opencv-python-headless 4.8.1.78 pypi_0 pypi openssl 1.1.1w h7f8727e_0 overrides 7.4.0 pypi_0 pypi packaging 23.2 pypi_0 pypi pandas 2.1.1 pypi_0 pypi pandocfilters 1.5.0 pypi_0 pypi parsley 1.3 pypi_0 pypi parso 0.8.3 pypi_0 pypi partd 1.4.1 pypi_0 pypi pexpect 4.8.0 pypi_0 pypi photutils 1.9.0 pypi_0 pypi pickleshare 0.7.5 pypi_0 pypi pillow 10.0.1 pypi_0 pypi pip 23.2.1 py39h06a4308_0 platformdirs 3.11.0 pypi_0 pypi pluggy 1.3.0 pypi_0 pypi poppy 1.1.1 pypi_0 pypi prometheus-client 0.17.1 pypi_0 pypi prompt-toolkit 3.0.39 pypi_0 pypi psutil 5.9.5 pypi_0 pypi ptyprocess 0.7.0 pypi_0 pypi pure-eval 0.2.2 pypi_0 pypi pycparser 2.21 pypi_0 pypi pyerfa 2.0.0.3 pypi_0 pypi pygments 2.16.1 pypi_0 pypi pyparsing 3.1.1 pypi_0 pypi pysynphot 2.0.0 pypi_0 pypi pytest 7.4.2 pypi_0 pypi python 3.9.7 h12debd9_1 python-dateutil 2.8.2 pypi_0 pypi python-json-logger 2.0.7 pypi_0 pypi pytz 2023.3.post1 pypi_0 pypi pyvo 1.4.2 pypi_0 pypi pyyaml 6.0.1 pypi_0 pypi pyzmq 25.1.1 pypi_0 pypi qtconsole 5.4.4 pypi_0 pypi qtpy 2.4.0 pypi_0 pypi readline 8.2 h5eee18b_0 referencing 0.30.2 pypi_0 pypi reproject 0.12.0 pypi_0 pypi requests 2.31.0 pypi_0 pypi rfc3339-validator 0.1.4 pypi_0 pypi rfc3986-validator 0.1.1 pypi_0 pypi rpds-py 0.10.4 pypi_0 pypi scikit-image 0.22.0 pypi_0 pypi scipy 1.9.3 pypi_0 pypi secretstorage 3.3.3 pypi_0 pypi semantic-version 2.10.0 pypi_0 pypi send2trash 1.8.2 pypi_0 pypi setuptools 68.0.0 py39h06a4308_0 setuptools-scm 8.0.4 pypi_0 pypi six 1.16.0 pypi_0 pypi sniffio 1.3.0 pypi_0 pypi snowballstemmer 2.2.0 pypi_0 pypi soupsieve 2.5 pypi_0 pypi spherical-geometry 1.2.23 pypi_0 pypi sphinx 7.2.6 pypi_0 pypi sphinxcontrib-applehelp 1.0.7 pypi_0 pypi sphinxcontrib-devhelp 1.0.5 pypi_0 pypi sphinxcontrib-htmlhelp 2.0.4 pypi_0 pypi sphinxcontrib-jsmath 1.0.1 pypi_0 pypi sphinxcontrib-qthelp 1.0.6 pypi_0 pypi sphinxcontrib-serializinghtml 1.1.9 pypi_0 pypi sqlite 3.41.2 h5eee18b_0 stack-data 0.6.3 pypi_0 pypi stcal 1.3.8 pypi_0 pypi stdatamodels 1.3.1 pypi_0 pypi stpipe 0.4.6 pypi_0 pypi stsci-image 2.3.5 pypi_0 pypi stsci-imagestats 1.6.3 pypi_0 pypi stsci-stimage 0.2.6 pypi_0 pypi svo-filters 0.4.4 pypi_0 pypi tabulate 0.9.0 pypi_0 pypi terminado 0.17.1 pypi_0 pypi tifffile 2023.9.26 pypi_0 pypi tinycss2 1.2.1 pypi_0 pypi tk 8.6.12 h1ccaba5_0 tomli 2.0.1 pypi_0 pypi toolz 0.12.0 pypi_0 pypi tornado 6.3.3 pypi_0 pypi tqdm 4.66.1 pypi_0 pypi traitlets 5.11.2 pypi_0 pypi tweakwcs 0.8.3 pypi_0 pypi types-python-dateutil 2.8.19.14 pypi_0 pypi typing-extensions 4.8.0 pypi_0 pypi tzdata 2023.3 pypi_0 pypi uncertainties 3.1.7 pypi_0 pypi uri-template 1.3.0 pypi_0 pypi urllib3 2.0.6 pypi_0 pypi wcwidth 0.2.8 pypi_0 pypi webcolors 1.13 pypi_0 pypi webencodings 0.5.1 pypi_0 pypi websocket-client 1.6.3 pypi_0 pypi wheel 0.41.2 py39h06a4308_0 widgetsnbextension 4.0.9 pypi_0 pypi wiimatch 0.3.1 pypi_0 pypi xarray 2023.9.0 pypi_0 pypi xz 5.4.2 h5eee18b_0 zarr 2.16.1 pypi_0 pypi zipp 3.17.0 pypi_0 pypi zlib 1.2.13 h5eee18b_0

Code of Conduct

jbrande commented 10 months ago

This was caused by a rogue from matplotlib import docstring in image_registration, which wasn't necessary and has since been removed in their most recent PR and version 0.2.7. Anyone doing a clean Eureka install shouldn't run into this anymore, and hopefully people who have older versions will see this and find out that they just need to update that package.