Original release on 2010-08-05:
- New features
- Introduction of an extensibility mechanism so validation can be altered without directly changing the base transitfeed code (r1296. Other related commits: r1319)
- Validation changes
- Transfers are now ID'd by the pair (from_stop_id, to_stop_id). While not prohibited by GTFS duplicate IDs are still allowed, but a warning is issued (r1268)
- Warning when two trips in the same block have overlapping stop time intervals, and when both trips run on the same date. (Change by Brian Ferris - issue 230, r1297)
- Removed error when transfers = 0 and transfer_duration > 0, as it is allowed by GTFS (issue 232, r1298)
- Added a warning when there are no exceptions defined in calendar_dates.txt (r1306)
- Added detection of large transfers. Issues a warning if the stops are >2km appart, and an error if they are >10km appart. Also issues a warning if min_transfer_time + 120s is not enough to cover the distance when walking at 2m/s (very fast walking). (issue 234, r1307)
- util.FloatStringToFloat and util.NonNegIntStringToInt are now more flexible, issuing a warning when the number formats are not recognized but can be parsed by Python. As this is implementation dependent, it should be moved to an error as soon as possible. (r1350)
- transitfeed API changes
- Introduction of an object factory (r1281)
- Introduction of the HeadwayPeriod (later renamed to Frequency) and GtfsFactory classes (r1281)
- Trip._FIELD_NAMES_HEADWAY was removed. Frequency._FIELD_NAMES should be used instead. (r1296)
- Invalid values in routes.txt's route_color and route_text_color are now replaced by the respective default values (r1281)
- Schedule.AddAgencyObject() no longer calls Validate() by default on the Agency object being added (r1281)
- Schedule.AddTripObject() no longer calls Validate() by default on the Trip object being added (r1281)
- Schedule.AddRouteObject() no longer calls Validate() on the Route object being added (r1281)
- Instanciation of GTFS classes should not be done directly, but through GtfsFactory instead (r1281)
- Introduction of a ShapePoint class (r1289)
- Separation between problem reporting (what warnings and errors exist) and accumulation (how to handle them). (r1319)
- Renamed a couple of classes to more closely mirror their respective GTFS names. Fare was renamed FareAttribute and HeadwayPeriod was renamed Frequency. GenericGTFSObject was also renamed to GtfsObjectBase. (r1324)
- Other changes
- FeedValidator on Windows now deletes database file successfully (issue 206, r1257)
- Introduction of a GenericGTFSObject (later renamed GtfsObjectBase) from which all GTFS classes should inherit (r1258)
- Moved each GTFS class to its own file and removed the big transitfeed/_transitfeed.py. The API was not changed. (issue 196, r1275)
- Fixed google_random_queries.py usage info, added URL to usage of several tools (r1280)
- Added single date selection to Schedule Viewer (issue 17, r1300)
- Unit tests now pass in Python 2.6 (issue 237, r1323)
- All classes, except StopTime for performance reasons, go through the GtfsFactory instead of directly instantiating classes. (r1321)