As discussed in the F2 matrix channel, not being able to put the error message inside of the thrown exception just results in one assigning an additional variable to immediatly throw it. The original reason for these rules to exist are that the message isn't printed twice, though the line above the thrown exception is printed anyways in the stacktrace, so we still get the error message twice but now with additional work. Hence this commit removes the said rules Change-Id: I0b37c0b0861334703a5772c36353d31441f19dcd
175 lines
6.7 KiB
TOML
175 lines
6.7 KiB
TOML
[project]
|
|
name = "lix"
|
|
version = "0"
|
|
requires-python = ">=3.12"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
indent-width = 4
|
|
# unless --fix or --no-fix is provided, automatically fix fixable violations
|
|
fix = true
|
|
# don't fix stuff that could break things
|
|
unsafe-fixes = false
|
|
|
|
# we might want to switch it up for some integration stuff to "json" or "gitlab"
|
|
output-format = "grouped"
|
|
|
|
# ignore files, which are ignored in the .gitignore file
|
|
respect-gitignore = true
|
|
|
|
# show what violations have been fixed
|
|
show-fixes = true
|
|
|
|
# need to test if "." or ".." is correct, as we assume functional2 to be the root directory for imports
|
|
src = [".."]
|
|
|
|
[tool.ruff.lint]
|
|
|
|
preview = true
|
|
|
|
# do not allow characters like the minus sign, asterix oparator etc
|
|
# which can be confused with dash (-) and star (*) respectively
|
|
allowed-confusables = []
|
|
|
|
# ignore "unused variable" rules, for identifiers like `_`, `__`, `_var` etc
|
|
# but NOT for `_var_` etc
|
|
#
|
|
# could be replaced by `^_$` if we only want to ignore `_` but nothing else
|
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
|
|
# we do not use custom logger objects for now
|
|
logger-objects = []
|
|
|
|
# Comments to be ignored by commented-out code detection
|
|
task-tags = ["TODO", "FIXME", "XXX"]
|
|
# In order:
|
|
# E: pycodestyle error violations
|
|
# E4: import styles
|
|
# E7: multi statements and semicolon uses as well as comparasion styles
|
|
# E9: check for development setup issues (io errors while reading py files)
|
|
# F: pyflakes violations; all enabled
|
|
# F4: import style (unused; star imports)
|
|
# F5: format style violations (% formatting, .format, fstrings)
|
|
# F6: dictionary and variable unpacking
|
|
# F7: loop and function keyword issues (return, yield, break, continue etc)
|
|
# F8: undefined variables
|
|
# F9: NotImplementedError stuff
|
|
## Non-defaults:
|
|
# ERA: commented-out-code
|
|
# ASYNC: asyncio related things
|
|
# ANN: Annotation stuff
|
|
# ANN0: argument annotations
|
|
# disabled: ANN002: annotation for *args
|
|
# disabled: ANN002: annotation for **kwargs
|
|
# removed: ANN1
|
|
# ANN2: return type annotation
|
|
# disabled: ANN4: no any type; not enabled as we support anys in multiple places
|
|
# A: builtin shadowing
|
|
# C4: list and generator comprehensions
|
|
# disabled: EM: don't pass strings directly into exceptions, but use a variable; avoids duplicate printing of the message
|
|
# ISC: implicit string concatination
|
|
# INP: require __init__.py in all packages
|
|
# LOG: creation of logger objects
|
|
# G: style of logging messages
|
|
# PIE: unnecessary providing of stuff (placeholders, definitions, duplicates etc)
|
|
# T20: disallow prints in favor of using a logger
|
|
# PT: pytest formatting things; fixtures, asserts, parametrizastions etc
|
|
# Q: quote styling
|
|
# RSE: check on raise statements
|
|
# RET: return and continue conventions
|
|
# SIM: code simplifications (double negation etc); all enabled
|
|
# SIM1: collapsable if and bool things
|
|
# SIM2: double negation in comparasions (`not a == b` instead of `a != b` etc)
|
|
# SIM3: yoda conditions use `foo == "Foo"` instead of `"Foo" == foo`
|
|
# SIM9: defaults for get and zip
|
|
# TID: banning of certain imports
|
|
# TID251: ban certain APIs
|
|
# TD: enforce TODO comment style
|
|
# disabled TD001: allow FIXME and XXX comments
|
|
# disabled TD003: todos don't require an explicit issue link for us
|
|
# ARG: disallow unused arguments
|
|
# PTH: use pathlib instead of os calls
|
|
# N: enforce PEP-8 naming
|
|
# PERF: performance things about lists and iterators
|
|
# DOC: docstyling requirements
|
|
# PL: general linting things
|
|
# PLC: Conventions
|
|
# PLC01: type mismatches
|
|
# PLC02: iteration of dicts and sets
|
|
# PLC04: minor import things
|
|
# PLC1: bad compares
|
|
# PLC2: non-ascii characters and dunder calls
|
|
# PLC3: lambda things
|
|
# PLE: Error
|
|
# PLE01: non-local and init things
|
|
# PLE03: invalid dunder returns
|
|
# PLE06: index errors and __all__ things
|
|
# disabled: PLE1: covered by other checks
|
|
# PLE2: invalid escape sequences
|
|
# disabled: PLR: Refactoring; covered by other rule sets
|
|
# disabled: PLW: Warnings; covered by other rule stets
|
|
# UP: use modern python features instead of by now depracated ones
|
|
# RUF: Ambiguity and other general linting things
|
|
#
|
|
#
|
|
#
|
|
# Notincluded rule sets:
|
|
# FAST: we don't use FAST Api
|
|
# YTT: things about sys.version; not relevant here
|
|
# S: conflicts with testing things and is used for production code, not test code
|
|
# BLE: except without defining what to expect, covered by pytest
|
|
# FBT: boolean arguments to functions
|
|
# B: general codestyle things; covered by other rulesets
|
|
# COM: trailing commas; covered by other rulesets
|
|
# CPY: we don't need/have copyright notices in each file
|
|
# DTZ: datetime things and formatting; not a usecase for us
|
|
# T10: debugger things
|
|
# DJ: we don't use django
|
|
# EXE: we don't build an executable
|
|
# FIX: we do carry around fixmes and other thigns to be done in separate commits
|
|
# FA: things about future annotations
|
|
# INT: we don't use gettext (translation interface)
|
|
# ICN: import alias and import from banning
|
|
# PYI: things for pyi files
|
|
# SLF: accessing of private members
|
|
# SLOT: subclassing of builtin-types (str, tuple, namedtuple) related issues
|
|
# TC: typechecking imports (typechecking imports required to be inside of a `if TYPECHECKING` block
|
|
# FLY: string joins
|
|
# I: import sorting; covered by other rulesets
|
|
# C90: we don't use mccable
|
|
# NPY: we don't use numpy
|
|
# PD: we don't use pandas
|
|
# D: doesn't support sphinx style docstyles as of 2025-05-01; see https://github.com/astral-sh/ruff/pull/13286
|
|
# PGH: things about pygrep, we don't use
|
|
# FURB: covered by other rule sets
|
|
# TRY: try and raise related things, not helpful as we only do testing
|
|
select = ["E4", "E7", "E9", "F", "ERA", "ASYNC", "ANN0", "ANN2", "A", "C4", "ISC", "INP", "LOG", "G", "PIE", "T20", "PT", "Q", "RSE", "RET", "SIM", "TID251", "TD", "ARG", "PTH", "N", "PERF", "PLC", "PLE", "UP", "RUF"]
|
|
ignore = ["ANN002", "ANN003", "TD001", "TD003", "PLE1", "RUF005"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# ignore open() and os.path.join() calls in test_evil_nars, as that file is working with raw bytes
|
|
# which pathlib does not support
|
|
"**/store/test_evil_nars.py" = ["PTH118", "PTH123"]
|
|
|
|
[tool.ruff.format]
|
|
indent-style = "space"
|
|
quote-style = "double"
|
|
# allow for `def test(a,b):` style declarators and don't force arguments to all have a separate line
|
|
skip-magic-trailing-comma = true
|
|
|
|
line-ending = "lf"
|
|
|
|
# if code within docstrings should be formatted too
|
|
docstring-code-format = true
|
|
# takes into acount indentation of code within docstrings
|
|
docstring-code-line-length = "dynamic"
|
|
|
|
## Rule specific
|
|
[tool.ruff.lint.flake8-annotations]
|
|
# no return type requirement, if a function will only ever return `None`
|
|
suppress-none-returning = true
|
|
|
|
[tool.ruff.lint.flake8-errmsg]
|
|
# Allow raw strings to be up to 10 characters in error messages
|
|
max-string-length = 10
|