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

[ENH]: matplotlib 3.12 prelease wheels #26736

Closed
jarrodmillman opened this issue Sep 11, 2023 · 8 comments · Fixed by #26785
Closed

[ENH]: matplotlib 3.12 prelease wheels #26736

jarrodmillman opened this issue Sep 11, 2023 · 8 comments · Fixed by #26785
Milestone

Comments

@jarrodmillman
Copy link
Contributor

jarrodmillman commented Sep 11, 2023

Problem

Now that #26647 is merged, would it be possible to have a matplotlib 3.8.0rc2 release with 3.12 wheels soon. It would be helpful for folks (like me) trying to test downstream (from matplotlib) packages against 3.12.

Proposed solution

No response

@greglucas
Copy link
Contributor

I would be bold as to say we should just release 3.8 without another rc? @ksunden do you have an expected release date for either of these.

@jarrodmillman
Copy link
Contributor Author

jarrodmillman commented Sep 11, 2023

Also, I noticed that when you updated the version number after the 3.8.0rc1 release, you used 3.8.0.dev. That is less than the older release candidate. So if you try to install matplotlib with

$ pip install --pre --upgrade --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple matplotlib
Looking in indexes: https://pypi.org/simple, https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
Collecting matplotlib
  Using cached matplotlib-3.8.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
Collecting contourpy>=1.0.1
  Using cached contourpy-1.1.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302 kB)
Collecting cycler>=0.10
  Using cached cycler-0.11.0-py3-none-any.whl (6.4 kB)
Collecting fonttools>=4.22.0
  Using cached fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB)
Collecting kiwisolver>=1.0.1
  Using cached kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB)
Collecting numpy>=1.21
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/numpy/2.0.0.dev0/numpy-2.0.0.dev0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.3/18.3 MB 16.6 MB/s eta 0:00:00
Collecting packaging>=20.0
  Using cached packaging-23.1-py3-none-any.whl (48 kB)
Collecting pillow>=6.2.0
  Using cached Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (3.4 MB)
Collecting pyparsing>=2.3.1
  Using cached pyparsing-3.1.1-py3-none-any.whl (103 kB)
Collecting python-dateutil>=2.7
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting numpy>=1.21
  Using cached numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)
Collecting six>=1.5
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, pyparsing, pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, contourpy, matplotlib
Successfully installed contourpy-1.1.1rc1 cycler-0.11.0 fonttools-4.42.1 kiwisolver-1.4.5 matplotlib-3.8.0rc1 numpy-1.26.0rc1 packaging-23.1 pillow-10.0.0 pyparsing-3.1.1 python-dateutil-2.8.2 six-1.16.0

If I try to ignore pypi, I get:

$ pip install --pre --upgrade --index https://pypi.anaconda.org/scientific-python-nightly-wheels/simple matplotlib
Looking in indexes: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
Collecting matplotlib
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/matplotlib/3.8.0.dev1966%2Bge9f1d7b984/matplotlib-3.8.0.dev1966%2Bge9f1d7b984-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 15.0 MB/s eta 0:00:00
INFO: pip is looking at multiple versions of matplotlib to determine which version is compatible with other requirements. This could take a while.
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/matplotlib/3.8.0.dev1960%2Bgac376ea1a6/matplotlib-3.8.0.dev1960%2Bgac376ea1a6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 14.3 MB/s eta 0:00:00
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/matplotlib/3.8.0.dev1958%2Bg75ef6e2196/matplotlib-3.8.0.dev1958%2Bg75ef6e2196-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 15.5 MB/s eta 0:00:00
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/matplotlib/3.8.0.dev1953%2Bgb1e16f3741/matplotlib-3.8.0.dev1953%2Bgb1e16f3741-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 13.3 MB/s eta 0:00:00
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/matplotlib/3.8.0.dev1951%2Bg5f785e3e19/matplotlib-3.8.0.dev1951%2Bg5f785e3e19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 14.0 MB/s eta 0:00:00
ERROR: Cannot install matplotlib==3.8.0.dev1951+g5f785e3e19, matplotlib==3.8.0.dev1953+gb1e16f3741, matplotlib==3.8.0.dev1958+g75ef6e2196, matplotlib==3.8.0.dev1960+gac376ea1a6 and matplotlib==3.8.0.dev1966+ge9f1d7b984 because these package versions have conflicting dependencies.

The conflict is caused by:
    matplotlib 3.8.0.dev1966+ge9f1d7b984 depends on contourpy>=1.0.1
    matplotlib 3.8.0.dev1960+gac376ea1a6 depends on contourpy>=1.0.1
    matplotlib 3.8.0.dev1958+g75ef6e2196 depends on contourpy>=1.0.1
    matplotlib 3.8.0.dev1953+gb1e16f3741 depends on contourpy>=1.0.1
    matplotlib 3.8.0.dev1951+g5f785e3e19 depends on contourpy>=1.0.1

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

If I use the command recommend in the upload-nightly-action's README (https://github.com/scientific-python/upload-nightly-action), I get:

$ python -m pip install \
  --upgrade \
  --pre \
  --index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
  --extra-index-url https://pypi.org/simple \
  matplotlib
Looking in indexes: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple, https://pypi.org/simple
Collecting matplotlib
  Obtaining dependency information for matplotlib from https://files.pythonhosted.org/packages/b7/11/cad15f28ac27fdf6ff934ef9ec234b3de901a5d92bdc5b89cd58260a6f72/matplotlib-3.8.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading matplotlib-3.8.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.7 kB)
Collecting contourpy>=1.0.1 (from matplotlib)
  Obtaining dependency information for contourpy>=1.0.1 from https://files.pythonhosted.org/packages/c4/98/5b929ae19caa8f05984943ea67e7a8782da935f4de722e95cb399ba7bea8/contourpy-1.1.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading contourpy-1.1.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.9 kB)
Collecting cycler>=0.10 (from matplotlib)
  Using cached cycler-0.11.0-py3-none-any.whl (6.4 kB)
Collecting fonttools>=4.22.0 (from matplotlib)
  Obtaining dependency information for fonttools>=4.22.0 from https://files.pythonhosted.org/packages/07/fb/c507a09ab93642224417c31a3acd2806bfa53f4d723cf5d6cbdf62f2f337/fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (150 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 151.0/151.0 kB 9.4 MB/s eta 0:00:00
Collecting kiwisolver>=1.0.1 (from matplotlib)
  Obtaining dependency information for kiwisolver>=1.0.1 from https://files.pythonhosted.org/packages/17/ba/17a706b232308e65f57deeccae503c268292e6a091313f6ce833a23093ea/kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.4 kB)
Collecting numpy>=1.21 (from matplotlib)
  Downloading https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/numpy/2.0.0.dev0/numpy-2.0.0.dev0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.3/18.3 MB 13.8 MB/s eta 0:00:00
Collecting packaging>=20.0 (from matplotlib)
  Using cached packaging-23.1-py3-none-any.whl (48 kB)
Collecting pillow>=6.2.0 (from matplotlib)
  Obtaining dependency information for pillow>=6.2.0 from https://files.pythonhosted.org/packages/16/89/818fa238e37a47a29bb8495ca2cafdd514599a89f19ada7916348a74b5f9/Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata
  Downloading Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (9.5 kB)
Collecting pyparsing>=2.3.1 (from matplotlib)
  Obtaining dependency information for pyparsing>=2.3.1 from https://files.pythonhosted.org/packages/39/92/8486ede85fcc088f1b3dba4ce92dd29d126fd96b0008ea213167940a2475/pyparsing-3.1.1-py3-none-any.whl.metadata
  Downloading pyparsing-3.1.1-py3-none-any.whl.metadata (5.1 kB)
Collecting python-dateutil>=2.7 (from matplotlib)
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting numpy>=1.21 (from matplotlib)
  Obtaining dependency information for numpy>=1.21 from https://files.pythonhosted.org/packages/e4/89/b770201fe08656adcac4283599d5f628317abd2d8cf99a7e465521510914/numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.5/58.5 kB 16.7 MB/s eta 0:00:00
Collecting six>=1.5 (from python-dateutil>=2.7->matplotlib)
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached matplotlib-3.8.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
Using cached contourpy-1.1.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (302 kB)
Using cached fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB)
Using cached kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB)
Using cached numpy-1.26.0rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)
Using cached Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (3.4 MB)
Using cached pyparsing-3.1.1-py3-none-any.whl (103 kB)
Installing collected packages: six, pyparsing, pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, contourpy, matplotlib
Successfully installed contourpy-1.1.1rc1 cycler-0.11.0 fonttools-4.42.1 kiwisolver-1.4.5 matplotlib-3.8.0rc1 numpy-1.26.0rc1 packaging-23.1 pillow-10.0.0 pyparsing-3.1.1 python-dateutil-2.8.2 six-1.16.0

@jarrodmillman
Copy link
Contributor Author

>>> from packaging import version
>>> version.parse("3.8.0rc1") < version.parse("3.8.0.dev1951+g5f785e3e19")
False
>>> version.parse("3.8.0rc1") < version.parse("3.8.0rc1.dev1951+g5f785e3e19")
False
>>> version.parse("3.8.0rc1") < version.parse("3.8.0rc1.dev0")
False
>>> version.parse("3.8.0rc1") < version.parse("3.8.0rc2.dev0")
True
>>> version.parse("3.8.0rc1") < version.parse("3.8.0rc2.dev1951+g5f785e3e19")
True

So after releasing 3.8.0rc1 the basic version number should be updated to 3.8.0rc2.dev0 or 3.8.0rc2.dev.

@ksunden
Copy link
Member

ksunden commented Sep 11, 2023

The version number precedence things is because we have not merged the rc's tag into main, which as I understand is always how we have done it, waiting for final before doing that merge process. See also astropy/astropy#15284

Yes, I intend to do a final release of 3.8.0 this week.

I was to a certain degree waiting for pydata/xarray#8030 which I think has now gotten everything mpl-related sorted, though has not been merged yet, but I feel less bad about releasing when they have their fixes ready if not fully in place.

I also would tend to want 3.7.3 out prior, but I suppose there is no real requirement of that (@QuLogic opinions?). I think that is ready to go, the milestone is even closed, but it has not been tagged.

@QuLogic
Copy link
Member

QuLogic commented Sep 12, 2023

Well, 3.7.3 is out now, so you can feel free to release 3.8.0 whenever.

@QuLogic
Copy link
Member

QuLogic commented Sep 12, 2023

Now that #26647 is merged, would it be possible to have a matplotlib 3.8.0rc2 release with 3.12 wheels soon. It would be helpful for folks (like me) trying to test downstream (from matplotlib) packages against 3.12.

Do you need Matplotlib 3.8.0(rc) wheels or Python 3.12 wheels? The latter is already covered by Matplotlib 3.7.3.

@jarrodmillman
Copy link
Contributor Author

Matplotlib 3.8.0 Python 3.12 wheels would be the most convenient. We are using --pre to get numpy 1.26.0rc1 in our CI, but that means we also get matplotlib 3.8.0rc1 (and then have to wait for it to build Python 3.12 wheels).

Are you still planning to release matplotlib 3.8 this week? If so, we will probably just wait until that happens before merging PyWavelets/pywt#683 and trying to get pywavelets 1.5 out, which is needed before we can release scikit-image 0.22.

@jarrodmillman
Copy link
Contributor Author

@QuLogic QuLogic added this to the v3.8.0 milestone Sep 15, 2023
@ksunden ksunden mentioned this issue Sep 15, 2023
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants