[project] name = "webber-api" version = "0.3.1" description = "Webber API - Multi-Agent AI Development Server" authors = [ {name = "jpmschweitzer"} ] readme = "README.md" requires-python = ">=3.12" license = {text = "MIT"} classifiers = [ "Development Status :: 3 - Alpha", "Framework :: FastAPI", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Code Generators", ] [build-system] requires = ["setuptools>=75.0", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["."] include = ["src*"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_functions = ["test_*"] addopts = "-v --strict-markers" markers = [ "integration: marks tests as integration tests (require Ollama to be running)", "e2e: marks tests as end-to-end tests (require API server to be running)", "slow: marks tests as slow (may take > 10 seconds)", ] filterwarnings = [ "ignore::pytest.PytestUnraisableExceptionWarning", ] [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_ignores = true strict = false ignore_missing_imports = true [tool.ruff] target-version = "py312" line-length = 100 src = ["src", "tests"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "SIM", # flake8-simplify "TCH", # flake8-type-checking "RUF", # Ruff-specific rules ] ignore = [ "E501", # line too long (handled by formatter) "B008", # function call in default argument (FastAPI Depends) "B904", # raise without from (sometimes intentional) ] [tool.ruff.lint.isort] known-first-party = ["src"] [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false