Metadata-Version: 2.0
Name: partridge
Version: 0.2.0
Summary: Partridge is python library for working with GTFS feeds using pandas DataFrames.
Home-page: https://github.com/remix/partridge
Author: Danny Whalen
Author-email: daniel.r.whalen@gmail.com
License: MIT license
Description-Content-Type: UNKNOWN
Keywords: partridge
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Requires-Dist: networkx (>=2.0)
Requires-Dist: pandas

=========
Partridge
=========


.. image:: https://img.shields.io/pypi/v/partridge.svg
        :target: https://pypi.python.org/pypi/partridge

.. image:: https://img.shields.io/travis/remix/partridge.svg
        :target: https://travis-ci.org/remix/partridge


Partridge is python library for working with
`GTFS <https://developers.google.com/transit/gtfs/>`__ feeds using
`pandas <https://pandas.pydata.org/>`__ DataFrames.

The implementation of Partridge is heavily influenced by our experience
at `Remix <https://www.remix.com/>`__ ingesting, analyzing, and
debugging thousands of GTFS feeds from hundreds of agencies.

At the core of Partridge is a dependency graph rooted at ``trips.txt``.
When reading the contents of a feed, disconnected data is pruned away
according to this graph. The root node can optionally be filtered to
create a view of the feed specific to your needs. It's most common to
filter a feed down to specific dates (``service_id``), routes
(``route_id``), or both.

.. figure:: dependency-graph.png
   :alt: dependency graph


Usage
-----

.. code:: python

    import datetime
    import partridge as ptg

    path = 'path/to/sfmta-2017-08-22.zip'

    service_ids_by_date = ptg.read_service_ids_by_date(path)

    feed = ptg.feed(path, view={
        'trips.txt': {
            'service_id': service_ids_by_date[datetime.date(2017, 9, 25)],
            'route_id': '12300', # 18-46TH AVENUE
        },
    })

    assert set(feed.trips.service_id) == service_ids_by_date[datetime.date(2017, 9, 25)]
    assert list(feed.routes.route_id) == ['12300']

    # Buses running the 18 - 46th Ave line use 88 stops (on September 25, 2017, at least).
    assert len(feed.stops) == 88

Features
--------

-  Surprisingly fast :)
-  Load only what you need into memory
-  Built-in support for resolving calendar days
-  Built on pandas DataFrames
-  Easily extended to support fields and files outside the official spec
   (TODO: document this)
-  Handle nested folders and bad data in zips
-  Predictable type conversions, by default

Installation
------------

.. code:: console

    pip install partridge

Thank You
---------

I hope you find this library useful. If you have suggestions for
improving Partridge, please open an `issue on
GitHub <https://github.com/remix/partridge/issues>`__.


=======
History
=======

0.2.0 (2017-09-30)
===================

* Add missing edge from fare_rules.txt to routes.txt in default dependency graph.


0.1.0 (2017-09-23)
------------------

* First release on PyPI.


