https://github.com/astropy/astropy
Tip revision: 0a06e9aef297dbc3d9334afad57b79acaa540fd3 authored by P. L. Lim on 05 April 2024, 20:35:05 UTC
Merge pull request #16277 from eerovaher/coord-matching-tests
Merge pull request #16277 from eerovaher/coord-matching-tests
Tip revision: 0a06e9a
.ruff.toml
extend = "pyproject.toml"
lint.ignore = [
# NOTE: to find a good code to fix, run:
# ruff --select="ALL" --statistics astropy/<subpackage>
# flake8-annotations (ANN) : static typing
"ANN001", # Function argument without type annotation
"ANN003", # `**kwargs` without type annotation
"ANN202", # Private function without return type annotation
"ANN401", # Use of `Any` type
# flake8-unused-arguments (ARG)
"ARG001", # unused-function-argument
"ARG002", # unused-method-argument
"ARG003", # unused-class-method-argument
"ARG004", # unused-static-method-argument
"ARG005", # unused-lambda-argument
# flake8-bugbear (B)
"B006", # MutableArgumentDefault
"B007", # UnusedLoopControlVariable
"B023", # FunctionUsesLoopVariable
"B028", # No-explicit-stacklevel
"B904", # RaiseWithoutFromInsideExcept
"B905", # ZipWithoutExplicitStrict # requires 3.10+
# flake8-blind-except (BLE)
"BLE001", # blind-except
# mccabe (C90) : code complexity
# TODO: configure maximum allowed complexity.
"C901", # McCabeComplexity
# pydocstyle (D)
# Missing Docstrings
"D100", # undocumented-public-module
"D101", # undocumented-public-class
"D103", # undocumented-public-function
"D104", # undocumented-public-package
"D205", # blank-line-after-summary
# Quotes Issues
"D300", # triple-single-quotes
"D301", # escape-sequence-in-docstring
# Docstring Content Issues
"D403", # first-line-capitalized
"D404", # docstring-starts-with-this
"D401", # non-imperative-mood.
"D414", # empty-docstring-section
"D419", # docstring is empty
# flake8-datetimez (DTZ)
"DTZ001", # call-datetime-without-tzinfo
"DTZ005", # call-datetime-now-without-tzinfo
# pycodestyle (E, W)
"E501", # line-too-long
"E721", # type-comparison
"E731", # lambda-assignment
# flake8-errmsg (EM) : nicer error tracebacks
"EM101", # raw-string-in-exception
"EM102", # f-string-in-exception
"EM103", # dot-format-in-exception
# eradicate (ERA)
# NOTE: be careful that developer notes are kept.
"ERA001", # commented-out-code
# flake8-executable (EXE)
"EXE002", # shebang-missing-executable-file
# Pyflakes (F)
"F841", # unused-variable
# flake8-boolean-trap (FBT) : boolean flags should be kwargs, not args
# NOTE: a good thing to fix, but changes API.
"FBT001", # boolean-positional-arg-in-function-definition
"FBT002", # boolean-default-value-in-function-definition
"FBT003", # boolean-positional-value-in-function-call
# flake8-fixme (FIX)
"FIX001", # Line contains FIXME. this should be fixed or at least FIXME replaced with TODO
"FIX004", # Line contains HACK. replace HACK with NOTE.
# pep8-naming (N)
# NOTE: some of these can/should be fixed, but this changes the API.
"N801", # invalid-class-name
"N802", # invalid-function-name
"N803", # invalid-argument-name
"N804", # invalid-first-argument-name-for-class-method
"N805", # invalid-first-argument-name-for-method
"N807", # dunder-function-name
"N813", # camelcase-imported-as-lowercase
"N815", # mixed-case-variable-in-class-scope
"N816", # mixed-case-variable-in-global-scope
"N818", # error-suffix-on-exception-name
# NumPy-specific rules (NPY)
"NPY002", # Replace legacy `np.random.rand` call with `np.random.Generator` (2023-05-03)
# Perflint (PERF)
"PERF203", # `try`-`except` within a loop incurs performance overhead
"PERF401", # Use a list comprehension to create a transformed list
# Pylint (PLC, PLE, PLR, PLW)
"PLE0101", # return-in-init
"PLR0124", # Name compared with itself
"PLR0402", # ConsiderUsingFromImport
"PLR0912", # too-many-branches
"PLR0913", # too-many-args
"PLR0915", # too-many-statements
"PLR1714", # Consider merging multiple comparisons
"PLR2004", # MagicValueComparison
"PLR5501", # collapsible-else-if
"PLW0603", # global-statement
"PLW2901", # redefined-loop-name
# flake8-pytest-style (PT)
"PT001", # pytest-fixture-incorrect-parentheses-style
"PT003", # pytest-extraneous-scope-function
"PT004", # pytest-missing-fixture-name-underscore
"PT006", # pytest-parametrize-names-wrong-type
"PT007", # pytest-parametrize-values-wrong-type
"PT011", # pytest-raises-too-broad
"PT012", # pytest-raises-with-multiple-statements
"PT017", # pytest-assert-in-exceptinstead
"PT018", # pytest-composite-assertion
"PT022", # pytest-useless-yield-fixture
"PT023", # pytest-incorrect-mark-parentheses-style
# flake8-use-pathlib (PTH)
"PTH100", # os-path-abspath
"PTH101", # os-chmod
"PTH102", # os-mkdir
"PTH103", # os-makedirs
"PTH104", # os-rename
"PTH107", # os-remove
"PTH108", # os-unlink
"PTH109", # os-getcwd
"PTH110", # os-path-exists
"PTH111", # os-path-expanduser
"PTH112", # os-path-isdir
"PTH113", # os-path-isfile
"PTH118", # os-path-join
"PTH119", # os-path-basename
"PTH120", # os-path-dirname
"PTH122", # os-path-splitext
"PTH123", # builtin-open
"PTH202", # `os.path.getsize` should be replaced by `Path.stat().st_size`
"PTH207", # Replace `glob` with `Path.glob` or `Path.rglob`
# flake8-return (RET)
"RET501", # unnecessary-return-none
"RET502", # implicit-return-value
"RET503", # implicit-return
"RET504", # unnecessary-assign
"RET507", # superfluous-else-continue
# flake8-raise (RSE)
"RSE102", # unnecessary-paren-on-raise-exception
# Ruff-specific rules (RUF)
"RUF001", # ambiguous-unicode-character-string
"RUF002", # ambiguous-unicode-character-docstring
"RUF010", # use conversion in f-string
"RUF012", # Mutable class attributes should be annotated with `typing.ClassVar`
# flake8-bandit (S)
"S101", # Use of `assert` detected
"S105", # hardcoded-password-string
"S110", # try-except-pass
"S112", # try-except-continue
"S301", # suspicious-pickle-usage
"S307", # Use of possibly insecure function; consider using `ast.literal_eval`
"S311", # suspicious-non-cryptographic-randomness
"S324", # hashlib-insecure-hash-function
"S506", # UnsafeYAMLLoad
"S310", # Suspicious-url-open-usage
"S603", # `subprocess` call: check for execution of untrusted input
"S607", # Starting a process with a partial executable path
# flake8-simplify (SIM)
"SIM102", # NestedIfStatements
"SIM105", # UseContextlibSuppress
"SIM108", # UseTernaryOperator
"SIM114", # if-with-same-arms
"SIM115", # OpenFileWithContextHandler
"SIM117", # MultipleWithStatements
"SIM118", # KeyInDict
"SIM201", # NegateEqualOp
"SIM300", # yoda condition
# flake8-print (T20)
"T201", # PrintUsed
# flake8-todos (TD)
"TD001", # Invalid TODO tag
"TD003", # Missing issue link on the line following this TODO
"TD004", # Missing colon in TODO
"TD007", # Missing space after colon in TODO
# tryceratops (TRY)
"TRY002", # raise-vanilla-class
"TRY003", # raise-vanilla-args
"TRY004", # prefer-type-error
"TRY201", # verbose-raise
"TRY301", # raise-within-try
# pyupgrade (UP)
"UP038", # isinstance using union separators. The code is slower as of Python 3.10-3.12
# flake8-quotes (Q)
"Q000", # use double quotes
]
lint.unfixable = [
"E711" # NoneComparison. Hard to fix b/c numpy has it's own None.
]
[lint.extend-per-file-ignores]
"__init__.py" = ["E402", "F401", "F403"]
"test_*.py" = [
"RUF015", # Prefer next({iterable}) over single element slice
]
# TODO: fix these, on a per-subpackage basis.
# When a general exclusion is being fixed, but it affects many subpackages, it
# is better to fix for subpackages individually. The general exclusion should be
# copied to these subpackage sections and fixed there.
"astropy/config/*" = [
"PTH114", # os-path-islink
"PTH206", # Replace `.split(os.sep)` with `Path.parts`
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/constants/*" = [
"N817", # camelcase-imported-as-acronym
"RET505", # superfluous-else-return
]
"astropy/convolution/*" = [
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/coordinates/*" = [
"DTZ007", # call-datetime-strptime-without-zone
"RET505", # superfluous-else-return
]
"astropy/cosmology/*" = [
"C408", # unnecessary-collection-call
"PT019", # pytest-fixture-param-without-value
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/io/*" = [
"G001", # logging-string-format
"G004", # logging-f-string
"PLR0911", # too-many-return-statements
"PTH116", # os-stat
"PTH117", # os-path-isabs
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"SLOT000", # Subclasses of `str` should define `__slots__`
"TD005", # Missing issue description after `TODO`
"TRY400", # error-instead-of-exception
"TRY300", # Consider `else` block
]
"astropy/logger.py" = ["C408", "RET505"]
"astropy/modeling/*" = [
"ANN201", # Public function without return type annotation
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"SLOT001", # Subclasses of `tuple` should define `__slots__`
"TRY300", # Consider `else` block
]
"astropy/nddata/*" = [
"C408",
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/samp/*" = [
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/stats/*" = [
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/table/*" = [
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"S605", # Starting a process with a shell, possible injection detected
"TRY300", # Consider `else` block
]
"astropy/tests/*" = ["C408", "RET505"]
"astropy/time/*" = [
"FIX003", # Line contains XXX. replace XXX with TODO
"PIE794", # duplicate-class-field-definition
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/timeseries/*" = [
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/units/*" = [
"F821", # undefined-name
"N812", # lowercase-imported-as-non-lowercase
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"TRY300", # Consider `else` block
]
"astropy/uncertainty/*" = [
"C408",
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/utils/*" = [
"N811", # constant-imported-as-non-constant
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"S321", # Suspicious-ftp-lib-usage
"TRY300", # Consider `else` block
]
"astropy/visualization/*" = [
"B015",
"PLR0911", # too-many-return-statements
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
]
"astropy/wcs/*" = [
"C408", # unnecessary-collection-call
"F821", # undefined-name
"S608", # Posslibe SQL injection
"RET505", # superfluous-else-return
"RET506", # superfluous-else-raise
"SIM202", # NegateNotEqualOp
"TRY300", # Consider `else` block
]
"docs/*" = []
"examples/coordinates/*" = []