Source code for pyrcs._line_data

"""
Collect `line data <http://www.railwaycodes.org.uk/linedatamenu.shtm>`_.
"""

import urllib.parse

from .line_data import *
from .utils import get_category_menu, homepage_url


[docs]class LineData: """ A class representation of all modules of the subpackage :ref:`pyrcs.line_data<line_data>` for collecting line data. :param update: whether to check on update and proceed to update the package data, defaults to ``False`` :type update: bool **Example**:: >>> from pyrcs import LineData >>> ld = LineData() >>> # To get location codes >>> location_codes_data = ld.LocationIdentifiers.fetch_location_codes() >>> type(location_codes_data) <class 'dict'> >>> print(list(location_codes_data.keys())) ['Location codes', 'Other systems', 'Additional notes', 'Last updated date'] >>> location_codes_dat = location_codes_data['Location codes'] >>> print(location_codes_dat.head()) Location CRS ... STANME_Note STANOX_Note 0 Aachen ... 1 Abbeyhill Junction ... 2 Abbeyhill Signal E811 ... 3 Abbeyhill Turnback Sidings ... 4 Abbey Level Crossing (Staffordshire) ... [5 rows x 12 columns] >>> # To get location codes >>> line_names_data = ld.LineNames.fetch_line_names() >>> type(line_names_data) <class 'dict'> >>> print(list(line_names_data.keys())) ['Line names', 'Last updated date'] >>> line_names_dat = line_names_data['Line names'] >>> print(line_names_dat.head()) Line name ... Route_note 0 Abbey Line ... None 1 Airedale Line ... None 2 Argyle Line ... None 3 Arun Valley Line ... None 4 Atlantic Coast Line ... None [5 rows x 3 columns] """ def __init__(self, update=False): """ Constructor method. """ # Basic info self.Name = 'Line data' self.HomeURL = homepage_url() self.SourceURL = urllib.parse.urljoin( self.HomeURL, '{}menu.shtm'.format(self.Name.lower().replace(' ', ''))) self.Catalogue = \ get_category_menu(self.SourceURL, update=update, confirmation_required=False) # Classes self.ELRMileages = elr_mileage.ELRMileages(update=update) self.Electrification = elec.Electrification(update=update) self.LocationIdentifiers = loc_id.LocationIdentifiers(update=update) self.LOR = lor_code.LOR(update=update) self.LineNames = line_name.LineNames(update=update) self.TrackDiagrams = trk_diagr.TrackDiagrams(update=update)