[tool:pytest]
testpaths = tests
filterwarnings =
    error
    ignore::DeprecationWarning:distutils

[flake8]
max-line-length = 120
max-complexity = 14
inline-quotes = single
multiline-quotes = double
ignore = E203, W503
per-file-ignores =
    docs/examples/schema_unenforced_constraints.py: F811
    docs/examples/validation_decorator_async.py: E402
    docs/examples/types_constrained.py: F722

[coverage:run]
source = pydantic
branch = True

[coverage:report]
precision = 2
exclude_lines =
    pragma: no cover
    raise NotImplementedError
    raise NotImplemented
    if TYPE_CHECKING:
    @overload

[isort]
line_length=120
known_first_party=pydantic
multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
combine_as_imports=True

[mypy]
show_error_codes = True
follow_imports = silent
strict_optional = True
warn_redundant_casts = True
warn_unused_ignores = True
disallow_any_generics = True
check_untyped_defs = True
no_implicit_reexport = True
warn_unused_configs = True
disallow_subclassing_any = True
disallow_incomplete_defs = True
disallow_untyped_decorators = True
disallow_untyped_calls = True

# for strict mypy: (this is the tricky one :-))
disallow_untyped_defs = True

# remaining arguments from `mypy --strict` which cause errors
;no_implicit_optional = True
;warn_return_any = True

[mypy-email_validator]
ignore_missing_imports = true

[mypy-dotenv]
ignore_missing_imports = true
