151 lines
4.8 KiB
TOML
151 lines
4.8 KiB
TOML
target-version = "py310"
|
|
line-length = 140
|
|
extend-exclude = ["docs", "test", "tests"]
|
|
|
|
[lint.pylint]
|
|
max-args = 8 # Relaxed from default of 5
|
|
max-branches = 15 # Relaxed from default of 12
|
|
|
|
[lint]
|
|
select = [
|
|
"I", # isort replacement
|
|
]
|
|
|
|
# TODO: Re-enable these once we have time to address them
|
|
# select = [
|
|
# # For rules reference, see https://docs.astral.sh/ruff/rules/
|
|
# "A", # flake8-builtins
|
|
# "ANN", # flake8-annotations
|
|
# "ARG", # flake8-unused-arguments
|
|
# "ASYNC", # flake8-async
|
|
# "B", # flake8-bugbear
|
|
# "FBT", # flake8-boolean-trap
|
|
# "BLE", # Blind except
|
|
# "C4", # flake8-comprehensions
|
|
# "C90", # mccabe (complexity)
|
|
# "COM", # flake8-commas
|
|
# # "CPY", # missing copyright notice # Requires 'preview=true'
|
|
# # "D", # pydocstyle # TODO: Re-enable when adding docstrings
|
|
# "DTZ", # flake8-datetimez
|
|
# "E", # pycodestyle (errors)
|
|
# "ERA", # flake8-eradicate (commented out code)
|
|
# "EXE", # flake8-executable
|
|
# "F", # Pyflakes
|
|
# "FA", # flake8-future-annotations
|
|
# "FIX", # flake8-fixme
|
|
# "FLY", # flynt
|
|
# "FURB", # Refurb
|
|
# "I", # isort
|
|
# "ICN", # flake8-import-conventions
|
|
# "INP", # flake8-no-pep420
|
|
# "INT", # flake8-gettext
|
|
# "ISC", # flake8-implicit-str-concat
|
|
# "ICN", # flake8-import-conventions
|
|
# "LOG", # flake8-logging
|
|
# "N", # pep8-naming
|
|
# "PD", # pandas-vet
|
|
# "PERF", # Perflint
|
|
# "PIE", # flake8-pie
|
|
# "PGH", # pygrep-hooks
|
|
# "PL", # Pylint
|
|
# "PT", # flake8-pytest-style
|
|
# "PTH", # flake8-use-pathlib
|
|
# "PYI", # flake8-pyi
|
|
# "Q", # flake8-quotes
|
|
# "RET", # flake8-return
|
|
# "RSE", # flake8-raise
|
|
# "RUF", # Ruff-specific rules
|
|
# "SIM", # flake8-simplify
|
|
# "SLF", # flake8-self
|
|
# "SLOT", # flake8-slots
|
|
# "T10", # debugger calls
|
|
# # "T20", # flake8-print # TODO: Re-enable once we have logging
|
|
# "TCH", # flake8-type-checking
|
|
# "TD", # flake8-todos
|
|
# "TID", # flake8-tidy-imports
|
|
# "TRY", # tryceratops
|
|
# "TRY002", # Disallow raising vanilla Exception. Create or use a custom exception instead.
|
|
# "TRY003", # Disallow vanilla string passing. Prefer kwargs to the exception constructur.
|
|
# "UP", # pyupgrade
|
|
# "W", # pycodestyle (warnings)
|
|
# "YTT", # flake8-2020
|
|
# ]
|
|
|
|
ignore = [
|
|
# For rules reference, see https://docs.astral.sh/ruff/rules/
|
|
|
|
# These we don't agree with or don't want to prioritize to enforce:
|
|
"ANN003", # kwargs missing type annotations
|
|
"COM812", # Because it conflicts with ruff auto-format
|
|
"EM", # flake8-errmsgs (may reconsider later)
|
|
"DJ", # Django linting
|
|
"G", # flake8-logging-format
|
|
"ISC001", # Conflicts with ruff auto-format
|
|
"NPY", # NumPy-specific rules
|
|
"PIE790", # Allow unnecssary 'pass' (sometimes useful for readability)
|
|
"PERF203", # exception handling in loop
|
|
"S", # flake8-bandit (noisy, security related)
|
|
"SIM910", # Allow "None" as second argument to Dict.get(). "Explicit is better than implicit."
|
|
"TD002", # Require author for TODOs
|
|
"ASYNC1", # flake8-trio (opinionated, noisy)
|
|
"INP001", # Dir 'examples' is part of an implicit namespace package. Add an __init__.py.
|
|
|
|
# TODO: Consider re-enabling these before release:
|
|
"A003", # Class attribute 'type' is shadowing a Python builtin
|
|
"BLE001", # Do not catch blind exception: Exception
|
|
"ERA001", # Remove commented-out code
|
|
"FIX002", # Allow "TODO:" until release (then switch to requiring links via TDO003)
|
|
"PLW0603", # Using the global statement to update _cache is discouraged
|
|
"TD003", # Require links for TODOs # TODO: Re-enable when we disable FIX002
|
|
|
|
"UP007", # Allow legacy `Union[a, b]` and `Optional[a]` for Pydantic, until we drop Python 3.9 (Pydantic doesn't like it)
|
|
]
|
|
fixable = ["ALL"]
|
|
unfixable = [
|
|
"ERA001", # Commented-out code (avoid silent loss of code)
|
|
"T201", # print() calls (avoid silent loss of code / log messages)
|
|
]
|
|
|
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
|
|
[lint.isort]
|
|
force-sort-within-sections = false
|
|
lines-after-imports = 2
|
|
known-first-party = [
|
|
"airbyte",
|
|
"airbyte_cdk",
|
|
"airbyte_protocol",
|
|
"airbyte_api_client",
|
|
"connector_ops",
|
|
"pipelines",
|
|
]
|
|
known-third-party = []
|
|
section-order = [
|
|
"future",
|
|
"standard-library",
|
|
"third-party",
|
|
"first-party",
|
|
"local-folder",
|
|
]
|
|
|
|
[lint.mccabe]
|
|
max-complexity = 24
|
|
|
|
[lint.pycodestyle]
|
|
ignore-overlong-task-comments = true
|
|
|
|
[lint.pydocstyle]
|
|
convention = "google"
|
|
|
|
[lint.flake8-annotations]
|
|
allow-star-arg-any = false
|
|
ignore-fully-untyped = false
|
|
|
|
[format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
skip-magic-trailing-comma = false
|
|
line-ending = "auto"
|
|
preview = false
|
|
docstring-code-format = true
|