Skip to main content

choo

UK train times from your terminal.

choo to go to work. choo choo to come home.

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 "Highbury & Islington"
choo config alias.work "London Bridge"

# 3. Go
choo              # next trains home → work
choo choo         # reverse: work → home
choo "kings cross" york     # fuzzy station names work too

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 paddington bristol              # fuzzy station names
choo next paddington bristol --at 08:30   # departing around 08:30
choo next KGX YRK --on monday        # CRS codes work too
choo next KGX YRK --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 choo board                      # departure board from work

choo board [FROM] [TO]

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

choo board "kings cross"             # all departures from King's Cross
choo board "kings cross" york        # 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 "Highbury & Islington"   # set station alias
choo config alias.work "London Bridge"
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 or "Highbury & Islington" Station alias
alias.work LBG or "London Bridge" 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

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.4.tar.gz (36.2 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.4-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: choo-0.1.4.tar.gz
  • Upload date:
  • Size: 36.2 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.4.tar.gz
Algorithm Hash digest
SHA256 5060270fa8a860a1c2abd8cbb44b84f649d2b9da7a81b89257ea2dc1832799e4
MD5 0d06fd67d852c5dcac78d0d819806a23
BLAKE2b-256 8412138c29bbc221f39c0489a5fd09f1176659f20d2d349c946ed157f5b5535a

See more details on using hashes here.

Provenance

The following attestation bundles were made for choo-0.1.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: choo-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 39.0 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a4586e9c72f3a827d40f1bdd1089ee986ce92f85c597a1d50c8e1d1f13c2fdbb
MD5 c3f89306ca4dbf43355e88607b84a403
BLAKE2b-256 a6082ed6c66ce4f16a18f5957a2c8ef11a52b68656636b27b723eb1d631dd940

See more details on using hashes here.

Provenance

The following attestation bundles were made for choo-0.1.4-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.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

1 file

Supported by

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