anki/pip
Damien Elmes d120cd7f8a update to latest mypy
mypy's move to external types-* packages is a PITA, as it requires them
to be installed in site-packages, and provides no way to specify a custom
site-packages folder, necessitating extra scripts to mock the
site-packages path, and copy+rename the stub packages into a separate
folder.
2021-06-16 16:04:59 +10:00
..
pyqt5 run black/isort on Python scripts 2021-04-14 18:22:02 +10:00
stubs update to latest mypy 2021-06-16 16:04:59 +10:00
binary.bzl add an updated script to run mypy as a daemon 2021-04-14 18:10:38 +10:00
BUILD.bazel add an updated script to run mypy as a daemon 2021-04-14 18:10:38 +10:00
licenses.json dump pypi licenses of runtime deps 2020-11-12 20:03:41 +10:00
licenses.sh dump pypi licenses of runtime deps 2020-11-12 20:03:41 +10:00
README.md README updates 2020-11-03 09:03:00 +10:00
requirements.in update to latest mypy 2021-06-16 16:04:59 +10:00
requirements.txt update to latest mypy 2021-06-16 16:04:59 +10:00
update.py run black/isort on Python scripts 2021-04-14 18:22:02 +10:00

To achieve reproducible builds we use pip-tools to lock packages to a particular version. Sadly this is complicated by the fact that Python can only tell us which transitive dependencies are required by actually installing packages, and if you run pip-tools on a Mac or Linux machine, it will miss packages that are required on Windows and vice versa.

So we're stuck manually merging dependencies for now. To update deps:

  • run 'bazel run update' to update requirements.txt for the current platform
  • consult the git diff, and manually merge the changes, undoing the removal of items pinned on other platforms
  • repeat the process on the other platform
  • run the tests to ensure nothing has broken on either platform
  • commit the changes to requirements.txt

At the time of writing, Macs and Linux machines have identical output - it is only Windows that differs. But we should not assume that will always be the case.