Skip to main content

UK train times from your terminal

Project description

choo

UK train times from your terminal.

Install

uvx choo

Or install permanently:

pip install choo

Quick start

# 1. Get API credentials
choo auth

# 2. Set up your commute
choo config alias.home HIB
choo config alias.work LBG

# 3. Go
choo              # next trains home → work
choo choo         # reverse: work → home
choo KGX YRK     # King's Cross to York

Commands

choo / choo next [FROM] [TO]

Show next trains between two stations. Defaults to homework aliases.

choo                                 # home → work, now
choo --on tomorrow                   # home → work, tomorrow
choo PAD BRI                         # Paddington to Bristol
choo next PAD BRI --at 08:30         # departing around 08:30
choo next PAD BRI --on monday        # next Monday
choo next PAD BRI --count 10         # show 10 results

No trains running? Choo automatically shows tomorrow's first services.

choo choo

Reverse commute — next trains from workhome.

choo choo                            # heading home
choo choo --on friday                # Friday evening trains

choo board [FROM] [TO]

Departure board for a station. Same arguments as next, but shows all services in a table.

choo board KGX                       # all departures from King's Cross
choo board KGX YRK                   # filtered to York
choo board KGX --arrivals            # arrivals instead
choo board --on tomorrow             # defaults to home station

choo service UID

Full calling pattern for a service. Get the UID from board output.

choo service C41053
choo service C41053 --on 2026-03-16

choo config

Get/set configuration, like git config.

choo config alias.home HIB           # set station alias
choo config alias.work LBG
choo config next.count 10            # default number of results
choo config alias.home               # get a value
choo config                          # list all
choo config --unset alias.home       # remove

choo auth

Guided setup for RTT API credentials. Walks you through registration at api-portal.rtt.io and verifies your credentials.

choo stations update

Fetch the latest station data from GitHub (2,599 UK stations).

Flags

Flag Short Description
--at -t Time filter (HH:MM)
--on -d Date filter (today, tomorrow, day name, or YYYY-MM-DD)
--count -n Number of results (default: 5, configurable via next.count)
--arrivals Show arrivals instead of departures
--json Output JSON for scripting
--verbose -v Enable debug logging

Station resolution

Stations can be specified as:

  • CRS codes: KGX, PAD, BRI (3 uppercase letters)
  • Aliases: home, work (see choo config)
  • Fuzzy names: "kings cross", paddington — matched against 2,599 stations with suggestions for ambiguous input

Configuration

Config file: ~/.config/choo/config.json (XDG via platformdirs)

Key Example Description
alias.home HIB Station alias
alias.work LBG Station alias
alias.* any CRS Custom aliases
next.count 5 Default result count

Environment variables (override config):

Variable Description
CHOO_AUTH API credentials (user:password)
RTT_AUTH API credentials (fallback)
CHOO_ALIAS_* Station aliases (e.g., CHOO_ALIAS_HOME=HIB)

traintimes SDK

Choo is built on the traintimes Python SDK, which wraps the RealTimeTrains Pull API.

from traintimes.sdk import Location, Service

# Departures from Highbury & Islington
response = Location("HIB").get()
for svc in response.services:
    print(svc.service_uid, svc.location_detail.gbtt_booked_departure)

# Full calling pattern for a service
service = Service("C41053", datetime.date.today()).get()
for loc in service.locations:
    print(loc.description, loc.gbtt_booked_departure)

The SDK provides Pydantic models for all API responses — see traintimes/models.py.

Credits

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

choo-0.1.2.tar.gz (35.9 kB view details)

Uploaded Source

Built Distribution

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

choo-0.1.2-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file choo-0.1.2.tar.gz.

File metadata

  • Download URL: choo-0.1.2.tar.gz
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for choo-0.1.2.tar.gz
Algorithm Hash digest
SHA256 eda23f4cdd0eb9b251999314927d5c95172f01165331ec21540ec531b107f1e1
MD5 1d388b6fb20546f25d50781a7d568f8d
BLAKE2b-256 7f81d9c975df44533e941b47141bd0090fb6fd31a0977fe3b292ac513efe6c13

See more details on using hashes here.

Provenance

The following attestation bundles were made for choo-0.1.2.tar.gz:

Publisher: publish.yml on tomviner/choo

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

File details

Details for the file choo-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: choo-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for choo-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f5b565f946a1cade5819b32dbc67eb1a55e4c54989cecf1e79cebb6fb930ef96
MD5 3ae3368d86fb16d67fcad2360e11596f
BLAKE2b-256 a797c543f205847d5a36e5b084e775660f55dab82f282be2a9e290585758ff7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for choo-0.1.2-py3-none-any.whl:

Publisher: publish.yml on tomviner/choo

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