# What is a PEP?

[Python Enhancement Proposals](https://peps.python.org) (PEPs) are the documents that govern Python's evolution. Each one proposes a new language feature, collects community input on a design question, or records a decision already made. Accepted PEPs are the authoritative source for how a feature works.

Not every PEP is accepted. Rejected PEPs often contain useful context about what was tried and why it did not fit.

## What a PEP contains

Each PEP follows a standard structure:

- An abstract summarizing the proposal
- Motivation and rationale
- Technical specification
- Alternatives considered
- References

## Three kinds of PEPs

**Standards Track** PEPs propose new features or behaviors for Python itself. **Informational** PEPs document design guidelines without mandating any change. **Process** PEPs propose changes to how Python is developed, governed, or discussed.

## PEPs that shaped modern Python

A handful of PEPs define the Python most developers use today:

- [PEP 8](https://pydevtools.com/handbook/explanation/what-is-pep-8.md) established the style guide for the standard library, the basis for formatters like [Ruff](https://pydevtools.com/handbook/reference/ruff.md).
- [PEP 484](https://pydevtools.com/handbook/explanation/what-is-pep-484.md) introduced type hints and the `typing` module, which tools like [mypy](https://pydevtools.com/handbook/reference/mypy.md), [Pyright](https://pydevtools.com/handbook/reference/pyright.md), and [ty](https://pydevtools.com/handbook/reference/ty.md) implement.
- [PEP 517](https://pydevtools.com/handbook/explanation/what-is-pep-517.md) and [PEP 518](https://pydevtools.com/handbook/explanation/what-is-pep-517.md) replaced `setup.py`-only builds with a standard hook API and introduced [pyproject.toml](https://pydevtools.com/handbook/reference/pyproject.toml.md).
- [PEP 621](https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility.md) standardized project metadata inside `pyproject.toml`, which uv, Poetry, and Hatch all now support.

## Learn More

- [peps.python.org](https://peps.python.org) is the full index of all PEPs
- [What is PEP 8?](https://pydevtools.com/handbook/explanation/what-is-pep-8.md) covers the style guide every Python linter enforces
- [What is PEP 484?](https://pydevtools.com/handbook/explanation/what-is-pep-484.md) covers the foundation of Python's type-checking ecosystem
- [What is PEP 517/518?](https://pydevtools.com/handbook/explanation/what-is-pep-517.md) explains the modern packaging build interface
- [What is PEP 621?](https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility.md) explains standardized project metadata in pyproject.toml
