# After editing this file, you MUST afterward run # /tools/update-locked-requirements to update requirements/dev.txt # and requirements/prod.txt. # See requirements/README.md for more detail. -r pip.in # Django itself Django[argon2]==5.0.* asgiref<3.8.0 # Breaks with https://github.com/django/asgiref/pull/367 # needed for NotRequired, ParamSpec typing-extensions # Needed for rendering backend templates Jinja2 # Needed for Markdown processing Markdown Pygments jsx-lexer uri-template regex # Needed for manage.py ipython # Needed for image processing Pillow # Needed for building complex DB queries SQLAlchemy==1.4.* greenlet # Needed for S3 file uploads and other AWS tools boto3 # The runtime-relevant part of boto3-stubs (see mypy.in) mypy-boto3-s3 mypy-boto3-ses mypy-boto3-sns mypy-boto3-sqs # Needed for integrations defusedxml # Needed for LDAP support python-ldap django-auth-ldap # Django extension providing bitfield support django-bitfield # Needed for Android push notifications # grpcio-status needs to be pinned to 1.62.* because higher # versions demand protobuf>=5.26.1, which conflicts with various # other big dependencies of firebase-admin. pip fails to # find this resolution by itself. grpcio-status==1.62.* firebase-admin # Needed for the email mirror html2text # Forked to avoid pulling in scipy: https://github.com/mailgun/talon/pull/200 # and chardet, cchardet: https://github.com/mailgun/talon/pull/239 https://github.com/zulip/talon/archive/e3879d82331aa8b5a87e9d41b3ba3693caa24cd2.zip#egg=talon-core==1.6.0+git&subdirectory=talon-core # Needed for inlining the CSS in emails css-inline # Needed for JWT-based auth PyJWT # Needed to access RabbitMQ pika # Needed to access our database psycopg2 # Needed for memcached usage python-binary-memcached # Needed for compression support in memcached via python-binary-memcached django-bmemcached # Needed for zerver/tests/test_timestamp.py python-dateutil # Needed for Redis redis # Tornado used for server->client push system tornado # Fast JSON parser orjson # Needed for iOS push notifications aioapns python-twitter # To parse po files polib # Needed for cloning virtual environments virtualenv-clone # Needed for link preview beautifulsoup4 pyoembed python-magic # The Zulip API bindings, from its own repository. We integrate with # these tightly, including fetching content not included in the official # PyPI release tarballs, such as logos, assets and documentation files # that we render on our /integrations/ page. Therefore, we need to pin # the version from Git rather than a PyPI release. Keeping everything in # one repository simplifies the process of implementing and documenting # new bots for new contributors. https://github.com/zulip/python-zulip-api/archive/0.9.0.zip#egg=zulip==0.9.0+git&subdirectory=zulip https://github.com/zulip/python-zulip-api/archive/0.9.0.zip#egg=zulip_bots==0.9.0+git&subdirectory=zulip_bots # Used for Hesiod lookups, etc. py3dns # Install Python Social Auth social-auth-app-django social-auth-core[azuread,openidconnect,saml] python3-saml --no-binary=xmlsec # For encrypting a login token to the desktop app cryptography # Needed for messages' rendered content parsing in push notifications. lxml --no-binary=lxml # Needed for 2-factor authentication django-two-factor-auth[call,phonenumberslite,sms] # Needed for processing payments (in corporate) stripe # For checking whether email of the user is from a disposable email provider. disposable-email-domains # Needed for parsing YAML with JSON references from the REST API spec files jsonref # Needed for string matching in AlertWordProcessor pyahocorasick # Needed for function decorators that don't break introspection. # Used for rate limiting authentication. decorator # For server-side enforcement of password strength zxcvbn # Needed for sending HTTP requests requests[security] requests-oauthlib # For OpenAPI schema validation. openapi-core # For reporting errors to sentry.io sentry-sdk # For detecting URLs to link tlds # Unicode Collation Algorithm for sorting multilingual strings pyuca # Handle connection retries with exponential backoff backoff # Needed for reading bson files in rocketchat import tool pymongo # Non-backtracking regular expressions google-re2 # For querying recursive group membership django-cte # SCIM integration django-scim2 # Circuit-breaking for outgoing services circuitbreaker # Runtime monkeypatching of django-stubs generics django_stubs_ext # Structured data representation with parsing. pydantic annotated_types