mirror of
https://github.com/php-win-ext/grpc.git
synced 2026-03-24 09:02:15 +01:00
### Description ## Part 10 of Introducing Ruff * In this PR - the suppression for `RET505` has been removed on the root `ruff.toml` ## Related: * Next: #40186 * Prev: #40184 * b/423755915 Closes #40185 PiperOrigin-RevId: 810694059
218 lines
14 KiB
TOML
218 lines
14 KiB
TOML
# See https://docs.astral.sh/ruff/configuration/
|
|
# For a full list of supported rules, see https://docs.astral.sh/ruff/rules/
|
|
# For a full list of options, see https://docs.astral.sh/ruff/settings/
|
|
|
|
extend = "../../ruff.toml"
|
|
|
|
exclude = [
|
|
"*_pb2.py",
|
|
"*_pb2_grpc.py"
|
|
]
|
|
|
|
[lint]
|
|
ignore = [
|
|
"A001", # Variable {name} is shadowing a Python builtin
|
|
"A002", # Function argument {name} is shadowing a Python builtin
|
|
"ANN001", # Missing type annotation for function argument {name}
|
|
"ANN002", # Missing type annotation for *{name}
|
|
"ANN003", # Missing type annotation for **{name}
|
|
"ANN201", # Missing return type annotation for public function {name}
|
|
"ANN202", # Missing return type annotation for private function {name}
|
|
"ANN204", # Missing return type annotation for special method {name}
|
|
"ANN205", # Missing return type annotation for staticmethod {name}
|
|
"ANN206", # Missing return type annotation for classmethod {name}
|
|
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name}
|
|
"ARG001", # Unused function argument: {name}
|
|
"ARG002", # Unused method argument: {name}
|
|
"ARG004", # Unused static method argument: {name}
|
|
"ARG005", # Unused lambda argument: {name}
|
|
"B007", # Loop control variable {name} not used within loop body
|
|
"B011", # Do not assert False (python -O removes these calls), raise AssertionError()
|
|
"B018", # Found useless expression. Either assign it to a variable or remove it.
|
|
"B024", # {name} is an abstract base class, but it has no abstract methods or properties
|
|
"B027", # {name} is an empty method in an abstract base class, but has no abstract decorator
|
|
"B028", # No explicit stacklevel keyword argument found
|
|
"B904", # Within an except* clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling
|
|
"BLE001", # Do not catch blind exception: {name}
|
|
"C402", # Unnecessary generator (rewrite as a dict comprehension)
|
|
"C405", # Unnecessary {kind} literal (rewrite as a set literal)
|
|
"C408", # Unnecessary {kind}() call (rewrite as a literal)
|
|
"C901", # {name} is too complex ({complexity} > {max_complexity})
|
|
"COM812", # Trailing comma missing
|
|
"D100", # Missing docstring in public module
|
|
"D101", # Missing docstring in public class
|
|
"D102", # Missing docstring in public method
|
|
"D103", # Missing docstring in public function
|
|
"D104", # Missing docstring in public package
|
|
"D105", # Missing docstring in magic method
|
|
"D106", # Missing docstring in public nested class
|
|
"D107", # Missing docstring in __init__
|
|
"D200", # One-line docstring should fit on one line
|
|
"D202", # No blank lines allowed after function docstring (found {num_lines})
|
|
"D203", # Checks for docstrings on class definitions that are not preceded by a blank line.
|
|
"D205", # 1 blank line required between summary line and description
|
|
"D207", # Docstring is under-indented
|
|
"D209", # Multi-line docstring closing quotes should be on a separate line
|
|
"D212", # Multi-line docstring summary should start at the first line
|
|
"D213", # Multi-line docstring summary should start at the second line
|
|
"D400", # First line should end with a period
|
|
"D401", # First line of docstring should be in imperative mood: "{first_line}"
|
|
"D403", # First word of the docstring should be capitalized: {} -> {}
|
|
"D404", # First word of the docstring should not be "This"
|
|
"D410", # Missing blank line after section ("{name}")
|
|
"D411", # Missing blank line before section ("{name}")
|
|
"D413", # Missing blank line after last section ("{name}")
|
|
"D415", # First line should end with a period, question mark, or exclamation point
|
|
"D417", # Missing argument description in the docstring for {definition}: {name}
|
|
"DTZ001", # datetime.datetime() called without a tzinfo argument
|
|
"DTZ005", # datetime.datetime.now() called without a tz argument
|
|
"E402", # Module level import not at top of cell
|
|
"E501", # Line too long ({width} > {limit})
|
|
"E712", # Avoid equality comparisons to True; use {cond}: for truth checks
|
|
"E713", # Test for membership should be not in
|
|
"E722", # Do not use bare except
|
|
"E731", # Do not assign a lambda expression, use a def
|
|
"EM101", # Exception must not use a string literal, assign to variable first
|
|
"EM102", # Exception must not use an f-string literal, assign to variable first
|
|
"EM103", # Exception must not use a .format() string directly, assign to variable first
|
|
"ERA001", # Found commented-out code
|
|
"F401", # {name} imported but unused; consider using importlib.util.find_spec to test for availability
|
|
"F403", # from {name} import * used; unable to detect undefined names
|
|
"F523", # .format call has unused arguments at position(s): {message}
|
|
"F541", # f-string without any placeholders
|
|
"F811", # Redefinition of unused {name} from {row}
|
|
"F821", # Undefined name {name}. {tip}
|
|
"F841", # Local variable {name} is assigned to but never used
|
|
"FBT001", # Boolean-typed positional argument in function definition
|
|
"FBT002", # Boolean default positional argument in function definition
|
|
"FBT003", # Boolean positional value in function call
|
|
"FIX002", # Line contains TODO, consider resolving the issue
|
|
"FIX004", # Line contains HACK, consider resolving the issue
|
|
"FLY002", # Consider {expression} instead of string join
|
|
"FURB188", # Prefer str.removeprefix() over conditionally replacing with slice.
|
|
"G003", # Logging statement uses +
|
|
"I001", # Import block is un-sorted or un-formatted
|
|
"ICN001", # {name} should be imported as {asname}
|
|
"INP001", # File {filename} is part of an implicit namespace package. Add an __init__.py.
|
|
"ISC003", # Explicitly concatenated string should be implicitly concatenated
|
|
"LOG015", # {}() call on root logger
|
|
"N802", # Function name {name} should be lowercase
|
|
"N803", # Argument name {name} should be lowercase
|
|
"N806", # Variable {name} in function should be lowercase
|
|
"N818", # Exception name {name} should be named with an Error suffix
|
|
"PERF102", # When using only the {subset} of a dict use the {subset}() method
|
|
"PERF203", # try-except within a loop incurs performance overhead
|
|
"PERF401", # Use {message_str} to create a transformed list
|
|
"PIE796", # Enum contains duplicate value: {value}
|
|
"PIE808", # Unnecessary start argument in range
|
|
"PLC0206", # Extracting value from dictionary without calling .items()
|
|
"PLC0415", # import should be at the top-level of a file
|
|
"PYI006", # Use < or >= for sys.version_info comparisons
|
|
"PYI024", # Use typing.NamedTuple instead of collections.namedtuple
|
|
"PYI032", # Prefer object to Any for the second parameter to {method_name}
|
|
"PYI045", # __aiter__ methods should return an AsyncIterator, not an AsyncIterable
|
|
"PYI056", # Calling .{name}() on __all__ may not be supported by all type checkers (use += instead)
|
|
"PLE0604", # Invalid object in __all__, must contain only strings
|
|
"PLE0605", # Invalid format for __all__, must be tuple or list
|
|
"PLR0911", # Too many return statements ({returns} > {max_returns})
|
|
"PLR0912", # Too many branches ({branches} > {max_branches})
|
|
"PLR0913", # Too many arguments in function definition ({c_args} > {max_args})
|
|
"PLR0915", # Too many statements ({statements} > {max_statements})
|
|
"PLR1704", # Redefining argument with the local name {name}
|
|
"PLR1711", # Useless return statement at end of function
|
|
"PLR1714", # Consider merging multiple comparisons: {expression}. Use a set if the elements are hashable.
|
|
"PLR2004", # Magic value used in comparison, consider replacing {value} with a constant variable
|
|
"PLR5501", # Use elif instead of else then if, to reduce indentation
|
|
"PLW0120", # else clause on loop without a break statement; remove the else and dedent its contents
|
|
"PLW0603", # Using the global statement to update {name} is discouraged
|
|
"PLW1508", # Invalid type for environment variable default; expected str or None
|
|
"PLW1641", # Object does not implement __hash__ method
|
|
"PLW2901", # Outer {outer_kind} variable {name} overwritten by inner {inner_kind} target
|
|
"PT009", # Use a regular assert instead of unittest-style {assertion}
|
|
"PT015", # Assertion always fails, replace with pytest.fail()
|
|
"PT017", # Found assertion on exception {name} in except block, use pytest.raises() instead
|
|
"PT027", # Use pytest.raises instead of unittest-style {assertion}
|
|
"PT028", # Test function parameter {} has default argument
|
|
"PTH100", # os.path.abspath() should be replaced by Path.resolve()
|
|
"PTH103", # os.makedirs() should be replaced by Path.mkdir(parents=True)
|
|
"PTH107", # os.remove() should be replaced by Path.unlink()
|
|
"PTH110", # os.path.exists() should be replaced by Path.exists()
|
|
"PTH118", # os.{module}.join() should be replaced by Path with / operator
|
|
"PTH120", # os.path.dirname() should be replaced by Path.parent
|
|
"PTH123", # open() should be replaced by Path.open()
|
|
"Q000", # Single quotes found but double quotes preferred
|
|
"Q004", # Unnecessary escape on inner quote character
|
|
"RET501", # Do not explicitly return None in function if it is the only possible return value
|
|
"RET503", # Missing explicit return at the end of function able to return non-None value
|
|
"RET504", # Unnecessary assignment to {name} before return statement
|
|
"RET505", # Unnecessary {branch} after return statement
|
|
"RET506", # Unnecessary {branch} after raise statement
|
|
"RET507", # Unnecessary {branch} after continue statement
|
|
"RSE102", # Unnecessary parentheses on raised exception
|
|
"RUF002", # Docstring contains ambiguous {}. Did you mean {}?
|
|
"RUF003", # Comment contains ambiguous {}. Did you mean {}?
|
|
"RUF005", # Consider {expression} instead of concatenation
|
|
"RUF013", # PEP 484 prohibits implicit Optional
|
|
"RUF022", # __all__ is not sorted
|
|
"RUF023", # {}.__slots__ is not sorted
|
|
"RUF046", # Value being cast to int is already an integer
|
|
"S101", # Use of assert detected
|
|
"S104", # Possible binding to all interfaces
|
|
"S105", # Possible hardcoded password assigned to: "{}"
|
|
"S110", # try-except-pass detected, consider logging the exception
|
|
"S301", # pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue
|
|
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
|
|
"S603", # subprocess call: check for execution of untrusted input
|
|
"S324", # Probable use of insecure hash functions in {library}: {string}
|
|
"SIM102", # Use a single if statement instead of nested if statements
|
|
"SIM103", # Return the condition {condition} directly
|
|
"SIM105", # Use contextlib.suppress({exception}) instead of try-except-pass
|
|
"SIM108", # Use ternary operator {contents} instead of if-else-block
|
|
"SIM110", # Use {replacement} instead of for loop
|
|
"SIM113", # Use enumerate() for index variable {index} in for loop
|
|
"SIM114", # Combine if branches using logical or operator
|
|
"SIM115", # Use a context manager for opening files
|
|
"SIM117", # Use a single with statement with multiple contexts instead of nested with statements
|
|
"SIM118", # Use key {operator} dict instead of key {operator} dict.keys()
|
|
"SIM300", # Yoda condition detected
|
|
"SIM910", # Use {expected} instead of {actual}
|
|
"SLF001", # Private member accessed: {access}
|
|
"SLOT002", # Subclasses of {namedtuple_kind} should define __slots__
|
|
"T201", # print found
|
|
"TC001", # Move application import {} into a type-checking block
|
|
"TC003", # Move standard library import {} into a type-checking block
|
|
"TD002", # Missing author in TODO; try: # TODO(<author_name>): ... or # TODO @<author_name>: ...
|
|
"TD003", # Missing issue link for this TODO
|
|
"TD004", # Missing colon in TODO
|
|
"TD005", # Missing issue description after TODO
|
|
"TRY002", # Create your own exception
|
|
"TRY003", # Avoid specifying long messages outside the exception class
|
|
"TRY004", # Prefer TypeError exception for invalid type
|
|
"TRY203", # Remove exception handler; error is immediately re-raised
|
|
"TRY300", # Consider moving this statement to an else block
|
|
"TRY301", # Abstract raise to an inner function
|
|
"TRY400", # Use logging.exception instead of logging.error
|
|
"TRY401", # Redundant exception object included in logging.exception call
|
|
"UP004", # Class {name} inherits from object
|
|
"UP006", # Use {to} instead of {from} for type annotation
|
|
"UP007", # Use X | Y for type annotations
|
|
"UP008", # Use super() instead of super(__class__, self)
|
|
"UP009", # UTF-8 encoding declaration is unnecessary
|
|
"UP010", # Unnecessary __future__ import {import} for target Python version
|
|
"UP015", # Unnecessary mode argument
|
|
"UP018", # Unnecessary {literal_type} call (rewrite as a literal)
|
|
"UP024", # Replace aliased errors with OSError
|
|
"UP028", # Replace yield over for loop with yield from
|
|
"UP030", # Use implicit references for positional format fields
|
|
"UP031", # Use format specifiers instead of percent format
|
|
"UP032", # Use f-string instead of format call
|
|
"UP035", # Import from {target} instead: {names}
|
|
"UP036", # Version block is outdated for minimum Python version
|
|
"UP037", # Remove quotes from type annotation
|
|
"UP045", # Use X | None for type annotations
|
|
"YTT201", # sys.version_info[0] == 3 referenced (python4), use >=
|
|
"YTT203", # sys.version_info[1] compared to integer (python4), compare sys.version_info to tuple
|
|
]
|
|
|
|
select = ["ALL"]
|