Skip to main content

A Python Library for GTFS

Project description

PyGTFSLib

A python library for the GTFS format.

So far, this is only a loose, incomplete collection of rather low-level tools for parsing GTFS feeds. The motivation for this library is to consolidate GTFS related code used at geOps in a single library. This is still work in progress, so breaking changes are to be expected.

This library aims to be efficient in terms of parsing time and memory usage to allow processing a large number of feeds.

Installation

Install the latest stable release from PyPI with pip:

pip install pygtfslib

Modules

Spatial

The pygtfslib.spatial module contains classes and functions related to spatial data. So far, there is only one function read_shapes that can be used to parse shapes.txt using a generic factory that accepts an iterable of pygtfslib.spatial.ShapeRow instances.

Temporal

The pygtfslib.temporal module contains classes and functions related to temporal data. So far, it provides functions to parse calendar and frequency entries and stop times. It also provides a TimeCache class that accelerates conversion of GTFS timezone, operating day and time delta to a timezone-aware python datetime.datetime.

MOT

The pygtfslib.mot module contains tools related to GTFS route types / mode of transportation. So far, there is a function route_type_to_mot that can convert a GTFS route type or extended route type to a MOT string that can be used in the geOps routing engine.

CSV

The pygtfslib.fast_csv module contains low-level tools for CSV parsing. There are two generator functions that allow to iterate over a CSV file yielding rows as dicts or namedtuples. They are built on top of the builtin python CSV reader but they are faster than the builtin DictReader.

Issue Tracker

Please use the GitHub issue tracker to report bugs/issues.

Development

Contributing

If you want to contribute to the pygtfslib library, you can make a pull request at GitHub. Before working on major features/changes, please consider contacting us about your plans. See our GitHub page for contact details.

Editable Installation

Clone this repo and enter the corresponding directory. Create a virtual environment, then install frozen requirements, dev-requirements and this library in editable mode:

python3.11 -m venv env
. env/bin/activate
pip install -U pip
pip install -r requirements.txt -r dev-requirements.txt -e .

Keep env activated for all following instructions.

Pre-Commit Hooks

Enable pre-commit hooks:

pre-commit install

From time to time (not automated yet) run

pre-commit autoupdate

to update frozen revs.

Run tests

Run tests and analyze code coverage:

pytest --cov=pygtfslib --cov-report term --cov-fail-under=40 pygtfslib

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

pygtfslib-0.1.3.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

pygtfslib-0.1.3-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file pygtfslib-0.1.3.tar.gz.

File metadata

  • Download URL: pygtfslib-0.1.3.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for pygtfslib-0.1.3.tar.gz
Algorithm Hash digest
SHA256 cce7082e081bd677d3dc042d9c8fab75f98d320f9f0983ffa15b5f4357f4fd26
MD5 828000f2b6f2a8f325df975acc69560e
BLAKE2b-256 4824ea3e75116e7444301f6511e4b90c54cbc069ac38d8c5deb98350268ef630

See more details on using hashes here.

File details

Details for the file pygtfslib-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pygtfslib-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for pygtfslib-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f37922d62c7ba9f7ad5fbffa04bbd7f75faa230a7ebcf4b5161ac012d78b34a6
MD5 d6ff9b67d9aa2a52f3e21d0685d4b981
BLAKE2b-256 41cb31ff072a41c7e009ef253b14015278fbc5e59a60e3ff3277639ab43e9146

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