mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-29 18:51:43 +02:00
- Ruff linter and formatter - Fast Python linter with auto-fix - Standard hooks - trailing whitespace, end-of-file, YAML/JSON checks, large file detection, merge conflict detection, debug statements, private key detection - Custom hook - Runs import shadowing tests before commit 2. Ruff Configuration (pyproject.toml) - Python 3.11+ target - 120 character line length - Checks: pycodestyle, Pyflakes, isort, flake8-bugbear, comprehensions, pyupgrade, unused arguments, simplify - Sensible ignores for FastAPI patterns (Depends, unused route args) 3. New Test Files backend/tests/unit/test_code_quality.py (5 tests) - Import shadowing detection using AST analysis - Catches the exact bug that broke archive creation - Tests all Python files in main, services, and routes backend/tests/unit/test_log_error_detection.py (13 tests) - MQTT message processing (status, xcam, AMS, HMS) - Print lifecycle (start to complete, failure handling) - Service imports verification - Edge cases (empty messages, unknown fields, null values) backend/tests/integration/test_print_lifecycle.py (6 tests) - Print start callback logic - Print complete callback logic - Timelapse tracking (same-message detection, completion callback) - Callback error handling - Import shadowing verification
70 lines
1.6 KiB
TOML
70 lines
1.6 KiB
TOML
[project]
|
|
name = "bambuddy"
|
|
version = "0.1.5"
|
|
description = "Archive and manage Bambu Lab 3MF files"
|
|
requires-python = ">=3.11"
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 120
|
|
exclude = [
|
|
".git",
|
|
".venv",
|
|
"venv",
|
|
"__pycache__",
|
|
"static",
|
|
"frontend",
|
|
"*.pyc",
|
|
]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # Pyflakes
|
|
"I", # isort
|
|
"B", # flake8-bugbear
|
|
"C4", # flake8-comprehensions
|
|
"UP", # pyupgrade
|
|
"ARG", # flake8-unused-arguments
|
|
"SIM", # flake8-simplify
|
|
]
|
|
ignore = [
|
|
"E501", # line too long (handled by formatter)
|
|
"B008", # do not perform function calls in argument defaults (FastAPI Depends)
|
|
"B904", # raise from (too noisy)
|
|
"ARG001", # unused function argument (common in FastAPI)
|
|
"ARG002", # unused method argument
|
|
"SIM108", # ternary operator (readability preference)
|
|
]
|
|
|
|
# Allow autofix for all enabled rules
|
|
fixable = ["ALL"]
|
|
unfixable = []
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Tests can have unused imports and assertions
|
|
"**/tests/**" = ["F401", "F811", "ARG"]
|
|
# Init files often have unused imports for re-export
|
|
"**/__init__.py" = ["F401"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["backend"]
|
|
force-single-line = false
|
|
combine-as-imports = true
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
skip-magic-trailing-comma = false
|
|
line-ending = "auto"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["backend/tests"]
|
|
python_files = ["test_*.py"]
|
|
python_functions = ["test_*"]
|
|
asyncio_mode = "auto"
|
|
filterwarnings = [
|
|
"ignore::DeprecationWarning",
|
|
]
|