Add public RT/load contracts, complete iteration, and wheel typing - #3
Open
kvkenyon wants to merge 1 commit into
Open
Add public RT/load contracts, complete iteration, and wheel typing#3kvkenyon wants to merge 1 commit into
kvkenyon wants to merge 1 commit into
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.
TinyERCOT's opt-in public client was limited to two DAM endpoints and sampling. This PR adds a reusable verified-contract registry, RT settlement prices and weather-zone actual load, complete caller-selected API/annual-file iteration, and installed-wheel PEP 561 proof. Legacy imports, signatures, defaults, exceptions, DataFrames, and runtime files remain unchanged.
Stacked on #2 (
feat/public-retrieval,01d8b69c4378040ca14d9683e9693e65cc3f93a8), above #1. Do not merge these PRs.Head:
12d60654632ce5c47543ef5f3410ec55972c8471. GitHub CI passed on both Python 3.11 and 3.14.Exact coverage
Generated typed coverage is 4 operations in 4 products out of 243 observed public data paths across 98 namespaces. This PR adds NP6-905-CD RT settlement prices and NP6-345-CD weather-zone load to NP4-190-CD DAM settlement and NP4-188-CD DAM capacity prices. It does not claim broad family coverage.
ReportsClientstreams all pages/rows for an explicit selection when callers remove total budgets. Per-response bytes, retry attempts and pacing remain bounded. Changing totals, preceding-page repetition, count mismatch, and budget exhaustion raise explicit opt-in errors.iter_dam_archiveadds every selected worksheet/row with source member, sheet, row and hash. Synthetic tests exhaust 2,010 rows across two sheets; no complete real annual extraction occurred.Evidence and boundaries
All 39 audited source families remain enumerated in
docs/public-retrieval.mdand the bundled coverage inventory. Four API operations and two narrow web subsets are covered; no whole broad family is marked complete. Unknown schemas remain unsupported, with no guessed model or generic raw bypass.Authorized Public API authentication occurred, following persisted inbox 001's explicit expansion of the initial unauthenticated audit scope. Six bounded public data requests returned eight total rows in this iteration. No restricted request, credential/token disclosure or copying, paid access, historical bulk extraction, forecaster work, no-mistakes, or merge occurred. No annual file was downloaded by this iteration's new probe. Normal tests are offline and never load
.env.Primary sources: ERCOT Public Reports specification, Public API authentication, annual DAM product, website ESR feed. Exact new public receipt hashes, times and counts are in
docs/evidence/installed-reports-receipts.json; fixture transformations and prior receipts remain alongside it.Validation
Additional isolated wheel smoke and PEP 561 checks passed with Python 3.11/NumPy 1.24.0/pandas 2.0.0/Pydantic 2.10.0 and Python 3.14/NumPy 2.5.2/pandas 3.0.5/Pydantic 2.13.5. The yanked NumPy 2.4.0 pin predates this task; only that existing runtime lock version changed, to 2.4.1. Runtime dependency constraints remain unchanged. The six new locked packages are development typing tools/dependencies. Exact install commands and documentation review notes:
docs/current-iteration-task-note.md.