Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Importing ptypy.utils fails with matplotlib >= 3.6 #562

Closed
kmdouglass opened this issue Jul 29, 2024 · 2 comments
Closed

Importing ptypy.utils fails with matplotlib >= 3.6 #562

kmdouglass opened this issue Jul 29, 2024 · 2 comments

Comments

@kmdouglass
Copy link

kmdouglass commented Jul 29, 2024

Importing the ptypy.utils module fails with matplotlib versions equal to or newer than 3.6 due to deprecation of the matplotlib.cm.register_cmap function.

How to reproduce the bug

from ptypy import utils as u

The above script produces the following stack trace:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[1], line 1
----> 1 from ptypy import utils as u

File ~/src/leb/ptytest/.venv/lib/python3.12/site-packages/ptypy/__init__.py:45
     42     del matplotlib
     44 # Initialize MPI (eventually GPU)
---> 45 from .utils import parallel
     47 # Logging
     48 from .utils import verbose

File ~/src/leb/ptytest/.venv/lib/python3.12/site-packages/ptypy/utils/__init__.py:21
     19 from .. import __has_matplotlib__ as hmpl
     20 if hmpl:
---> 21     from .plot_utils import *
     22     from .plot_client import PlotClient, MPLClient, spawn_MPLClient, MPLplotter
     23 del hmpl

File ~/src/leb/ptytest/.venv/lib/python3.12/site-packages/ptypy/utils/plot_utils.py:419
    379 # Removing it due to DeprecationWarning in Matplotlib
    380 # DeprecationWarning: Passing raw data via parameters data and lut to register_cmap() is deprecated since 3.3 and will become an error two minor releases later. Instead use: register_cmap(cmap=LinearSegmentedColormap(name, data, lut))
    381 # Franz map
   (...)
    399 
    400 # Franz Map
    401 franzmap_cm = {'red':   ((0.000,   0,    0),
    402                                                       (0.350,   0,    0),
    403                                                       (0.660,   1,    1),
   (...)
    416                                                       (0.650,   0,    0),
    417                                                       (1.000,   0,    0))}
--> 419 mpl.cm.register_cmap(cmap=LinearSegmentedColormap(name='franzmap', segmentdata=franzmap_cm, N=256))
    421 def franzmap():
    422     \"\"\"\\
    423     Set the default colormap to Franz's map and apply to current image if any.
    424     \"\"\"

AttributeError: module 'matplotlib.cm' has no attribute 'register_cmap'"

Cause

matplotlib.cm.register_cmap was removed in Matplotlib 3.6: https://matplotlib.org/3.6.3/api/cm_api.html#matplotlib.cm.register_cmap

Possible solution

As stated in the documentation at the link above, use matplotlib.colormaps.register(name) instead.

Environment

  • Windows 11 / WSL Ubuntu 20.04
  • Python 3.12.4
Package                   Version        Editable project location
------------------------- -------------- -------------------------
anyio                     4.4.0
argon2-cffi               23.1.0
argon2-cffi-bindings      21.2.0
arrow                     1.3.0
asttokens                 2.4.1
async-lru                 2.0.4
attrs                     23.2.0
Babel                     2.15.0
beautifulsoup4            4.12.3
black                     24.4.2
bleach                    6.1.0
certifi                   2024.7.4
cffi                      1.16.0
charset-normalizer        3.3.2
click                     8.1.7
comm                      0.2.2
contourpy                 1.2.1
cycler                    0.12.1
debugpy                   1.8.2
decorator                 5.1.1
defusedxml                0.7.1
executing                 2.0.1
fastjsonschema            2.20.0
fonttools                 4.53.1
fqdn                      1.5.1
h11                       0.14.0
h5py                      3.11.0
httpcore                  1.0.5
httpx                     0.27.0
idna                      3.7
iniconfig                 2.0.0
ipykernel                 6.29.5
ipython                   8.26.0
ipywidgets                8.1.3
isoduration               20.11.0
jedi                      0.19.1
Jinja2                    3.1.4
json5                     0.9.25
jsonpointer               3.0.0
jsonschema                4.23.0
jsonschema-specifications 2023.12.1
jupyter                   1.0.0
jupyter_client            8.6.2
jupyter-console           6.6.3
jupyter_core              5.7.2
jupyter-events            0.10.0
jupyter-lsp               2.2.5
jupyter_server            2.14.2
jupyter_server_terminals  0.5.3
jupyterlab                4.2.4
jupyterlab_pygments       0.3.0
jupyterlab_server         2.27.3
jupyterlab_widgets        3.0.11
kiwisolver                1.4.5
leb.ptytest               0.1.0          /home/kmd/src/leb/ptytest
MarkupSafe                2.1.5
matplotlib                3.9.1
matplotlib-inline         0.1.7
mistune                   3.0.2
mypy-extensions           1.0.0
nbclient                  0.10.0
nbconvert                 7.16.4
nbformat                  5.10.4
nest-asyncio              1.6.0
notebook                  7.2.1
notebook_shim             0.2.4
numpy                     2.0.1
overrides                 7.7.0
packaging                 24.1
pandocfilters             1.5.1
parso                     0.8.4
pathspec                  0.12.1
pexpect                   4.9.0
pillow                    10.4.0
pip                       23.1.2
platformdirs              4.2.2
pluggy                    1.5.0
prometheus_client         0.20.0
prompt_toolkit            3.0.47
psutil                    6.0.0
ptyprocess                0.7.0
PtyPy                     0.8.1
pure_eval                 0.2.3
pycparser                 2.22
Pygments                  2.18.0
pyparsing                 3.1.2
pytest                    8.3.2
python-dateutil           2.9.0.post0
python-json-logger        2.0.7
PyYAML                    6.0.1
pyzmq                     26.0.3
qtconsole                 5.5.2
QtPy                      2.4.1
referencing               0.35.1
requests                  2.32.3
rfc3339-validator         0.1.4
rfc3986-validator         0.1.1
rpds-py                   0.19.1
scipy                     1.14.0
Send2Trash                1.8.3
setuptools                71.1.0
six                       1.16.0
sniffio                   1.3.1
soupsieve                 2.5
stack-data                0.6.3
terminado                 0.18.1
tinycss2                  1.3.0
tornado                   6.4.1
traitlets                 5.14.3
types-python-dateutil     2.9.0.20240316
uri-template              1.3.0
urllib3                   2.2.2
wcwidth                   0.2.13
webcolors                 24.6.0
webencodings              0.5.1
websocket-client          1.8.0
widgetsnbextension        4.0.11
@jcesardasilva
Copy link
Contributor

jcesardasilva commented Jul 29, 2024

Hi @kmdouglass,
Thank you for the message. That issue was already solved in the branch dev (#555).
You can install the branch dev. A new patch with the solution is expected to be released soon.

Cheers.

@kmdouglass
Copy link
Author

Thanks @jcesardasilva ! I'll close this issue then. Cheers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants