Skip to main content

Python API for EFA(Elektronische Fahrplanauskunft) async requests

Project description

apyefa

Python package License

Intro

apyefa is a python package used to asynchronously fetch public transit routing data via EFA interfaces like efa.vgn. It can request itineraries for Bus/Trams/Subways etc. connections and return data in a human and machine readable format.

Installation

You only need to install the apyefa package, for example using pip:

pip install apyefa

Restrictions

Currently the package supports only endpoints using RapidJSON format. To check whether the endpoint supports this format, please call:

curl <EFA API URL>/XML_SYSTEMINFO_REQUEST?outputFormat=rapidJSON
e.g. curl https://bahnland-bayern.de/efa/XML_SYSTEMINFO_REQUEST?outputFormat=rapidJSON

If API's answer looks like this, endpoint supports rapidJSON:

{"version":"10.6.21.17","ptKernel":{"appVersion":"10.6.22.28 build 16.12.2024 11:14:57","dataFormat":"EFA10_06_01","dataBuild":"2024-12-31T00:54:55Z"},"validity":{"from":"2024-12-15","to":"2025-06-14"}}

Development setup

Create and activate virtual environment. Then install dependencies required by apefa package.

python3 -m venv .venv
source .venv/bin/activate
pip install .

apyefa functions

Function Name Description
info() Provides EFA endpoint system information
locations_by_name() Search for locations by name with optional filters
locations_by_coord() Search for locations by coordinates
list_lines() Retrieves a list of lines
list_stops() Retrieves a list of stops
trip() Calculates a trip between an origin and a destination locations
departures_by_location() Fetches departures for a given location
lines_by_name() Fetches lines by name
lines_by_location() Fetches lines for a specific location
line_stops() Retrieves the stops for a given line
coord_bounding_box() Requests locations within a bounding box
coord_radial() Requests locations within a radius
geo_object() Generates a sequence of coordinates and all passed stops of a provided line

Example

import asyncio
from apyefa import EfaClient
from apyefa.data_classes import (
    Location,
    LocationFilter,
)

async def async_info(client: EfaClient):
    info = await client.info()
    print(info)

async def async_location_by_name(client: EfaClient):
    stops: list[Location] = await client.locations_by_name(
        "Plärrer", filters=[LocationFilter.STOPS], limit=20
    )
    for s in stops:
        print(s)    

async def main():
    async with EfaClient("https://bahnland-bayern.de/efa/") as client:
        await asyncio.gather(
            async_info(client),
            async_location_by_name(client),
        )

if __name__ == "__main__":
    asyncio.run(main())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apyefa-1.1.7.tar.gz (125.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apyefa-1.1.7-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file apyefa-1.1.7.tar.gz.

File metadata

  • Download URL: apyefa-1.1.7.tar.gz
  • Upload date:
  • Size: 125.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for apyefa-1.1.7.tar.gz
Algorithm Hash digest
SHA256 66f9adc4eea336099546584e5f57dee6f61ad3d2b3295e75e3d7bf651b0a97d4
MD5 105866bc6008a18fcd654776395b8338
BLAKE2b-256 3c0829afe74a33842d06a2101d009d0b269d4d2c87206f3a60d96ac54191c880

See more details on using hashes here.

File details

Details for the file apyefa-1.1.7-py3-none-any.whl.

File metadata

  • Download URL: apyefa-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for apyefa-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 65ed2dbd33362ce950f0f90892a4552301191732cb4c73ab8a11d1cc4f62606c
MD5 b851113c83c32e9b50168934f14fc681
BLAKE2b-256 4e1d4be09e61ae19640e6e98a867c83c033d65ef874126a58ac4723f26f4602c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page