A regular digest of what's happening in CPython, from merged PRs and PEP decisions to community discussions and upcoming events.
Live at coredispatch.xyz
# Install dependencies
cd backend && uv sync && cd ..
cd frontend && bun install && cd ..
# Add your GitHub token
echo 'GITHUB_TOKEN=ghp_...' > backend/.env./scripts/dev.shThis starts the FastAPI backend on :8000 and the Astro frontend on :4321. The frontend proxies /api requests to the backend.
cd backend && uv run python -m app.pipeline.runThis fetches data from all sources and writes a YAML file to drafts/. Preview it at http://localhost:4321/staging.
Every Friday, a new edition's skeleton is generated automatically by GitHub Actions and opened as a draft PR. Editors merge the draft and then review, add notes and picks, and take a solid editorial pass on main. Once the draft is ready (usually by the following Thursday), it's moved from drafts/ to editions/ to publish. Buttondown picks up the new edition via RSS and sends it to subscribers.
Each edition is a YAML file with auto-generated and hand-curated sections.
These are populated by the pipeline every Friday:
| Section | Source |
|---|---|
| Upcoming Releases | peps.python.org release schedule iCal |
| Official News | Python Blog + PyPI Blog (configured in official.yml) |
| PEP Updates | Merged PRs in python/peps that change a PEP's status, plus newly created PEPs |
| Steering Council Updates | PSC meeting summaries from discuss.python.org/c/committers |
| Welcome to the Team | New core team members and promotions from discuss.python.org/c/committers |
| Merged PRs | Draft is created with high-traffic PRs but this needs manual curation to remove noise and add context |
| Discussion | Most active PEP discussions on Discourse, ranked by new replies. Newly created PEP discussions are always included. |
| Core Team Musings | Personal blogs and podcasts (configured in core-blogs.yml) |
| Upcoming CFPs & Conferences | pythondeadlin.es + PyCon event calendar |
These are added during editorial review:
| Section | Description |
|---|---|
| Community | Links, talks, and tools submitted by the community — items with the section set to picks in the YAML |
| One More Thing | A quote or fun post — top-level quote field in the YAML |
| Editorial Notes | The intro paragraph — top-level editorial_notes field |
| Credits | Who put this edition together — top-level credits field |
Found something the Python community should know about? Open a GitHub issue with the link, a title, and which section it belongs in. Accepted submissions appear in the Community section.
Have a great quote for One More Thing? Submit it as an issue with the text, author, and a link to the source.
Are you a core team member or regular Python contributor with a blog? Open a PR to add your feed to core-blogs.yml:
- name: Your Name
url: https://yourblog.com/tags/python/feed.xmlNote: If you have tags or categories, it's best to link to a feed that filters for Python-related content. Otherwise, all your posts will be included, which may not be relevant to the newsletter. We will review the feed and may remove posts that are not relevant.
If an official Python project has a blog (like the PSF or a working group), open a PR to add it to official.yml.
Want to help curate and edit the next edition? Here's what we need help with!
- Write editorial notes — a 2-3 sentence intro that ties the highlights together. What's the big story this week?
- Remove noise — delete items that aren't interesting or relevant. Less is more.
- Add community picks — add items with
section: picksfrom submitted issues or things you've found - Add a quote — fill in the
quotefield with something fun, insightful, or mass-reply-inducing - Add credits — list everyone who contributed to this edition in the
creditsfield - Review PR titles — the auto-generated PR titles are raw GitHub titles. Rewrite to be human-readable when needed.