Load GTFS
Project description
py-gtfs-loader
A Python library for loading and manipulating GTFS (General Transit Feed Specification) data with schema validation and type safety.
Features
- 📦 Load GTFS feeds from directories
- ✅ Schema validation with type checking
- 🔄 Modify and patch GTFS data
- 🚀 Support for standard GTFS and Transit's itinerary format
- 📝 CSV and GeoJSON file type support
- 🔗 Cross-referenced entities for easy data navigation
Installation
pip install py-gtfs-loader
Or using uv:
uv add py-gtfs-loader
Quick Start
Loading GTFS Data
import gtfs_loader
# Load a GTFS feed
gtfs = gtfs_loader.load('path/to/gtfs/directory')
# Access data by entity
stop = gtfs.stops['stop_id']
route = gtfs.routes['route_id']
trip = gtfs.trips['trip_id']
# Access grouped entities
stop_times = gtfs.stop_times['trip_id'] # Returns list of stop times for a trip
Modifying and Saving GTFS Data
# Modify data
gtfs.stops['stop_id'].stop_name = "New Stop Name"
# Save changes back to disk
gtfs_loader.patch(gtfs, 'path/to/input', 'path/to/output')
Loading Specific Files
# Load only specific files
gtfs = gtfs_loader.load('path/to/gtfs', files=['stops', 'routes', 'trips'])
Transit Itinerary Format
# Load Transit itinerary format (itinerary_cells.txt)
gtfs = gtfs_loader.load('path/to/gtfs', itineraries=True)
Development
This project uses uv for dependency management.
Setup
# Install dependencies
uv sync --all-extras --dev
# Run tests
uv run pytest .
# Run linting
uv run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
Requirements
- Python ≥ 3.10
- Development dependencies: pytest, flake8
Project Structure
gtfs_loader/- Main package__init__.py- Load/patch functionsschema.py- GTFS entity definitionsschema_classes.py- Schema metadata systemtypes.py- Custom GTFS types (GTFSTime, GTFSDate, Entity)lat_lon.py- Geographic utilities
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Maintainers
- Jonathan Milot
- Jeremy Steele
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_gtfs_loader-0.3.2.tar.gz.
File metadata
- Download URL: py_gtfs_loader-0.3.2.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e9ada785fba5c2a07030effd5de688e1b962629564c6201ef8539e91ede1e7d
|
|
| MD5 |
4eea1627451610a306343c59ed9a050c
|
|
| BLAKE2b-256 |
a6fcd813f5c69a66eb25f9aad8295fe75d61f1f0e9dbf664c697643ce324d4e6
|
File details
Details for the file py_gtfs_loader-0.3.2-py3-none-any.whl.
File metadata
- Download URL: py_gtfs_loader-0.3.2-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d256cfa99fbe94af955e425611f70c08b355c59797507af2d34145022367fb1e
|
|
| MD5 |
c4f4d97355cfa4417f5b56d4676b5b0b
|
|
| BLAKE2b-256 |
5938d2d903ebe8f79551228390e28df23bca08e2eda7d7d5d90dab2db9fe48a0
|