OctoPrint-FileCheck>=2024.11.12
OctoPrint-FirmwareCheck>=2025.5.14
OctoPrint-PiSupport>=2023.10.10
argon2-cffi>=23.1.0
Click!=8.2.0,<8.3,>=8.1.8
colorlog<7,>=6.9.0
emoji<3,>=2.14.1
feedparser<7,>=6.0.11
filetype<2,>=1.2.0
Flask-Assets<3,>=2.1.0
Flask-Login<0.7,>=0.6.3
frozendict<3,>=2.4.6
limits<5
netaddr<1.4,>=1.3.0
netifaces<0.12,>=0.11.0
packaging
pathvalidate<4,>=3.2.1
psutil<7,>=6.1.1
pylru<2,>=1.2.1
pyserial<4,>=3.5
pytz
sarge==0.1.7.post1
semantic_version<3,>=2.10.0
sentry-sdk<3,>=2.20.0
setuptools
zipstream-ng<2.0.0,>=1.8.0
regex
unidecode
future
wheel

[:python_version < "3.8"]
Babel<2.15,>=2.14.0
cachelib<0.11,>=0.10.2
Flask-Babel<4,>=3.1.0
Flask-Limiter<3.6,>=3.5
flask<2.3,>=2.2.3
importlib-metadata>=6.7.0
markdown<3.5,>=3.4.4
pydantic==1.10.16
PyYAML==6.0.1
requests<2.32,>=2.31
tornado<6.3,>=6.2
watchdog<4,>=3.0.0
websocket-client==1.6.1
werkzeug<2.3.0,>=2.2.3
wrapt<1.17,>=1.16
zeroconf<0.132,>=0.131.0
blinker<1.7.0,>=1.6.3
more-itertools<10,>=9.1

[:python_version < "3.9"]
passlib==1.7.4

[:python_version <= "3.9" and platform_machine == "armv7l"]
markupsafe<=3.0.2

[:python_version >= "3.8"]
Babel<2.17,>=2.16
cachelib<0.14,>=0.13.0
Flask-Babel<5,>=4.0.0
Flask-Limiter<3.9,>=3.8
flask<3.1,>=3.0.3
markdown<3.8,>=3.7
pydantic<3,>=2.10.6
PyYAML<7,>=6.0.2
requests<3,>=2.32.3
watchdog<5,>=4.0.2
websocket-client<1.9,>=1.8.0
werkzeug<3.1,>=3.0.6
wrapt<1.18,>=1.17.2
zeroconf<0.137,>=0.136.2
blinker<1.9.0,>=1.8.0
more-itertools>=10.5.0

[:python_version >= "3.8" and python_version < "3.9"]
tornado==6.4.2

[:python_version >= "3.9"]
libpass<2,>=1.8.1
tornado<6.6,>=6.5.1

[:sys_platform == 'darwin']
appdirs<2,>=1.4.4

[develop]
ddt
mock<6,>=5.1.0
pytest-doctest-custom<2,>=1.0.0
ruff
pre-commit
pyinstrument

[develop:python_version < "3.8"]
pytest<8,>=7.4.4

[develop:python_version >= "3.8"]
pytest<9,>=8.3.4

[docs]
sphinx
sphinxcontrib-httpdomain
sphinxcontrib-mermaid
sphinx_rtd_theme
readthedocs-sphinx-ext

[plugins]
cookiecutter<3,>=2.6.0
