SignalBoxes.collect_non_national_rail_codes¶
- SignalBoxes.collect_non_national_rail_codes(confirmation_required=True, verbose=False, raise_error=False)[source]¶
Collects signal box prefix codes for non-national rail from the source web page.
This method retrieves the target URL from the catalogue, prompts for user confirmation if required and delegates data parsing to
_collect_non_national_rail_codes.- Parameters:
confirmation_required (bool) – Whether user confirmation is required before proceeding; defaults to
True.verbose (bool | int) – Whether to print progress to the console; defaults to
False.raise_error (bool) – Whether to raise an exception if data collection fails; defaults to
False.
- Returns:
A dictionary containing non-national rail signal box prefix codes and last updated date, or
Noneif collection fails.- Return type:
dict | None
- Raises:
ValueError – If the catalogue is unavailable or missing the target URL when
raise_errorisTrue.
Examples:
>>> from pyrcs.other_assets import SignalBoxes # from pyrcs import SignalBoxes >>> sb = SignalBoxes() >>> nnr_codes: dict = sb.collect_non_national_rail_codes(verbose=True) Proceed with collecting data of "non-national rail signal box prefix codes"? [No]|Yes: yes Collecting the data ... Done. >>> list(nnr_codes) ['Non-National Rail', 'Last updated date'] >>> nnr_codes_dat = nnr_codes['Non-National Rail'] >>> type(nnr_codes_dat) dict >>> list(nnr_codes_dat) ['Croydon Tramlink signals', 'Docklands Light Railway signals', 'Edinburgh Tramway signals', 'Glasgow Subway signals', 'London Underground signals', 'Luas signals', 'Manchester Metrolink signals', 'Midland Metro signals', 'Nottingham Tram signals', 'Sheffield Supertram signals', 'Tyne & Wear Metro signals', "Heritage, minor and miniature railways and other 'special' signals"] >>> lu_signals_codes = nnr_codes_dat['London Underground signals'] >>> type(lu_signals_codes) dict >>> list(lu_signals_codes) ['Codes', 'Notes'] >>> lu_signals_codes_df = lu_signals_codes['Codes'] >>> lu_signals_codes_df.shape (485, 5) >>> lu_signals_codes_df.head() Code ... Became or taken over by (where known) 0 BMX ... - 1 A ... - 2 S ... - 3 X ... - 4 R ... - [5 rows x 5 columns]