PyWavelets / pywt

PyWavelets - Wavelet Transforms in Python
http://pywavelets.readthedocs.org
MIT License
2.04k stars 470 forks source link

Run tests on Python 3.10 #603

Closed grlee77 closed 2 years ago

grlee77 commented 2 years ago

Let's see how this goes. NumPy has wheels up now, but matplotlib will still have to install from source.

rgommers commented 2 years ago

Appveyor is unhappy:

util\appveyor\build.cmd %PYTHON%\python.exe -m pip install --upgrade pip
Using default MSVC build environment
The system cannot find the path specified.

The rest looks good!

grlee77 commented 2 years ago

Appveyor is unhappy:

Yeah, apparently 3.10 support is still pending for Appveyor. It looks like for Python 3.8/3.9 this took 20-30 days, so hopefully soon?

rgommers commented 2 years ago

Can we drop Appveyor? We have Windows support in the cibuildwheel integration now, right?

rgommers commented 2 years ago

I guess we'd have to add a separate regular-CI GHA job, which is a bit of work - but will help in the long run.

grlee77 commented 2 years ago

I guess we'd have to add a separate regular-CI GHA job, which is a bit of work - but will help in the long run.

Yeah, we should be able to do that. In the meantime, Appveyor added 3.10 support yesterday, so I have restarted the CI run here.

grlee77 commented 2 years ago

looks like Python 3.10 on 32-bit windows is building a NumPy wheel since only a 64-bit one is on PyPI. Should we drop the 32-bit case here for Python 3.10?

rgommers commented 2 years ago

Great. IIRC the NumPy 32-bit wheel will still follow; it's important for a few more years. Only the Linux 32-bit wheel was permanently dropped. So 32-bit Windows we can skip for now, but should re-enable once NumPy has it.

rgommers commented 2 years ago

There's something funky going on with futures (an indirect dependency) on the 3.10 Appveyor builds:

Collecting futures
  Downloading futures-3.0.5.tar.gz (25 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: 'C:\Python310-x64\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\pip-install-1lf13oq0\\futures_55dd161babf14d49a09990ebdac1bbe9\\setup.py'"'"'; __file__='"'"'C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\pip-install-1lf13oq0\\futures_55dd161babf14d49a09990ebdac1bbe9\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\appveyor\AppData\Local\Temp\1\pip-pip-egg-info-zw6f85rb'
       cwd: C:\Users\appveyor\AppData\Local\Temp\1\pip-install-1lf13oq0\futures_55dd161babf14d49a09990ebdac1bbe9\
  Complete output (24 lines):
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Python310-x64\lib\site-packages\setuptools\__init__.py", line 18, in <module>
      from setuptools.dist import Distribution
    File "C:\Python310-x64\lib\site-packages\setuptools\dist.py", line 32, in <module>
      from setuptools.extern.more_itertools import unique_everseen
    File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
    File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 674, in _load_unlocked
    File "<frozen importlib._bootstrap>", line 571, in module_from_spec
    File "C:\Python310-x64\lib\site-packages\setuptools\extern\__init__.py", line 52, in create_module
      return self.load_module(spec.name)
    File "C:\Python310-x64\lib\site-packages\setuptools\extern\__init__.py", line 37, in load_module
      __import__(extant)
    File "C:\Python310-x64\lib\site-packages\setuptools\_vendor\more_itertools\__init__.py", line 1, in <module>
      from .more import *  # noqa
    File "C:\Python310-x64\lib\site-packages\setuptools\_vendor\more_itertools\more.py", line 5, in <module>
      from concurrent.futures import ThreadPoolExecutor
    File "C:\Users\appveyor\AppData\Local\Temp\1\pip-install-1lf13oq0\futures_55dd161babf14d49a09990ebdac1bbe9\concurrent\futures\__init__.py", line 8, in <module>
      from concurrent.futures._base import (FIRST_COMPLETED,
    File "C:\Users\appveyor\AppData\Local\Temp\1\pip-install-1lf13oq0\futures_55dd161babf14d49a09990ebdac1bbe9\concurrent\futures\_base.py", line 357
      raise type(self._exception), self._exception, self._traceback
                                 ^
  SyntaxError: invalid syntax
  ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/55/db/97c1ca37edab586a1ae03d6892b6633d8eaa23b23ac40c7e5bbc55423c78/futures-3.0.5.tar.gz#sha256=0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df (from https://pypi.org/simple/futures/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Downloading futures-3.0.4.tar.gz (25 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'error'
...
<etc - pip goes in a loop here>

It looks like we can safely ignore that for now though.

rgommers commented 2 years ago

There's something funky going on with futures (an indirect dependency) on the 3.10 Appveyor builds:

I figured this one out, futures is Python 2 only, and there was a stray install of it in appveyor.yml. I'll fix that in a follow-up. In it goes, thanks @grlee77!

rgommers commented 2 years ago

Follow up done in commit cc34ea91.