[tool.isort]
profile = "black"
line_length=120
float_to_top=true
py_version=311
extend_skip_glob = "**/migrations/**"

[tool.black]
line-length = 120
target-version = ["py311"]
force-exclude = "migrations"

[tool.mypy]
mypy_path = "$MYPY_CONFIG_FILE_DIR/type_stubs"
implicit_reexport = true
plugins = [
    "mypy_django_plugin.main",
    "mypy_drf_plugin.main",
]
exclude = [
    # TOML's double-quoted strings require escaping backslashes
    "tests/test_.*\\.py$",    # test files
    "migrations/\\d*.*\\.py",  # migration files
]
disable_error_code = [
    "abstract",
    "annotation-unchecked",
    "arg-type",
    "assignment",
    "attr-defined",
    "call-arg",
    "call-overload",
    "has-type",
    "index",
    "misc",
    "name-defined",
    "operator",
    "return-value",
    "typeddict-item",
    "union-attr",
]

# mypy per-module options
[[tool.mypy.overrides]]
module = [
    # the following setting should eventually be removed, one module at a time.
    # It's only being added to temporarily surpress the:
    # "module is installed, but missing library stubs or py.typed marker" errors
    # we can slowly either start to add library stubs ourselves, or try and upgrade these libraries to see if
    # a newer version includes type stubs
    "anymail.*",
    "celery.utils.debug",
    "debug_toolbar.*",
    "django_deprecate_fields.*",
    "django_migration_linter",
    "django_sns_view.*",
    "factory.*",
    "fcm_django.*",
    "firebase_admin.*",
    "google.auth.exceptions.*",
    "googleapiclient.discovery.*",
    "googleapiclient.errors.*",
    "google.oauth2.credentials.*",
    "httpretty.*",
    "humanize.*",
    "ipware.*",
    "markdown2.*",
    "mirage.*",
    "ordered_model.*",
    "phonenumbers.*",
    "polymorphic.*",
    "pyroscope.*",
    "ratelimit.*",
    "regex.*",
    "recurring_ical_events.*",
    "rest_polymorphic.*",
    "slackclient.*",
    "slackviewer.*",
    "social_core.*",
    "social_django.*",
    "twilio.*",
    "uwsgidecorators.*",
    "whitenoise.*",
    "uwsgi.*",
]
ignore_missing_imports = true

[tool.django-stubs]
django_settings_module = "settings.dev"
