Catalog PyPI
Back to packageRELEASE DETAILS

0.4.0

PyPI

afterpython

CLI tool to streamline Python package maintenance and generate a dedicated project website

ci/cdcli-tooldeveloper-toolsdocumentationmystmdpackage-maintenanceproject-websitepython-packagingsemantic-releasestatic-site-generator
Published1 Oct 2026
Direct dependencies16
Transitive dependenciesNot calculated

README

Version 0.4.0 documentation

AfterPython: Python Package Maintenance Toolkit and Project Website Generator

afterpython Downloads PyPI PyPI - Support Python Versions Discussions Ask DeepWiki View Code Wiki

Problem

Going from writing Python code to publishing and maintaining a package is time-consuming. First-time maintainers must learn multiple tools and concepts, e.g. MyST, SemVer, CI/CD (pre-commit hooks, GitHub workflows), and they often spend hours just to deploy a documentation site whereas well-resourced projects like PyTorch and Scikit-Learn have dedicated websites that serve as their project hubs.

Solution

afterpython automates the tedious parts of Python package maintenance and generates a project website for building community and hosting content such as documentation, blog posts, tutorials, examples and more — empowering more developers to write packages with ease.


afterpython is a CLI tool that abstracts away the complexity of content writing, website deployment, and package release/maintenance by providing an opinionated set of modern tools — so you don’t have to spend time selecting or learning anything beyond the basics.

Core Features

  • Write content directly in MyST Markdown or Jupyter Notebook
  • Go from writing to website deployment in minutes — no need to learn any of the underlying tools
  • Centralize all your content in a modern, unified project website — from documentation to blog posts
  • Zero-config orchestration — Pre-configured modern tooling with sane defaults (see Tech Stack), so you can start maintaining packages immediately without learning each tool
  • ⚡ Full-text search across ALL your content in your website — docs, blogs, tutorials, everything
  • Export content as PDF — for example, combine all blog posts into a single PDF file
  • 🤖 Embedded AI Chatbot that answers questions directly using an in-browser LLM — at no cost

Project Website

The project website for afterpython is created using afterpython itself. See the website.

Project Website

You can create your own website too and deploy it to GitHub Pages in less than a minute! See Quickstart.


Installation

# install afterpython as a dev dependency
uv add --dev afterpython

# initialize afterpython
ap init

CLI Commands

# show all commands
ap --help

# or use terminal UI (TUI)
ap tui

Tech Stack

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 16

Native requirements
16 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
click>=8.5.0runtime
trogon
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
trogon>=0.6.0runtime
httpx2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
httpx2>=2.13.1runtime
tomlkit
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
tomlkit>=0.15.1runtime
ruamel-yaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
ruamel-yaml>=0.19.1runtime
gitpython
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
gitpython>=3.2.0runtime
python-dotenv
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.2.3runtime
pyproject-metadata
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
pyproject-metadata>=0.12.1runtime
jupytext
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
jupytext>=1.19.5runtime
mystmd
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
mystmd>=1.11.0runtime
pdoc
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
pdoc>=16.0.0runtime
ruff
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.16.9runtime
prek
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
prek>=0.5.4runtime
ty
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
ty>=0.0.84runtime
git-cliff
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
git-cliff>=2.14.2runtime
marimo
Environment
{
  "extras": "lsp,recommended",
  "marker": "extra == \"marimo\"",
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
marimo[lsp,recommended]>=0.25.0; extra == "marimo"runtime

Distribution files

2 collected
afterpython-0.4.0-py3-none-any.whl

bdist_wheel · 97.01 KB · Python py3

Source file
afterpython-0.4.0.tar.gz

sdist · 68.68 KB · Python source

Source file

Repository

PENDING
afterpythonorg/afterpython

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 21:14 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:dc0259b754b289c4bef0b444d407fb4ac5a4075fa85bd01cfbd03e18603f8566

Other collected versions

View all collected versions →