Skip to main content

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!

  1. Increment the version number (can use semantic versioning etc.) in pyproject.toml
  2. Run python3 -m build, which will create new tar.gz files in the dist directory corresponding to the new version number
  3. Run add-dots.sh, which just handles the annoying-ness of JupyterHub's interface not allowing me to see dotfiles
  4. Push to github like usual

1.1 Testing the PyPI Version

  1. Create a new virtual environment with e.g. python3 -m venv .venv
  2. Activate that environment with source .venv/bin/activate
  3. Install jah into the virtual environment with python3 -m pip install jah
  4. Start a Python REPL shell with python
  5. Try importing and using jah
  6. Use quit() to exit the Python REPL shell
  7. Uninstall with python3 -m pip uninstall jah
  8. 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)

Source distribution for jah 1.3
File Size Uploaded
jah-1.3.tar.gz 261.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jah 1.3
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.3 This release

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page