From 1b9e1131bd6283082790eb1b544b27d00de4d950 Mon Sep 17 00:00:00 2001 From: majianhan Date: Wed, 1 Apr 2026 23:22:53 +0800 Subject: [PATCH] feat: add comprehensive Ruff lint configuration Add [tool.ruff.lint] section to root pyproject.toml with rule sets (E, W, F for pycodestyle/pyflakes, I for isort, UP for pyupgrade) migrated from sdk/python/pyproject.toml. Consolidate exclude patterns to properly reference protobuf and embedded Go paths. Add pyupgrade config with keep-runtime-typing to avoid breaking type annotations. Also update sdk/python/pyproject.toml to include UP rules for consistency across both config files. Refs: #5788 --- pyproject.toml | 38 +++++++++++++++++++++++++++++++++----- sdk/python/pyproject.toml | 5 ++++- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index eb6a6b4d5c3..895a7465ad4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -251,9 +251,38 @@ tag_regex = "^(?:[\\/\\w-]+)?(?P[vV]?\\d+(?:\\.\\d+){0,2}[^\\+]*)(?:\\+ line-length = 88 target-version = "py310" include = ["*.py", "*.pyi"] +exclude = [ + ".eggs", + ".git", + ".hg", + ".mypy_cache", + ".tox", + ".venv", + "_build", + "buck-out", + "build", + "dist", + "sdk/python/feast/protos", + "sdk/python/feast/embedded_go/lib", +] + +[tool.ruff.lint] +select = ["E", "F", "W", "I", "UP"] +ignore = [ + "E203", # whitespace before ':' + "E266", # too many leading '#' for block comment + "E501", # line too long (handled by formatter) + "E721", # do not compare types, use isinstance() +] + +[tool.ruff.lint.isort] +known-first-party = ["feast", "feast_serving_server", "feast_core_server"] +default-section = "third-party" + +[tool.ruff.lint.pyupgrade] +keep-runtime-typing = true [tool.ruff.format] -# exclude a few common directories in the root of the project exclude = [ ".eggs", ".git", @@ -265,10 +294,9 @@ exclude = [ "buck-out", "build", "dist", - "pb2.py", - ".pyi", - "protos", - "sdk/python/feast/embedded_go/lib"] + "sdk/python/feast/protos", + "sdk/python/feast/embedded_go/lib", +] [dependency-groups] dev = [ diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index a5976ffcc9e..9dbc05186fd 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -2,13 +2,16 @@ exclude = [".git","__pycache__","docs/conf.py","dist","feast/protos","feast/embedded_go/lib","feast/infra/utils/snowflake/snowpark/snowflake_udfs.py"] [tool.ruff.lint] -select = ["E","F","W","I"] +select = ["E", "F", "W", "I", "UP"] ignore = ["E203", "E266", "E501", "E721"] [tool.ruff.lint.isort] known-first-party = ["feast", "feast_serving_server", "feast_core_server"] default-section = "third-party" +[tool.ruff.lint.pyupgrade] +keep-runtime-typing = true + [tool.mypy] files = ["feast", "tests"] ignore_missing_imports = true