From 50b8896aedd8c72afa862fb03e88fe831a1e53fc Mon Sep 17 00:00:00 2001 From: "V. David Zvenyach" Date: Thu, 10 Sep 2026 10:57:07 -0500 Subject: [PATCH] chore(release): v1.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minor rather than patch: 1.5.1 → 1.6.0 adds the SLED surface and the `attachments(extracted_text)` leaf, which are new features, not fixes. Graduates `[Unreleased]`, and bumps `pyproject.toml`, `__version__` and `uv.lock` together — the first two have to agree or the published wheel disagrees with the package it reports itself to be. Publishing is on `release: [published]`, so merging this changes nothing on PyPI; creating the v1.6.0 Release is what ships it. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 2 ++ pyproject.toml | 2 +- tango/__init__.py | 2 +- uv.lock | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0c090b..dcc18cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.6.0] - 2026-09-10 + ### Added - **`attachments(extracted_text)` — SLED document bodies on the Small plan and above** (Tango API 4.25.1). Re-vendored the contract and regenerated the shape overlay, so `shape="...,attachments(name,extracted_text)"` now validates instead of being rejected client-side. Three properties are documented on the model and in `docs/API_REFERENCE.md`, because each is otherwise a support question: the leaf must be **named** (neither `SLED_OPPORTUNITIES_MINIMAL` nor `SLED_OPPORTUNITIES_COMPREHENSIVE` includes it, and `attachments(*)` does not carry it, because the API only resolves the body for a caller who asked); the **key is absent rather than null** when the text is not being served, so read it with `.get()`; and a **contested document never returns text at any plan**. Searching document text stays ungated on every plan and returns no fragment of it — buying the body does not change search. - **State, local and education (SLED) procurement** (Tango API 4.25.0). Six methods over the new `/api/sled/` namespace: `list_sled_opportunities()`, `get_sled_opportunity()`, `list_sled_opportunity_revisions()`, `get_sled_coverage()`, `list_sled_forecasts()`, `get_sled_forecast()`, plus `SledOpportunity` / `SledOpportunityRevision` / `SledForecast` schemas and five `ShapeConfig` defaults. Every one of the API's 27 solicitation filters and 13 forecast filters is an explicit named parameter. diff --git a/pyproject.toml b/pyproject.toml index db53049..ce1956b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "tango-python" -version = "1.5.1" +version = "1.6.0" description = "Python SDK for the Tango API" readme = "README.md" requires-python = ">=3.12" diff --git a/tango/__init__.py b/tango/__init__.py index b1b2d90..4d78198 100644 --- a/tango/__init__.py +++ b/tango/__init__.py @@ -53,7 +53,7 @@ ) from .webhooks.receiver import Delivery, WebhookReceiver -__version__ = "1.5.1" +__version__ = "1.6.0" __all__ = [ "TangoClient", "TangoAPIError", diff --git a/uv.lock b/uv.lock index 98beefc..bc1819f 100644 --- a/uv.lock +++ b/uv.lock @@ -515,7 +515,7 @@ wheels = [ [[package]] name = "tango-python" -version = "1.5.1" +version = "1.6.0" source = { editable = "." } dependencies = [ { name = "httpx" },