mirror of
https://github.com/fmhy/bookmarks.git
synced 2026-03-11 08:55:39 +00:00
165 lines
No EOL
5.2 KiB
TOML
165 lines
No EOL
5.2 KiB
TOML
[project]
|
|
name = "bookmarks"
|
|
version = "0.1.0"
|
|
description = "Bookmarks and Goggles generator for FMHY"
|
|
readme = "README.md"
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
"aiohttp>=3.12.15",
|
|
]
|
|
[tool.pyright]
|
|
# We use ruff for this.
|
|
reportInvalidStringEscapeSequence = false
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|
|
line-length = 100
|
|
# Group violations by containing file.
|
|
output-format = "grouped"
|
|
|
|
[tool.ruff.lint]
|
|
ignore = [
|
|
# (missing public docstrings) These work off of the Python sense of "public", rather than our
|
|
# bespoke definition based off of `@public`. When ruff supports custom plugins then we can write
|
|
# appropriate rules to require docstrings for `@public`.
|
|
"D100",
|
|
"D101",
|
|
"D102",
|
|
"D103",
|
|
"D104",
|
|
"D105",
|
|
"D106",
|
|
"D107",
|
|
|
|
# (docstring imperative mood) Overly restrictive.
|
|
"D401",
|
|
|
|
# (module level import not at top) There are several places where we use e.g.
|
|
# warnings.filterwarings calls before imports.
|
|
"E402",
|
|
|
|
# (line too long): This fires for comments, which the ruff formatter won't auto-wrap. Disabling
|
|
# until there is an autoformat solution available for comments.
|
|
"E501",
|
|
|
|
# (no type comparison): There are a few places where we use `== type(None)` which are more clear
|
|
# than the equivalent `isinstance` check.
|
|
'E721',
|
|
|
|
# (bare exception): There are many places where we want to catch a maximally generic exception.
|
|
'E722',
|
|
|
|
# (no assign lambda): existing code assigns lambdas in a few places. With ruff formatting
|
|
# requiring extra empty lines between defs, disallowing lambda assignment can make code less
|
|
# readable.
|
|
"E731",
|
|
|
|
# (try-except-in-loop) we use this pattern in many places and the performance impact is negligible
|
|
"PERF203",
|
|
|
|
# (no concatenation) Existing codebase has many concatentations, no reason to disallow them.
|
|
"RUF005",
|
|
|
|
# (use ClassVar for attr declarations with defaults) This is a good rule for vanilla Python, but
|
|
# triggers false positives for many libs that have DSLs that make use of attr defaults.
|
|
"RUF012",
|
|
|
|
# (assorted perf rules) We have a lot of violations, enable when autofix is available
|
|
"PERF401", # (manual-list-comprehension)
|
|
"PERF402", # (manual-list-copy)
|
|
]
|
|
|
|
# By default, ruff only uses all "E" (pycodestyle) and "F" (pyflakes) rules.
|
|
# Here we append to the defaults.
|
|
extend-select = [
|
|
# (flake8-builtins) detect shadowing of python builtin symbols by variables and arguments.
|
|
# Attributes are OK (which is why A003) is not included here.
|
|
"A001",
|
|
"A002",
|
|
|
|
# (useless expression): Expressions that aren't assigned to anything are typically bugs.
|
|
"B018",
|
|
|
|
# (static key dict comprehension): Flag reuse of a key in dict comprehensions.
|
|
"B035",
|
|
|
|
# (pydocstyle) Docstring-related rules. A large subset of these are ignored by the
|
|
# "convention=google" setting, we set under tool.ruff.pydocstyle.
|
|
"D",
|
|
|
|
# (pycodestyle) pycodestyle rules
|
|
"E",
|
|
|
|
# (pyflakes) pyflakes rules
|
|
"F",
|
|
|
|
# (pyupgrade) pyupgrade rules
|
|
"UP",
|
|
|
|
# (isort) detect improperly sorted imports
|
|
"I001",
|
|
|
|
# ban relative imports
|
|
"TID252",
|
|
|
|
# (pylint) use all pylint rules from categories "Convention", "Error", and "Warning" (ruff
|
|
# currently implements only a subset of pylint's rules)
|
|
"PLE",
|
|
"PLW",
|
|
|
|
# (ruff-specific) Enable all ruff-specific checks (i.e. not ports of
|
|
# functionality from an existing linter).
|
|
"RUF",
|
|
|
|
# (private member access) Flag access to `_`-prefixed symbols. By default the various special
|
|
# methods on `NamedTuple` are ignored (e.g. `_replace`).
|
|
"SLF001",
|
|
|
|
# (flake8-type-checking) Auto-sort imports into TYPE_CHECKING blocks depending on whether
|
|
# they are runtime or type-only imports.
|
|
"TCH",
|
|
|
|
# (banned-api) Flag use of banned APIs. See tool.ruff.flake8-tidy-imports.banned-api for details.
|
|
"TID251",
|
|
|
|
# (disallow print statements) keep debugging statements out of the codebase
|
|
"T20",
|
|
|
|
# (f-strings) use f-strings instead of .format()
|
|
"UP032",
|
|
|
|
# (invalid escape sequence) flag errant backslashes
|
|
"W605",
|
|
]
|
|
|
|
[tool.ruff.lint.flake8-builtins]
|
|
# We use `id` in many places and almost never want to use the python builtin.
|
|
builtins-ignorelist = ["id"]
|
|
|
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
"__future__.annotations".msg = "Directly quote annotations instead."
|
|
|
|
[tool.ruff.lint.isort]
|
|
# Combine multiple `from foo import bar as baz` statements with the same source
|
|
# (`foo`) into a single statement.
|
|
combine-as-imports = true
|
|
|
|
# In cases where imports are automatically removed, allows the imports to be automatically collapsed
|
|
split-on-trailing-comma = false
|
|
|
|
# Imports of the form `from foo import bar as baz` show one `import bar as baz`
|
|
# per line. Useful for __init__.py files that just re-export symbols.
|
|
force-wrap-aliases = true
|
|
|
|
[tool.ruff.lint.flake8-tidy-imports]
|
|
# Disallow all relative imports.
|
|
ban-relative-imports = "all"
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
# Enforce google-style docstrings. This is equivalent to ignoring a large number of pydocstyle (D)
|
|
# rules incompatible with google-style docstrings. See:
|
|
# https://google.github.io/styleguide/pyguide.html#383-functions-and-methods
|
|
convention = "google"
|
|
|
|
[tool.ruff.format]
|
|
docstring-code-format = true |