W3C Design Tokens
3 filesCross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
PyPI — the Python Package Index — is the official third-party software repository for the Python language and the default source from which `pip install <name>` resolves packages. PyPI is operated under the Python Software Foundation (PSF) and has its own USPTO-registered trademarks ("PyPI" and "Python Package Index") and a distinct "blocks logo" mark that is separate from the two-snake PSF / Python language identity. The voice is institutional and registry-direct: package pages, version histories, advisories, and the trust metadata that pip and other installers consume. Visually, PyPI shares the Python-family blue (#3775A9) and yellow (#FFD43B) anchors but expresses them through its own blocks-logo mark.
Use the [email protected] brand from brand-atoms.com.
Fetch https://brand-atoms.com/dist/brands/pypi/1.0.0/json/brand.json
and apply its role mappings (primary, accent, identity, etc.),
reference the fonts in references.fonts, and honor every rule where
severity is "error". Surface any deviation you choose to make.
All converter outputs for [email protected]. Served from
/dist/brands/pypi/1.0.0/.
Cross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
Plain JSON mirror of the resolved brand — palette, fonts, roles, rules.
CSS custom properties on :root with prefers-color-scheme dark.
SCSS variables + Sass maps for swatches, roles, and fonts.
Tailwind v3 theme.extend.colors + fontFamily.
Figma Tokens plugin JSON (Tokens Studio compatible).
Swift enums for SwiftUI / UIKit color + font tokens.
Kotlin objects for Jetpack Compose color + typography tokens.
Human-readable brand guide. Same source as the on-page Brand Guide.
Inline rendering of the Markdown brand guide. Same source as the
markdown/brand-guide.md download.
PyPI — the Python Package Index — is the official third-party software repository for the Python language and the default source from which pip install <name> resolves packages. PyPI is operated under the Python Software Foundation (PSF) and has its own USPTO-registered trademarks ("PyPI" and "Python Package Index") and a distinct "blocks logo" mark that is separate from the two-snake PSF / Python language identity. The voice is institutional and registry-direct: package pages, version histories, advisories, and the trust metadata that pip and other installers consume. Visually, PyPI shares the Python-family blue (#3775A9) and yellow (#FFD43B) anchors but expresses them through its own blocks-logo mark.
Tags: pypi, python, package-manager, psf, registry, brand, blue, yellow
PyPI (Python Package Index) · [email protected] · Proprietary — All Rights Reserved
PyPI brand palette anchored on PyPI Blue (#3775A9) — the Python-family blue inherited from the PSF logo, paired with Python Yellow (#FFD43B) as the secondary accent and a clean light-grey UI scale. PyPI is a registered trademark of the Python Software Foundation and the "blocks logo" is its distinguishing mark, separate from the two-snake PSF / Python language identity even though both share the blue+yellow color anchor.
| Role | Font | License | Classification |
|---|---|---|---|
heading |
Inter ([email protected]) |
OFL-1.1 | sans-serif |
body |
Inter ([email protected]) |
OFL-1.1 | sans-serif |
mono |
Source Code Pro ([email protected]) |
OFL-1.1 | monospace |
| ID | Name | Value |
|---|---|---|
pypi-blue |
PyPI Blue | #3775A9 |
pypi-blue-dark |
PyPI Blue Dark | #1E415E |
pypi-yellow |
PyPI Yellow | #FFD43B |
pypi-yellow-dark |
PyPI Yellow Dark | #FFC331 |
pypi-black |
PyPI Black | #0E1217 |
pypi-charcoal |
PyPI Charcoal | #1C232C |
pypi-slate |
PyPI Slate | #3D4554 |
pypi-gray |
PyPI Gray | #6B7280 |
pypi-light-gray |
PyPI Light Gray | #D5D9DE |
pypi-off-white |
PyPI Off-White | #F4F5F7 |
pypi-white |
PyPI White | #FFFFFF |
pypi-error |
PyPI Error Red | #BD4147 |
| Role | Swatch | Hex |
|---|---|---|
background |
pypi-white |
#FFFFFF |
surface |
pypi-off-white |
#F4F5F7 |
surface-elevated |
pypi-white |
#FFFFFF |
text-primary |
pypi-blue-dark |
#1E415E |
text-secondary |
pypi-slate |
#3D4554 |
text-tertiary |
pypi-gray |
#6B7280 |
primary |
pypi-blue |
#3775A9 |
primary-hover |
pypi-blue-dark |
#1E415E |
accent |
pypi-yellow |
#FFD43B |
accent-hover |
pypi-yellow-dark |
#FFC331 |
warning |
pypi-yellow-dark |
#FFC331 |
warning-hover |
pypi-yellow |
#FFD43B |
error |
pypi-error |
#BD4147 |
success |
pypi-blue |
#3775A9 |
border |
pypi-light-gray |
#D5D9DE |
| Role | Swatch | Hex |
|---|---|---|
background |
pypi-black |
#0E1217 |
surface |
pypi-charcoal |
#1C232C |
surface-elevated |
pypi-charcoal |
#1C232C |
text-primary |
pypi-white |
#FFFFFF |
text-secondary |
pypi-light-gray |
#D5D9DE |
text-tertiary |
pypi-yellow |
#FFD43B |
primary |
pypi-yellow |
#FFD43B |
primary-hover |
pypi-yellow-dark |
#FFC331 |
accent |
pypi-blue |
#3775A9 |
accent-hover |
pypi-blue-dark |
#1E415E |
warning |
pypi-yellow |
#FFD43B |
warning-hover |
pypi-yellow-dark |
#FFC331 |
error |
pypi-error |
#BD4147 |
success |
pypi-blue |
#3775A9 |
border |
pypi-slate |
#3D4554 |
| Role | Swatch | Hex |
|---|---|---|
identity |
pypi-blue |
#3775A9 |
on-identity |
pypi-white |
#FFFFFF |
primary |
pypi-blue |
#3775A9 |
primary-hover |
pypi-blue-dark |
#1E415E |
accent |
pypi-yellow |
#FFD43B |
accent-hover |
pypi-yellow-dark |
#FFC331 |
mark |
pypi-blue |
#3775A9 |
background |
pypi-white |
#FFFFFF |
surface |
pypi-off-white |
#F4F5F7 |
text-primary |
pypi-blue-dark |
#1E415E |
text-secondary |
pypi-slate |
#3D4554 |
error |
pypi-error |
#BD4147 |
success |
pypi-blue |
#3775A9 |
border |
pypi-light-gray |
#D5D9DE |
| Role | Font role key |
|---|---|
display |
heading |
prose |
body |
code |
mono |
colorChoice → roles.colors.identityThe PyPI blocks-logo mark and the Python-family identity it inherits are anchored on the blue + yellow pairing. Substituting slate, gray, or red for the identity color breaks the registered-mark expression and conflicts with the PSF Trademark Usage Policy's reproduction requirements.
contextRestriction → trademark.usePer pypi.org/trademarks/: "Any other use by any other party is prohibited." Use of "PyPI" as a generic synonym for a package registry, as a product-name prefix without PSF approval, on paid merchandise without PSF approval, or substituting the PSF two-snake logo for the PyPI blocks logo (or vice versa) all cross policy lines — the two marks have separate registrations and signify different things.
forbiddenTreatment → logoThe PSF Trademark Usage Policy requires that Foundation logos be reproduced "with the right colors and fonts" and that derived versions require PSF approval before use. The PyPI blocks logo is defined by the specific arrangement and color assignment of its blocks; recombining the blocks, mixing the colors across blocks, recoloring, or rotation violates the policy.
contrastRatio → text-primarybackground4.5WCAG-AAPyPI Blue Dark (#1E415E) on PyPI White exceeds 9:1 — well above the WCAG AA threshold for body text on the registry's package pages and version histories.
accessibilityRequirement → *WCAG-AA1.4.3WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. PyPI is the registry of record for the Python ecosystem; broad legibility is a load-bearing requirement.
contrastRatio → roles.colors.accentbackground3WCAG-AA-largePyPI Yellow (#FFD43B) on White sits around 1.5:1 — does NOT clear WCAG AA or AA-large for text. Reserve the yellow for large surfaces, callout backgrounds with dark text on top, the mark itself, and accent illustration; use PyPI Blue or PyPI Blue Dark for any interactive or text-bearing foreground.
fontPairing → typography.headingbody1.5pypi.org uses a single humanist sans across heading and body. Maintain at least a 1.5× heading-to-body ratio on package detail pages, search results, and release history listings.
compositionConstraint → roles.colors.identityPyPI Blue pairs cleanly with the white canvas, the Python-family yellow, and its own deeper navy. Placing it directly adjacent to PyPI Error Red mixes registered-mark identity with status semantics and flattens the brand's institutional voice — reserve error red for advisories and yanked-release callouts.
Proprietary — All Rights Reserved2026-05-19python@1 atom.Generated by the brand-atoms converter. Source: [email protected] from the encyclopedia.
Every block below renders from the resolved palette + font references on this brand. Swap the brand and the same template re-themes — no per-brand component code required.
Body copy renders in the brand's prose font on the brand's background.
Inline links and highlighted phrases pick up
the brand's primary and highlight roles. Code spans like brand.references.palette
fall back to the monospace face.
A blockquote uses the brand's accent color as its rule. Useful for pulling tagline copy out of running prose.
Neutral status — provides supplemental context without urgency. Uses the brand's primary as the rule.
Confirms a completed action — palette role success determines the rule color.
Calls out something that needs attention but isn't an error — palette role warning.
Surfaces a failure that blocks progress — palette role error. Use sparingly.
| Role | Resolves to | Mode |
|---|---|---|
| primary | brand color #1 | light + dark |
| accent | brand color #2 | light + dark |
| warning | brand warning | light + dark |
| error | brand error | light + dark |
[email protected][email protected][email protected][email protected]Brand-level role overrides on top of palette-default mappings. Each role resolves to a concrete swatch or font reference.
→ pypi-yellow #FFD43B → pypi-yellow-dark #FFC331 → pypi-white #FFFFFF → pypi-light-gray #D5D9DE → pypi-error #BD4147 → pypi-blue #3775A9 → pypi-blue #3775A9 → pypi-white #FFFFFF → pypi-blue #3775A9 → pypi-blue-dark #1E415E → pypi-blue #3775A9 → pypi-off-white #F4F5F7 → pypi-blue-dark #1E415E → pypi-slate #3D4554 → mono Source Code Pro → heading Inter → body Inter → pypi-yellow → pypi-yellow-dark → pypi-white → pypi-light-gray → pypi-error → pypi-blue → pypi-blue-dark → pypi-blue → pypi-off-white → pypi-white → pypi-blue-dark → pypi-slate → pypi-gray → pypi-yellow-dark → pypi-yellow → pypi-blue → pypi-blue-dark → pypi-black → pypi-slate → pypi-error → pypi-yellow → pypi-yellow-dark → pypi-blue → pypi-charcoal → pypi-charcoal → pypi-white → pypi-light-gray → pypi-yellow → pypi-yellow → pypi-yellow-dark colorChoice roles.colors.identity allowed pypi-blue, pypi-yellow forbidden pypi-slate, pypi-gray, pypi-error The PyPI blocks-logo mark and the Python-family identity it inherits are anchored on the blue + yellow pairing. Substituting slate, gray, or red for the identity color breaks the registered-mark expression and conflicts with the PSF Trademark Usage Policy's reproduction requirements.
contextRestriction trademark.use forbiddenContexts implied-endorsement, generic-name-for-any-package-registry, product-name-prefix-without-approval, paid-merchandise-without-approval, blocks-logo-substituted-for-snakes-logo, snakes-logo-substituted-for-blocks-logo Per pypi.org/trademarks/: "Any other use by any other party is prohibited." Use of "PyPI" as a generic synonym for a package registry, as a product-name prefix without PSF approval, on paid merchandise without PSF approval, or substituting the PSF two-snake logo for the PyPI blocks logo (or vice versa) all cross policy lines — the two marks have separate registrations and signify different things.
forbiddenTreatment logo treatments recolored, rotated, skewed, stretched, derived-without-approval, drop-shadow, blocks-recombined, blocks-color-mixed The PSF Trademark Usage Policy requires that Foundation logos be reproduced "with the right colors and fonts" and that derived versions require PSF approval before use. The PyPI blocks logo is defined by the specific arrangement and color assignment of its blocks; recombining the blocks, mixing the colors across blocks, recoloring, or rotation violates the policy.
contrastRatio text-primary against background minRatio 4.5 standard WCAG-AA PyPI Blue Dark (#1E415E) on PyPI White exceeds 9:1 — well above the WCAG AA threshold for body text on the registry's package pages and version histories.
accessibilityRequirement * standard WCAG-AA criterion 1.4.3 WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. PyPI is the registry of record for the Python ecosystem; broad legibility is a load-bearing requirement.
contrastRatio roles.colors.accent against background minRatio 3 standard WCAG-AA-large PyPI Yellow (#FFD43B) on White sits around 1.5:1 — does NOT clear WCAG AA or AA-large for text. Reserve the yellow for large surfaces, callout backgrounds with dark text on top, the mark itself, and accent illustration; use PyPI Blue or PyPI Blue Dark for any interactive or text-bearing foreground.
fontPairing typography.heading requires body minSizeRatio 1.5 pypi.org uses a single humanist sans across heading and body. Maintain at least a 1.5× heading-to-body ratio on package detail pages, search results, and release history listings.
compositionConstraint roles.colors.identity pairsWith pypi-white, pypi-off-white, pypi-yellow, pypi-blue-dark doesNotPairWith pypi-error PyPI Blue pairs cleanly with the white canvas, the Python-family yellow, and its own deeper navy. Placing it directly adjacent to PyPI Error Red mixes registered-mark identity with status semantics and flattens the brand's institutional voice — reserve error red for advisories and yanked-release callouts.
Proprietary — All Rights Reserved2026-05-19