Fixes issue where trying to render foobar2000 WAV files fails
with message "ValueError: Incomplete wav chunk."
File taken from
ac3b21908a/scipy/io/wavfile.py.
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.
Instead, warn the user with a popup dialog, and reset settings to
default.
Every few months, a user would report corrscope failing to open
due to a corrupted prefs.yaml.
This commit should stop all occurrences of that from now on.
The next commit will help ensure that we never save corrupted files
in the first place.
I also fixed pre-commit hooks on machines without Python 3.6 installed.
I don't like how Black now removes leading and trailing spaces in
doc comments, but it is what it is.
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.
Previously we linked to shared-dll ffmpeg builds.
When downloading the shared builds, some users fail to extract the DLLs,
causing ffmpeg to not work.
Static has a larger filesize, but is less likely to confuse users.
Previously, we linked to the latest ffmpeg dev build.
I'm unsure if ffmpeg dev builds are unstable
or may have bugs varying from version to version.
And there is no URL on zeranoe's website to get the latest release build.
So instead hard-code/pin the current latest release,
and update it from time to time.
I used to delete matplotlib bundled fonts. If matplotlib can't find dejavu sans, it overflows the stack and raises an exception (on my machine) or crashes (on others' machines).
This PR re-bundles the fonts. Increases uncompressed size by ~8MB and compressed size by 2.5MB, but worth it.