Skip to content

v1.1.0

Choose a tag to compare

@vdavez vdavez released this 29 May 14:44
dd4dab0

Fixed

  • _parse_webhook_alert: aligned the parser output with the WebhookAlert
    type contract. Sparse server payloads now hydrate query_type and filters
    as "" / {} (matching their declared non-null types) rather than None,
    and status is typed as the Literal["active", "paused"] the model promises.
    Clears the four type-check errors this introduced; no change for full payloads.
  • Contract model: removed dead fields (id, award_id, recipient_name,
    award_amount, awarding_agency, funding_agency) and added the real API
    fields (key, piid, obligated, total_contract_value,
    base_and_exercised_options_value, awarding_office, funding_office,
    naics_code, psc_code, set_aside, solicitation_identifier,
    parent_award, legislative_mandates, subawards_summary,
    place_of_performance). The deprecated fields remain declared with None
    defaults for one minor cycle (they never returned data) and will be removed
    in 2.0.0. New OrganizationOfficePayload dataclass for the office fields.
    (Contract is a documentation-only dataclass — not instantiated or exported
    — so there is no runtime impact.)
  • list_contracts: no longer sends page=1 to the cursor-only /api/contracts/
    endpoint. When no cursor is supplied, neither page nor cursor is sent and
    the API returns the first page by default.
  • Shape validation: registered the ContractOrIDVCompetition nested schema
    (alias of Competition) so nested selections like
    competition(extent_competed,number_of_offers_received) on contract / IDV
    shapes validate instead of raising ShapeValidationError.

Added

  • Budget accounts surface (tango v4.6.8): list_budget_accounts,
    get_budget_account, get_budget_account_quarters,
    get_budget_account_recipients. New BudgetAccount dataclass exported from
    the top-level package, plus ShapeConfig.BUDGET_ACCOUNTS_MINIMAL.
  • Singleton detail GETs: get_contract, get_contract_subawards,
    get_contract_transactions, get_forecast, get_grant, get_notice,
    get_opportunity, get_subaward.
  • get_entity_budget_flows(uei) for /api/entities/{uei}/budget-flows/.
  • list_otidv_awards(key) for /api/otidvs/{key}/awards/ (parity with Node).
  • grant_id filter kwarg on list_grants (supports multi-value OR via |).

CI

  • Re-enabled lint.yml as a PR + push-to-main gate. ruff format and
    ruff check are hard gates; mypy runs advisory (continue-on-error) pending
    burn-down of ~28 pre-existing type errors. The filter/shape conformance check
    is a separate job that skips cleanly until a TANGO_API_REPO_ACCESS_TOKEN
    secret for the private manifest repo is configured, at which point it becomes
    a hard gate.