Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## [Unreleased]

### Added

- **`themeparks-backfill` writes four more columns:** `implausibleWaitsStandby`,
`implausibleWaitsSingleRider`, `inParkHoursImplausibleWaitsStandby` and
`inParkHoursImplausibleWaitsSingleRider`. They count wait readings above the
destination's plausibility ceiling (600 minutes, or 300 at the destinations the
history notes list), which the API leaves out of the day's statistics. The cells
are empty on a day with none, as `extremeWaits*` are. The two standby and
single-rider pairs sit after `extremeWaitsSingleRider` and after
`inParkHoursExtremeWaitsSingleRider`, so the columns after them move right. A
file started by an earlier version is refused on resume instead of being
extended under a shifted header: finish it with that version or start a new
file. The Python and JavaScript SDKs write the same 45 columns.

## [4.1.0] - 2026-09-29

### Added
Expand Down
6 changes: 5 additions & 1 deletion tests/fixtures/csv_contract.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"SDK, copy this file to both repos, and expect both suites to fail until they",
"agree."
],
"fingerprint": "1b6ea478049dc7ca",
"fingerprint": "8cbd164fcfb9698c",
"columns": [
"parkId",
"parkName",
Expand All @@ -36,6 +36,8 @@
"singleRiderMax",
"extremeWaitsStandby",
"extremeWaitsSingleRider",
"implausibleWaitsStandby",
"implausibleWaitsSingleRider",
"showCount",
"inParkHoursScheduledMinutes",
"inParkHoursOperatingMinutes",
Expand All @@ -53,6 +55,8 @@
"inParkHoursSingleRiderMax",
"inParkHoursExtremeWaitsStandby",
"inParkHoursExtremeWaitsSingleRider",
"inParkHoursImplausibleWaitsStandby",
"inParkHoursImplausibleWaitsSingleRider",
"changes"
]
}
4 changes: 2 additions & 2 deletions tests/unit/test_backfill.py
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ def flat(obj: dict[str, object], prefix: str = "") -> list[str]:
# single-rider queue, so those columns are in the header and in no row.
assert "singleRiderP90" in backfill.CSV_COLUMNS
assert "singleRiderP90" not in seen
assert len(backfill.DATA_COLUMNS) == 36
assert len(backfill.DATA_COLUMNS) == 40

def test_an_absent_stats_block_is_empty_cells_never_zeroes(self, tmp_path: Path) -> None:
# A zero would read as "measured, and it was nothing". Absent means no
Expand Down Expand Up @@ -1268,7 +1268,7 @@ def test_the_columns_match_the_checked_in_contract(self) -> None:
def test_the_contract_is_not_trivially_satisfiable(self) -> None:
# Guard the oracle: an empty or stub fixture would agree with anything.
contract = json.loads((FIXTURES / "csv_contract.json").read_text(encoding="utf-8"))
assert len(contract["columns"]) == 41
assert len(contract["columns"]) == 45
assert len(contract["fingerprint"]) == 16
assert contract["columns"][:5] == backfill.IDENTITY_COLUMNS

Expand Down
Loading
Loading