Skip to content

Commit fdcfd36

Browse files
committed
More updates
1 parent 7caf6c9 commit fdcfd36

13 files changed

Lines changed: 18 additions & 942 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- Docs: `SHAPES.md` documents `federal_obligations(*)` as an expansion for entity shaping.
2020
- Integration tests: `test_parsing_nested_objects_with_missing_data` accepts award office fields (`office_code`, `agency_code`, `department_code`) and empty nested objects when the API returns partial data.
2121

22+
### Removed
23+
- Assistance: `list_assistance` endpoint and all related tests, docs, and references.
24+
- IDV summaries: `get_idv_summary` and `list_idv_summary_awards` endpoints and related integration tests, cassettes, and API reference section.
25+
2226
## [0.4.1] - 2026-03-03
2327

2428
### Added

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,11 @@ contract = client.get_gsa_elibrary_contract("UUID")
225225
### Reference Data
226226

227227
```python
228-
# Offices, organizations, NAICS, subawards, assistance, business types
228+
# Offices, organizations, NAICS, subawards, business types
229229
offices = client.list_offices(search="acquisitions")
230230
organizations = client.list_organizations(level=1)
231231
naics = client.list_naics(search="software")
232232
subawards = client.list_subawards(prime_uei="UEI123")
233-
assistance = client.list_assistance(fiscal_year=2025)
234233
business_types = client.list_business_types()
235234
```
236235

@@ -439,7 +438,6 @@ tango-python/
439438
│ ├── conftest.py # Integration test fixtures
440439
│ ├── validation.py # Validation utilities
441440
│ ├── test_agencies_integration.py
442-
│ ├── test_assistance_integration.py
443441
│ ├── test_contracts_integration.py
444442
│ ├── test_entities_integration.py
445443
│ ├── test_forecasts_integration.py

docs/API_REFERENCE.md

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ Complete reference for all Tango Python SDK methods and functionality.
1919
- [Opportunities](#opportunities)
2020
- [Notices](#notices)
2121
- [Grants](#grants)
22-
- [Assistance](#assistance)
2322
- [GSA eLibrary Contracts](#gsa-elibrary-contracts)
2423
- [Protests](#protests)
2524
- [Business Types](#business-types)
@@ -602,13 +601,6 @@ children = client.list_idv_child_idvs("SOME_IDV_KEY", limit=25)
602601
tx = client.list_idv_transactions("SOME_IDV_KEY", limit=100)
603602
```
604603

605-
### get_idv_summary() / list_idv_summary_awards()
606-
607-
```python
608-
summary = client.get_idv_summary("SOLICITATION_IDENTIFIER")
609-
awards = client.list_idv_summary_awards("SOLICITATION_IDENTIFIER", limit=25)
610-
```
611-
612604
---
613605

614606
## Entities
@@ -1038,48 +1030,6 @@ for grant in grants.results:
10381030

10391031
---
10401032

1041-
## Assistance
1042-
1043-
Financial assistance transactions (grants, direct payments, etc.).
1044-
1045-
### list_assistance()
1046-
1047-
List assistance transactions with keyset pagination.
1048-
1049-
```python
1050-
assistance = client.list_assistance(
1051-
limit=25,
1052-
cursor=None,
1053-
# Filter parameters (all optional)
1054-
assistance_type=None,
1055-
award_key=None,
1056-
fiscal_year=None,
1057-
fiscal_year_gte=None,
1058-
fiscal_year_lte=None,
1059-
highly_compensated_officers=None,
1060-
recipient=None,
1061-
recipient_address=None,
1062-
search=None,
1063-
)
1064-
```
1065-
1066-
**Notes:**
1067-
- Uses **keyset pagination** (`cursor` + `limit`) rather than page numbers.
1068-
1069-
**Filter Parameters:**
1070-
- `assistance_type` - Filter by assistance type
1071-
- `award_key` - Filter by award key
1072-
- `fiscal_year` - Exact fiscal year
1073-
- `fiscal_year_gte` / `fiscal_year_lte` - Fiscal year range
1074-
- `highly_compensated_officers` - Filter by highly compensated officers
1075-
- `recipient` - Search by recipient name
1076-
- `recipient_address` - Filter by recipient address
1077-
- `search` - Full-text search
1078-
1079-
**Returns:** [PaginatedResponse](#paginatedresponse) with assistance dictionaries
1080-
1081-
---
1082-
10831033
## GSA eLibrary Contracts
10841034

10851035
GSA Schedule contracts from the GSA eLibrary.

scripts/check_filter_shape_conformance.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
"naics": "list_naics",
5252
"gsa_elibrary_contracts": "list_gsa_elibrary_contracts",
5353
# Resources not yet implemented in SDK
54-
"assistance": None,
5554
"offices": None,
5655
}
5756

tango/client.py

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -944,32 +944,6 @@ def list_idv_transactions(
944944
page_metadata=data.get("page_metadata"),
945945
)
946946

947-
def get_idv_summary(self, identifier: str) -> dict[str, Any]:
948-
"""Get a summary for an IDV solicitation identifier (`/api/idvs/{identifier}/summary/`)."""
949-
return self._get(f"/api/idvs/{identifier}/summary/")
950-
951-
def list_idv_summary_awards(
952-
self,
953-
identifier: str,
954-
limit: int = 25,
955-
cursor: str | None = None,
956-
ordering: str | None = None,
957-
) -> PaginatedResponse:
958-
"""List awards under an IDV summary (`/api/idvs/{identifier}/summary/awards/`)."""
959-
params: dict[str, Any] = {"limit": min(limit, 100)}
960-
if cursor:
961-
params["cursor"] = cursor
962-
if ordering:
963-
params["ordering"] = ordering
964-
data = self._get(f"/api/idvs/{identifier}/summary/awards/", params)
965-
return PaginatedResponse(
966-
count=int(data.get("count") or len(data.get("results") or [])),
967-
next=data.get("next"),
968-
previous=data.get("previous"),
969-
results=data.get("results") or [],
970-
page_metadata=data.get("page_metadata"),
971-
)
972-
973947
def list_otas(
974948
self,
975949
limit: int = 25,
@@ -2069,47 +2043,6 @@ def list_grants(
20692043
results=results,
20702044
)
20712045

2072-
def list_assistance(
2073-
self,
2074-
limit: int = 25,
2075-
cursor: str | None = None,
2076-
assistance_type: str | None = None,
2077-
award_key: str | None = None,
2078-
fiscal_year: int | None = None,
2079-
fiscal_year_gte: int | None = None,
2080-
fiscal_year_lte: int | None = None,
2081-
highly_compensated_officers: str | None = None,
2082-
recipient: str | None = None,
2083-
recipient_address: str | None = None,
2084-
search: str | None = None,
2085-
) -> PaginatedResponse:
2086-
"""List assistance (financial assistance) transactions (`/api/assistance/`). Keyset pagination."""
2087-
params: dict[str, Any] = {"limit": min(limit, 100)}
2088-
if cursor:
2089-
params["cursor"] = cursor
2090-
for key, val in (
2091-
("assistance_type", assistance_type),
2092-
("award_key", award_key),
2093-
("fiscal_year", fiscal_year),
2094-
("fiscal_year_gte", fiscal_year_gte),
2095-
("fiscal_year_lte", fiscal_year_lte),
2096-
("highly_compensated_officers", highly_compensated_officers),
2097-
("recipient", recipient),
2098-
("recipient_address", recipient_address),
2099-
("search", search),
2100-
):
2101-
if val is not None:
2102-
params[key] = val
2103-
data = self._get("/api/assistance/", params)
2104-
return PaginatedResponse(
2105-
count=int(data.get("count") or len(data.get("results") or [])),
2106-
next=data.get("next"),
2107-
previous=data.get("previous"),
2108-
results=data.get("results", []),
2109-
cursor=data.get("cursor"),
2110-
page_metadata=data.get("page_metadata"),
2111-
)
2112-
21132046
# ============================================================================
21142047
# Webhooks (v2)
21152048
# ============================================================================

tests/cassettes/TestAssistanceIntegration.test_list_assistance

Lines changed: 0 additions & 158 deletions
This file was deleted.

0 commit comments

Comments
 (0)