![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
API wrappers for interacting with real-time public transport data in Victoria, Australia
Python utilities for interacting with real-time information for public transport in Victoria, Australia, via the Public Transport Victoria (PTV) Timetable API, Yarra Trams' TramTracker data service and the V/Line website.
Package version: 0.3.1
Last updated: 14 January 2025
Tested on Python version: ≥ 3.12
This package of modules aims to simplify the process of retrieving and manipulating real-time data for public transport in Victoria, Australia and document each operation and response supported by the APIs.
The package implements interfaces for three data sources:
The package minimises the use of third-party modules to improve portability, especially on systems with restrictions.
Stop
, instead of the ten or so different representations in the API). Any attribute/field for which the API does not provide a response for will have a sentinel value.datetime
objects with the local time zone of Victoria, so that you do not have to deal with the different string representations of dates and speaking to the API in the UTC time zone as implemented by the Timetable API.This package is in pre-release. Breaking changes may be made without notice during development.
Package name | Tested on version | Notes |
---|---|---|
ratelimit | ≥ 2.2.1 | |
requests | ≥ 2.32.3 | |
tzdata | ≥ 2024.1 | Only required on OSes without a native tz database, including Windows. |
The recommended method to install this package is via the Python Package Index:
python -m pip install ptv-timetable
You can also install from the GitLab Package Registry (authentication not required):
python -m pip install --index-url https://gitlab.com/api/v4/projects/54559866/packages/pypi/simple ptv-timetable
These commands will also install any required dependencies.
This package adds three modules into the root namespace of your interpreter (so they can be directly imported into your code with import <module_name>
):
ptv_timetable
for interacting with the PTV Timetable API;
ptv_timetable.types
defines dataclasses used to represent returned API objects;tramtracker
for interacting with the TramTracker data service; andvline
for retrieving V/Line Southern Cross departure and arrival information.Each module defines data types that encapsulate the responses from the APIs to allow access by attribute reference (.
) to take advantage of autocompletion systems in IDEs where available. This format also allows each field to be documented, which is not a feature that is available in the raw dict
s returned by the APIs.
To use the Timetable API service, you will first need to obtain credentials from PTV:
PTV Timetable API - request for key
.ptv_timetable.TimetableAPI
class: TimetableAPI(dev_id, key)
Credentials are not required for the tramtracker
and vline
modules.
Some actions are logged under the logger names ptv-timetable.ptv_timetable
, ptv-timetable.tramtracker
and ptv-timetable.vline
. Use logging.getLogger()
to obtain the loggers and you can register your own handlers to retrieve their contents.
To report problems with the package or otherwise give feedback, go to the Issues tab of the repository.
All constructive contributions are welcome! By contributing, you agree to license your contributions under the Apache Licence 2.0.
This project's source code is licensed under the Apache Licence 2.0; however, data obtained from the APIs themselves via these modules are licensed separately: PTV Timetable API data are under a Creative Commons Attribution 4.0 International licence and TramTracker data is proprietary. See LICENCE.md for further information.
Constant/function/method | Description |
---|---|
METROPOLITAN_TRAIN METRO_TRAIN MET_TRAIN METRO | Use in route_type parameters to specify the metropolitan train network. |
TRAM | Use in route_type parameters to specify the metropolitan tram network. |
BUS | Use in route_type parameters to specify the metropolitan or regional bus network. |
REGIONAL_TRAIN REG_TRAIN COACH VLINE | Use in route_type parameters to specify the regional train or coach network. |
EXPAND_<property> | Use in expand parameters to tell the API to return the specified properties in full. |
class TimetableAPI(dev_id, key, *, calls=1, period=10, ratelimit_handler=ratelimit.decorators.sleep_and_retry) | Constructs a new instance of the TimetableAPI class with the supplied credentials.To obtain your own set of credentials, follow the instructions on this page. |
TimetableAPI.list_route_directions(route_id) | List directions for a specified route. API operation: /v3/directions/route/{route_id} |
TimetableAPI.get_direction(direction_id, route_type=None) | List directions with a specified identifier. API operation: /v3/directions/{direction_id}/route_type/{route_type} |
TimetableAPI.get_pattern(run_ref, route_type, stop_id=None, date=None, include_skipped_stops=None, expand=None, include_geopath=None) | Retrieve the stopping pattern and times of arrival at each stop for a particular run. API operation: /v3/pattern/run/{run_ref}/route_type/{route_type} |
TimetableAPI.get_route(route_id, include_geopath=None, geopath_date=None) | Return the route with the specified identifier. API operation: /v3/routes/{route_id} |
TimetableAPI.list_routes(route_types=None, route_name=None) | List all routes. API operation: /v3/routes/ |
TimetableAPI.list_route_types() | List all route types (modes of travel) and their identifiers. API operation: /v3/route_types/ |
TimetableAPI.get_run(run_ref, route_type=None, expand=None, date=None, include_geopath=None) | Return the run with the specified identifier. API operation: /v3/runs/{run_ref}/route_type/{route_type} |
TimetableAPI.list_runs(route_id, route_type=None, expand=None, date=None) | List runs for a specified route. API operation: /v3/runs/route/{route_id}/route_type/{route_type} |
TimetableAPI.get_stop(stop_id, route_type, stop_location=None, stop_amenities=None, stop_accessibility=None, stop_contact=None, stop_ticket=None, gtfs=None, stop_staffing=None, stop_disruptions=None) | Return the stop with the specified identifier and route type. API operation: /v3/stops/{stop_id}/route_type/{route_type} |
TimetableAPI.list_stops(route_id, route_type, direction_id=None, stop_disruptions=None) | List all stops on a specified route. API operation: /v3/stops/route/{route_id}/route_type/{route_type} |
TimetableAPI.list_stops_near_location(latitude, longitude, route_types=None, max_results=None, max_distance=None, stop_distuptions=None) | List all stops near a specified location. API operation: /v3/stops/location/{latitude},{longitude} |
TimetableAPI.list_departures(route_type, stop_id, route_id=None, platform_numbers=None, direction_id=None, gtfs=None, include_advertised_interchange=None, date=None, max_results=None, include_cancelled=None, expand=None, include_geopath=None) | List the departures from a specified stop. API operation: /v3/departures/route_type/{route_type}/stop/{stop_id}/route/{route_id} |
TimetableAPI.list_disruptions(route_id=None, stop_id=None, route_types=None, disruption_modes=None, disruption_status=None) | List disruptions on the network. API operation: /v3/disruptions/route/{route_id}/stop/{stop_id} |
TimetableAPI.list_disruption_modes() | List all disruption modes. API operation: /v3/disruptions/modes |
TimetableAPI.fare_estimate(zone_a, zone_b, touch_on=None, touch_off=None, is_free_fare_zone=None, route_types=None) | Return the fare for a specified journey. API operation: /v3/fare_estimate/min_zone/{minZone}/max_zone/{maxZone} |
TimetableAPI.list_outlets(latitude=None, longitude=None, max_distance=None, max_results=None) | List ticket outlets near a specified location. API operation: /v3/outlets/location/{latitude},{longitude} |
TimetableAPI.search(search_term, route_types=None, latitude=None, longitude=None, max_distance=None, include_outlets=None, match_stop_by_locality=None, match_route_by_locality=None, match_stop_by_gtfs_stop_id=None) | Search for a stop, route or ticket outlet by name. API operation: /v3/search/{search_term} |
Constant/function/method | Description |
---|---|
class TramTrackerService(*, calls=1, period=10, ratelimit_handler=ratelimit.decorators.sleep_and_retry) | Constructs a new instance of the TramTrackerService class. |
TramTrackerService.list_destinations() | List all destinations on the tram network. |
TramTrackerService.list_stops(route_id, up_direction) | List stops for a specified route and direction of travel. |
TramTrackerService.get_stop(stop_id) | Return details about a specified stop. |
TramTrackerService.list_routes_for_stop(stop_id) | List the routes serving a specified stop. |
TramTrackerService.next_trams(stop_id, route_id=None, low_floor_tram=False, as_of=datetime.now(tz=ZoneInfo("Australia/Melbourne"))) | List the next tram departures from a specified stop. |
TramTrackerService.get_route_colour(route_id, as_of=datetime.now(tz=ZoneInfo("Australia/Melbourne"))) | Return the route's colour on public information paraphernalia. |
TramTrackerService.get_route_text_colour(route_id, as_of=datetime.now(tz=ZoneInfo("Australia/Melbourne"))) | Return the route's text colour on public information paraphernalia. |
Constant/function/method | Description |
---|---|
next_services() | Gets the details of the next 30 minutes of services departing and arriving Southern Cross station. |
FAQs
API wrappers for interacting with real-time public transport data in Victoria, Australia
We found that ptv-timetable demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.