(14 April 2026)
- Refactoring & maintenance:
- Pandas 4.0 compatibility: Updated
select_dtypesto include the'string'extension type and removed deprecated silent downcasting option contexts (#79). - PyHelpers alignment: Upgraded dependency to
pyhelpers >=2.4.0, <2.5.0(#83). - Changed metadata loading by replacing
pkgutilwithimportlib.resources. - Optimised
_stanox_note()logic for parsing of Pseudo STANOX markers and complex bracketed notes.
- Pandas 4.0 compatibility: Updated
- Bug fixes:
- Fixed a failure in
get_last_updated_date()by normalising request URLs to lowercase (#77). - Resolved
TypeErrorin_parse_node_connectionand_uncouple_elr_mileageby implementingpd.isna()checks for missing node data (#78). - Adjusted text length heuristics in the ELR-Mileage parser to reduce false-positive data extraction.
- Fixed a failure in
- Test & CI enhancements:
- Migrated from
unittest.mocktopytest-mockerfor more idiomatic and readable unit tests. - Updated
requirements.txtto includepytest-mock, resolving CI fixture errors.
- Migrated from
For more information and detailed specifications, check out the PyRCS 1.1.0 documentation.
(30 December 2025)
- Bug fixes:
- Resolved
TypeErrorinDepots.fetch_codes()by updating stale header mappings for TOPS/GWR codes (#67). - Fixed parsing bugs in
Tunnels._parse_lengthand refined connection error reporting formatting. - Standardised error-raising logic and file path generation in
_Base._make_file_pathname.
- Resolved
- Test enhancements:
- Significantly expanded unit test coverage across core modules:
Stations,Tunnels,Viaducts,ELRMileages,Features, andSigBoxes. - Refactored
TestLORandtest_get_keys_to_prefixesto use dynamic validation instead of hardcoded values for improved robustness (#66).
- Significantly expanded unit test coverage across core modules:
- Refactoring & maintenance:
- Converted
defaultdictoutputs to standarddictfor cleaner API returns. - Refined data update workflows for
OtherAssetsandELRMileages. - Updated project metadata, affiliation in Sphinx configuration, and
quick-start.rst. - Updated
requirements.txtfor core and documentation dependencies.
- Converted
For more information and detailed specifications, check out the PyRCS 1.0.4 documentation.
(28 November 2025)
- Bug fixes:
- Fixed 'Station'
KeyErrorinStations.collect_locations()due to missing column before sorting (#52). - Fixed
ConnectionErrorhandling inget_introduction()to properly respect theraise_errorparameter and updated tests (#54). - Resolved
TypeError: 'NoneType' object is not iterableinfetch_codesby revising GWR data processing (#56). - Fixed
TypeErrorin viaduct data processing by adding null checks in_prep_recordsto handle missing anchor tags in HTML tables (#58). - Fixed incomplete data collection in
get_site_map()(#61).
- Fixed 'Station'
- Packaging & maintenance:
- Bumped minimum required Python version to 3.12.
- Updated
requirements.txt.
For more information and detailed specifications, check out the PyRCS 1.0.3 documentation.
(12 July 2025)
- Bug fixes:
- Fixed
LocationIdentifiers.collect_notes()logic and improve test coverage (#44). - Handled
IndexErroringet_introduction()for invalid URLs, add test case (#46)
- Fixed
- Packaging & docs:
- Removed
setup.cfgand modifiedpyproject.toml - Updated
requirements.txt,MANIFEST.inand Sphinx config - Improved doc templates and updated
conf.py,quick-start.rst
- Removed
For more information and detailed specifications, check out the PyRCS 1.0.2 documentation.
(19 March 2025)
- Enhanced existing tests to improve coverage and reliability.
- Fixed minor bugs.
- Updated project requirements.
For more information and detailed specifications, check out the PyRCS 1.0.1 documentation.
(3 March 2025)
- Major Release: Version 1.0.0 introduces significant improvements to both code and documentation.
- Code enhancements: Optimised performance and refactored core modules for better readability and maintainability.
- Bug fixes: Resolved various issues identified through practical use.
- License Update: This release is now licensed under the MIT License, providing greater flexibility and usability.
For more information and detailed specifications, check out the PyRCS 1.0.0 documentation.
(16 September 2023)
- Enhanced the functions get_site_map() and parse_tr() in the parser module.
- Fixed potential bugs and made improvements to various classes.
For more information and detailed specifications, check out PyRCS 0.3.7 documentation.
(10 June 2023)
- Improved the following functions and classes with bug fixes:
- parse_tr() in the module parser;
- format_err_msg() in the module utils;
- Stations in the module other_assets.station;
- LocationIdentifiers in the module line_data.loc_id.
For more information and detailed specifications, check out PyRCS 0.3.6 documentation.
(26 February 2023)
- Improved the following function and methods with bug fixes:
For more information and detailed specifications, check out PyRCS 0.3.5 documentation.
(9 January 2023)
For more information and detailed specifications, check out PyRCS 0.3.4 documentation.
(15 November 2022)
- Fixed a major bug in the function parse_tr() in the module parser.
- Improved the following classes with bug fixes: LocationIdentifiers, LOR and Stations.
- Transform the function parse_location_name() into a class method LocationIdentifiers.parse_location_name().
For more information and detailed specifications, check out PyRCS 0.3.3 documentation.
(18 August 2022)
- Fixed a few minor bugs.
For more information and detailed specifications, check out PyRCS 0.3.2 documentation.
(14 June 2022)
- Updated import statements due to a major change in the dependency package PyHelpers.
For more information and detailed specifications, check out PyRCS 0.3.1 documentation.
(16 May 2022)
- Split the module old utils into three new modules: utils, converter and parser.
- Made extensive modifications (with bug fixes).
For more information and detailed specifications, check out PyRCS 0.3.0 documentation.
(27 March 2021)
- Changed the dependency requirements for the package.
For more information and detailed specifications, check out PyRCS 0.2.15 documentation.
(22 March 2021)
- Improved the following functions and class methods with bug fixes:
For more information and detailed specifications, check out PyRCS 0.2.14 documentation.
(9 January 2021)
- Improved the following functions and classes/methods with bug fixes:
- parse_tr() and parse_date() in the module utils;
- Electrification.get_indep_line_names(), ELRMileage.collect_mileage_file() and LOR.collect_elr_lor_converter() in the sub-package line_data;
- Depots.collect_four_digit_pre_tops_codes, Tunnels.parse_length() and Stations in the sub-package other_assets.
For more information and detailed specifications, check out PyRCS 0.2.13 documentation.
(11 November 2020)
- Enabled an offline mode (when Internet connection is lost).
- Renamed the following:
- class methods:
- in the class SignalBoxes:
- in the class Tunnels:
- in the class Viaducts:
- functions in the module utils:
- class methods:
- Removed the functions
collect_site_map()andfetch_site_map()from the module updater. - Added the following:
- a new module collector - combining two modules
_line_dataand_other_assets; - new functions print_connection_error(), print_conn_err(), is_internet_connected() and get_site_map() to the module utils;
- a new method TrackDiagrams.get_track_diagrams_items() - adapted from the function
get_track_diagrams_items()previously in the module utils.
- a new module collector - combining two modules
- Enabled direct access to all classes from importing the package, without having to specifying the sub-modules in which they each reside.
For more information and detailed specifications, check out PyRCS 0.2.12 documentation.
(31 October 2020)
- Renamed the following methods of the class Stations:
For more information and detailed specifications, check out PyRCS 0.2.11 documentation.
(25 October 2020)
- Renamed the following sub-modules (with minor modifications):
crs_nlc_tiploc_stanoxto loc_id;electrificationto elec;track_diagramsto trk_diagr;tunnelsto tunnel.
- Renamed the following modules (without modifications):
elrs_mileagesto elr_mileage;line_namesto line_name;lor_codesto lor_code;depotsto depot;featuresto feature;signal_boxesto sig_box;stationsto station;viaductsto viaduct.
For more information and detailed specifications, check out PyRCS 0.2.10 documentation.
(13 September 2020)
- Updated pre-packed data
For more information and detailed specifications, check out PyRCS 0.2.9 documentation.
(13 September 2020)
- Removed the function
fake_requests_headers()from the module utils. - Made modifications with bug fixes to:
- the class ELRMileages in the sub-module elrs_mileages;
- the function nr_mileage_num_to_str() in the module utils.
- Improved all sub-modules with any specified input data directory being validated.
- Added a new function fix_nr_mileage_str() to the module utils.
For more information and detailed specifications, check out PyRCS 0.2.8 documentation.
(18 July 2020)
- Renamed the sub-packages (with modifications to all of their sub-modules):
- Renamed the modules:
line_datato _line_data;other_assetsto _other_assets;updateto updater.
- Renamed the function
update_pkg_metadata()to update_backup_data() in the module updater. - Removed the module
rc_psql. - Improved the module utils with bug fixes.
- Added new functions:
- collect_site_map() and fetch_site_map() to the module updater;
- homepage_url() to the module utils.
(8 March 2020)
- Added a new function fix_num_stanox() to the module utils.
(10 January 2020)
- Renamed the function
update_package_data()to update_pkg_metadata() in the module update. - Improved the keys of the dict-type data for relevant methods of the two classes: ELRMileages and SignalBoxes.
(4 December 2019)
- Removed the module
settings. - Updated import statements in some modules/sub-modules due to changes in their dependencies.
- Made some modifications to a few sub-modules due to changes in the corresponding web pages of the Railway Codes website.
(4 October 2019)
- Fixed a few bugs in the module utils.
(27 September 2019)
- Improved the methods .collect_mileage_file_by_elr() and .get_conn_mileages() of the class ELRMileages with bug fixes.
(18 September 2019)
- Removed the function
is_float()from the module utils. - Added new functions:
- is_str_float() to the module elrs_mileages;
- fetch_location_names_repl_dict() and update_location_name_repl_dict() to the module utils.
(29 August 2019)
This is a release of a brand-new version.
Note that the initial releases (of early versions up to 0.1.28) had been permanently deleted.