v4.0.0
Overview
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.
New notices
GTFS-Fares v2 base implementation, added in google/transit/pull/286
- fare_transfer_rule_duration_limit_type_without_duration_limit 🔴 ERROR
- fare_transfer_rule_duration_limit_without_type 🔴 ERROR
- fare_transfer_rule_invalid_transfer_count 🔴 ERROR
- fare_transfer_rule_missing_transfer_count 🔴 ERROR
- fare_transfer_rule_with_forbidden_transfer_count 🔴 ERROR
- invalid_currency_amount 🔴 ERROR
Transfers, changes in google/transit/pull/303 and google/transit/pull/284
- transfer_with_invalid_stop_location_type 🔴 ERROR
- transfer_with_invalid_trip_and_route 🔴 ERROR
- transfer_with_invalid_trip_and_stop 🔴 ERROR
- transfer_with_suspicious_mid_trip_in_seat 🟠 WARNING
Best Practice rules
- missing_recommended_file (applies to
feed_info.txt
) 🟠 WARNING - missing_recommended_field (applies to
feed_info.txt
start_date
,end_date
,email
,URL
,version
) 🟠 WARNING) - feed_expiration_date_7_days (replacing feed_expiration_date) 🟠 WARNING
- feed_expiration_date_30_days (replacing feed_expiration_date) 🟠 WARNING
Impacts on existing data
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
- Trillium Transit
- San Diego Metropolitan Transit System
Complete list
See the complete list of datasets affected 1/2
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 |
See the complete list of datasets affected 2/2
What's changed
Bug fixes
- fix: Sign and Notarize MacOS App by @bdferris-v2 in #1250
- fix: "Validate" button disappears after app font-size change by @bdferris-v2 in #1255
- fix: Do not return non-zero exit code when exporting schema via CLI. by @bdferris-v2 in #1272
- fix: Bump queue_runner.sh max heap size to 10Gb by @bdferris-v2 in #1227
- fix(docker): update path to CLI jar by @themightychris in #1241
Rules
- feat: recommended file notice by @KClough in #1151
- feat: apply recommended file notice to feed_info by @KClough in #1197
- feat: add recommended field notice by @KClough in #1157
- feat: feed_info should include start_date, end_date, version, email, url by @KClough in #1156
- feat: add trip-to-trip and route-to-route fields to transfers by @KClough in #1208
- feat: Initial support for multiple @PrimaryKey annotations. by @bdferris-v2 in #1190
- feat: Apply multiple @PrimaryKey annotations to Transfers by @KClough in #1220
- feat: Add @CurrencyAmount annotation for currency amount validation by @bdferris-v2 in #1248
- Replace feed_expiration_date with rules for 7 and 30 days by @KClough in #1245
- feat: Initial support for Fares v2 validation. by @bdferris-v2 in #1228
- feat: transfers.txt trip=>route reference validation. by @bdferris-v2 in #1267
- feat: Add validation support for transfers.txt transfer_type 4 and 5. by @bdferris-v2 in #1266
Documentation updates
- Docs: Add new contribution guideline by @isabelle-dr in #1223
- docs: fix typos in RULES.md by @isabelle-dr in #1209
- Docs: Add point near pole by @isabelle-dr in #1211
- docs: fix typo in RULES.md by @isabelle-dr in #1217
- docs: Add example of validation report by @isabelle-dr in #1219
- Docs: Update README by @isabelle-dr in #1222
- Docs: Documentation updates by @isabelle-dr in #1257
- Docs: Update README.md by @isabelle-dr in #1259
- docs: fix typo in RULES.md by @isabelle-dr in #1242
- fix(docs): remove duplicate prefix in example commits by @themightychris in #1240
Other great stuff + general maintenance
- build(deps): bump numpy from 1.21.2 to 1.22.0 in /scripts/mobility-database-harvester by @dependabot in #1192
- feat: Updates acceptance tests to use the Mobility Database Catalogs by @maximearmstrong in #1204
- feat(ci): handle gradle build in Dockerfile by @themightychris in #1120
- feat: Add unit-tests for @PrimaryKey and @FirstKey/@SequenceKey by @bdferris-v2 in #1189
- feat: Add config.yml for welcome bot by @isabelle-dr in #1212
- Fix: Update config.yml by @isabelle-dr in #1216
- Fix: Update config.yml by @isabelle-dr in #1221
- feat: Move gtfsvalidator.cli package into new cli sub-module. by @bdferris-v2 in #1229
- feat: Switch gtfs-validator master to use cli/ module by @bdferris-v2 in #1239
- feat: Refactor the output comparator to consider dropped errors by @bdferris-v2 in #1238
- feat: Lighten end_to_end.yml workflow by @maximearmstrong in #1243
- build(deps): bump protobuf from 3.17.3 to 3.18.3 in /scripts/mobility-database-harvester by @dependabot in #1260
- feat: Check validator subclasses are annotated with @GtfsValidator by @bdferris-v2 in #1263
- Move GTFS field names from table loader to entity classes by @aababilov in #1274
New Contributors
- @themightychris made their first contribution in #1120 🥳
Full Changelog: v3.1.1...v4.0.0