Skip to main content

CLI for I-66 inside-the-Beltway toll lookups

Project description

i66tolls

Vibe coded command-line tool for checking tolls on I-66 inside the Capital Beltway (between I-495 and the Theodore Roosevelt Bridge).

Run it with no arguments for an interactive wizard, or pass entry/exit IDs and flags for a quick lookup.

Data comes from VDOT's official toll calculator at vai66tolls.com.

Requirements

Install

From PyPI:

pip install i66tolls

From source:

pip install -e .

Publishing (maintainers)

One-time PyPI setup

  1. Create an account at pypi.org and register the project name i66tolls.
  2. On the PyPI project page, add a trusted publisher:
    • PyPI project name: i66tolls
    • Owner: alanjschoen
    • Repository: i66tolls
    • Workflow: publish.yml
    • Environment: pypi (optional but recommended)
  3. In GitHub repo Settings → Environments, create an environment named pypi (used by the publish workflow).

Release a new version

  1. Bump version in pyproject.toml.
  2. Commit, tag, and push:
git tag v0.1.0
git push origin main --tags

The Publish workflow builds the package and uploads it to PyPI.

Local build test

pip install -e ".[dev]"
python -m build
python -m twine check dist/*

Manual upload (if needed):

python -m twine upload dist/*

Interactive mode

i66tolls
  1. Directioncurrent, eastbound, or westbound
    • current uses the system clock. If no toll period is active, prints a message and exits.
    • Eastbound/westbound continues to entry selection for that direction.
  2. Entry — choose an entry interchange
  3. Exit — choose an exit interchange
  4. Whencurrent or historic (skipped if you already chose current in step 1)
  5. Date/time — for historic lookups (Typer has no datetime picker; InquirerPy prompts for MM/DD/YYYY HH:MM AM/PM)

Use ↑/↓ and Enter to select. Press to go back to the previous step (even for values pre-filled from the command line).

Non-interactive mode

Provide entry and exit IDs (and any other options) to skip prompts:

i66tolls 1 10 -c
i66tolls 1 10 --current
i66tolls 16 1 -w -c
i66tolls 1 10 -t "06/10/2026 08:00 AM"

When both entry and exit are given, direction is inferred automatically.

Options

Flag Description
-e, --eastbound Eastbound route
-w, --westbound Westbound route
-c, --current Use the current toll rate
-t, --time Historic date/time (MM/DD/YYYY HH:MM AM/PM, US/Eastern)

Conflicts

  • --eastbound and --westbound cannot be used together
  • --current and --time cannot be used together
  • Provide both entry and exit IDs, or neither

Partial arguments (e.g. only entry) require a TTY for the interactive wizard.

Toll hours

Direction Hours
Eastbound (toward DC) Weekdays 5:30–9:30 AM
Westbound (toward Beltway) Weekdays 3:00–7:00 PM

Outside these windows, current tolls show as unavailable. Federal holidays are also toll-free.

Entry and exit IDs

Run i66tolls and browse the interactive lists, or query the API directly:

curl -s "https://vai66tolls.com/Index?handler=BeginIntPartial&rbEastVal=true" | grep option
curl -s "https://vai66tolls.com/Index?handler=ExitIntPartial&bIntId=1&rbEastVal=true" | grep option

Data source

This tool uses the same backend API as vai66tolls.com. Amounts are estimates and can change before you reach the road.

reference/tolls.py is the original Alexa skill that used a SmarterRoads XML feed. That public endpoint is no longer available.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

i66tolls-0.1.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

i66tolls-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file i66tolls-0.1.0.tar.gz.

File metadata

  • Download URL: i66tolls-0.1.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for i66tolls-0.1.0.tar.gz
Algorithm Hash digest
SHA256 07e40f915aaba68da0304c0c64119f9fd1cfbfe1cf91e6c5863f0c62bf413b6e
MD5 f7f18e3b17e2fbc8568dbb2c07734511
BLAKE2b-256 434cebe18ab7f7944966a51f63f78428ce990eb071e75a14d65a8ee2e95ea54c

See more details on using hashes here.

Provenance

The following attestation bundles were made for i66tolls-0.1.0.tar.gz:

Publisher: publish.yml on alanjschoen/i66tolls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file i66tolls-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: i66tolls-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for i66tolls-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4720fd99795bb4e7b60061318be19d9a68b036957e6cd31e5b75db8d818a7fd1
MD5 da5d81cb6039ba8c06ab82371674a0ae
BLAKE2b-256 8dd46407d74c2d7bd5b9041e9e642ab735f5c5b79c9b383a2ea8a341bb349ef5

See more details on using hashes here.

Provenance

The following attestation bundles were made for i66tolls-0.1.0-py3-none-any.whl:

Publisher: publish.yml on alanjschoen/i66tolls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page