Add ai-code-project-template repo files.
This commit is contained in:
93
ruff.toml
Normal file
93
ruff.toml
Normal file
@@ -0,0 +1,93 @@
|
||||
# Ruff configuration for the entire project
|
||||
# This ensures consistent formatting across all Python code
|
||||
|
||||
# Use 120 character line length to prevent splitting Reflex lambdas
|
||||
line-length = 120
|
||||
|
||||
# Target Python 3.11+
|
||||
target-version = "py311"
|
||||
|
||||
# Exclude generated and build directories
|
||||
extend-exclude = [
|
||||
".venv",
|
||||
"venv",
|
||||
"__pycache__",
|
||||
"*.pyc",
|
||||
".web",
|
||||
"node_modules",
|
||||
"recipe-executor/recipe_executor", # Generated code
|
||||
"cortex-core/cortex_core", # Generated code
|
||||
]
|
||||
|
||||
[format]
|
||||
# Use double quotes for strings
|
||||
quote-style = "double"
|
||||
|
||||
# Use 4 spaces for indentation
|
||||
indent-style = "space"
|
||||
|
||||
# Respect magic trailing commas
|
||||
skip-magic-trailing-comma = false
|
||||
|
||||
# Use Unix line endings
|
||||
line-ending = "auto"
|
||||
|
||||
[lint]
|
||||
# Enable specific rule sets
|
||||
select = [
|
||||
"E", # pycodestyle errors
|
||||
"W", # pycodestyle warnings (includes W292 for newline at EOF)
|
||||
"F", # Pyflakes
|
||||
"I", # isort
|
||||
"N", # pep8-naming
|
||||
"UP", # pyupgrade
|
||||
"B", # flake8-bugbear
|
||||
"C4", # flake8-comprehensions
|
||||
"DTZ", # flake8-datetimez
|
||||
"T10", # flake8-debugger
|
||||
"RET", # flake8-return
|
||||
"SIM", # flake8-simplify
|
||||
"TID", # flake8-tidy-imports
|
||||
]
|
||||
|
||||
# Ignore specific rules
|
||||
ignore = [
|
||||
"E501", # Line too long (handled by formatter)
|
||||
"E712", # Comparison to True/False (needed for SQLAlchemy)
|
||||
"B008", # Do not perform function calls in argument defaults
|
||||
"B904", # Within except clause, use raise from (not always needed)
|
||||
"UP007", # Use X | Y for type unions (keep Optional for clarity)
|
||||
"SIM108", # Use ternary operator (sometimes if/else is clearer)
|
||||
"DTZ005", # datetime.now() without tz (okay for timestamps)
|
||||
"N999", # Invalid module name (web-bff is valid)
|
||||
"TID252", # Relative imports from parent (used in package structure)
|
||||
"RET504", # Unnecessary assignment before return (sometimes clearer)
|
||||
]
|
||||
|
||||
# Allow unused variables when prefixed with underscore
|
||||
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
||||
|
||||
[lint.per-file-ignores]
|
||||
# Ignore import violations in __init__ files
|
||||
"__init__.py" = ["E402", "F401", "F403"]
|
||||
|
||||
# Ignore missing docstrings in tests
|
||||
"test_*.py" = ["D100", "D101", "D102", "D103", "D104"]
|
||||
"tests/*" = ["D100", "D101", "D102", "D103", "D104"]
|
||||
|
||||
# Allow dynamic imports in recipe files
|
||||
"recipes/*" = ["F401", "F403"]
|
||||
|
||||
[lint.isort]
|
||||
# Combine as imports
|
||||
combine-as-imports = true
|
||||
|
||||
# Force single line imports
|
||||
force-single-line = true
|
||||
|
||||
# Order imports by type
|
||||
section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]
|
||||
|
||||
[lint.pydocstyle]
|
||||
# Use Google docstring convention
|
||||
convention = "google"
|
Reference in New Issue
Block a user