1
0
mirror of synced 2025-12-19 18:14:56 -05:00
Files
airbyte/ruff.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