v1.11.0 — Derived transparency, cheaper latest-value fetches, hot-path performance
This release closes the three open items from the latest code review: it makes the
derived layer's alignment method machine-readable, stops the "latest print" path
from downloading full history, and removes wasted work on the request hot path.
All changes are additive and backward-compatible.
Added
alignment_methodon every derived series.metadata.derivednow carries an
explicitalignment_method— one oflocf,exact_month,period_intersection,
oryear_ended_lag— so a consumer can tell how a derived indicator's operands were
aligned (e.g. last-observation-carried-forward, which can bias spreads and ratios
around turning points). Declared on all 16 derived concepts and added to the
response JSON Schema. (#65)
Changed
- Real-rate concepts now state their ex-post basis.
real_cash_rate,
real_10y_bond_yield,real_bank_bill_rate,real_business_lending_rate, and
real_mortgage_ratedescriptions now make explicit that they are ex-post real rates
(nominal less realised year-ended CPI inflation), not the ex-ante Fisher
definition. (#65) - Response contract:
derived_metadatainschemas/response.schema.jsongains a
requiredalignment_methodfield. This is additive — existing fields and tool
signatures are unchanged. (#65)
Performance
- Cheaper latest-value fetches.
get_latest_observationsfor ABS now requests
only the most recent observations upstream via SDMXlastNObservations, keyed
distinctly in the cache, instead of downloading the full dataflow and truncating
client-side. The expertget_abs_datatool is unchanged. (#66) - Hot-path pass. Derived-operand fetches now run concurrently (
asyncio.gather);
payload copying is centralised in the cache (the request hot path drops from two
deep copies to one); cache disk I/O is offloaded off the event loop; and concurrent
identical upstream fetches are coalesced with a single-flight helper so a burst of
duplicate requests hits the source only once. (#67)
Fixed
real_business_lending_ratenow aligns its lending-rate and inflation operands by
(year, month), so the RBA monthly end-of-month series and the ABS monthly CPI
series intersect correctly instead of yielding an empty result.