Canonical GTFS Validator project for schedule (static) files.
This minor release was created to fix a key bug that was preventing feed URLs from running successfully in the Web UI. This bug only impacted the Web UI, not the desktop app or CLI tool.
For more details on our 5.0.0 release, you can read about them here.
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v5.0.0...v5.0.1
There have been repeated issues with the sensitivity of
trip_distance_exceeds_shape_distance
and equal_shape_distance_diff_coordinates
. No more! We did an extensive review of real life GTFS data from the Mobility Database and decided on thresholds for these two errors. Now data producers will only see these errors when theyβre a significant issue for data quality. Below the thresholds, these issues will generate a warning instead.
validatedAt
field to be machine readable.equal_shape_distance_diff_coordinates
: Error is triggered when there's 1.11 metres or more distance between the different shape points. Discussion here.trip_distance_exceeds_shape_distance
: Error is triggered when there's 11.1 metres or more distance between the last stop point and the last shape point. Discussion here.stop_without_zone_id
changed from π΄ ERROR to βͺ INFO and updated so it is only triggered when there are route-based fare related fields in fare_rules.txt
. Discussed in the spec in https://github.com/google/transit/pull/432.route_networks_specified_in_more_than_one_file
: New π΄ ERROR for Fares v2 data. Added to spec in https://github.com/google/transit/pull/405.equal_shape_distance_diff_coordinates_distance_below_threshold
: New π‘ WARNING that is triggered when the distance between the different shape points is less than 1.11 metres.trip_distance_exceeds_shape_distance_below_threshold
: New π‘ WARNING that is triggered when the distance between the last stop point and the last shape point is less than 11.1 metres.You can find the impact of this release on all existing datasets we have in the Mobility Database in this spreadsheet.
equal_shape_distance_diff_coordinates
by @cka-y in https://github.com/MobilityData/gtfs-validator/pull/1675
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v4.2.0...v5.0.0
This release includes
You can find the impact of this release on all existing datasets we have in the Mobility database in this spreadsheet.
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v4.1.0...v4.2.0
set-output
in GH actions by @fredericsimard in https://github.com/MobilityData/gtfs-validator/pull/1571
This release includes the addition of the Web version available at https://gtfs-validator.mobilitydata.org/, new notices, support for Fare Media that was adopted in GTFS in March 2023, and initial support to programmatically generate the notice documentation. See the notice mapping between releases in NOTICE_MIGRATION.md.
You can find the impact of this release on all existing datasets we have in the Mobility database in this spreadsheet.
test_pack_doc.yml
workflow by @bdferris-v2 in https://github.com/MobilityData/gtfs-validator/pull/1382
model
module by @bdferris-v2 in https://github.com/MobilityData/gtfs-validator/pull/1362
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v4.0.0...v4.1.0
This is tagged as a major release because adding the rules for Fares v2 base implementation is affecting the validity of existing datasets. We started to evaluate the impact of new rules on production data in 2022 with the acceptance tests, which runs this validator on all datasets from the Mobility Database, and reports if additional errors appear. When new errors appear, we publish a major release.
GTFS-Fares v2 base implementation, added in google/transit/pull/286
Transfers, changes in google/transit/pull/303 and google/transit/pull/284
Best Practice rules
feed_info.txt
) π WARNINGfeed_info.txt
start_date
, end_date
, email
, URL
, version
) π WARNING)On all datasets MobilityData ran the analytics on, we found that 73 sources would be affected by this release. The datasets affected mostly contain earlier versions of Fares v2 that don't match what was adopted in the spec, and uncertain cases, future versions. The detailed analysis is in the Fares v2 base implementation for the validator document.
Producers affected
Complete list
URL | Notices |
---|---|
http://data.trilliumtransit.com/gtfs/nts-ca-us/nts-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/victorville-ca-us/victorville-ca-us.zip | duplicate_key,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/tracy-ca-us/tracy-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/downey-ca-us/downey-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/weaverville-ca-us/weaverville-ca-us.zip | duplicate_key,foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/laketransit-ca-us/laketransit-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/auburntransit-ca-us/auburntransit-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/cityofridgecrest-ca-us/cityofridgecrest-ca-us.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
https://www.sdmts.com/google_transit_files/google_transit.zip | duplicate_key,fare_transfer_rule_missing_transfer_count,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/lagunabeach-ca-us/lagunabeach-ca-us.zip | invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/goldcountrystage-ca-us/goldcountrystage-ca-us.zip | duplicate_key,fare_transfer_rule_with_forbidden_transfer_count,foreign_key_violation,invalid_currency_amount |
https://transitfeeds.com/p/santa-cruz-metro/343/latest/download | duplicate_key,invalid_currency_amount,missing_required_field |
http://data.trilliumtransit.com/gtfs/redding-ca-us/redding-ca-us.zip | duplicate_key,foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/corona-ca-us/corona-ca-us.zip | fare_transfer_rule_missing_transfer_count,foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/gtrans-ca-us/gtrans-ca-us.zip | fare_transfer_rule_with_forbidden_transfer_count,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/vctc-ca-us/vctc-ca-us.zip | fare_transfer_rule_with_forbidden_transfer_count,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/sanbenitocounty-ca-us/sanbenitocounty-ca-us.zip | fare_transfer_rule_with_forbidden_transfer_count,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/delnorte-ca-us/delnorte-ca-us.zip | fare_transfer_rule_with_forbidden_transfer_count,foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/plumas-ca-us/plumas-ca-us.zip | foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/sagestage-ca-us/sagestage-ca-us.zip | foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/bigbear-ca-us/bigbear-ca-us.zip | foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/mercedthebus-ca-us/mercedthebus-ca-us.zip | foreign_key_violation,invalid_currency_amount |
http://data.trilliumtransit.com/gtfs/thousandoaks-ca-us/thousandoaks-ca-us.zip | foreign_key_violation,invalid_currency_amount |
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v3.1.1...v4.0.0
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v3.1.0...v3.1.1
π£ New feature alert! Users can now run the validator as a packaged app and see the results in the browser. This work is described in the epic issue #1124
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v3.0.1...v3.1.0
The main difference between the v3.0.0 and v3.0.1 is the modification of ShapeIncreasingDistanceValidator. After a discussion in #1070, we realized that we had a problem with the notice DecreasingOrEqualShapeDistanceNotice (previously an ERROR): because of the way scheduling software produce data, we can have records in shapes.txt
that have equal coordinates, and equal values for shape_dist_traveled
. This can happen when two shape points are really close to one another. It creates a somewhat duplicative record, and this should not be an ERROR. A true ERROR happens if values of shape_distance_traveled
are equal for two shape points that have different coordinates.
We decided to replace this notice with three new ones (in PR #1083):
1- DecreasingShapeDistanceNotice as an ERROR: if two consecutive shape points have decreasing values for shape_dist_traveled
.
2- EqualShapeDistanceDiffCoordinatesNotice as an ERROR: if two consecutive points have equal shape_dist_traveled
and different lat/lon coordinates in shapes.txt
.
3- EqualShapeDistanceSameCoordinatesNotice as a WARNING: if two record have the same values for shape_dist_traveled
and lat/lon coordinates in shapes.txt
.
ImmutableMap.Builder.buildOrThrow()
instead of build()
by @aababilov in https://github.com/MobilityData/gtfs-validator/pull/1103
Full Changelog: https://github.com/MobilityData/gtfs-validator/compare/v3.0.0...v3.0.1
β‘οΈ Solve discrepancies with the official GTFS specification. 26 new rules have been added in total:
Please refer to the V2.0.0 to V3.0.0 rule mapping available in NOTICE_MIGRATION.md for more details on the rule updates.
β‘οΈ Implement automated tests that will evaluate if a new rule results in datasets from the mobility database getting additional errors. If so, the Pull Request is blocked and a report will be generated for further investigation. This ensures the stability and reliability of this validator, while still being updated with updates and extensions in the specification.
β‘οΈ Make sure MobilityData's work has related public communication to facilitate community contribution (issues opened, public sprint board and bug tracking board, roadmap, ways for users to voice what they'd like to see next and for contributors to see how to get involved).
There are also new command line parameters that can be found in USAGE.md.
There is a lot more work included in this release, thanks to our amazing contributors. See details below!
routes.txt
stops.txt
stop_times.txt
pathways.txt and levels.txt
translations.txt
Better notice schema export
Better documentation
Bugs
Other good stuff
Massive shoutout to: π @aababilov π @asvechnikov2 π @barbeau π @lionel-nj π @maximearmstrong π @isabelle-dr
We're excited to bring you this v2 release of the gtfs-validator! A lot has changed since v1, and we think you'll appreciate the new features.
OutOfMemory
error, and now it can be validated in 2 minutes and 12 seconds on an ordinary laptop!.java
file. See the "Adding new rules" documentation for examples.system_errors.json
to help with troubleshooting (PR #596). Normal validation results can be found in report.json
.