Add typed ancillary-service requirement revisions - #13
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ERCOT's direct ancillary-service methodology archive contains numerical requirement workbooks that the SDK could not read. Add
Client.ancillary_requirementsfor anonymous discovery, download and typed reading of the 15 published workbook revisions spanning 2016–2026, including the September 1, 2026 revision.Each workbook returns a concrete model with requirement quantities, RRS components and ratios, adjustment tables, supporting values and located notes. Preserve partial-month/date labels, historical effective versions, original hour labels and adjustment bases. Requirement changes and adjustments are never applied automatically; these schedules remain separate from actual DAM/RT procurement. No dependency or shared-parser changes.
The new reader is 272 lines. The 545 KB fixture retains all 15 unchanged numerical workbooks; narrative Word files are excluded. Sources and evidence record original URLs, hashes and comparison scope. Documentation includes a battery/AS workflow.
Validation: 1,295 tests pass, strict mypy passes for 44 files, Ruff passes and regeneration leaves generated modules unchanged. A fresh anonymous download matches all fixture hashes. Tests compare all 51,515 original numeric cells, including hour-axis labels and supporting calculations, plus source periods, RRS components, adjustment bases and notes. The 245 KB wheel matches all runtime source files and excludes fixtures; the source distribution retains them unchanged.
The five open changes (PRs #9–#13) also pass together in an isolated local integration checkout: 1,308 tests, strict typing for 45 files, unchanged generated output and a successful 247 KB wheel containing all combined runtime files. Only appended documentation sections needed conflict resolution. No PRs were merged.