# pyproject.toml corrigé pour Poetry [tool.poetry] name = "project5" version = "0.1.0" description = "Prédiction de consommation énergétique des bâtiments" authors = ["francois hellebuyck "] packages = [{include = "project5", from = "src"}] [tool.poetry.group.docs.dependencies] # Sphinx et extensions essentielles sphinx = "^7.2.6" sphinx-rtd-theme = "^1.3.0" sphinx-autodoc-typehints = "^1.25.2" sphinx-copybutton = "^0.5.2" myst-parser = "^2.0.0" sphinx-autobuild = "^2021.3.14" sphinxcontrib-napoleon = "^0.7" # Extensions optionnelles mais recommandées sphinx-book-theme = "^1.0.1" # Thème moderne alternatif sphinxext-rediraffe = "^0.2.7" # Redirections sphinx-design = "^0.5.0" # Composants modernes sphinx-tabs = "^3.4.4" # Onglets sphinx-togglebutton = "^0.3.2" # Boutons pliables [tool.poetry.dependencies] python = "^3.11" fastapi = "^0.116.1" uvicorn = {extras = ["standard"], version = "^0.35.0"} # Base de données sqlalchemy = "^2.0.23" alembic = "^1.12.1" psycopg2-binary = "^2.9.9" # Configuration et sécurité pydantic = "^2.5.0" pydantic-settings = "^2.1.0" python-dotenv = "^1.0.0" passlib = {extras = ["bcrypt"], version = "^1.7.4"} # Utilitaires httpx = "^0.25.0" python-jwt = "^4.1.0" joblib = "^1.5.2" numpy = "^2.3.3" scikit-learn = "1.7.1" pandas = "^2.3.2" shibuya = "^2025.8.16" eralchemy = "^1.3.0" graphviz = "^0.20.0" [tool.poetry.group.dev.dependencies] pylint = "^3.3.8" pytest = "^7.4.0" pytest-cov = "^4.1.0" pytest-asyncio = "^0.21.0" httpx = "^0.25.0" black = "^24.0.0" isort = "^5.12.0" flake8 = "^6.1.0" mypy = "^1.6.0" bandit = "^1.7.5" safety = "^2.3.0" # Tests de base de données pytest-postgresql = "^5.0.0" aiosqlite = "^0.19.0" sqlacodegen = "^3.1.0" [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 88 target-version = ['py311'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist | alembic/versions )/ ''' [tool.isort] profile = "black" multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true line_length = 88 [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true plugins = ["sqlalchemy.ext.mypy.plugin"] [tool.pytest.ini_options] minversion = "6.0" addopts = "-ra -q --strict-markers" testpaths = [ "tests", ] pythonpath = ["./src"] asyncio_mode = "auto" markers = [ "unit: Unit tests", "integration: Integration tests", "database: Tests requiring database", "slow: Slow running tests", ] [tool.coverage.run] source = ["src"] omit = [ "*/tests/*", "*/venv/*", "*/.venv/*", "*/env/*", "*/alembic/*", "*/migrations/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] [tool.flake8] max-line-length = 88 extend-ignore = [ "E203", "W503", "E402", "E501", ] exclude = [ ".git", "__pycache__", ".venv", "venv", ".jupyter", "alembic/versions", "migrations", ] per-file-ignores = [ "*.ipynb:E402", "alembic/*:E402,F401", ]