Python project structure — pyproject.toml, src layout, __init__.py, .gitignore, dependency groups, type hints, py.typed, test structure, entry points, ruff/mypy configuration
91
87%
Does it follow best practices?
Impact
99%
1.03xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent creates a FastAPI microservice with comprehensive project structure: pyproject.toml, separated dev/test dependency groups, pytest configuration, test infrastructure with conftest.py and multiple test files, ruff/mypy tooling, proper .gitignore, and type hints throughout.",
"type": "weighted_checklist",
"checklist": [
{
"name": "pyproject.toml with build-system",
"description": "pyproject.toml has [build-system] section",
"max_score": 6
},
{
"name": "requires-python",
"description": "requires-python >= 3.11 in pyproject.toml",
"max_score": 4
},
{
"name": "Separate dev and test groups",
"description": "[project.optional-dependencies] has separate dev (ruff, mypy) and test (pytest, httpx, pytest-cov) groups, or at minimum one combined group separating these from production deps",
"max_score": 8
},
{
"name": "Ruff configured",
"description": "[tool.ruff] section with lint rules in pyproject.toml",
"max_score": 5
},
{
"name": "Mypy strict",
"description": "[tool.mypy] with strict = true",
"max_score": 5
},
{
"name": "pytest configured in pyproject.toml",
"description": "[tool.pytest.ini_options] with testpaths and asyncio_mode configured",
"max_score": 5
},
{
"name": ".gitignore comprehensive",
"description": ".gitignore includes .venv/, __pycache__/, .env, .coverage or htmlcov/, .mypy_cache/",
"max_score": 5
},
{
"name": "__init__.py in all packages",
"description": "All directories (app package, routes/, services/, tests/) have __init__.py",
"max_score": 7
},
{
"name": "App factory pattern",
"description": "main.py has create_app() that creates FastAPI, registers routers and error handlers",
"max_score": 6
},
{
"name": "Config from environment",
"description": "config.py uses pydantic-settings BaseSettings with API keys and config loaded from env",
"max_score": 5
},
{
"name": "Routes with APIRouter",
"description": "Routes use FastAPI APIRouter in a routes/ directory",
"max_score": 5
},
{
"name": "Type hints everywhere",
"description": "All functions have type annotations on parameters and return types",
"max_score": 8
},
{
"name": "conftest.py with fixtures",
"description": "tests/conftest.py exists with app fixture and async test client fixture",
"max_score": 8
},
{
"name": "Multiple test files",
"description": "At least two test files exist (e.g., test_notifications.py and test_models.py) with actual test functions",
"max_score": 7
},
{
"name": "tests/ has __init__.py",
"description": "tests/ directory has __init__.py",
"max_score": 4
},
{
"name": "No setup.py",
"description": "No setup.py or setup.cfg exists",
"max_score": 3
},
{
"name": "Pydantic models with Literal types",
"description": "models.py uses Pydantic models with Literal types for notification type or status",
"max_score": 5
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
python-project-structure
verifiers