Developer Documentation¶
This section explains how pypi-profile works internally. It is aimed at anyone who wants to
understand the code, fix a bug, add a feature, or build on top of the tool.
What the tool does¶
pypi-profile is a profile site generator for PyPI package publishers. It lets you:
- Keep your profile data in a single TOML file (
pypi_profile.toml). - Generate a live or static website from that data.
- Cryptographically prove you control external accounts (GitHub, Mastodon, etc.).
- Publish your profile as a Python package that others can install.
The code is structured as a uv workspace with four sub-packages:
matthewdeanmartin_pypi/
├── pypi_profile/ ← main CLI, server, and plugin host
├── john_doe/ ← example profile plugin (test fixture)
├── matthewdeanmartin/ ← author's own profile plugin (real-world example)
└── pypi_ds/ ← Jinja2 design system and static assets
Topics¶
- Architecture overview — how the modules relate to each other
- Data model — TOML schema and Pydantic models
- Server and templating — FastAPI routes, Jinja2 templates, static files
- Signing and verification internals — claims, Ed25519, minisign
- Plugin system — pluggy integration and profile packages