Skip to content

Release Notes

anonymous44401 edited this page Jul 27, 2026 · 23 revisions

Contents

2026 Releases

Version Description Date
2027.1.2 Updated get_live refresh time 27/07/2026
2027.1.1 Minor performance improvements 12/07/2026
2027.1.0 Introduced full support for the Next Generation Realtime Trains API 03/06/2026

2025 Releases

Version Description Date
2025.3.3 Added a way to get the requested location 14/08/2025
2025.3.2 Updated dependency specification 22/05/2025
2025.3.1 Updated the get_live method 01/05/2025
2025.3.0 Introduced the get_live method 30/04/2025
2025.2.2 Updated display order of information in get_station 03/03/2025
2025.2.1 Fixed a bug causing departures and arrivals to duplicate in get_station 18/02/2025
2025.2.0 Introduced new get_station method 01/02/2025
2025.1.0 Introduced realtime-trains-py 02/01/2025

For those that like to keep up with the latest features, our beta and release candidate releases will be published to the realtime-trains-py Test PyPi. Check it out here.

Release notes for beta and release candidate releases can be found in the release notes section in the repository.

Check out the roadmap to see what's coming to realtime-trains-py in the future.


Version 2027.1.2

Release Notes

Version 2027.1.2 (Launched on 27/07/2026 for all modes).

This release updated the refresh frequency of the get_live method.

Check out the source code for this release.

Code Changes:

  • Code Enhancements

    • Updated refresh frequency for get_live: now every 90 seconds instead of every 60 seconds.
  • Refactoring

    • Improved internal file structure

Wiki Changes:

  • Updated older documentation containing the wrong information

Other Changes:

  • None

Bugs

Fixes:

  • None

Awaiting Allocation:

  • None

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2027.1.1...v2027.1.2

Other associated releases

  • None

Version 2027.1.1

Release Notes

Version 2027.1.1 (Launched on 12/07/2026 for all modes).

This release brings a few minor performance improvements to realtime-trains-py.

Check out the source code for this release.

Code Changes:

  • New features

    • Implemented requests sessions for the get_live method
  • Code Enhancements

    • Added a TIPLOC validator
    • Updated the time validator
      • Times can now be provided with colons ("16:55" and "1655" are now both valid)
  • Error Handling

    • Added an InvalidTIPLOCProvided error
    • Updated the InvalidTimeProvided error
  • Performance Improvements

    • Implemented requests sessions for the get_live method
  • Refactoring

    • Condensed some code that was being passed over multiple times
    • Condensed some smaller if statements into one line
    • Minor code + formatting updates
    • Minor display updates to get_live
    • Renamed some variables for better readability
    • Simplified internal code by eliminating unnecessary temporary variables
    • Some minor readability changes
    • Updated comments
    • Updated validation for service UIDs to allow freight UIDs
    • Updated variable names

Wiki Changes:

  • Added a roadmap page
  • Added links to the footer
  • Updated documentation across the whole wiki
  • Updated links in Release Notes
  • Updated older documentation containing the wrong information

Other Changes:

  • Added issue templates
  • Updated example code
  • Updated example data files

Bugs

Fixes:

  • Fixed a bug causing CRS codes to be validated incorrectly
  • Fixed a bug causing services with stops to pick up passengers only to raise errors
  • Fixed a bug causing services with stops to set down passengers only to raise errors

Awaiting Allocation:

  • None

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2027.1.0...v2027.1.1

Other associated releases


Version 2027.1.0

Release Notes

Version 2027.1.0 (Launched on xx/06/2026 for all modes).

This release introduces full support for the Next Generation Realtime Trains API, replacing the legacy API implementation.

A lot of new features have been implemented in this update to improve performance and make realtime-trains-py easier to use. The introduction of data classes has meant support for Python 3.8 and Python 3.9 has been removed. If you're still using either of these versions, upgrade to Python 3.10 or newer to use the latest version of realtime-trains-py.

Warning

Multiple Breaking Changes

Unfortunately, due to the API data requirements changing, a number of internal code changes have been made to support these. A number of changes have also been made to improve performance.

These include:

  • Advanced mode has been removed since the data provided by the API is too basic to warrant a different mode for it.

  • Complexity modes are now literals. Their names have also been changed - for example, s.n is now simple_normal.

  • Some data within objects has been changed to better reflect the data of the API.

  • The date format has changed from YYYY/MM/DD to YYYY-MM-DD. Time format has remained unchanged.

  • The get_arrivals and get_station methods have been removed since the API doesn't support a separate arrivals request. The get_departures method now features a similar functionality to the previous get_station method.

  • The get_departures method now has filter_from and filter_to fields.

  • The username and password parameters have been replaced with request_token.

  • Updated supported python versions (Python 3.8 and 3.9 no longer supported).

Apologies for any inconvenience these changes have made.

Check out the source code for this release.

Code Changes:

  • New features

    • Added new error handlers
    • Added support for the next generation RTT API
    • Added three customisation options for Live Boards:
      • LCD (Liquid Crystal Display) - default
      • DMI (Yellow) (Display Machine Interface - Yellow)
      • DMI (White) (Display Machine Interface - White)
    • Implemented data classes
    • Implemented literals
  • Code Enhancements

    • Added a link to the wiki inside method information
    • Added a new access token generator
    • Added filter_from and filter_to parameters
    • Complexity modes are now literals
    • Moved error handling for validation into utilities.py
    • Modes for get_live are literals
    • Moved setting up complex mode to a separate method
  • Error Handling

  • Performance Improvements

    • Implemented data classes for faster access
    • Removed some duplicated code
  • Refactoring

    • Minor code + formatting updates
    • Removed some dormant code
    • Removed status codes from return data
    • Updated display order in details.py
    • Updated example code and example data
    • Updated file names for complex mode
    • Updated return types
    • Updated some code that could return errors
    • Updated some comments
    • Updated type notation

Wiki Changes:

  • Added contents pages to some pages
  • Added new documentation for error handling
  • Removed documentation for get_arrivals and get_station
  • Updated complexity documentation
  • Updated documentation for get_departures, get_service & get_live
  • Various QOL updates to the Wiki
  • Various readability updates to documentation
  • Various spelling & grammar changes

Other Changes:

  • Added quicklinks to README
  • Beta releases will now be published to the realtime-trains-py Test PyPi. Check it out here
  • realtime-trains-py now requires Python 3.10 or newer to run
  • Updated example code
  • Updated pyproject
    • Added keywords
    • Now requires Python 3.10+
    • Updated project links
  • Updated supported versions

Bugs

Fixes:

  • Fixed a bug causing get_live to stop after the request token expired
  • Fixed a bug causing methods to crash in example code snippets
  • Fixed a bug causing Service UIDs, dates and times to be validated incorrectly
  • Fixed a bug preventing departure data from saving when a date was provided in complex mode
  • Fixed a bug preventing service data from outputting

Awaiting Allocation:

  • None

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.3.3...v2027.1.0

Other associated releases

Version 2026.1.0 was cancelled, so beta versions of version 2026.1.0 are included as associated releases.

How to Solve Problems from Breaking Changes

Advanced mode removed

rtt = RealtimeTrainsPy(
    request_token="YOUR_REQUEST_TOKEN", # 
    complexity="a"
    #           ^ change the "a" to "simple"
)

Date format has changed

"2026/05/2026"
#    ^  ^ 
#    Change to "-" instead

Complexity Modes: Literals

complexity="s"    ->  complexity="simple"
complexity="s.n"  ->  complexity="simple_normal"
complexity="c"    ->  complexity="complex"

Data Within Objects Changed

Check individual documentation for each method for changes.

The get_arrivals and get_station methods removed

rtt.get_arrivals()
#   ^^^^^^^^^^^^ 
#   Change to get_departures instead

rtt.get_station()
#   ^^^^^^^^^^^
#   Change to get_departures instead

The get_departures method now has filter_from and filter_to fields.

...filter="SVG"...
#  ^^^^^^
#  Change any current filters to filter_to

username and password parameters have been replaced

rtt = RealtimeTrainsPy(
    username="YOUR_USERNAME", #  Remove
    password="YOUR_PASSWORD", #  Remove
    request_token="YOUR_TOKEN"
#   ^^^^^^^^^^^^^
#   Replace old password and username fields
    complexity="simple"
)

Version 2025.3.3

Release Notes

Version 2025.3.3 (Launched on 14/08/2025 for all modes).

This release added a way to get the requested location.

Check out the source code for this release.

Warning

Breaking Change:

Boards (get_departures, get_arrivals, get_station) now require extra data unpacking.

See below:

arrivals = rtt.get_arrivals(tiploc="LDS", rows=5)

print(arrivals.location) # Use me to get the requested location ("Leeds" in this case).

for arrival in arrivals.board: # Use me to get the board details.
#                       ^^^^^
#                       Add .board 
    print(f"{arrival.gbtt_arrival} | {arrival.origin} to {arrival.terminus} | {arrival.platform} | {arrival.realtime_arrival} | {arrival.service_uid}")

Official documentation has been updated to reflect this change.

In most cases, adding .board (as shown above) will fix any problems you run into.

Code Changes:

  • New features

    • Added a way to request the requested location for departure boards (#20)
  • Code Enhancements

    • Updated formatting to reflect changes in #18
  • Error Handling

    • None
  • Performance Improvements

    • None
  • Refactoring

    • Minor code updates.
    • Removed some unneeded code.
    • Updated some type notation.

Wiki Changes:

  • Updated documentation for setup.

Other Changes:

  • None

Bugs

Fixes:

  • #20

Awaiting Allocation:

  • None

What's Changed

New Contributors

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.3.2...v2025.3.3

Other associated releases

None


Version 2025.3.2

Release Notes

Version 2025.3.2 (Launched on 22/05/2025 for all modes).

This release updated dependency specification in pyproject.toml.

Check out the source code for this release.

Code Changes:

  • New features

    • None
  • Code Enhancements

    • None
  • Error Handling

    • Minor preparation for new error handling has started.
  • Performance Improvements

    • None
  • Refactoring

    • Updated some type notation.

Wiki Changes:

  • Updated documentation for setup.

Other Changes:

  • None

Bugs

Fixes:

  • None

Awaiting Allocation:

  • None

What's Changed

New Contributors

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.3.1...v2025.3.2


Version 2025.3.1

Release Notes

Version 2025.3.1 (Launched on 01/05/2025 for all modes).

This release updated the get_live method.

Check out the source code for this release.

Code Changes:

  • New features

    • Implemented get_live for all modes.
      • This provides you with a live departure board for a requested location.
  • Code Enhancements

    • get_live has been implemented.
      • Details such as the platform number, departure time, expected departure and destination are shown.
      • If no departures are found, a "check timetable for services" screen is shown.
      • If there is only one calling point after the requested station, the board will show "only" after the destination.
        • For example, at Huntingdon a service to Peterborough would say: Calling at: Peterborough only.
      • Information shown has been altered slightly.
      • Text formatting colours have been updated.
        • "Cancelled" is written in red.
        • "On time" is written in green.
        • All other variations (early and delayed) are written in yellow.
        • The board heading is written in blue.
        • The board is now written in white.
      • The board will show the next 3 departures at the station.
  • Error Handling

    • Minor preparation for new error handling has started.
  • Performance Improvements

    • Code removals.
      • Redundant code has been removed.
      • Removed a lot of duplicated code.
      • Removed many unneeded loops.
      • Removed many unneeded variables.
  • Refactoring

    • Added new comments.
    • Removed some older comments.
    • Some older comments have been updated.
    • Some variables have been renamed.
    • Updated file directory.
    • Updated in-code documentation.
    • Updated some errors.

Wiki Changes:

  • Added new documentation get_live.
  • Added new examples for get_live.

Other Changes:

  • Added information for get_live in the README file.
  • Added new example code for get_live.
    • You can find these here.

Bugs

Fixes:

  • Fixed a crash when less than three services are provided for get_live.

Awaiting Allocation:

  • None

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.3.0...v2025.3.1

Other Associated Releases

None


Version 2025.3.0

Release Notes

Version 2025.3.0 (Launched on 30/04/2025 for all modes).

This release introduced a new get_live method.

Check out the source code for this release.

Code Changes:

  • New features

    • Implemented get_live for all modes.
      • This provides you with a live departure board for a requested location.
  • Code Enhancements

    • get_live has been implemented.
      • Details such as the platform number, departure time, expected departure and destination are shown.
      • If no departures are found, a "check timetable for services" screen is shown.
      • If there is only one calling point after the requested station, the board will show "only" after the destination.
        • For example, at Huntingdon a service to Peterborough would say: Calling at: Peterborough only.
      • Information shown has been altered slightly.
      • Text formatting colours have been updated.
        • "Cancelled" is written in red.
        • "On time" is written in green.
        • All other variations (early and delayed) are written in yellow.
        • The board heading is written in blue.
        • The board is now written in white.
      • The board will show the next 3 departures at the station.
  • Error Handling

    • Minor preparation for new error handling has started.
  • Performance Improvements

    • Code removals.
      • Redundant code has been removed.
      • Removed a lot of duplicated code.
      • Removed many unneeded loops.
      • Removed many unneeded variables.
  • Refactoring

    • Added new comments.
    • Removed some older comments.
    • Some older comments have been updated.
    • Some variables have been renamed.
    • Updated file directory.
    • Updated in-code documentation.
    • Updated some errors.

Wiki Changes:

  • Added new documentation get_live.
  • Added new examples for get_live.
  • Updated rows documentation for get_station.

Other Changes:

  • Added information for get_live in the README file.
  • Added new example code for get_live.
    • You can find these here.

Bugs

Fixes:

  • Fixed a crash when the API returned an error in get_live.
  • Fixed a TypeError causing a crash in get_arrivals.
  • Fixed destination showing at the start of the calling points in get_live.

Awaiting Allocation:

  • None

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.2.2...v2025.3.0

Other Associated Releases


Version 2025.2.2

Release Notes

Version 2025.2.2 (Launched on 03/03/2025 for all modes).

This release updated the display order of information in the get_station method.

Check out the source code for this release.

Code Changes:

  • Refactoring
    • Added new display order for get_station.
    • Removed some redundant code.

Wiki Changes:

  • None

Other Changes:

  • None

Bugs

Fixes:

  • None

Awaiting Allocation:

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.2.1...v2025.2.2

Other Associated Releases

None


Version 2025.2.1

Release Notes

Version 2025.2.1 (Launched on 18/02/2025 for all modes).

This release fixed a bug causing departures and arrivals to duplicate on some boards in the get_station method.

Check out the source code for this release.

Code Changes:

  • Performance Improvements

    • Gathering data using get_station and providing a rows value
  • Refactoring

    • Added new comments.
    • Some older comments have been updated.
    • Updated in-code documentation.

Wiki Changes:

  • None

Other Changes:

  • None

Bugs

Fixes:

  • Fixed a bug causing departures and arrivals to duplicate on some boards (#12).

Awaiting Allocation:

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.2.0...v2025.2.1

Other Associated Releases

None


Version 2025.2.0

Release Notes

Version 2025.2.0 (Launched on 01/02/2025 for all modes).

This release introduced a new get_station method which returns a combined departure + arrival board.

Check out the source code for this release.

Code Changes:

Warning

This release features a breaking change. See the Refactoring section in the release notes.

  • New features

    • Added an API connection tester.
      • Checks your username and password before you send API requests.
    • Implemented get_station for all modes.
      • This provides you with a combined departure and arrival board.
    • New status and error formats.
  • Code Enhancements

    • A full, ordered station board can now be returned.
      • Added merge_sort for get_station.
    • Added new simple + advanced classes for get_service.
    • Implementation of get_station for advanced, simple & complex modes.
  • Error Handling

    • All errors now provide status codes.
    • Errors are now more specific to the actual error.
      • Example: 400: Complexity not recognised. Select a valid type.
    • Errors can be found in the errors page.
    • Status information has a new format
      • Example: 200: Service data returned successfully.
  • Performance Improvements

    • Code removals.
      • Redundant code has been removed.
    • Enhanced efficiency across multiple areas.
      • Added clearing in some methods for removing data that is no longer needed.
      • Added new classes for data handling.
      • Removed some unneeded loops.
      • Removed some unneeded variables.
  • Refactoring

    • Added new comments.
    • Moved empty objects to a details.py file.
    • Some classes have been renamed.
      • Some attributes inside classes have been renamed.
        • Breaking Change: all_calling_points is now just calling points.
    • Some files have been renamed.
    • Some functions have been renamed.
    • Some older comments have been updated.
    • Some variables have been renamed.
    • Updated file directory.
    • Updated in-code documentation.

Wiki Changes:

  • Added a footer to the wiki.
  • Added an errors page to the wiki.
  • Added extra details to methods in various files.
  • Added more data extraction documentation.
  • Added new code examples.
  • All pages have received minor and major changes.
  • Corrected various spelling and grammar mistakes.
  • Updated error formatting.
  • Updated old code examples.
  • Updated release notes for Version 2025.2.0.
  • Updated sidebar links.
  • Updated terminology to reflect the new update.
  • Updated the setup guides.

Other Changes:

  • Added new example code for simple and complex modes.
    • You can find these here
  • Release notes now have a new format.
    • You can see it here.
  • Updated the README file.
    • Corrected spelling.
    • Updated code examples.
  • Updated the supported versions in the security policy.
    • V1.x.xbx has been removed from the supported list.
    • V2025.x.xbx has been added to the supported list.

Bugs

Fixes:

  • Fixed a bug causing imports to fail.
  • Fixed a bug causing no data to be returned when providing only a time and TIPLOC in get_station, get_arrivals and get_departures.
  • Fixed a bug causing times in get_station to order incorrectly.
    • 00:xx times will always show at the top of the board regardless.
  • Fixed a bug causing times to validate incorrectly.
  • Fixed some code formatting bugs.

Awaiting Allocation:

What's Changed

Full Changelog: https://github.com/anonymous44401/realtime-trains-py/compare/v2025.1.0...v2025.2.0

Other Associated Releases


Version 2025.1.0

Release Notes

Version 2025.1.0 (Launched on 02/01/2025 for all modes).

This release introduced realtime-trains-py for the first time.

Check out the source code for this release.

Code Changes:

  • New features

    • Implemented get_departures for all modes.
      • This provides you with a departure board.
    • Implemented get_arrivals for all modes.
      • This provides you with an arrival board.
    • Implemented get_service for all modes.
      • This provides you with service information.
  • Code Enhancements

    • None
  • Error Handling

    • None
  • Performance Improvements

    • None
  • Refactoring

    • Added comments.
    • Added in-code documentation.

Wiki Changes:

  • Added new pages.

Other Changes:

  • Added example code for some modes.
  • Added the license file.
  • Added the README file.
  • Added the security policy.

Bugs

Fixes:

  • None

Awaiting Allocation:

  • None

What's Changed

Clone this wiki locally