Poetry sets the pinned NumPy version based on the minimum allowed Python
version. Previously we set the minimum Python version to 3.8 (the last
version with Windows 7 binaries), so Poetry pinned NumPy to the last
version to support 3.8, which lacks wheels for modern Python. As a
result you could not install corrscope on modern Python through Poetry.
This commit sets the minimum Python version to 3.10. This breaks Windows
7 support (unless you use a custom newer Python build or override the
minimum Python version), but fixes corrscope Poetry installation on
newer Python versions. (corrscope wheel installation does not pin the
numpy version, so is exempt.) This also enables testing corrscope on
NumPy 2.0, which has incompatible changes.
Raise minimum matplotlib version to 3.5 (still supported on Python 3.8
on Windows 7).
This fixes support with future Matplotlib 3.9, which removes
matplotlib.cm.get_cmap(). Newer versions of dependencies may be chosen
when installing corrscope using pip/pipx and wheels, rather than Poetry
or official binaries (which always use locked dependencies).
See https://github.com/python-poetry/poetry/issues/8540.
I tried to find a way to use Python 5.15.11 on Mac and 5.15.2 on other
platforms, but Poetry ended up using 5.15.11 on Linux as well (which
failed). Let's just stick with 5.15.2, and force Qt6 on Mac ARM64 since
it probably looks better anyway.
This adds a dependency on the atomicwrites package. Note that it was
already a transitive dev-dependency, but is now a direct dependency as
well.
On Linux, atomicwrites fsyncs the directory after saving. This is
unnecessary for consistency after a system crash, and slows down program
shutdown slightly. But I'm too lazy to vendor or rewrite the library to
not fsync the directory.
The previously pinned NumPy 1.16.4 was very old
and didn't come with a prebuilt binary wheel for Python 3.8+.
As a result, trying to install corrscope on Python 3.8+ with the pinned
dependency versions (through `poetry install`, not through
`pip install corrscope`) tries (and fails) to build NumPy from scratch.
This updates the pinned NumPy (but not other dependencies) to 1.19.5,
which has prebuilt wheels up to Python 3.9 (the current latest release).
Poetry wouldn't upgrade to NumPy 1.20, since it requires Python 3.7
and we specify a minimum version of 3.6.
NumPy 1.19 is packaged properly by old PyInstaller.
Editing poetry.lock should be performed through
https://github.com/nyanpasu64/poetry.
Otherwise, pyinstaller and all its dependencies will erroneously
be marked as "main". Effects:
pyinstaller is installed when running poetry install --no-dev.
pyinstaller is not included into poetry build (neither setup.py nor whl).
does not affect pyinstaller/Appveyor builds.
Major changes:
- LayoutConfig._calc_layout() improved
- register_enum() replaced with DumpEnumAsStr (*very* iffy multiple inheritance)
i configured mypy to not care about missing annotations...
but most files are fully annotated via MonkeyType = big PR diff.