tango-python 0.0.1a1__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.
Files changed (94) hide show
  1. tango/__init__.py +83 -0
  2. tango/_base_client.py +2045 -0
  3. tango/_client.py +544 -0
  4. tango/_compat.py +219 -0
  5. tango/_constants.py +14 -0
  6. tango/_exceptions.py +108 -0
  7. tango/_files.py +123 -0
  8. tango/_models.py +788 -0
  9. tango/_qs.py +150 -0
  10. tango/_resource.py +43 -0
  11. tango/_response.py +824 -0
  12. tango/_streaming.py +333 -0
  13. tango/_types.py +219 -0
  14. tango/_utils/__init__.py +56 -0
  15. tango/_utils/_logs.py +25 -0
  16. tango/_utils/_proxy.py +62 -0
  17. tango/_utils/_reflection.py +42 -0
  18. tango/_utils/_streams.py +12 -0
  19. tango/_utils/_sync.py +71 -0
  20. tango/_utils/_transform.py +392 -0
  21. tango/_utils/_typing.py +120 -0
  22. tango/_utils/_utils.py +414 -0
  23. tango/_version.py +4 -0
  24. tango/lib/.keep +4 -0
  25. tango/py.typed +0 -0
  26. tango/resources/__init__.py +229 -0
  27. tango/resources/agencies.py +255 -0
  28. tango/resources/assistance_listings.py +214 -0
  29. tango/resources/bulk/__init__.py +33 -0
  30. tango/resources/bulk/bulk.py +102 -0
  31. tango/resources/bulk/entities.py +152 -0
  32. tango/resources/business_types.py +218 -0
  33. tango/resources/contracts.py +381 -0
  34. tango/resources/departments.py +210 -0
  35. tango/resources/entities.py +325 -0
  36. tango/resources/idvs/__init__.py +33 -0
  37. tango/resources/idvs/awards.py +287 -0
  38. tango/resources/idvs/idvs.py +413 -0
  39. tango/resources/naics.py +317 -0
  40. tango/resources/notices.py +391 -0
  41. tango/resources/offices.py +281 -0
  42. tango/resources/opportunities.py +420 -0
  43. tango/resources/pscs.py +210 -0
  44. tango/resources/schemas.py +398 -0
  45. tango/resources/subawards.py +313 -0
  46. tango/resources/versions.py +136 -0
  47. tango/types/__init__.py +43 -0
  48. tango/types/agency.py +17 -0
  49. tango/types/agency_list_params.py +14 -0
  50. tango/types/agency_list_response.py +10 -0
  51. tango/types/assistance_listing.py +12 -0
  52. tango/types/assistance_listing_list_response.py +10 -0
  53. tango/types/assistance_listing_retrieve_response.py +26 -0
  54. tango/types/bulk/__init__.py +3 -0
  55. tango/types/business_type.py +14 -0
  56. tango/types/business_type_list_response.py +10 -0
  57. tango/types/contract_list_params.py +78 -0
  58. tango/types/contract_list_response.py +55 -0
  59. tango/types/contract_retrieve_response.py +51 -0
  60. tango/types/department.py +16 -0
  61. tango/types/department_list_response.py +10 -0
  62. tango/types/entity_list_params.py +38 -0
  63. tango/types/entity_list_response.py +37 -0
  64. tango/types/entity_retrieve_response.py +116 -0
  65. tango/types/idv.py +102 -0
  66. tango/types/idv_list_params.py +78 -0
  67. tango/types/idv_list_response.py +27 -0
  68. tango/types/idvs/__init__.py +6 -0
  69. tango/types/idvs/award_list_params.py +55 -0
  70. tango/types/idvs/award_list_response.py +55 -0
  71. tango/types/naic_list_params.py +47 -0
  72. tango/types/naic_list_response.py +10 -0
  73. tango/types/naic_retrieve_response.py +13 -0
  74. tango/types/naics_code.py +13 -0
  75. tango/types/notice_list_params.py +81 -0
  76. tango/types/notice_list_response.py +60 -0
  77. tango/types/notice_retrieve_response.py +93 -0
  78. tango/types/office.py +15 -0
  79. tango/types/office_list_params.py +18 -0
  80. tango/types/office_list_response.py +18 -0
  81. tango/types/opportunity_list_params.py +97 -0
  82. tango/types/opportunity_list_response.py +101 -0
  83. tango/types/opportunity_retrieve_response.py +123 -0
  84. tango/types/product_service_code.py +21 -0
  85. tango/types/psc_list_response.py +10 -0
  86. tango/types/schema_retrieve_params.py +113 -0
  87. tango/types/schema_retrieve_response.py +8 -0
  88. tango/types/subaward.py +172 -0
  89. tango/types/subaward_list_params.py +33 -0
  90. tango/types/subaward_list_response.py +18 -0
  91. tango_python-0.0.1a1.dist-info/METADATA +359 -0
  92. tango_python-0.0.1a1.dist-info/RECORD +94 -0
  93. tango_python-0.0.1a1.dist-info/WHEEL +4 -0
  94. tango_python-0.0.1a1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,93 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+
8
+ __all__ = ["NoticeRetrieveResponse", "Attachments", "NoticeHistory", "Opportunity"]
9
+
10
+
11
+ class Attachments(BaseModel):
12
+ attachment_id: str
13
+
14
+ resource_id: str
15
+
16
+ mime_type: Optional[str] = None
17
+
18
+ name: Optional[str] = None
19
+
20
+ posted_date: Optional[datetime] = None
21
+
22
+ type: Optional[str] = None
23
+
24
+ url: Optional[str] = None
25
+
26
+
27
+ class NoticeHistory(BaseModel):
28
+ deleted: bool
29
+
30
+ index: int
31
+
32
+ latest: bool
33
+
34
+ notice_id: str
35
+
36
+ notice_type: str
37
+
38
+ parent_notice: str
39
+
40
+ posted_date: str
41
+
42
+ related_notice: str
43
+
44
+ solicitation_number: str
45
+
46
+ title: str
47
+
48
+
49
+ class Opportunity(BaseModel):
50
+ link: str
51
+
52
+ opportunity_id: str
53
+
54
+
55
+ class NoticeRetrieveResponse(BaseModel):
56
+ attachment_count: int
57
+
58
+ attachments: Attachments
59
+ """Base serializer for opportunity attachments"""
60
+
61
+ last_updated: datetime
62
+
63
+ notice_history: List[NoticeHistory]
64
+
65
+ notice_id: str
66
+ """This corresponds to the uuid in SAM.gov.
67
+
68
+ You can have multiple notices for a given solicitation.
69
+ """
70
+
71
+ opportunity: Opportunity
72
+
73
+ psc_code: Optional[str] = None
74
+
75
+ sam_url: Optional[str] = None
76
+
77
+ title: str
78
+
79
+ active: Optional[bool] = None
80
+
81
+ award_number: Optional[str] = None
82
+
83
+ description: Optional[str] = None
84
+
85
+ naics_code: Optional[str] = None
86
+
87
+ posted_date: Optional[datetime] = None
88
+
89
+ response_deadline: Optional[datetime] = None
90
+
91
+ set_aside: Optional[str] = None
92
+
93
+ solicitation_number: Optional[str] = None
tango/types/office.py ADDED
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["Office"]
8
+
9
+
10
+ class Office(BaseModel):
11
+ agency: str
12
+
13
+ code: str
14
+
15
+ name: Optional[str] = None
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ __all__ = ["OfficeListParams"]
8
+
9
+
10
+ class OfficeListParams(TypedDict, total=False):
11
+ limit: int
12
+ """Number of results to return per page."""
13
+
14
+ page: int
15
+ """A page number within the paginated result set."""
16
+
17
+ search: str
18
+ """Search for an office"""
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+
5
+ from .office import Office
6
+ from .._models import BaseModel
7
+
8
+ __all__ = ["OfficeListResponse"]
9
+
10
+
11
+ class OfficeListResponse(BaseModel):
12
+ count: int
13
+
14
+ results: List[Office]
15
+
16
+ next: Optional[str] = None
17
+
18
+ previous: Optional[str] = None
@@ -0,0 +1,97 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Union
6
+ from datetime import datetime
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+ from .._utils import PropertyInfo
10
+
11
+ __all__ = ["OpportunityListParams"]
12
+
13
+
14
+ class OpportunityListParams(TypedDict, total=False):
15
+ active: bool
16
+ """Filter active and inactive"""
17
+
18
+ agency: str
19
+ """
20
+ <details><summary>Filter by agency</summary><ul><li>Accepts any agency or department code, acronym, or (partial) name</li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
21
+ """
22
+
23
+ first_notice_date_after: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]
24
+ """Filter by the first notice date"""
25
+
26
+ first_notice_date_before: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]
27
+ """Filter by the first notice date"""
28
+
29
+ last_notice_date_after: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]
30
+ """Filter by the last notice date"""
31
+
32
+ last_notice_date_before: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]
33
+ """Filter by the last notice date"""
34
+
35
+ limit: int
36
+ """Number of results to return per page."""
37
+
38
+ naics: str
39
+ """
40
+ <details><summary>Filter by NAICS Code</summary><ul><li><span>Accepted values: <var>541511</var>, <var>541512</var>, <var>etc.</var></span></li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
41
+ """
42
+
43
+ notice_type: str
44
+ """
45
+ <details><summary>Filter by notice type</summary><ul><li><span>Accepted values: <var>a</var>, <var>g</var>, <var>f</var>, <var>i</var>, <var>j</var>, <var>k</var>, <var>l</var>, <var>m</var>, <var>o</var>, <var>p</var>, <var>r</var>, <var>s</var>, <var>u</var></span></li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
46
+ """
47
+
48
+ ordering: str
49
+ """
50
+ <details><summary>Order results by a field of your choice.</summary><ul><li><span>Accepted values: <var>last_updated</var>, <var>posted_date</var>, <var>response_deadline</var></span></li><li>Prefix with <var>-</var> to reverse order (e.g. <var>-last_updated</var>)</li></ul></details>
51
+ """
52
+
53
+ page: int
54
+ """A page number within the paginated result set."""
55
+
56
+ place_of_performance: str
57
+ """
58
+ <details><summary>Filter by place of performance</summary><ul><li>Accepts cities, states, zip codes, and 3-character country codes</li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
59
+ """
60
+
61
+ posted_date_after: str
62
+ """
63
+ <details><summary>Filter by posted date</summary><ul><li><span>Accepted values: <var>2024-08-01</var></span></li></ul></details>
64
+ """
65
+
66
+ posted_date_before: str
67
+ """
68
+ <details><summary>Filter by posted date</summary><ul><li><span>Accepted values: <var>2024-08-01</var></span></li></ul></details>
69
+ """
70
+
71
+ psc: str
72
+ """
73
+ <details><summary>Filter by PSC (Product Service Code)</summary><ul><li><span>Accepted values: <var>S222</var>, <var>T005</var>, <var>etc.</var></span></li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
74
+ """
75
+
76
+ response_deadline_after: str
77
+ """
78
+ <details><summary>Filter by response deadline</summary><ul><li><span>Accepted values: <var>2024-08-01</var></span></li></ul></details>
79
+ """
80
+
81
+ response_deadline_before: str
82
+ """
83
+ <details><summary>Filter by response deadline</summary><ul><li><span>Accepted values: <var>2024-08-01</var></span></li></ul></details>
84
+ """
85
+
86
+ search: str
87
+ """
88
+ <details><summary>Search within a notice/opportunity's title, description, or solicitation number</summary><ul><li>Disjunctive with <var>|</var> or <var>OR</var></li><li>Conjunctive with <var>,</var> or <var>AND</var></li><li>Accepts phrases with <var>"</var></li></ul></details>
89
+ """
90
+
91
+ set_aside: str
92
+ """
93
+ <details><summary>Filter by set-aside type</summary><ul><li><span>Accepted values: <var>8A</var>, <var>8AN</var>, <var>BICiv</var>, <var>EDWOSB</var>, <var>EDWOSBSS</var>, <var>HUBZONE</var>, <var>HZC</var>, <var>HZS</var>, <var>IEE</var>, <var>ISBEE</var>, <var>LAS</var>, <var>NONE</var>, <var>SB</var>, <var>SBA</var>, <var>SBP</var>, <var>SDB</var>, <var>SDVOSB</var>, <var>SDVOSBC</var>, <var>SDVOSBS</var>, <var>VOSB</var>, <var>VSA</var>, <var>VSS</var>, <var>WOSB</var>, <var>WOSBSS</var></span></li><li>Disjunctive with <var>|</var> or <var>OR</var></li></ul></details>
94
+ """
95
+
96
+ solicitation_number: str
97
+ """Search by solicitation number"""
@@ -0,0 +1,101 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, List, Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+
8
+ __all__ = [
9
+ "OpportunityListResponse",
10
+ "Result",
11
+ "ResultMeta",
12
+ "ResultMetaNoticeType",
13
+ "ResultAgency",
14
+ "ResultDepartment",
15
+ "ResultOffice",
16
+ ]
17
+
18
+
19
+ class ResultMetaNoticeType(BaseModel):
20
+ code: str
21
+
22
+ type: str
23
+
24
+
25
+ class ResultMeta(BaseModel):
26
+ attachments_count: int
27
+
28
+ notice_type: ResultMetaNoticeType
29
+
30
+ notices_count: int
31
+
32
+
33
+ class ResultAgency(BaseModel):
34
+ code: str
35
+
36
+ name: str
37
+
38
+ abbreviation: Optional[str] = None
39
+
40
+
41
+ class ResultDepartment(BaseModel):
42
+ name: str
43
+ """The Department name"""
44
+
45
+ abbreviation: Optional[str] = None
46
+
47
+ code: Optional[int] = None
48
+
49
+
50
+ class ResultOffice(BaseModel):
51
+ code: str
52
+
53
+ name: Optional[str] = None
54
+
55
+
56
+ class Result(BaseModel):
57
+ meta: ResultMeta
58
+
59
+ notices: List[str]
60
+
61
+ opportunity_id: str
62
+
63
+ sam_url: str
64
+
65
+ set_aside: Dict[str, str]
66
+
67
+ title: str
68
+
69
+ active: Optional[bool] = None
70
+
71
+ agency: Optional[ResultAgency] = None
72
+
73
+ award_number: Optional[str] = None
74
+
75
+ department: Optional[ResultDepartment] = None
76
+
77
+ first_notice_date: Optional[datetime] = None
78
+
79
+ last_notice_date: Optional[datetime] = None
80
+
81
+ naics_code: Optional[int] = None
82
+
83
+ office: Optional[ResultOffice] = None
84
+
85
+ place_of_performance: Optional[object] = None
86
+
87
+ psc_code: Optional[str] = None
88
+
89
+ response_deadline: Optional[datetime] = None
90
+
91
+ solicitation_number: Optional[str] = None
92
+
93
+
94
+ class OpportunityListResponse(BaseModel):
95
+ count: int
96
+
97
+ results: List[Result]
98
+
99
+ next: Optional[str] = None
100
+
101
+ previous: Optional[str] = None
@@ -0,0 +1,123 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, Optional
4
+ from datetime import date, datetime
5
+
6
+ from .._models import BaseModel
7
+
8
+ __all__ = [
9
+ "OpportunityRetrieveResponse",
10
+ "Attachments",
11
+ "Meta",
12
+ "MetaNoticeType",
13
+ "Notices",
14
+ "Agency",
15
+ "Department",
16
+ "Office",
17
+ ]
18
+
19
+
20
+ class Attachments(BaseModel):
21
+ attachment_id: str
22
+
23
+ resource_id: str
24
+
25
+ mime_type: Optional[str] = None
26
+
27
+ name: Optional[str] = None
28
+
29
+ posted_date: Optional[datetime] = None
30
+
31
+ type: Optional[str] = None
32
+
33
+ url: Optional[str] = None
34
+
35
+
36
+ class MetaNoticeType(BaseModel):
37
+ code: str
38
+
39
+ type: str
40
+
41
+
42
+ class Meta(BaseModel):
43
+ attachments_count: int
44
+
45
+ notice_type: MetaNoticeType
46
+
47
+ notices_count: int
48
+
49
+
50
+ class Notices(BaseModel):
51
+ notice_id: str
52
+
53
+ notice_type: str
54
+
55
+ posted_date: date
56
+
57
+ title: str
58
+
59
+
60
+ class Agency(BaseModel):
61
+ code: str
62
+
63
+ name: str
64
+
65
+ abbreviation: Optional[str] = None
66
+
67
+
68
+ class Department(BaseModel):
69
+ name: str
70
+ """The Department name"""
71
+
72
+ abbreviation: Optional[str] = None
73
+
74
+ code: Optional[int] = None
75
+
76
+
77
+ class Office(BaseModel):
78
+ code: str
79
+
80
+ name: Optional[str] = None
81
+
82
+
83
+ class OpportunityRetrieveResponse(BaseModel):
84
+ attachments: Attachments
85
+ """Base serializer for opportunity attachments"""
86
+
87
+ description: str
88
+
89
+ meta: Meta
90
+
91
+ notices: Notices
92
+
93
+ opportunity_id: str
94
+
95
+ sam_url: str
96
+
97
+ set_aside: Dict[str, str]
98
+
99
+ title: str
100
+
101
+ active: Optional[bool] = None
102
+
103
+ agency: Optional[Agency] = None
104
+
105
+ award_number: Optional[str] = None
106
+
107
+ department: Optional[Department] = None
108
+
109
+ first_notice_date: Optional[datetime] = None
110
+
111
+ last_notice_date: Optional[datetime] = None
112
+
113
+ naics_code: Optional[int] = None
114
+
115
+ office: Optional[Office] = None
116
+
117
+ place_of_performance: Optional[object] = None
118
+
119
+ psc_code: Optional[str] = None
120
+
121
+ response_deadline: Optional[datetime] = None
122
+
123
+ solicitation_number: Optional[str] = None
@@ -0,0 +1,21 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["ProductServiceCode"]
8
+
9
+
10
+ class ProductServiceCode(BaseModel):
11
+ code: str
12
+
13
+ level_1_category: Optional[str] = None
14
+
15
+ level_1_category_code: Optional[int] = None
16
+
17
+ level_2_category: Optional[str] = None
18
+
19
+ level_2_category_code: Optional[str] = None
20
+
21
+ parent: Optional[str] = None
@@ -0,0 +1,10 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import TypeAlias
5
+
6
+ from .product_service_code import ProductServiceCode
7
+
8
+ __all__ = ["PscListResponse"]
9
+
10
+ PscListResponse: TypeAlias = List[ProductServiceCode]
@@ -0,0 +1,113 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, TypedDict
6
+
7
+ __all__ = ["SchemaRetrieveParams"]
8
+
9
+
10
+ class SchemaRetrieveParams(TypedDict, total=False):
11
+ format: Literal["json", "yaml"]
12
+
13
+ lang: Literal[
14
+ "af",
15
+ "ar",
16
+ "ar-dz",
17
+ "ast",
18
+ "az",
19
+ "be",
20
+ "bg",
21
+ "bn",
22
+ "br",
23
+ "bs",
24
+ "ca",
25
+ "ckb",
26
+ "cs",
27
+ "cy",
28
+ "da",
29
+ "de",
30
+ "dsb",
31
+ "el",
32
+ "en",
33
+ "en-au",
34
+ "en-gb",
35
+ "eo",
36
+ "es",
37
+ "es-ar",
38
+ "es-co",
39
+ "es-mx",
40
+ "es-ni",
41
+ "es-ve",
42
+ "et",
43
+ "eu",
44
+ "fa",
45
+ "fi",
46
+ "fr",
47
+ "fy",
48
+ "ga",
49
+ "gd",
50
+ "gl",
51
+ "he",
52
+ "hi",
53
+ "hr",
54
+ "hsb",
55
+ "hu",
56
+ "hy",
57
+ "ia",
58
+ "id",
59
+ "ig",
60
+ "io",
61
+ "is",
62
+ "it",
63
+ "ja",
64
+ "ka",
65
+ "kab",
66
+ "kk",
67
+ "km",
68
+ "kn",
69
+ "ko",
70
+ "ky",
71
+ "lb",
72
+ "lt",
73
+ "lv",
74
+ "mk",
75
+ "ml",
76
+ "mn",
77
+ "mr",
78
+ "ms",
79
+ "my",
80
+ "nb",
81
+ "ne",
82
+ "nl",
83
+ "nn",
84
+ "os",
85
+ "pa",
86
+ "pl",
87
+ "pt",
88
+ "pt-br",
89
+ "ro",
90
+ "ru",
91
+ "sk",
92
+ "sl",
93
+ "sq",
94
+ "sr",
95
+ "sr-latn",
96
+ "sv",
97
+ "sw",
98
+ "ta",
99
+ "te",
100
+ "tg",
101
+ "th",
102
+ "tk",
103
+ "tr",
104
+ "tt",
105
+ "udm",
106
+ "ug",
107
+ "uk",
108
+ "ur",
109
+ "uz",
110
+ "vi",
111
+ "zh-hans",
112
+ "zh-hant",
113
+ ]
@@ -0,0 +1,8 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict
4
+ from typing_extensions import TypeAlias
5
+
6
+ __all__ = ["SchemaRetrieveResponse"]
7
+
8
+ SchemaRetrieveResponse: TypeAlias = Dict[str, object]