[tool.poetry] name = "authentik" version = "2025.2.1" description = "" authors = ["authentik Team "] [tool.black] line-length = 100 target-version = ['py312'] exclude = 'node_modules' [tool.ruff] line-length = 100 target-version = "py312" exclude = ["**/migrations/**", "**/node_modules/**"] [tool.ruff.lint] select = [ # pycodestyle "E", # Pyflakes "F", # isort "I", # pyupgrade "UP", # flake8-bugbear "B", # django "DJ", # pylint "PL", ] ignore = [ "DJ001", # Avoid using `null=True` on string-based fields, ] [tool.ruff.lint.pylint] max-args = 7 max-branches = 18 max-returns = 10 [tool.coverage.run] source = ["authentik"] relative_files = true omit = [ "*/asgi.py", "manage.py", "*/migrations/*", "*/management/commands/*", "*/apps.py", "website/", ] [tool.coverage.report] sort = "Cover" skip_covered = true precision = 2 exclude_lines = [ "pragma: no cover", # Don't complain about missing debug-only code: "def __unicode__", "def __str__", "def __repr__", "if self.debug", "if TYPE_CHECKING", # Don't complain if tests don't hit defensive assertion code: "raise AssertionError", "raise NotImplementedError", # Don't complain if non-runnable code isn't run: "if 0:", "if __name__ == .__main__.:", ] show_missing = true [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "authentik.root.settings" python_files = ["tests.py", "test_*.py", "*_tests.py"] junit_family = "xunit2" addopts = "-p no:celery -p authentik.root.test_plugin --junitxml=unittest.xml -vv --full-trace --doctest-modules --import-mode=importlib" filterwarnings = [ "ignore:defusedxml.lxml is no longer supported and will be removed in a future release.:DeprecationWarning", "ignore:SelectableGroups dict interface is deprecated. Use select.:DeprecationWarning", ] [tool.poetry.dependencies] argon2-cffi = "*" celery = "*" channels = "*" channels-redis = "*" cryptography = "*" dacite = "*" deepmerge = "*" defusedxml = "*" django = "*" django-countries = "*" django-cte = "*" django-filter = "*" django-guardian = "*" django-model-utils = "*" django-pglock = "*" django-prometheus = "*" django-redis = "*" django-storages = { extras = ["s3"], version = "*" } # See https://github.com/django-tenants/django-tenants/pull/997 django-tenants = { git = "https://github.com/rissson/django-tenants.git", branch = "authentik-fixes" } djangorestframework = "3.14.0" djangorestframework-guardian = "*" docker = "*" drf-orjson-renderer = "*" drf-spectacular = "*" dumb-init = "*" duo-client = "*" fido2 = "*" flower = "*" geoip2 = "*" geopy = "*" google-api-python-client = "*" gunicorn = "*" gssapi = "*" jsonpatch = "*" jwcrypto = "*" kubernetes = "*" ldap3 = "*" lxml = "*" msgraph-sdk = "*" opencontainers = { git = "https://github.com/vsoch/oci-python", rev = "20d69d9cc50a0fef31605b46f06da0c94f1ec3cf", extras = ["reggie"] } packaging = "*" paramiko = "*" psycopg = { extras = ["c"], version = "*" } pydantic = "*" pydantic-scim = "*" pyjwt = "*" pyrad = "*" python = "~3.12" python-kadmin-rs = "0.5.3" pyyaml = "*" requests-oauthlib = "*" scim2-filter-parser = "*" sentry-sdk = "*" service_identity = "*" setproctitle = "*" structlog = "*" swagger-spec-validator = "*" tenant-schemas-celery = "*" twilio = "*" ua-parser = "*" unidecode = "*" # Pinned because of botocore https://github.com/orgs/python-poetry/discussions/7937 urllib3 = { extras = ["secure"], version = "<3" } uvicorn = { extras = ["standard"], version = "*" } watchdog = "*" webauthn = "*" wsproto = "*" xmlsec = "*" zxcvbn = "*" [tool.poetry.group.dev.dependencies] aws-cdk-lib = "*" bandit = "*" black = "*" bump2version = "*" channels = { version = "*", extras = ["daphne"] } codespell = "*" colorama = "*" constructs = "*" coverage = { extras = ["toml"], version = "*" } debugpy = "*" drf-jsonschema-serializer = "*" freezegun = "*" importlib-metadata = "*" k5test = "*" pdoc = "*" pytest = "*" pytest-django = "*" pytest-github-actions-annotate-failures = "*" pytest-randomly = "*" pytest-timeout = "*" requests-mock = "*" ruff = "*" selenium = "*" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] ak = "lifecycle.ak:main"