[tool.pyright] ignore = [ "**/migrations/**", "**/node_modules/**" ] reportMissingTypeStubs = false strictParameterNoneValue = true strictDictionaryInference = true strictListInference = true reportOptionalMemberAccess = false # Sadly pyright still has issues with enums, and they fall under general type issues # so we have to disable those for now reportGeneralTypeIssues = false verboseOutput = false pythonVersion = "3.11" pythonPlatform = "All" [tool.black] line-length = 100 target-version = ['py311'] exclude = 'node_modules' [tool.isort] multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true line_length = 100 src_paths = ["authentik", "tests", "lifecycle"] force_to_top = "*" [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.pylint.basic] good-names = [ "pk", "id", "i", "j", "k", "_", ] [tool.pylint.master] disable = [ "arguments-differ", "locally-disabled", "too-many-ancestors", "too-few-public-methods", "import-outside-toplevel", "signature-differs", "similarities", "cyclic-import", "protected-access", "unused-argument", "raise-missing-from", # To preserve django's translation function we need to use %-formatting "consider-using-f-string", ] load-plugins = ["pylint_django", "pylint.extensions.bad_builtin"] django-settings-module = "authentik.root.settings" extension-pkg-whitelist = ["lxml", "xmlsec"] # Allow constants to be shorter than normal (and lowercase, for settings.py) const-rgx = "[a-zA-Z0-9_]{1,40}$" ignored-modules = ["django-otp", "binascii", "socket", "zlib"] generated-members = ["xmlsec.constants.*", "xmlsec.tree.*", "xmlsec.template.*"] ignore = "migrations" max-attributes = 12 max-branches = 20 [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 --junitxml=unittest.xml" 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] name = "authentik" version = "2023.2.0" description = "" authors = ["authentik Team "] [tool.poetry.dependencies] celery = "*" channels = {version = "*", extras = ["daphne"]} channels-redis = "*" codespell = "*" colorama = "*" dacite = "*" deepmerge = "*" defusedxml = "*" django = "*" django-filter = "*" django-guardian = "*" django-model-utils = "*" django-otp = "*" django-prometheus = "*" django-redis = "*" djangorestframework = "*" djangorestframework-guardian = "*" docker = "*" drf-spectacular = "*" dumb-init = "*" duo-client = "*" facebook-sdk = "*" flower = "*" geoip2 = "*" gunicorn = "*" kubernetes = "*" ldap3 = "*" lxml = "*" opencontainers = {extras = ["reggie"],version = "*"} packaging = "*" paramiko = "*" psycopg2-binary = "*" pycryptodome = "*" pyjwt = "*" python = "^3.11" pyyaml = "*" requests-oauthlib = "*" sentry-sdk = "*" service_identity = "*" structlog = "*" swagger-spec-validator = "*" twilio = "*" twisted = "*" ua-parser = "*" urllib3 = {extras = ["secure"],version = "*"} uvicorn = {extras = ["standard"],version = "*"} webauthn = "*" wsproto = "*" xmlsec = "*" zxcvbn = "*" watchdog = "*" [tool.poetry.dev-dependencies] bandit = "*" black = "*" bump2version = "*" colorama = "*" coverage = {extras = ["toml"],version = "*"} importlib-metadata = "*" pylint = "*" pylint-django = "*" pytest = "*" pytest-django = "*" pytest-randomly = "*" requests-mock = "*" selenium = "*" django-silk = "*" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] ak = "lifecycle.ak:main"