tango-python 1.7.0__py3-none-any.whl → 1.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tango/__init__.py +3 -1
- tango/client.py +158 -7
- tango/models.py +77 -0
- tango/shapes/explicit_schemas.py +78 -0
- tango/shapes/generated_overlay.py +34 -0
- {tango_python-1.7.0.dist-info → tango_python-1.8.0.dist-info}/METADATA +1 -1
- {tango_python-1.7.0.dist-info → tango_python-1.8.0.dist-info}/RECORD +10 -10
- {tango_python-1.7.0.dist-info → tango_python-1.8.0.dist-info}/WHEEL +0 -0
- {tango_python-1.7.0.dist-info → tango_python-1.8.0.dist-info}/entry_points.txt +0 -0
- {tango_python-1.7.0.dist-info → tango_python-1.8.0.dist-info}/licenses/LICENSE +0 -0
tango/__init__.py
CHANGED
|
@@ -15,6 +15,7 @@ from .models import (
|
|
|
15
15
|
DibbsRfp,
|
|
16
16
|
DibbsRfq,
|
|
17
17
|
Exclusion,
|
|
18
|
+
FederalRegisterDocument,
|
|
18
19
|
GsaElibraryContract,
|
|
19
20
|
ITDashboardInvestment,
|
|
20
21
|
PaginatedResponse,
|
|
@@ -54,7 +55,7 @@ from .webhooks import (
|
|
|
54
55
|
)
|
|
55
56
|
from .webhooks.receiver import Delivery, WebhookReceiver
|
|
56
57
|
|
|
57
|
-
__version__ = "1.
|
|
58
|
+
__version__ = "1.8.0"
|
|
58
59
|
__all__ = [
|
|
59
60
|
"TangoClient",
|
|
60
61
|
"TangoAPIError",
|
|
@@ -67,6 +68,7 @@ __all__ = [
|
|
|
67
68
|
"ResolveResult",
|
|
68
69
|
"BudgetAccount",
|
|
69
70
|
"ContractAppeal",
|
|
71
|
+
"FederalRegisterDocument",
|
|
70
72
|
"DibbsAward",
|
|
71
73
|
"DibbsRfp",
|
|
72
74
|
"DibbsRfq",
|
tango/client.py
CHANGED
|
@@ -30,6 +30,7 @@ from tango.models import (
|
|
|
30
30
|
DibbsRfq,
|
|
31
31
|
Entity,
|
|
32
32
|
Exclusion,
|
|
33
|
+
FederalRegisterDocument,
|
|
33
34
|
Forecast,
|
|
34
35
|
Grant,
|
|
35
36
|
GsaElibraryContract,
|
|
@@ -1601,18 +1602,18 @@ class TangoClient:
|
|
|
1601
1602
|
cio_rating_max: int | None = None,
|
|
1602
1603
|
performance_risk: bool | None = None,
|
|
1603
1604
|
previous_uii: str | None = None,
|
|
1605
|
+
agency: str | None = None,
|
|
1604
1606
|
) -> PaginatedResponse:
|
|
1605
1607
|
"""List federal IT investments from the IT Dashboard (`/api/itdashboard/`).
|
|
1606
1608
|
|
|
1607
1609
|
Filters are tier-gated by the API:
|
|
1608
1610
|
|
|
1609
|
-
- **Free**: ``search`` (full-text across UII, title, description, agency,
|
|
1610
|
-
bureau) and ``previous_uii`` — following a retired identifier forward to
|
|
1611
|
-
whatever superseded it is recovery, not analysis, so it is ungated
|
|
1611
|
+
- **Free**: ``search`` (full-text across UII, title, description, agency, bureau), ``agency_name`` (text), ``agency`` and ``previous_uii`` — following a retired identifier forward to whatever superseded it is recovery, not analysis, so it is ungated
|
|
1612
1612
|
- **Pro**: ``agency_code``, ``type_of_investment``,
|
|
1613
1613
|
``updated_time_after`` / ``updated_time_before``
|
|
1614
|
-
- **Business+**: ``
|
|
1615
|
-
|
|
1614
|
+
- **Business+**: ``cio_rating``, ``cio_rating_max``, ``performance_risk``
|
|
1615
|
+
|
|
1616
|
+
``agency`` takes a Tango agency name, abbreviation, code or organization key, e.g. ``DOT``, and matches the whole organization subtree, so a department includes its sub-agencies. OR several with ``|``.
|
|
1616
1617
|
|
|
1617
1618
|
Hitting a gated filter on a lower tier returns a 403 with upgrade info.
|
|
1618
1619
|
|
|
@@ -1632,6 +1633,7 @@ class TangoClient:
|
|
|
1632
1633
|
params["flat_lists"] = "true"
|
|
1633
1634
|
for k, val in (
|
|
1634
1635
|
("search", search),
|
|
1636
|
+
("agency", agency),
|
|
1635
1637
|
("agency_code", agency_code),
|
|
1636
1638
|
("agency_name", agency_name),
|
|
1637
1639
|
("type_of_investment", type_of_investment),
|
|
@@ -2818,6 +2820,149 @@ class TangoClient:
|
|
|
2818
2820
|
data = self._get(f"/api/contract_appeals/{appeal_id}/", params)
|
|
2819
2821
|
return self._parse_response_with_shape(data, shape, ContractAppeal, flat, flat_lists)
|
|
2820
2822
|
|
|
2823
|
+
# ============================================================================
|
|
2824
|
+
# Federal Register documents
|
|
2825
|
+
# ============================================================================
|
|
2826
|
+
|
|
2827
|
+
def list_federal_register_documents(
|
|
2828
|
+
self,
|
|
2829
|
+
page: int = 1,
|
|
2830
|
+
limit: int = 25,
|
|
2831
|
+
shape: str | None = None,
|
|
2832
|
+
flat: bool = False,
|
|
2833
|
+
flat_lists: bool = False,
|
|
2834
|
+
search: str | None = None,
|
|
2835
|
+
document_number: str | None = None,
|
|
2836
|
+
type: str | None = None,
|
|
2837
|
+
agency: str | None = None,
|
|
2838
|
+
fr_agency: str | None = None,
|
|
2839
|
+
publication_date_after: str | None = None,
|
|
2840
|
+
publication_date_before: str | None = None,
|
|
2841
|
+
effective_on_after: str | None = None,
|
|
2842
|
+
effective_on_before: str | None = None,
|
|
2843
|
+
comments_close_on_after: str | None = None,
|
|
2844
|
+
comments_close_on_before: str | None = None,
|
|
2845
|
+
comments_open: bool | None = None,
|
|
2846
|
+
cfr_title: str | None = None,
|
|
2847
|
+
cfr_part: str | None = None,
|
|
2848
|
+
significant: bool | None = None,
|
|
2849
|
+
rin: str | None = None,
|
|
2850
|
+
executive_order_number: str | None = None,
|
|
2851
|
+
ordering: str | None = None,
|
|
2852
|
+
) -> PaginatedResponse:
|
|
2853
|
+
"""
|
|
2854
|
+
List Federal Register documents.
|
|
2855
|
+
|
|
2856
|
+
Rules, proposed rules, notices and presidential documents published in the Federal Register since 1994.
|
|
2857
|
+
|
|
2858
|
+
Args:
|
|
2859
|
+
page: Page number
|
|
2860
|
+
limit: Results per page (max 100)
|
|
2861
|
+
shape: Response shape string (defaults to minimal shape)
|
|
2862
|
+
flat: If True, flatten nested objects in shaped response
|
|
2863
|
+
flat_lists: If True, flatten arrays using indexed keys
|
|
2864
|
+
search: Ranked full-text search over the title, abstract and action. Wrap in double quotes for a phrase
|
|
2865
|
+
document_number: Exact FR document number, e.g. ``2016-31922``. OR several with ``|``. A number the Federal Register reused before 2016 matches every document that carries it
|
|
2866
|
+
type: ``Notice``, ``Rule``, ``Proposed Rule``, ``Presidential Document``, ``Correction``, ``Sunshine Act Document`` or ``Uncategorized Document`` (case-insensitive). OR several with ``|``. Documents published before 2008 are mostly ``Uncategorized Document``
|
|
2867
|
+
agency: A Tango agency name, abbreviation, code or organization key, e.g. ``EPA``. Matches a document when any agency it lists falls within that organization, so a department includes its sub-agencies. OR several with ``|``
|
|
2868
|
+
fr_agency: The Federal Register's own agency slug, e.g. ``environmental-protection-agency``. OR several with ``|``
|
|
2869
|
+
publication_date_after: Published on or after (YYYY-MM-DD)
|
|
2870
|
+
publication_date_before: Published on or before (YYYY-MM-DD)
|
|
2871
|
+
effective_on_after: Effective on or after (YYYY-MM-DD)
|
|
2872
|
+
effective_on_before: Effective on or before (YYYY-MM-DD)
|
|
2873
|
+
comments_close_on_after: Comment period closes on or after (YYYY-MM-DD)
|
|
2874
|
+
comments_close_on_before: Comment period closes on or before (YYYY-MM-DD)
|
|
2875
|
+
comments_open: ``True`` for documents whose comment period closes today or later, ``False`` for those already closed. Documents with no comment deadline match neither
|
|
2876
|
+
cfr_title: A CFR title number, e.g. ``40``
|
|
2877
|
+
cfr_part: A CFR part number, e.g. ``52``. Requires ``cfr_title``, and both must match the same CFR reference
|
|
2878
|
+
significant: Significant under Executive Order 12866
|
|
2879
|
+
rin: A Regulation Identifier Number, e.g. ``2060-AV16``. OR several with ``|``
|
|
2880
|
+
executive_order_number: Exact executive order number
|
|
2881
|
+
ordering: Sort field — ``publication_date`` (the default, as ``-publication_date``), ``effective_on``, ``comments_close_on``, ``document_number`` or ``rank``. ``rank`` requires a non-empty ``search``
|
|
2882
|
+
"""
|
|
2883
|
+
params: dict[str, Any] = {"page": page, "limit": min(limit, 100)}
|
|
2884
|
+
|
|
2885
|
+
if shape is None:
|
|
2886
|
+
shape = ShapeConfig.FEDERAL_REGISTER_MINIMAL
|
|
2887
|
+
if shape:
|
|
2888
|
+
params["shape"] = shape
|
|
2889
|
+
if flat:
|
|
2890
|
+
params["flat"] = "true"
|
|
2891
|
+
if flat_lists:
|
|
2892
|
+
params["flat_lists"] = "true"
|
|
2893
|
+
|
|
2894
|
+
for key, val in (
|
|
2895
|
+
("search", search),
|
|
2896
|
+
("document_number", document_number),
|
|
2897
|
+
("type", type),
|
|
2898
|
+
("agency", agency),
|
|
2899
|
+
("fr_agency", fr_agency),
|
|
2900
|
+
("publication_date_after", publication_date_after),
|
|
2901
|
+
("publication_date_before", publication_date_before),
|
|
2902
|
+
("effective_on_after", effective_on_after),
|
|
2903
|
+
("effective_on_before", effective_on_before),
|
|
2904
|
+
("comments_close_on_after", comments_close_on_after),
|
|
2905
|
+
("comments_close_on_before", comments_close_on_before),
|
|
2906
|
+
("comments_open", comments_open),
|
|
2907
|
+
("cfr_title", cfr_title),
|
|
2908
|
+
("cfr_part", cfr_part),
|
|
2909
|
+
("significant", significant),
|
|
2910
|
+
("rin", rin),
|
|
2911
|
+
("executive_order_number", executive_order_number),
|
|
2912
|
+
("ordering", ordering),
|
|
2913
|
+
):
|
|
2914
|
+
if val is not None:
|
|
2915
|
+
params[key] = val
|
|
2916
|
+
|
|
2917
|
+
data = self._get("/api/federal_register/", params)
|
|
2918
|
+
|
|
2919
|
+
results = [
|
|
2920
|
+
self._parse_response_with_shape(item, shape, FederalRegisterDocument, flat, flat_lists)
|
|
2921
|
+
for item in data["results"]
|
|
2922
|
+
]
|
|
2923
|
+
|
|
2924
|
+
return PaginatedResponse(
|
|
2925
|
+
count=data["count"],
|
|
2926
|
+
next=data.get("next"),
|
|
2927
|
+
previous=data.get("previous"),
|
|
2928
|
+
results=results,
|
|
2929
|
+
meta=data.get("meta"),
|
|
2930
|
+
)
|
|
2931
|
+
|
|
2932
|
+
def get_federal_register_document(
|
|
2933
|
+
self,
|
|
2934
|
+
document_uuid: str,
|
|
2935
|
+
shape: str | None = None,
|
|
2936
|
+
flat: bool = False,
|
|
2937
|
+
flat_lists: bool = False,
|
|
2938
|
+
) -> Any:
|
|
2939
|
+
"""
|
|
2940
|
+
Get a single Federal Register document by uuid.
|
|
2941
|
+
|
|
2942
|
+
The detail route takes the document's ``uuid``, not its ``document_number``, which is not unique on its own.
|
|
2943
|
+
To look a document up by number, use ``list_federal_register_documents(document_number=...)``.
|
|
2944
|
+
|
|
2945
|
+
Args:
|
|
2946
|
+
document_uuid: Document UUID
|
|
2947
|
+
shape: Response shape string (defaults to the comprehensive shape). Name ``full_text`` here to get the document's plain text, which can run to several MB
|
|
2948
|
+
flat: If True, flatten nested objects in shaped response
|
|
2949
|
+
flat_lists: If True, flatten arrays using indexed keys
|
|
2950
|
+
"""
|
|
2951
|
+
params: dict[str, Any] = {}
|
|
2952
|
+
if shape is None:
|
|
2953
|
+
shape = ShapeConfig.FEDERAL_REGISTER_COMPREHENSIVE
|
|
2954
|
+
if shape:
|
|
2955
|
+
params["shape"] = shape
|
|
2956
|
+
if flat:
|
|
2957
|
+
params["flat"] = "true"
|
|
2958
|
+
if flat_lists:
|
|
2959
|
+
params["flat_lists"] = "true"
|
|
2960
|
+
|
|
2961
|
+
data = self._get(f"/api/federal_register/{document_uuid}/", params)
|
|
2962
|
+
return self._parse_response_with_shape(
|
|
2963
|
+
data, shape, FederalRegisterDocument, flat, flat_lists
|
|
2964
|
+
)
|
|
2965
|
+
|
|
2821
2966
|
# ============================================================================
|
|
2822
2967
|
# DLA DIBBS (RFQs, RFPs, awards)
|
|
2823
2968
|
# ============================================================================
|
|
@@ -3242,6 +3387,7 @@ class TangoClient:
|
|
|
3242
3387
|
update_date_before: str | None = None,
|
|
3243
3388
|
search: str | None = None,
|
|
3244
3389
|
ordering: str | None = None,
|
|
3390
|
+
agency: str | None = None,
|
|
3245
3391
|
) -> PaginatedResponse:
|
|
3246
3392
|
"""
|
|
3247
3393
|
List SAM.gov exclusion (debarment) records.
|
|
@@ -3261,6 +3407,7 @@ class TangoClient:
|
|
|
3261
3407
|
classification_type: Filter by classification (Firm, Individual, Vessel, ...)
|
|
3262
3408
|
exclusion_type: Filter by exclusion type
|
|
3263
3409
|
exclusion_program: Filter by exclusion program
|
|
3410
|
+
agency: Excluding agency as a Tango organization. A Tango agency name, abbreviation, code or organization key, e.g. ``EPA``. Matches the whole organization subtree, so a department includes its sub-agencies. OR several with ``|``
|
|
3264
3411
|
excluding_agency_code: Filter by excluding agency code
|
|
3265
3412
|
excluding_agency_name: Filter by excluding agency name
|
|
3266
3413
|
active: True returns only records currently in effect.
|
|
@@ -3296,6 +3443,7 @@ class TangoClient:
|
|
|
3296
3443
|
("classification_type", classification_type),
|
|
3297
3444
|
("exclusion_type", exclusion_type),
|
|
3298
3445
|
("exclusion_program", exclusion_program),
|
|
3446
|
+
("agency", agency),
|
|
3299
3447
|
("excluding_agency_code", excluding_agency_code),
|
|
3300
3448
|
("excluding_agency_name", excluding_agency_name),
|
|
3301
3449
|
("active", active),
|
|
@@ -4153,6 +4301,7 @@ class TangoClient:
|
|
|
4153
4301
|
actual_vs_requested_contract_capped_lte: float | None = None,
|
|
4154
4302
|
search: str | None = None,
|
|
4155
4303
|
ordering: str | None = None,
|
|
4304
|
+
agency: str | None = None,
|
|
4156
4305
|
) -> PaginatedResponse:
|
|
4157
4306
|
"""List budget accounts (`/api/budget/accounts/`).
|
|
4158
4307
|
|
|
@@ -4170,6 +4319,7 @@ class TangoClient:
|
|
|
4170
4319
|
fiscal_year: Fiscal year (exact).
|
|
4171
4320
|
fiscal_year_gte: Fiscal year >=.
|
|
4172
4321
|
fiscal_year_lte: Fiscal year <=.
|
|
4322
|
+
agency: A Tango agency name, abbreviation, code or organization key, e.g. ``EPA``. Matches the whole organization subtree, so a department includes its sub-agencies. OR several with ``|``.
|
|
4173
4323
|
agency_code: Agency code (exact).
|
|
4174
4324
|
bureau_name: Bureau name (exact).
|
|
4175
4325
|
account_title: Account title (icontains).
|
|
@@ -4234,6 +4384,7 @@ class TangoClient:
|
|
|
4234
4384
|
("fiscal_year", fiscal_year),
|
|
4235
4385
|
("fiscal_year__gte", fiscal_year_gte),
|
|
4236
4386
|
("fiscal_year__lte", fiscal_year_lte),
|
|
4387
|
+
("agency", agency),
|
|
4237
4388
|
("agency_code", agency_code),
|
|
4238
4389
|
("bureau_name", bureau_name),
|
|
4239
4390
|
("account_title__icontains", account_title),
|
|
@@ -4870,8 +5021,8 @@ class TangoClient:
|
|
|
4870
5021
|
name: Human-readable name for this alert.
|
|
4871
5022
|
query_type: One of ``opportunity``, ``contract``, ``idv``, ``ota``,
|
|
4872
5023
|
``otidv``, ``entity``, ``grant``, ``forecast``, ``exclusion``,
|
|
4873
|
-
``dibbs_rfq``, ``dibbs_rfp``, ``sled_opportunity
|
|
4874
|
-
``contract_appeal``. :meth:`list_webhook_event_types` is the
|
|
5024
|
+
``dibbs_rfq``, ``dibbs_rfp``, ``sled_opportunity``,
|
|
5025
|
+
``contract_appeal`` or ``federal_register``. :meth:`list_webhook_event_types` is the
|
|
4875
5026
|
current authority — this list can only go stale.
|
|
4876
5027
|
filters: Dict of query parameters that the alert matches against
|
|
4877
5028
|
(e.g. ``{"naics": "541330", "set_aside": "SBA"}``).
|
tango/models.py
CHANGED
|
@@ -1213,6 +1213,65 @@ class ContractAppeal:
|
|
|
1213
1213
|
decision_text: str | None = None
|
|
1214
1214
|
|
|
1215
1215
|
|
|
1216
|
+
class FederalRegisterDocument:
|
|
1217
|
+
"""Schema definition for FederalRegisterDocument (not used for instances).
|
|
1218
|
+
|
|
1219
|
+
Federal Register documents at ``/api/federal_register/``: rules, proposed rules, notices and presidential documents published since 1994.
|
|
1220
|
+
Shape-on-demand, so every field is optional.
|
|
1221
|
+
|
|
1222
|
+
A document is identified by ``uuid``.
|
|
1223
|
+
``document_number`` alone is not unique: the Federal Register reused some numbers before 2016, so ``document_number=`` can match more than one document.
|
|
1224
|
+
|
|
1225
|
+
``agencies``, ``cfr_references``, ``dockets`` and ``topics`` are the Federal Register's own structures, served as published.
|
|
1226
|
+
``full_text`` can run to several MB, so it is available on the detail endpoint only and only when named in ``shape``.
|
|
1227
|
+
"""
|
|
1228
|
+
|
|
1229
|
+
uuid: str | None = None
|
|
1230
|
+
document_number: str | None = None
|
|
1231
|
+
publication_date: date | None = None
|
|
1232
|
+
citation: str | None = None
|
|
1233
|
+
title: str | None = None
|
|
1234
|
+
type: str | None = None
|
|
1235
|
+
subtype: str | None = None
|
|
1236
|
+
abstract: str | None = None
|
|
1237
|
+
action: str | None = None
|
|
1238
|
+
dates: str | None = None
|
|
1239
|
+
comments_close_on: date | None = None
|
|
1240
|
+
effective_on: date | None = None
|
|
1241
|
+
signing_date: date | None = None
|
|
1242
|
+
start_page: int | None = None
|
|
1243
|
+
end_page: int | None = None
|
|
1244
|
+
page_length: int | None = None
|
|
1245
|
+
volume: int | None = None
|
|
1246
|
+
significant: bool | None = None
|
|
1247
|
+
toc_doc: str | None = None
|
|
1248
|
+
toc_subject: str | None = None
|
|
1249
|
+
correction_of: str | None = None
|
|
1250
|
+
corrections: list[str] | None = None
|
|
1251
|
+
disposition_notes: str | None = None
|
|
1252
|
+
executive_order_notes: str | None = None
|
|
1253
|
+
executive_order_number: str | None = None
|
|
1254
|
+
presidential_document_number: str | None = None
|
|
1255
|
+
proclamation_number: str | None = None
|
|
1256
|
+
not_received_for_publication: str | None = None
|
|
1257
|
+
comment_url: str | None = None
|
|
1258
|
+
regulations_dot_gov_url: str | None = None
|
|
1259
|
+
html_url: str | None = None
|
|
1260
|
+
body_html_url: str | None = None
|
|
1261
|
+
pdf_url: str | None = None
|
|
1262
|
+
public_inspection_pdf_url: str | None = None
|
|
1263
|
+
raw_text_url: str | None = None
|
|
1264
|
+
agencies: list[dict[str, Any]] | None = None
|
|
1265
|
+
cfr_references: list[dict[str, Any]] | None = None
|
|
1266
|
+
dockets: list[dict[str, Any]] | None = None
|
|
1267
|
+
docket_ids: list[str] | None = None
|
|
1268
|
+
topics: list[str] | None = None
|
|
1269
|
+
regulation_id_numbers: list[str] | None = None
|
|
1270
|
+
regulation_id_number_info: dict[str, Any] | None = None
|
|
1271
|
+
regulations_dot_gov_info: dict[str, Any] | None = None
|
|
1272
|
+
full_text: str | None = None
|
|
1273
|
+
|
|
1274
|
+
|
|
1216
1275
|
@dataclass
|
|
1217
1276
|
class PaginatedResponse[T]:
|
|
1218
1277
|
"""Paginated API response
|
|
@@ -1394,6 +1453,24 @@ class ShapeConfig:
|
|
|
1394
1453
|
"listing_year,first_listed_at,listed,text_status,text_char_count"
|
|
1395
1454
|
)
|
|
1396
1455
|
|
|
1456
|
+
# Default for list_federal_register_documents(). Mirrors the API's own list default.
|
|
1457
|
+
FEDERAL_REGISTER_MINIMAL: Final = (
|
|
1458
|
+
"uuid,document_number,publication_date,type,subtype,title,abstract,action,"
|
|
1459
|
+
"agencies,cfr_references,citation,significant,comments_close_on,effective_on,"
|
|
1460
|
+
"html_url,pdf_url"
|
|
1461
|
+
)
|
|
1462
|
+
|
|
1463
|
+
# Default for get_federal_register_document(). Mirrors the API's own retrieve default.
|
|
1464
|
+
# `full_text` is left out on purpose: it can run to several MB.
|
|
1465
|
+
FEDERAL_REGISTER_COMPREHENSIVE: Final = (
|
|
1466
|
+
"uuid,document_number,publication_date,type,subtype,title,abstract,action,"
|
|
1467
|
+
"agencies,cfr_references,citation,significant,comments_close_on,effective_on,"
|
|
1468
|
+
"html_url,pdf_url,dates,signing_date,start_page,end_page,volume,docket_ids,"
|
|
1469
|
+
"dockets,regulation_id_numbers,topics,correction_of,corrections,"
|
|
1470
|
+
"executive_order_number,presidential_document_number,proclamation_number,"
|
|
1471
|
+
"comment_url,regulations_dot_gov_url,raw_text_url,body_html_url"
|
|
1472
|
+
)
|
|
1473
|
+
|
|
1397
1474
|
# Default for list_dibbs_rfqs()
|
|
1398
1475
|
DIBBS_RFQS_MINIMAL: Final = (
|
|
1399
1476
|
"uuid,solicitation,nsn,part_number,nomenclature,quantity,issue_date,return_by_date,is_open"
|
tango/shapes/explicit_schemas.py
CHANGED
|
@@ -800,6 +800,83 @@ CONTRACT_APPEAL_SCHEMA: dict[str, FieldSchema] = {
|
|
|
800
800
|
}
|
|
801
801
|
|
|
802
802
|
|
|
803
|
+
FEDERAL_REGISTER_DOCUMENT_SCHEMA: dict[str, FieldSchema] = {
|
|
804
|
+
"uuid": FieldSchema(name="uuid", type=str, is_optional=True, is_list=False),
|
|
805
|
+
"document_number": FieldSchema(
|
|
806
|
+
name="document_number", type=str, is_optional=True, is_list=False
|
|
807
|
+
),
|
|
808
|
+
"publication_date": FieldSchema(
|
|
809
|
+
name="publication_date", type=date, is_optional=True, is_list=False
|
|
810
|
+
),
|
|
811
|
+
"citation": FieldSchema(name="citation", type=str, is_optional=True, is_list=False),
|
|
812
|
+
"title": FieldSchema(name="title", type=str, is_optional=True, is_list=False),
|
|
813
|
+
"type": FieldSchema(name="type", type=str, is_optional=True, is_list=False),
|
|
814
|
+
"subtype": FieldSchema(name="subtype", type=str, is_optional=True, is_list=False),
|
|
815
|
+
"abstract": FieldSchema(name="abstract", type=str, is_optional=True, is_list=False),
|
|
816
|
+
"action": FieldSchema(name="action", type=str, is_optional=True, is_list=False),
|
|
817
|
+
"dates": FieldSchema(name="dates", type=str, is_optional=True, is_list=False),
|
|
818
|
+
"comments_close_on": FieldSchema(
|
|
819
|
+
name="comments_close_on", type=date, is_optional=True, is_list=False
|
|
820
|
+
),
|
|
821
|
+
"effective_on": FieldSchema(name="effective_on", type=date, is_optional=True, is_list=False),
|
|
822
|
+
"signing_date": FieldSchema(name="signing_date", type=date, is_optional=True, is_list=False),
|
|
823
|
+
"start_page": FieldSchema(name="start_page", type=int, is_optional=True, is_list=False),
|
|
824
|
+
"end_page": FieldSchema(name="end_page", type=int, is_optional=True, is_list=False),
|
|
825
|
+
"page_length": FieldSchema(name="page_length", type=int, is_optional=True, is_list=False),
|
|
826
|
+
"volume": FieldSchema(name="volume", type=int, is_optional=True, is_list=False),
|
|
827
|
+
"significant": FieldSchema(name="significant", type=bool, is_optional=True, is_list=False),
|
|
828
|
+
"toc_doc": FieldSchema(name="toc_doc", type=str, is_optional=True, is_list=False),
|
|
829
|
+
"toc_subject": FieldSchema(name="toc_subject", type=str, is_optional=True, is_list=False),
|
|
830
|
+
"correction_of": FieldSchema(name="correction_of", type=str, is_optional=True, is_list=False),
|
|
831
|
+
"corrections": FieldSchema(name="corrections", type=str, is_optional=True, is_list=True),
|
|
832
|
+
"disposition_notes": FieldSchema(
|
|
833
|
+
name="disposition_notes", type=str, is_optional=True, is_list=False
|
|
834
|
+
),
|
|
835
|
+
"executive_order_notes": FieldSchema(
|
|
836
|
+
name="executive_order_notes", type=str, is_optional=True, is_list=False
|
|
837
|
+
),
|
|
838
|
+
"executive_order_number": FieldSchema(
|
|
839
|
+
name="executive_order_number", type=str, is_optional=True, is_list=False
|
|
840
|
+
),
|
|
841
|
+
"presidential_document_number": FieldSchema(
|
|
842
|
+
name="presidential_document_number", type=str, is_optional=True, is_list=False
|
|
843
|
+
),
|
|
844
|
+
"proclamation_number": FieldSchema(
|
|
845
|
+
name="proclamation_number", type=str, is_optional=True, is_list=False
|
|
846
|
+
),
|
|
847
|
+
"not_received_for_publication": FieldSchema(
|
|
848
|
+
name="not_received_for_publication", type=str, is_optional=True, is_list=False
|
|
849
|
+
),
|
|
850
|
+
"comment_url": FieldSchema(name="comment_url", type=str, is_optional=True, is_list=False),
|
|
851
|
+
"regulations_dot_gov_url": FieldSchema(
|
|
852
|
+
name="regulations_dot_gov_url", type=str, is_optional=True, is_list=False
|
|
853
|
+
),
|
|
854
|
+
"html_url": FieldSchema(name="html_url", type=str, is_optional=True, is_list=False),
|
|
855
|
+
"body_html_url": FieldSchema(name="body_html_url", type=str, is_optional=True, is_list=False),
|
|
856
|
+
"pdf_url": FieldSchema(name="pdf_url", type=str, is_optional=True, is_list=False),
|
|
857
|
+
"public_inspection_pdf_url": FieldSchema(
|
|
858
|
+
name="public_inspection_pdf_url", type=str, is_optional=True, is_list=False
|
|
859
|
+
),
|
|
860
|
+
"raw_text_url": FieldSchema(name="raw_text_url", type=str, is_optional=True, is_list=False),
|
|
861
|
+
"agencies": FieldSchema(name="agencies", type=dict, is_optional=True, is_list=True),
|
|
862
|
+
"cfr_references": FieldSchema(name="cfr_references", type=dict, is_optional=True, is_list=True),
|
|
863
|
+
"dockets": FieldSchema(name="dockets", type=dict, is_optional=True, is_list=True),
|
|
864
|
+
"docket_ids": FieldSchema(name="docket_ids", type=str, is_optional=True, is_list=True),
|
|
865
|
+
"topics": FieldSchema(name="topics", type=str, is_optional=True, is_list=True),
|
|
866
|
+
"regulation_id_numbers": FieldSchema(
|
|
867
|
+
name="regulation_id_numbers", type=str, is_optional=True, is_list=True
|
|
868
|
+
),
|
|
869
|
+
"regulation_id_number_info": FieldSchema(
|
|
870
|
+
name="regulation_id_number_info", type=dict, is_optional=True, is_list=False
|
|
871
|
+
),
|
|
872
|
+
"regulations_dot_gov_info": FieldSchema(
|
|
873
|
+
name="regulations_dot_gov_info", type=dict, is_optional=True, is_list=False
|
|
874
|
+
),
|
|
875
|
+
# Detail endpoint only, and only when named in the shape.
|
|
876
|
+
"full_text": FieldSchema(name="full_text", type=str, is_optional=True, is_list=False),
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
|
|
803
880
|
AGENCY_SCHEMA: dict[str, FieldSchema] = {
|
|
804
881
|
"abbreviation": FieldSchema(name="abbreviation", type=str, is_optional=True, is_list=False),
|
|
805
882
|
"code": FieldSchema(name="code", type=str, is_optional=False, is_list=False),
|
|
@@ -1545,6 +1622,7 @@ EXPLICIT_SCHEMAS: dict[str, dict[str, FieldSchema]] = {
|
|
|
1545
1622
|
"Protest": PROTEST_SCHEMA,
|
|
1546
1623
|
"ProtestDocket": PROTEST_DOCKET_SCHEMA,
|
|
1547
1624
|
"ContractAppeal": CONTRACT_APPEAL_SCHEMA,
|
|
1625
|
+
"FederalRegisterDocument": FEDERAL_REGISTER_DOCUMENT_SCHEMA,
|
|
1548
1626
|
"Agency": AGENCY_SCHEMA,
|
|
1549
1627
|
"Grant": GRANT_SCHEMA,
|
|
1550
1628
|
# Vehicles (Awards)
|
|
@@ -1382,6 +1382,16 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
|
|
|
1382
1382
|
"on_off_budget": FieldSchema(
|
|
1383
1383
|
name="on_off_budget", type=str, is_optional=True, is_list=False
|
|
1384
1384
|
),
|
|
1385
|
+
"organization": FieldSchema(
|
|
1386
|
+
name="organization",
|
|
1387
|
+
type=dict,
|
|
1388
|
+
is_optional=True,
|
|
1389
|
+
is_list=False,
|
|
1390
|
+
nested_model="AwardingOffice",
|
|
1391
|
+
),
|
|
1392
|
+
"organization_id": FieldSchema(
|
|
1393
|
+
name="organization_id", type=str, is_optional=True, is_list=False
|
|
1394
|
+
),
|
|
1385
1395
|
"outlayed_to_obligated_pct": FieldSchema(
|
|
1386
1396
|
name="outlayed_to_obligated_pct", type=str, is_optional=True, is_list=False
|
|
1387
1397
|
),
|
|
@@ -1911,6 +1921,16 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
|
|
|
1911
1921
|
name="more_locations", type=str, is_optional=True, is_list=False
|
|
1912
1922
|
),
|
|
1913
1923
|
"npi": FieldSchema(name="npi", type=str, is_optional=True, is_list=False),
|
|
1924
|
+
"organization": FieldSchema(
|
|
1925
|
+
name="organization",
|
|
1926
|
+
type=dict,
|
|
1927
|
+
is_optional=True,
|
|
1928
|
+
is_list=False,
|
|
1929
|
+
nested_model="AwardingOffice",
|
|
1930
|
+
),
|
|
1931
|
+
"organization_id": FieldSchema(
|
|
1932
|
+
name="organization_id", type=str, is_optional=True, is_list=False
|
|
1933
|
+
),
|
|
1914
1934
|
"prefix": FieldSchema(name="prefix", type=str, is_optional=True, is_list=False),
|
|
1915
1935
|
"primary_address": FieldSchema(
|
|
1916
1936
|
name="primary_address", type=str, is_optional=True, is_list=False
|
|
@@ -2683,6 +2703,13 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
|
|
|
2683
2703
|
name="documents", type=dict, is_optional=True, is_list=True, nested_model="Documents"
|
|
2684
2704
|
),
|
|
2685
2705
|
"end_date": FieldSchema(name="end_date", type=date, is_optional=True, is_list=False),
|
|
2706
|
+
"organization": FieldSchema(
|
|
2707
|
+
name="organization",
|
|
2708
|
+
type=dict,
|
|
2709
|
+
is_optional=True,
|
|
2710
|
+
is_list=False,
|
|
2711
|
+
nested_model="AwardingOffice",
|
|
2712
|
+
),
|
|
2686
2713
|
"out_of_cycle": FieldSchema(
|
|
2687
2714
|
name="out_of_cycle", type=bool, is_optional=True, is_list=False
|
|
2688
2715
|
),
|
|
@@ -2736,6 +2763,13 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
|
|
|
2736
2763
|
is_list=False,
|
|
2737
2764
|
nested_model="Opportunity2",
|
|
2738
2765
|
),
|
|
2766
|
+
"organization": FieldSchema(
|
|
2767
|
+
name="organization",
|
|
2768
|
+
type=dict,
|
|
2769
|
+
is_optional=True,
|
|
2770
|
+
is_list=False,
|
|
2771
|
+
nested_model="AwardingOffice",
|
|
2772
|
+
),
|
|
2739
2773
|
"release_date": FieldSchema(
|
|
2740
2774
|
name="release_date", type=date, is_optional=True, is_list=False
|
|
2741
2775
|
),
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
tango/__init__.py,sha256=
|
|
2
|
-
tango/client.py,sha256=
|
|
1
|
+
tango/__init__.py,sha256=uUcnPf4IZjC6ldsu-8CBI6gJMrvg1_EfbTILjLYevW4,2360
|
|
2
|
+
tango/client.py,sha256=hLYbP-lBIBVzSVamOJwSATHqi6ijba6-XtMAB-XTyyo,228019
|
|
3
3
|
tango/exceptions.py,sha256=B1t27BBxHcPglAfJQyan5khNEYNAyF6Wkp2EmPMdRxM,3858
|
|
4
|
-
tango/models.py,sha256=
|
|
4
|
+
tango/models.py,sha256=KI0I9I9LBetpRUkl0YS7hHbsM2vrOflN83crNSVBUiY,61897
|
|
5
5
|
tango/shapes/__init__.py,sha256=7ea1WU74jp4znhNw-gXruag6m6eyPZtbVgbDFmFUWro,1072
|
|
6
|
-
tango/shapes/explicit_schemas.py,sha256=
|
|
6
|
+
tango/shapes/explicit_schemas.py,sha256=41k6rOBMFz-6imGIZ5mXeK26M0s-nmIUZJXQeDjQFH0,78508
|
|
7
7
|
tango/shapes/factory.py,sha256=uDPhnp6VVzrLBKodxteZy5AcU43juEv-qKVRWth51j0,31550
|
|
8
|
-
tango/shapes/generated_overlay.py,sha256=
|
|
8
|
+
tango/shapes/generated_overlay.py,sha256=OuwuyixXplySy5SM0FqQ0KKPOJJ490zyOi3wzP3DEOQ,139031
|
|
9
9
|
tango/shapes/generator.py,sha256=xzakpwTwqTMUr89I06hp54-FIYZziviWHk2Glscg-LM,22775
|
|
10
10
|
tango/shapes/models.py,sha256=h3pIhOqrrdlN953Y6r0oney5HFbKPOD-frRndRWimJ0,3018
|
|
11
11
|
tango/shapes/parser.py,sha256=AecNx5oT_hV_pf2AWZnsR8Y2aLmCtjfgS9-znA2Pesc,27429
|
|
@@ -16,8 +16,8 @@ tango/webhooks/cli.py,sha256=f_vQbJ2AeSQjKnQo7MxHFyUB2SAKcgHYmGQULS0isqQ,13858
|
|
|
16
16
|
tango/webhooks/receiver.py,sha256=5yhsVhlLyoxmOCGvmbynWAIlDB2OaCPVf1H4GA1SxmU,9279
|
|
17
17
|
tango/webhooks/signing.py,sha256=92Ee-0B6PR7ZkvY3Np3gzl88-mtfKkh-I7lxqCe2lGw,2374
|
|
18
18
|
tango/webhooks/simulate.py,sha256=g2Osa0FYU5mJuon07T2aUCtmkUoTEzsY261tlp76fF0,3165
|
|
19
|
-
tango_python-1.
|
|
20
|
-
tango_python-1.
|
|
21
|
-
tango_python-1.
|
|
22
|
-
tango_python-1.
|
|
23
|
-
tango_python-1.
|
|
19
|
+
tango_python-1.8.0.dist-info/METADATA,sha256=46doMnyaajvAdOUSTAHyjznVIKJ6Nepwgu4CpEn8SuQ,21779
|
|
20
|
+
tango_python-1.8.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
21
|
+
tango_python-1.8.0.dist-info/entry_points.txt,sha256=kGLUbglUjuaAqEFvOZ1QuSW0vWb6VeSpCIFKaOFkKoQ,50
|
|
22
|
+
tango_python-1.8.0.dist-info/licenses/LICENSE,sha256=j2kYVHMwTkoGn3ZNScnrdIueG0k2XzB_LCPFoyBc2wk,1064
|
|
23
|
+
tango_python-1.8.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|