Imago/pyproject.toml
Bruno Charest cc99fea20a
Some checks failed
CI / Lint & Format (push) Has been cancelled
CI / Tests (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
Add comprehensive test suite for image processing and related services
- Implement tests for database generator to ensure proper session handling.
- Create tests for EXIF extraction and conversion functions.
- Add tests for image-related endpoints, ensuring proper data retrieval and isolation between clients.
- Develop tests for OCR functionality, including language detection and text extraction.
- Introduce tests for the image processing pipeline, covering success and failure scenarios.
- Validate rate limiting functionality and ensure independent counters for different clients.
- Implement scraper tests to verify HTML content fetching and error handling.
- Add unit tests for various services, including storage and filename generation.
- Establish worker entry point for ARQ to handle background image processing tasks.
2026-02-24 11:22:10 -05:00

71 lines
1.6 KiB
TOML

[project]
name = "imago"
version = "2.0.0"
description = "Backend FastAPI pour la gestion d'images et fonctionnalités AI — Imago"
requires-python = ">=3.12"
license = "MIT"
[tool.ruff]
target-version = "py312"
line-length = 120
src = ["app", "tests"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # bugbear
"S", # bandit (security)
"T20", # flake8-print (catch stray print())
"SIM", # flake8-simplify
"RUF", # ruff-specific
]
ignore = [
"S101", # allow assert in tests
"S104", # allow 0.0.0.0 bindings
"B008", # allow Depends() in function args (FastAPI pattern)
"E501", # line length handled by formatter
"UP007", # keep Optional[] syntax for readability
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["S101", "S106", "T20"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
docstring-code-format = true
[tool.mypy]
python_version = "3.12"
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true
check_untyped_defs = true
plugins = ["pydantic.mypy"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
filterwarnings = ["ignore::DeprecationWarning"]
addopts = "--tb=short -q"
[tool.coverage.run]
source = ["app"]
omit = ["app/workers/*", "tests/*"]
[tool.coverage.report]
show_missing = true
fail_under = 60
exclude_lines = [
"pragma: no cover",
"if __name__ ==",
"if TYPE_CHECKING:",
]