- pyproject.toml: add [tool.ruff] config suppressing E402/W293 globally, F841/E741/E702 in tests, E741 in scripts - inventory.py: split semicolon import (E702) - recipes.py: fix logger -> log (F821 undefined name) - shopping.py: rename l -> lnk in list comprehension (E741) - format_conversion.py: noqa F841 on CUDA flag (used as future hook) - backfill_keywords.py: rename done -> _done (F841) - ingest_purplecarrot.py: drop == True comparison (E712) - Auto-fix: I001 import sorting, F401 unused imports across all files
56 lines
1.5 KiB
TOML
56 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "kiwi"
|
|
version = "0.10.0"
|
|
description = "Pantry tracking + leftover recipe suggestions"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
# API
|
|
"fastapi>=0.110",
|
|
"uvicorn[standard]>=0.27",
|
|
"python-multipart>=0.0.9",
|
|
"aiofiles>=23.0",
|
|
# Image processing + OCR
|
|
"opencv-python>=4.8",
|
|
"numpy>=1.25",
|
|
"pyzbar>=0.1.9",
|
|
"Pillow>=10.0",
|
|
# HTTP clients
|
|
"httpx>=0.27",
|
|
"requests>=2.31",
|
|
# mDNS advertisement (optional; user must opt in)
|
|
"zeroconf>=0.131",
|
|
# CircuitForge shared scaffold
|
|
"circuitforge-core>=0.8.0",
|
|
]
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["app*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "I"]
|
|
ignore = [
|
|
"E501", # line length — handled by formatter
|
|
"E402", # module-import-not-at-top — intentional for conditional/lazy imports in endpoints
|
|
"W293", # whitespace before newline on blank lines — cosmetic, fixed by formatter
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# tests/: F841 unused variables are the standard mock-patch capture pattern.
|
|
# E741 ambiguous names and E402 conditional imports are common in test fixtures.
|
|
"tests/**" = ["F841", "E741", "E702"]
|
|
# scripts/: E741 ambiguous loop vars are common in data pipeline scripts.
|
|
"scripts/**" = ["E741"]
|