JAH (Jeff's AutoHinter)
For data science and public policy courses at Georgetown. This repo combines two formerly-separate repos: one for the Python package that gets imported in each student's notebook, and another for the documentation of the package.
1 Publishing to PyPI
There are a few steps where, if one is skipped, the project won't update on PyPI!
- Increment the version number (can use semantic versioning etc.) in
pyproject.toml - Run
python3 -m build, which will create newtar.gzfiles in thedistdirectory corresponding to the new version number - Run
add-dots.sh, which just handles the annoying-ness of JupyterHub's interface not allowing me to see dotfiles - Push to github like usual
1.1 Testing the PyPI Version
- Create a new virtual environment with e.g.
python3 -m venv .venv - Activate that environment with
source .venv/bin/activate - Install
jahinto the virtual environment withpython3 -m pip install jah - Start a Python REPL shell with
python - Try importing and using
jah - Use
quit()to exit the Python REPL shell - Uninstall with
python3 -m pip uninstall jah - Deactivate the virtual environment by just typing
deactivate
2 Package Documentation
The documentation of the package uses Zensical. The goal of Zensical, in theory, is to streamline the conversion of codebases into documentation (for example, by automatically converting in-code comment strings into pieces of the documentation). Here we don't use thse fancy features, so it essentially just becomes a... static site publishing system like Jekyll.
All of the Zensical operations here should be run within the custom virtual environment for the docs, by first running:
source .venv/bin/activate
You should then see a (jag) prefix in the Terminal shell, indicating that you're working within this virtual environment.
2.1 Previewing Documentation
The documentation pages are drawn from the docs subfolder. To preview what it looks like, run
zensical serve
The main configuration of the site is in zensical.toml (as opposed to pyproject.toml, which contains the configuration for the Python package itself!)
2.2 Publishing Documentation
Once the documentation is ready to be pushed, you can build the Zensical site structure using
zensical build
And, if that runs without error, you can then push it to GitHub via
git add -A .
git commit -m "Your message here"
git push
The updates should then be reflected on https://jjacobs.me/jah shortly thereafter.
Metadata
Release files for jah 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jah-1.3.tar.gz | 261.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jah-1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 266.4 kB
Release files / jah-1.3.tar.gz
| Download URL | jah-1.3.tar.gz |
|---|---|
| Size | 261.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf20717451478af060af6e3cb33c4b89c6a099a7b9af8c040fb417d16390980a
|
|
BLAKE2b-256 checksum How to use checksums |
89623d09c9d103637cebf4df7ba52f46a5d570844841b3a8230c15975a86cebf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 7, 2026.
Transparency logRelease files / jah-1.3-py3-none-any.whl
| Download URL | jah-1.3-py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf97cfbeb5b989281c8cd5fef471fb9a218cb134a1004641eaf1755fb18fca7f
|
|
BLAKE2b-256 checksum How to use checksums |
260f4fd99578c3d6812225a33cf42df0edc9a6f1e87cde93e1beef811a585733
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 7, 2026.
Transparency log