# ------------------ LIBRARIES ------------------ #
# TODO: Add most of the libraries we have hooks for, and write tests
av==16.0.1; python_version >= "3.10"
# adbutils does not provide arm64 macOS wheels.
adbutils==2.12.0; sys_platform != "darwin" or platform_machine != "arm64"
APScheduler==3.11.2
backports.zoneinfo==0.2.1; python_version < "3.9"
black==25.12.0; python_version >= "3.10"
bokeh==3.8.1; python_version >= "3.10"
boto==2.49.0
boto3==1.42.14; python_version >= "3.9"
botocore==1.42.14; python_version >= "3.9"
branca==0.8.2
cairocffi==1.7.1
# On macOS, CairoSVG requires cairo installed via Homebrew; on arm64, the Homebrew is
# installed in /opt/homebrew/lib and does not seem to be visible to non-Homebrew python.
CairoSVG==2.8.2; (sys_platform != "darwin" or platform_machine != "arm64") and python_version >= "3.9"
cassandra-driver==3.29.3
capstone==5.0.6
cf-units==3.3.0; sys_platform != "win32" and python_version >= "3.10"
cftime==1.6.5; python_version >= "3.10"
charset_normalizer==3.4.4
cloudpickle==3.1.2
cloudscraper==1.2.71
cmocean==4.0.3
# compliance-checker requires cf-units, so same constraints apply.
compliance-checker==5.4.2; sys_platform != "win32" and python_version >= "3.10"
cryptography==46.0.3
dash==3.3.0
dash-bootstrap-components==2.0.4; python_version >= "3.9"
dash-uploader==0.6.1
dask[array,diagnostics,distributed]==2025.12.0; python_version >= "3.10"
python-dateutil==2.9.0.post0
dateparser==1.2.2
# discid requires libdiscid to be provided by the system.
# We install it via apt-get and brew on ubuntu and macOS CI runners, respectively; on arm64, the Homebrew is
# installed in /opt/homebrew/lib and does not seem to be visible to non-Homebrew python.
discid==1.3.0; sys_platform != "win32" and (sys_platform != "darwin" or platform_machine != "arm64") and python_version >= "3.9"
duckdb==1.4.3; python_version >= "3.9"
eccodes==2.44.0; python_version >= "3.10"
eth_typing==5.2.1
eth_utils==5.3.1
fabric==3.2.2
falcon==4.2.0; python_version >= "3.9"
fiona==1.10.1; sys_platform != "win32"
folium==0.20.0; python_version >= "3.9"
frictionless==5.18.1
ffpyplayer==4.5.3; python_version >= "3.9"
geopandas==1.1.1; sys_platform != "win32" and python_version >= "3.10"
google-api-python-client==2.187.0
grapheme==0.6.0
graphql-query==1.4.0
python-gitlab==7.0.0; python_version >= "3.10"
h5py==3.15.1; python_version >= "3.10"
humanize==4.15.0; python_version >= "3.10"
iminuit==2.32.0; python_version >= "3.9"
iso639-lang==2.6.3; python_version >= "3.9"
kaleido==1.2.0; python_version >= "3.9"
langdetect==1.0.9
mariadb==1.1.14; sys_platform != "darwin" and python_version >= "3.9"
markdown==3.10; python_version >= "3.10"
# MetPy is no longer runable with PyInstaller since matplotlib made pillow a dependency. See #395.
# MetPy==1.2.0
# moviepy depends on imageio-ffmpeg, which does not provide binary wheels for arm64 macOS
moviepy==2.2.1; python_version >= "3.9" and (sys_platform != "darwin" or platform_machine != "arm64")
mnemonic==0.21
msoffcrypto-tool==5.4.2
narwhals==2.14.0; python_version >= "3.9"
nest-asyncio==1.6.0
netCDF4==1.7.3; python_version >= "3.10"
nicegui==3.4.1; python_version >= "3.9"
# numba depends on up-to-date llvmlite, which stopped providing x86_64 wheels for macOS.
numba==0.63.1; python_version >= "3.10" and (sys_platform != "darwin" or platform_machine == "arm64")
numcodecs==0.16.5; python_version >= "3.11"
Office365-REST-Python-Client==2.6.2
openpyxl==3.1.5
pandas==2.3.3; python_version >= "3.9"
panel==1.8.4; python_version >= "3.10"
pandera==0.27.1; python_version >= "3.10"
passlib==1.7.4
pendulum==3.1.0; python_version >= "3.9"
phonenumbers==9.0.21
pingouin==0.5.5
pinyin==0.4.0
platformdirs==4.5.1; python_version >= "3.10"
plotly==6.5.0
publicsuffix2==2.20191221
pycparser==2.23
pycryptodome==3.23.0
pycryptodomex==3.23.0
pydicom==3.0.1; python_version >= "3.10"
pyecharts==2.0.9;
pyexcelerate==0.13.0
pyexcel_ods==0.6.0
pylibmagic==0.5.0; sys_platform != "win32"
pylint==4.0.4; python_version >= "3.10"
# pymeshlab does not provide arm64 macOS wheels for python 3.9, only x86_64. Wheels for 3.14 are not available yet, either.
pymeshlab==2025.7; ((python_version >= "3.9" and (sys_platform != "darwin" or platform_machine != "arm64")) or python_version >= "3.10") and python_version < "3.14"
pypdfium2==5.2.0
pypemicro==0.1.11
pyphen==0.17.2; python_version >= "3.9"
pyppeteer==2.0.0
pyqtgraph==0.14.0; python_version >= "3.10"
pyusb==1.3.1; python_version >= "3.9"
pyviz-comms==3.0.6
pyvjoy==1.0.1; sys_platform == "win32"
pynng==0.8.1
pynput==1.8.1
# pymssql provides only x86_64 macOS wheels for python 3.9 and 3.10. But at the time of writing (v2.3.2), the universal2 wheels are broken on arm64 macOS as well.
pymssql==2.3.10; python_version >= "3.9" and (sys_platform != "darwin" or platform_machine != "arm64")
pystray==0.19.5
pythonnet==3.0.5; python_version < "3.14"
pytz==2025.2
# pyvista depends on vtk, which does not provide wheels for python 3.14 yet. For arm64 macOS, wheels are available only for python >= 3.9.
pyvista==0.46.4; python_version >= "3.9" and python_version < "3.14"
pyzmq==27.1.0
PyQt5==5.15.11
qtmodern==0.2.0
Rtree==1.4.1; python_version >= "3.9"
sacremoses==0.1.1
# Remove after merging https://github.com/pyinstaller/pyinstaller/pull/6587
scipy==1.16.3; python_version >= "3.11"
sentry-sdk==2.48.0
# shotgun-api3 is currently incompatible with python >= 3.13...
shotgun_api3==3.9.2; python_version >= "3.9" and python_version < "3.13"
slixmpp==1.12.0; python_version >= "3.10"
# spacy depends on thinc, which in turn depends on blis; contemporary versions of blis do not provide wheels for python 3.9 anymore, and fail to build from sdist.
spacy==3.8.11; python_version >= "3.10" and python_version < "3.14"
srsly==2.5.2; python_version >= "3.9" and python_version < "3.14"
sv-ttk==2.6.1; python_version >= "3.9"
swagger-spec-validator==3.0.4
tableauhyperapi==0.0.24081
# thinc depends on blis; contemporary versions of blis do not provide wheels for python 3.9 anymore, and fail to build from sdist.
# The latest version of thinc itself (9.1.1) provides wheels only for python <= 3.12
thinc==9.1.1; python_version >= "3.10" and python_version < "3.13"
timezonefinder==8.1.0; python_version > "3.8"
tkinterdnd2==0.4.3
trame==3.12.0; python_version >= "3.9" and python_version < "3.14"
trame-client==3.11.2; python_version >= "3.9" and python_version < "3.14"
trame-code==1.0.2; python_version < "3.14"
trame-components==2.5.0; python_version < "3.14"
trame-datagrid==0.2.2; python_version < "3.14"
trame-deckgl==2.0.3; python_version < "3.14"
trame-formkit==0.1.2; python_version < "3.14"
trame-grid-layout==1.0.3; python_version < "3.14"
trame-iframe==1.1.1; python_version < "3.14"
trame-keycloak==0.1.1; python_version < "3.14"
trame-leaflet==1.2.4; python_version >= "3.9" and python_version < "3.14"
trame-markdown==3.1.0; python_version < "3.14"
trame-matplotlib==2.0.3; python_version < "3.14"
# Our trame-mesh-streamer test also depends on vtk, which is not available for python 3.14 yet. For arm64 macOS, wheels are available only for python >= 3.9.
trame-mesh-streamer==0.1.0; python_version < "3.14" and (python_version >= "3.9" or sys_platform != "darwin" or platform_machine != "arm64")
trame-plotly==3.1.0; python_version < "3.14"
trame-pvui==0.1.1; python_version < "3.14"
trame-quasar==0.2.1; python_version < "3.14"
trame-rca==2.2.3; python_version >= "3.9" and python_version < "3.14"
trame-router==2.3.0; python_version < "3.14"
trame-server==3.9.0; python_version >= "3.9" and python_version < "3.14"
trame-simput==2.6.2; python_version >= "3.9" and python_version < "3.14"
trame-tauri==1.0.2; python_version >= "3.9" and python_version < "3.14"
trame-tweakpane==0.1.3; python_version < "3.14"
trame-vega==2.1.1; python_version < "3.14"
# Our trame-vtk test also depends on vtk, which is not available for python 3.14 yet.
trame-vtk==2.10.1; python_version >= "3.9" and python_version < "3.14"
trame-vtk3d==0.1.0; python_version < "3.14"
trame-vtklocal==0.15.4; python_version >= "3.9" and python_version < "3.14"
trame-vuetify==3.2.0; python_version >= "3.9" and python_version < "3.14"
trame-xterm==0.2.1; python_version < "3.14" and python_version < "3.14"
Twisted==25.5.0
tzdata==2025.3
Unidecode==1.4.0
urllib3-future==2.15.901
uuid6==2025.0.1; python_version >= "3.9"
# vtk provides arm64 macOS binary wheels only for python >= 3.9.
vtk==9.5.2; python_version >= "3.9" or sys_platform != "darwin" or platform_machine != "arm64"
# On macOS, weasyprint requires pango and glib installed via Homebrew; on arm64, the Homebrew is
# installed in /opt/homebrew/lib and does not seem to be visible to non-Homebrew python.
weasyprint==67.0; python_version >= "3.10" and (sys_platform != "darwin" or platform_machine != "arm64")
# web3 indirectly depends on ckzg, which does not yet provide python 3.14 wheels, and fails to build from sdist on Windows.
web3==7.14.0; python_version < "3.14" or sys_platform != "win32"
websockets==15.0.1; python_version >= "3.9"
# zeep depends on lxml which doesn't support Python 3.8 on macOS arm64
zeep==4.3.2; python_version >= "3.9" or (sys_platform != "darwin" or platform_machine != "arm64")
pypsexec==0.3.0
# mimesis 12.x dropped support for python < 3.10
mimesis==18.0.0; python_version >= "3.10"
orjson==3.11.5; python_version >= "3.9"
altair==6.0.0; python_version >= "3.9"
shapely==2.1.2; python_version >= "3.10"
lark==1.3.1
python-stdnum==2.1
# On linux, sounddevice and soundfile use system-provided libportaudio
# and libsndfile, respectively.
sounddevice==0.5.3; sys_platform != "linux"
soundfile==0.13.1; sys_platform != "linux"
limits==5.6.0; python_version >= "3.10"
great-expectations==1.10.0; python_version >= "3.10" and python_version < "3.14"
# Starting with tensorflow 2.17.0, macOS wheels are provided only for arm64 (x86_64 is deprecated).
tensorflow==2.20.0; python_version >= "3.9" and python_version < "3.14" and (sys_platform != "darwin" or platform_machine == "arm64")
# pyshark depends on lxml which doesn't support Python 3.8 on macOS arm64
pyshark==0.6; python_version >= "3.9" or (sys_platform != "darwin" or platform_machine != "arm64")
opencv-python==4.12.0.88
hydra-core==1.3.2
spiceypy==8.0.0; python_version >= "3.10"
exchangelib==5.6.0; python_version >= "3.10"
NBT==1.5.1
minecraft-launcher-lib==8.0; python_version >= "3.10"
scikit-learn==1.8.0; python_version >= "3.11"
scikit-image==0.26.0; python_version >= "3.11"
customtkinter==5.2.2
fastparquet==2025.12.0; python_version >= "3.10"
librosa==0.11.0
sympy==1.14.0; python_version >= "3.9"
xyzservices==2025.11.0
mistune==3.1.4
pydantic==2.12.5; python_version >= "3.9"
jsonschema==4.25.1; python_version >= "3.9"
psutil==7.1.3
litestar==2.19.0; python_version < "3.14"
lingua-language-detector==2.1.1; python_version >= "3.10"
opencc-python-reimplemented==0.1.7
jieba==0.42.1
simplemma==1.1.2
wordcloud==1.9.5; python_version >= "3.9"
eng-to-ipa==0.0.2
python-mecab-ko==1.3.7
khmer-nltk==1.6
python-crfsuite==0.9.11
pymorphy3==2.0.6
pymorphy3-dicts-uk==2.4.1.1.1663094765
# SudachiPy 0.6.10 does not provide wheels for python 3.14 yet.
sudachipy==0.6.10; python_version >= "3.9" and python_version < "3.14"
sudachidict-core==20251022; python_version >= "3.9" and python_version < "3.14"
sudachidict-small==20251022; python_version >= "3.9" and python_version < "3.14"
sudachidict-full==20251022; python_version >= "3.9" and python_version < "3.14"
wxPython==4.2.4; (sys_platform == "darwin" or sys_platform == "win32") and python_version >= "3.9"  # PyPI provides binary wheels for Windows and macOS
laonlp==1.2.0
pythainlp==5.2.0; python_version >= "3.9"
gmsh==4.15.0
sspilib==0.5.0; python_version >= "3.9"
rlp==4.1.0
eth-rlp==2.2.0
z3c.rml==5.0.1; python_version >= "3.9"
freetype-py==2.5.1
vaderSentiment==3.3.2
langchain==1.2.0; python_version >= "3.10"
langchain-classic==1.0.0; python_version >= "3.10"
seedir==0.5.1
# Starting with v0.4.0, cel-python depends on google-re2, which does not provide binary wheels for python 3.14.
cel-python==0.4.0; python_version >= "3.9" and python_version < "3.14"
# pygwalker depends on quickjs, currently (quickjs v1.19.4) provides wheels only for python <= 3.12, and fails to build from sdist on Windows.
# It also depends on pyarrow, which does not provide wheels for python 3.14 yet, and fails to build from sdist on all platforms.
pygwalker==0.4.9.15; (python_version < "3.13" or sys_platform != "win32") and python_version < "3.14"
eth-hash==0.7.1
apkutils==2.0.4; python_version >= "3.10"
pypylon==4.2.0; python_version >= "3.9"
python-pptx==1.0.2
comtypes==1.4.14; sys_platform == "win32" and python_version >= "3.9"
opentelemetry-sdk==1.39.1; python_version >= "3.9"
xarray==2025.12.0; python_version >= "3.11"
tables==3.10.2; python_version >= "3.11"
schwifty==2025.9.0; python_version >= "3.9"
patool==4.0.3; python_version >= "3.11"
yapf==0.43.0
xmlschema==4.2.0; python_version >= "3.9"
pysaml2==7.5.4; python_version >= "3.9"
# On Windows, toga requires toga-winforms, which depends on pythonnet; the latter does not provide wheels for python 3.14 yet.
toga==0.5.3; python_version >= "3.10" and (python_version < "3.14" or sys_platform != "win32")
numbers-parser==4.16.3; python_version >= "3.9"
fsspec==2025.12.0; python_version >= "3.10"
zarr==3.1.5; python_version >= "3.11"
intake==2.0.8; python_version >= "3.9"
h3==4.4.1
selectolax==0.4.6; python_version >= "3.9"
ruamel.yaml.string==0.1.1
niquests==3.15.2
emoji==2.15.0
tkinterweb[recommended]==4.11.0; python_version >= "3.9" or sys_platform != "win32"
tkinterweb-tkhtml==2.1.0; python_version >= "3.9" or sys_platform != "win32"
tkinterweb-tkhtml-extras==1.0.0; python_version >= "3.9" or sys_platform != "win32"
pandas_flavor==0.8.1; python_version >= "3.10"
globus-sdk==4.3.0; python_version >= "3.9"

# ------------------- Platform (OS) specifics

# dbus-fast has pre-built wheels only for Linux; and D-Bus is available only there, anyway.
dbus-fast==3.1.2; sys_platform == "linux" and python_version >= "3.10"

# PyEnchant only pre-builds macOS and Windows
pyenchant==3.3.0; (sys_platform == "darwin" or sys_platform == "win32") and python_version >= "3.9"

# uvloop does not currently support Windows.
uvloop==0.22.1; sys_platform != "win32"

# pydivert only runs on Windows
pydivert==2.1.0; sys_platform == "win32"

# pywin32-ctypes runs on Windows
pywin32-ctypes==0.2.3; sys_platform == "win32"

# pymediainfo on linux does not bundle mediainfo shared library, and requires system one.
pymediainfo==7.0.1; (sys_platform == "darwin" or sys_platform == "win32") and python_version >= "3.9"

# The required library can be installed with "brew install labstreaminglayer/tap/lsl" on macOS, or with "conda install liblsl" on any platform.
# On Windows, the library is bundled with PyPI wheels.
pylsl==1.17.6; (sys_platform == "darwin" or sys_platform == "win32") and python_version >= "3.9"

# PyTaskbar only runs on Windows
PyTaskbar==0.1.0; sys_platform == "win32" and python_version >= "3.10"

# pygraphviz requires graphviz to be provided by the environment (linux distribution, homebrew, or Anaconda).
pygraphviz==1.14; (sys_platform == "darwin" or sys_platform == "linux") and python_version >= "3.10"

# Include the requirements for testing
-r requirements-test.txt
