aiodns>=3.0,<=3.2.0
aiofiles>=22.1,<24.2.0
aiohttp>=3.9.0,<3.14
asyncio-throttle>=1.0,<=1.0.2
async-timeout>=4.0.3,<4.0.4;python_version<"3.11"
backoff>=2.1.2,<2.2.2
click>=8.1.0,<=8.1.7
cryptography>=38.0.1,<47.0  # SemVer compatible https://cryptography.io/en/latest/api-stability/#versioning .
Django>=4.2.24,<5.3, !=5.0, !=5.1  # LTS version, switch only if we have a compelling reason to
django-filter>=23.1,<=25.2  # Uses CalVer, not released often https://github.com/carltongibson/django-filter
django-guid>=3.3,<=3.5.0
django-import-export>=2.9,<5.0
django-lifecycle>=1.0,<=1.2.4
djangorestframework>=3.14.0,<=3.15.2
djangorestframework-queryfields>=1.0,<=1.1.0
drf-access-policy>=1.1.2,<1.5.1
drf-nested-routers>=0.93.4,<=0.94.1
drf-spectacular>=0.27.2,<0.30  # We monkeypatch this so we may need a very narrow requirement string.
dynaconf>=3.1.12,<3.3.0
gunicorn>=20.1,<23.1.0
importlib-metadata>=6.0.1,<=6.0.1  # Pinned to fix opentelemetry dependency solving issues with pip
jinja2>=3.1,<=3.1.6
json_stream>=2.3.2,<2.4
jq>=1.6.0,<1.9.0
# pycares is only a transitive dependency, but there is a combination of versions that expresses a bug.
pycares<4.9;python_version<'3.12'  # pycares==4.9 + aiodns==3.2.0 + python<3.12 = trouble
PyOpenSSL<27.0
opentelemetry-distro[otlp]>=0.45b0,<=0.49b0
opentelemetry-exporter-otlp-proto-http>=1.24.0,<1.29
opentelemetry-instrumentation-wsgi>=0.45b,<=0.49b0
protobuf>=4.21.1,<6.0
pulp-glue>=0.18.0,<0.32
pygtrie>=2.5,<=2.5.0
psycopg[binary]>=3.1.8,<3.3  # semver, not explicitely stated, but mentioned on multiple changes
pyparsing>=3.1.0,<=3.1.4
python-gnupg>=0.5,<=0.5.3
PyYAML>=5.1.1,<=6.0.2
redis>=4.3,<5.0.9
tablib>=3.5.0,<4.0, !=3.6
url-normalize>=1.4.3,<=1.4.3
uuid6>=2023.5.2,<=2024.7.10
whitenoise>=5.0,<6.8.0
yarl>=1.9.1,<1.18.4
