3.4 KiB
FastAPI Constitution
Core Principles
I. Standards-Based
FastAPI MUST be built on open standards for APIs. All features MUST support OpenAPI (formerly Swagger) and JSON Schema. The framework MUST generate compliant API documentation automatically. Rationale: Ensures interoperability and automatic tooling support (client generation, documentation).
II. Type Safety (NON-NEGOTIABLE)
FastAPI MUST leverage Python type hints for request validation, response serialization, and automatic documentation. Type checking MUST pass with mypy at strict level. Rationale: Catches bugs at development time, enables IDE autocomplete, powers automatic documentation.
III. Test-First Development
All new features MUST have tests written before implementation. The framework MUST maintain comprehensive test coverage. Tests MUST verify both functionality and API contract compliance. Rationale: FastAPI is a framework used in production by millions; regressions are costly.
IV. Performance
FastAPI MUST achieve performance comparable to NodeJS and Go frameworks. Async support MUST be first-class with no performance penalty for sync code paths. Rationale: Performance is a primary feature claim; benchmarks MUST remain competitive.
V. Developer Experience
The framework MUST provide intuitive APIs with minimal boilerplate. Error messages MUST be clear and actionable. Documentation MUST include runnable examples. Rationale: "Fast to code" is a core value proposition; reduces developer cognitive load.
Additional Constraints
Technology Stack
- Language: Python 3.8+ (subject to Python release support policy)
- Core Dependencies: Starlette for routing, Pydantic for data validation
- Async: First-class support for asyncio
- Standards: OpenAPI 3.0+, JSON Schema
Compatibility
- Python Versions: Support Python versions according to PEP 594
- Breaking Changes: Follow semantic versioning; MAJOR version bumps require deprecation warnings in prior minor releases
- Dependencies: Pin minimal required versions; allow compatible updates
Development Workflow
Code Quality Gates
- All PRs MUST pass type checking (mypy --strict)
- All PRs MUST maintain or increase test coverage
- All PRs MUST include documentation for new features
- All PRs MUST pass CI/CD pipeline (lint, test, coverage)
Contribution Process
- Fork and create feature branch
- Write tests first (must fail)
- Implement feature
- Ensure tests pass and coverage maintained
- Update documentation
- Submit PR with description
Release Process
- Follow semantic versioning strictly
- Maintain changelog
- Publish release notes
- Ensure backwards compatibility within MAJOR version
Governance
The FastAPI Constitution supersedes all other development practices. Amendments to this constitution MUST be documented with:
- Rationale for the change
- Impact assessment on existing workflows
- Migration plan if applicable
All PRs and code reviews MUST verify compliance with these principles. Complexity MUST be justified against simpler alternatives.
Version: 1.0.0 | Ratified: 2026-02-23 | Last Amended: 2026-02-23