Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
802f1af
Updated gtfsdataset Schema to Support Time Zones for service_date_ran…
qcdyx Mar 6, 2025
321d935
added service_date_range_timezone column to gtfsdataset table
qcdyx Mar 6, 2025
825f23b
renamed files
qcdyx Mar 6, 2025
a3eb76c
fixed SQL error
qcdyx Mar 6, 2025
701e50e
fixed SQL error
qcdyx Mar 6, 2025
da63e5a
removed DEFAULT 'UTC';
qcdyx Mar 6, 2025
6b4494b
updated db schema
qcdyx Mar 10, 2025
ab9be1d
timezone changes
Alessandro100 Mar 11, 2025
82b2596
lint
Alessandro100 Mar 11, 2025
10e82f7
added logging
Alessandro100 Mar 11, 2025
f97abec
lint and test
Alessandro100 Mar 11, 2025
8ab2bd6
timezone fix
Alessandro100 Mar 11, 2025
9110b00
unit test fix
Alessandro100 Mar 11, 2025
f9e77f1
update open api schema
Alessandro100 Mar 12, 2025
a07bf7e
unit test
Alessandro100 Mar 12, 2025
03898bb
lint
Alessandro100 Mar 12, 2025
975779a
unit test fix
Alessandro100 Mar 12, 2025
4badfec
agency added to endpoints + test values updated
Alessandro100 Mar 12, 2025
034f596
lint
Alessandro100 Mar 12, 2025
39e8f45
model fix
Alessandro100 Mar 12, 2025
ad1ad87
changelog
Alessandro100 Mar 12, 2025
12ca886
updated view
Alessandro100 Mar 12, 2025
66cdd67
fix ENV issue
Alessandro100 Mar 21, 2025
e6fe98f
update documentation
Alessandro100 Mar 21, 2025
56db337
refactor sdr logic + tests
Alessandro100 Mar 21, 2025
7e49b13
lint
Alessandro100 Mar 21, 2025
6052ebd
frontend type update
Alessandro100 Mar 21, 2025
d639dae
timezone.py independence
Alessandro100 Mar 21, 2025
1a3f39d
process validation report test fix
Alessandro100 Mar 24, 2025
5b82008
documentation
Alessandro100 Mar 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/src/feeds/impl/models/gtfs_dataset_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,5 @@ def from_orm(cls, gtfs_dataset: Gtfsdataset | None) -> GtfsDataset | None:
validation_report=cls.from_orm_latest_validation_report(gtfs_dataset.validation_reports),
service_date_range_start=gtfs_dataset.service_date_range_start,
service_date_range_end=gtfs_dataset.service_date_range_end,
agency_timezone=gtfs_dataset.agency_timezone,
)
1 change: 1 addition & 0 deletions api/src/feeds/impl/models/latest_dataset_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def from_orm(cls, dataset: Gtfsdataset | None) -> LatestDataset | None:
downloaded_at=dataset.downloaded_at,
service_date_range_start=dataset.service_date_range_start,
service_date_range_end=dataset.service_date_range_end,
agency_timezone=dataset.agency_timezone,
hash=dataset.hash,
validation_report=validation_report,
)
1 change: 1 addition & 0 deletions api/src/feeds/impl/models/search_feed_item_result_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def from_orm_gtfs(cls, feed_search_row):
hash=feed_search_row.latest_dataset_hash,
service_date_range_start=feed_search_row.latest_dataset_service_date_range_start,
service_date_range_end=feed_search_row.latest_dataset_service_date_range_end,
agency_timezone=feed_search_row.latest_dataset_agency_timezone,
)
if feed_search_row.latest_dataset_id
else None,
Expand Down
20 changes: 12 additions & 8 deletions api/tests/test_data/extra_test_data.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
"hash": "hash",
"downloaded_at": "2024-01-31T00:00:00+00:00",
"feed_stable_id": "mdb-1",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-2",
Expand All @@ -19,8 +20,9 @@
"hash": "hash",
"downloaded_at": "2024-02-01T00:00:00+00:00",
"feed_stable_id": "mdb-1",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-3",
Expand All @@ -30,8 +32,9 @@
"hash": "hash",
"downloaded_at": "2024-02-02T00:00:00+00:00",
"feed_stable_id": "mdb-10",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-4",
Expand All @@ -41,8 +44,9 @@
"hash": "hash",
"downloaded_at": "2024-02-03T00:00:00+00:00",
"feed_stable_id": "mdb-10",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
}
],
"validation_reports": [
Expand Down
25 changes: 15 additions & 10 deletions api/tests/test_data/test_datasets.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
"hash": "hash-1",
"latest": true,
"bounding_box": "POLYGON((-122.75 36.8, -122.75 37.8, -121.75 37.8, -121.75 36.8, -122.75 36.8))",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-2",
Expand All @@ -20,8 +21,9 @@
"hash": "hash-2",
"latest": false,
"bounding_box": "POLYGON((-122.75 36.8, -122.75 37.8, -121.75 37.8, -121.75 36.8, -122.75 36.8))",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-3",
Expand All @@ -31,8 +33,9 @@
"hash": "hash-3",
"latest": true,
"bounding_box": "POLYGON((-122.75 36.8, -122.75 37.8, -121.75 37.8, -121.75 36.8, -122.75 36.8))",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-4",
Expand All @@ -42,8 +45,9 @@
"hash": "hash-4",
"latest": false,
"bounding_box": "POLYGON((-122.75 36.8, -122.75 37.8, -121.75 37.8, -121.75 36.8, -122.75 36.8))",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
},
{
"id": "dataset-5",
Expand All @@ -53,8 +57,9 @@
"hash": "hash-5",
"latest": true,
"bounding_box": "POLYGON((-122.75 36.8, -122.75 37.8, -121.75 37.8, -121.75 36.8, -122.75 36.8))",
"service_date_range_start": "2024-01-01",
"service_date_range_end":"2025-01-01"
"service_date_range_start": "2024-09-29T00:00:00+00:00",
"service_date_range_end":"2025-09-29T00:00:00+00:00",
"agency_timezone": "Canada/Atlantic"
}
],
"validation_reports": [
Expand Down
8 changes: 5 additions & 3 deletions api/tests/unittest/models/test_basic_feed_impl.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import copy
import unittest
from datetime import datetime, date
from datetime import datetime
from zoneinfo import ZoneInfo

from shared.database_gen.sqlacodegen_models import (
Feed,
Expand Down Expand Up @@ -64,8 +65,9 @@
downloaded_at="downloaded_at",
hash="hash",
bounding_box="bounding_box",
service_date_range_start=date(2024, 1, 1),
service_date_range_end=date(2025, 1, 1),
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
validation_reports=[
Validationreport(
id="id",
Expand Down
13 changes: 8 additions & 5 deletions api/tests/unittest/models/test_gtfs_dataset_impl.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from datetime import datetime, date
from datetime import datetime
from zoneinfo import ZoneInfo

from geoalchemy2 import WKTElement

Expand Down Expand Up @@ -42,8 +43,9 @@ def test_from_orm(self):
Validationreport(validator_version="0.2.0"),
Validationreport(validator_version="1.1.1"),
],
service_date_range_start=date(2024, 1, 1),
service_date_range_end=date(2025, 1, 1),
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
)
result = GtfsDatasetImpl.from_orm(orm)
assert result.id == "stable_id"
Expand All @@ -58,7 +60,8 @@ def test_from_orm(self):
assert result.bounding_box.minimum_longitude == 3.0
assert result.bounding_box.maximum_longitude == 4.0
assert result.validation_report.validator_version == "1.1.1"
assert result.service_date_range_start == date(2024, 1, 1)
assert result.service_date_range_end == date(2025, 1, 1)
assert result.service_date_range_start == datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic"))
assert result.service_date_range_end == datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic"))
assert result.agency_timezone == "Canada/Atlantic"

assert GtfsDatasetImpl.from_orm(None) is None
13 changes: 8 additions & 5 deletions api/tests/unittest/models/test_gtfs_feed_impl.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import copy
import unittest
from datetime import datetime, date
from datetime import datetime
from zoneinfo import ZoneInfo

from geoalchemy2 import WKTElement

Expand Down Expand Up @@ -87,8 +88,9 @@ def create_test_notice(notice_code: str, total_notices: int, severity: str):
note="note",
downloaded_at=datetime(year=2022, month=12, day=31, hour=13, minute=45, second=56),
hash="hash",
service_date_range_start=date(2024, 1, 1),
service_date_range_end=date(2025, 1, 1),
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
bounding_box=WKTElement(POLYGON, srid=4326),
latest=True,
validation_reports=[
Expand Down Expand Up @@ -171,8 +173,9 @@ def create_test_notice(notice_code: str, total_notices: int, severity: str):
unique_warning_count=4,
unique_info_count=2,
),
service_date_range_start="2024-01-01",
service_date_range_end="2025-01-01",
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
),
)

Expand Down
13 changes: 8 additions & 5 deletions api/tests/unittest/models/test_latest_dataset_impl.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from datetime import datetime, date
from datetime import datetime
from zoneinfo import ZoneInfo

from geoalchemy2 import WKTElement

Expand All @@ -23,8 +24,9 @@ def test_from_orm(self):
downloaded_at=now,
hash="hash",
bounding_box=WKTElement(POLYGON, srid=4326),
service_date_range_start=date(2024, 1, 1),
service_date_range_end=date(2025, 1, 1),
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
validation_reports=[
Validationreport(validator_version="1.0.0"),
Validationreport(
Expand Down Expand Up @@ -52,8 +54,9 @@ def test_from_orm(self):
minimum_longitude=3.0,
maximum_longitude=4.0,
),
service_date_range_start=date(2024, 1, 1),
service_date_range_end=date(2025, 1, 1),
service_date_range_start=datetime(2024, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
service_date_range_end=datetime(2025, 1, 1, 0, 0, 0, tzinfo=ZoneInfo("Canada/Atlantic")),
agency_timezone="Canada/Atlantic",
validation_report={
"validator_version": "1.2.0",
"total_error": 3,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ def __init__(self, **kwargs):
latest_dataset_downloaded_at=downloaded_at,
latest_dataset_bounding_box=None,
latest_dataset_hash="latest_dataset_hash",
latest_dataset_service_date_range_start="2030-10-10",
latest_dataset_service_date_range_end="2031-10-10",
latest_dataset_service_date_range_start="2030-09-29T00:00:00+00:00",
latest_dataset_service_date_range_end="2031-09-29T00:00:00+00:00",
latest_dataset_agency_timezone="Canada/Atlantic",
external_ids=[],
redirect_ids=[],
feed_reference_ids=[],
Expand Down Expand Up @@ -84,6 +85,7 @@ def test_from_orm_gtfs(self):
hash=item.latest_dataset_hash,
service_date_range_start=item.latest_dataset_service_date_range_start,
service_date_range_end=item.latest_dataset_service_date_range_end,
agency_timezone=item.latest_dataset_agency_timezone,
),
)
assert result == expected
Expand Down
32 changes: 20 additions & 12 deletions docs/DatabaseCatalogAPI.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -584,15 +584,19 @@ components:
type: string
example: ad3805c4941cd37881ff40c342e831b5f5224f3d8a9a2ec3ac197d3652c78e42
service_date_range_start:
description: The start date of the service date range for the dataset.
description: The start date of the service date range for the dataset in UTC. Timing starts at 00:00:00 of the day.
type: string
example: 2023-07-10
format: date
example: 2023-07-10T06:00:00Z
format: date-time
service_date_range_end:
description: The start date of the service date range for the dataset.
description: The start date of the service date range for the dataset in UTC. Timing ends at 23:59:59 of the day.
type: string
example: 2023-07-10T05:59:59+00Z
format: date-time
agency_timezone:
description: The timezone of the agency.
type: string
example: 2023-07-10
format: date
example: America/Los_Angeles
validation_report:
type: object
properties:
Expand Down Expand Up @@ -784,15 +788,19 @@ components:
validation_report:
$ref: "#/components/schemas/ValidationReport"
service_date_range_start:
description: The start date of the service date range for the dataset.
description: The start date of the service date range for the dataset in UTC. Timing starts at 00:00:00 of the day.
type: string
example: 2023-07-10
format: date
example: 2023-07-10T06:00:00Z
format: date-time
service_date_range_end:
description: The start date of the service date range for the dataset.
description: The start date of the service date range for the dataset in UTC. Timing ends at 23:59:59 of the day.
type: string
example: 2023-07-10T05:59:59+00Z
format: date-time
agency_timezone:
description: The timezone of the agency.
type: string
example: 2023-07-10
format: date
example: America/Los_Angeles

BoundingBox:
description: Bounding box of the dataset when it was first added to the catalog.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Environment variables for the validation report information extraction to run locally
export FEEDS_DATABASE_URL=${{FEEDS_DATABASE_URL}}
export ENV=${{ENV}}
Loading
Loading