payi 0.1.0a6__tar.gz → 0.1.0a8__tar.gz

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.

Potentially problematic release.


This version of payi might be problematic. Click here for more details.

Files changed (96) hide show
  1. payi-0.1.0a8/.release-please-manifest.json +3 -0
  2. {payi-0.1.0a6 → payi-0.1.0a8}/CHANGELOG.md +19 -0
  3. {payi-0.1.0a6 → payi-0.1.0a8}/PKG-INFO +1 -1
  4. {payi-0.1.0a6 → payi-0.1.0a8}/api.md +12 -4
  5. {payi-0.1.0a6 → payi-0.1.0a8}/pyproject.toml +2 -1
  6. {payi-0.1.0a6 → payi-0.1.0a8}/requirements-dev.lock +7 -0
  7. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_version.py +1 -1
  8. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/resources/ingest.py +5 -5
  9. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/__init__.py +4 -1
  10. payi-0.1.0a8/src/payi/types/budget_response.py +49 -0
  11. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/__init__.py +1 -1
  12. payi-0.1.0a8/src/payi/types/budgets/budget_tags.py +16 -0
  13. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_create_response.py +2 -2
  14. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_delete_response.py +2 -2
  15. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_list_response.py +2 -2
  16. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_remove_response.py +2 -2
  17. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_update_response.py +2 -2
  18. payi-0.1.0a8/src/payi/types/cost_data.py +16 -0
  19. payi-0.1.0a8/src/payi/types/cost_details.py +13 -0
  20. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/paged_budget_list.py +5 -52
  21. payi-0.1.0a6/src/payi/types/successful_proxy_result.py → payi-0.1.0a8/src/payi/types/proxy_result.py +6 -17
  22. payi-0.1.0a8/src/payi/types/requests_data.py +21 -0
  23. {payi-0.1.0a6 → payi-0.1.0a8}/tests/api_resources/test_ingest.py +9 -9
  24. payi-0.1.0a6/.release-please-manifest.json +0 -3
  25. payi-0.1.0a6/src/payi/types/budget_response.py +0 -98
  26. payi-0.1.0a6/src/payi/types/budgets/budget_tags_response.py +0 -18
  27. {payi-0.1.0a6 → payi-0.1.0a8}/.gitignore +0 -0
  28. {payi-0.1.0a6 → payi-0.1.0a8}/CONTRIBUTING.md +0 -0
  29. {payi-0.1.0a6 → payi-0.1.0a8}/LICENSE +0 -0
  30. {payi-0.1.0a6 → payi-0.1.0a8}/README.md +0 -0
  31. {payi-0.1.0a6 → payi-0.1.0a8}/SECURITY.md +0 -0
  32. {payi-0.1.0a6 → payi-0.1.0a8}/bin/check-release-environment +0 -0
  33. {payi-0.1.0a6 → payi-0.1.0a8}/bin/publish-pypi +0 -0
  34. {payi-0.1.0a6 → payi-0.1.0a8}/examples/.keep +0 -0
  35. {payi-0.1.0a6 → payi-0.1.0a8}/mypy.ini +0 -0
  36. {payi-0.1.0a6 → payi-0.1.0a8}/noxfile.py +0 -0
  37. {payi-0.1.0a6 → payi-0.1.0a8}/release-please-config.json +0 -0
  38. {payi-0.1.0a6 → payi-0.1.0a8}/requirements.lock +0 -0
  39. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/__init__.py +0 -0
  40. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_base_client.py +0 -0
  41. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_client.py +0 -0
  42. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_compat.py +0 -0
  43. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_constants.py +0 -0
  44. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_exceptions.py +0 -0
  45. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_files.py +0 -0
  46. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_models.py +0 -0
  47. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_qs.py +0 -0
  48. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_resource.py +0 -0
  49. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_response.py +0 -0
  50. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_streaming.py +0 -0
  51. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_types.py +0 -0
  52. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/__init__.py +0 -0
  53. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_logs.py +0 -0
  54. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_proxy.py +0 -0
  55. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_reflection.py +0 -0
  56. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_streams.py +0 -0
  57. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_sync.py +0 -0
  58. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_transform.py +0 -0
  59. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_typing.py +0 -0
  60. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/_utils/_utils.py +0 -0
  61. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/lib/.keep +0 -0
  62. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/lib/helpers.py +0 -0
  63. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/py.typed +0 -0
  64. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/resources/__init__.py +0 -0
  65. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/resources/budgets/__init__.py +0 -0
  66. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/resources/budgets/budgets.py +0 -0
  67. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/resources/budgets/tags.py +0 -0
  68. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budget_create_params.py +0 -0
  69. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budget_history_response.py +0 -0
  70. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budget_list_params.py +0 -0
  71. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budget_update_params.py +0 -0
  72. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_create_params.py +0 -0
  73. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_remove_params.py +0 -0
  74. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/budgets/tag_update_params.py +0 -0
  75. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/default_response.py +0 -0
  76. {payi-0.1.0a6 → payi-0.1.0a8}/src/payi/types/ingest_units_params.py +0 -0
  77. {payi-0.1.0a6 → payi-0.1.0a8}/tests/__init__.py +0 -0
  78. {payi-0.1.0a6 → payi-0.1.0a8}/tests/api_resources/__init__.py +0 -0
  79. {payi-0.1.0a6 → payi-0.1.0a8}/tests/api_resources/budgets/__init__.py +0 -0
  80. {payi-0.1.0a6 → payi-0.1.0a8}/tests/api_resources/budgets/test_tags.py +0 -0
  81. {payi-0.1.0a6 → payi-0.1.0a8}/tests/api_resources/test_budgets.py +0 -0
  82. {payi-0.1.0a6 → payi-0.1.0a8}/tests/conftest.py +0 -0
  83. {payi-0.1.0a6 → payi-0.1.0a8}/tests/sample_file.txt +0 -0
  84. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_client.py +0 -0
  85. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_deepcopy.py +0 -0
  86. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_extract_files.py +0 -0
  87. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_files.py +0 -0
  88. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_models.py +0 -0
  89. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_qs.py +0 -0
  90. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_required_args.py +0 -0
  91. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_response.py +0 -0
  92. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_streaming.py +0 -0
  93. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_transform.py +0 -0
  94. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_utils/test_proxy.py +0 -0
  95. {payi-0.1.0a6 → payi-0.1.0a8}/tests/test_utils/test_typing.py +0 -0
  96. {payi-0.1.0a6 → payi-0.1.0a8}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.8"
3
+ }
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.8 (2024-07-02)
4
+
5
+ Full Changelog: [v0.1.0-alpha.7...v0.1.0-alpha.8](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.7...v0.1.0-alpha.8)
6
+
7
+ ### Features
8
+
9
+ * **api:** update via SDK Studio ([#28](https://github.com/Pay-i/pay-i-python/issues/28)) ([972e5e3](https://github.com/Pay-i/pay-i-python/commit/972e5e3b8c84df6d3b47ba2dba4137151d9e414c))
10
+ * **api:** update via SDK Studio ([#30](https://github.com/Pay-i/pay-i-python/issues/30)) ([3334f89](https://github.com/Pay-i/pay-i-python/commit/3334f89029ba31d70aa759d367be32888a77b603))
11
+
12
+ ## 0.1.0-alpha.7 (2024-07-02)
13
+
14
+ Full Changelog: [v0.1.0-alpha.6...v0.1.0-alpha.7](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.6...v0.1.0-alpha.7)
15
+
16
+ ### Features
17
+
18
+ * **api:** update via SDK Studio ([#23](https://github.com/Pay-i/pay-i-python/issues/23)) ([5c2aa35](https://github.com/Pay-i/pay-i-python/commit/5c2aa35b45c18fb194b4055884d3abded49aad1e))
19
+ * **api:** update via SDK Studio ([#25](https://github.com/Pay-i/pay-i-python/issues/25)) ([9712710](https://github.com/Pay-i/pay-i-python/commit/9712710b0ab67462295a3f7531e3b034a91dc094))
20
+ * **api:** update via SDK Studio ([#26](https://github.com/Pay-i/pay-i-python/issues/26)) ([eebd44e](https://github.com/Pay-i/pay-i-python/commit/eebd44e55d800da8cf7b9a01108e78a3446d1283))
21
+
3
22
  ## 0.1.0-alpha.6 (2024-06-30)
4
23
 
5
24
  Full Changelog: [v0.1.0-alpha.5...v0.1.0-alpha.6](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.5...v0.1.0-alpha.6)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a6
3
+ Version: 0.1.0a8
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -3,7 +3,15 @@
3
3
  Types:
4
4
 
5
5
  ```python
6
- from payi.types import BudgetHistoryResponse, BudgetResponse, DefaultResponse, PagedBudgetList
6
+ from payi.types import (
7
+ BudgetHistoryResponse,
8
+ BudgetResponse,
9
+ CostData,
10
+ CostDetails,
11
+ DefaultResponse,
12
+ PagedBudgetList,
13
+ RequestsData,
14
+ )
7
15
  ```
8
16
 
9
17
  Methods:
@@ -21,7 +29,7 @@ Types:
21
29
 
22
30
  ```python
23
31
  from payi.types.budgets import (
24
- BudgetTagsResponse,
32
+ BudgetTags,
25
33
  TagCreateResponse,
26
34
  TagUpdateResponse,
27
35
  TagListResponse,
@@ -43,9 +51,9 @@ Methods:
43
51
  Types:
44
52
 
45
53
  ```python
46
- from payi.types import SuccessfulProxyResult
54
+ from payi.types import ProxyResult
47
55
  ```
48
56
 
49
57
  Methods:
50
58
 
51
- - <code title="post /api/v1/ingest">client.ingest.<a href="./src/payi/resources/ingest.py">units</a>(\*\*<a href="src/payi/types/ingest_units_params.py">params</a>) -> <a href="./src/payi/types/successful_proxy_result.py">SuccessfulProxyResult</a></code>
59
+ - <code title="post /api/v1/ingest">client.ingest.<a href="./src/payi/resources/ingest.py">units</a>(\*\*<a href="src/payi/types/ingest_units_params.py">params</a>) -> <a href="./src/payi/types/proxy_result.py">ProxyResult</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "payi"
3
- version = "0.1.0-alpha.6"
3
+ version = "0.1.0-alpha.8"
4
4
  description = "The official Python library for the payi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -58,6 +58,7 @@ dev-dependencies = [
58
58
  "nox",
59
59
  "dirty-equals>=0.6.0",
60
60
  "importlib-metadata>=6.7.0",
61
+ "rich>=13.7.1",
61
62
 
62
63
  ]
63
64
 
@@ -44,6 +44,10 @@ idna==3.4
44
44
  importlib-metadata==7.0.0
45
45
  iniconfig==2.0.0
46
46
  # via pytest
47
+ markdown-it-py==3.0.0
48
+ # via rich
49
+ mdurl==0.1.2
50
+ # via markdown-it-py
47
51
  mypy==1.7.1
48
52
  mypy-extensions==1.0.0
49
53
  # via mypy
@@ -63,6 +67,8 @@ pydantic==2.7.1
63
67
  # via payi
64
68
  pydantic-core==2.18.2
65
69
  # via pydantic
70
+ pygments==2.18.0
71
+ # via rich
66
72
  pyright==1.1.364
67
73
  pytest==7.1.1
68
74
  # via pytest-asyncio
@@ -72,6 +78,7 @@ python-dateutil==2.8.2
72
78
  pytz==2023.3.post1
73
79
  # via dirty-equals
74
80
  respx==0.20.2
81
+ rich==13.7.1
75
82
  ruff==0.1.9
76
83
  setuptools==68.2.2
77
84
  # via nodeenv
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "payi"
4
- __version__ = "0.1.0-alpha.6" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.8" # x-release-please-version
@@ -22,7 +22,7 @@ from .._response import (
22
22
  from .._base_client import (
23
23
  make_request_options,
24
24
  )
25
- from ..types.successful_proxy_result import SuccessfulProxyResult
25
+ from ..types.proxy_result import ProxyResult
26
26
 
27
27
  __all__ = ["IngestResource", "AsyncIngestResource"]
28
28
 
@@ -51,7 +51,7 @@ class IngestResource(SyncAPIResource):
51
51
  extra_query: Query | None = None,
52
52
  extra_body: Body | None = None,
53
53
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
54
- ) -> SuccessfulProxyResult:
54
+ ) -> ProxyResult:
55
55
  """
56
56
  Ingest a request
57
57
 
@@ -103,7 +103,7 @@ class IngestResource(SyncAPIResource):
103
103
  options=make_request_options(
104
104
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
105
105
  ),
106
- cast_to=SuccessfulProxyResult,
106
+ cast_to=ProxyResult,
107
107
  )
108
108
 
109
109
 
@@ -131,7 +131,7 @@ class AsyncIngestResource(AsyncAPIResource):
131
131
  extra_query: Query | None = None,
132
132
  extra_body: Body | None = None,
133
133
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
134
- ) -> SuccessfulProxyResult:
134
+ ) -> ProxyResult:
135
135
  """
136
136
  Ingest a request
137
137
 
@@ -183,7 +183,7 @@ class AsyncIngestResource(AsyncAPIResource):
183
183
  options=make_request_options(
184
184
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
185
185
  ),
186
- cast_to=SuccessfulProxyResult,
186
+ cast_to=ProxyResult,
187
187
  )
188
188
 
189
189
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from .cost_data import CostData as CostData
6
+ from .cost_details import CostDetails as CostDetails
7
+ from .proxy_result import ProxyResult as ProxyResult
8
+ from .requests_data import RequestsData as RequestsData
5
9
  from .budget_response import BudgetResponse as BudgetResponse
6
10
  from .default_response import DefaultResponse as DefaultResponse
7
11
  from .paged_budget_list import PagedBudgetList as PagedBudgetList
@@ -10,4 +14,3 @@ from .ingest_units_params import IngestUnitsParams as IngestUnitsParams
10
14
  from .budget_create_params import BudgetCreateParams as BudgetCreateParams
11
15
  from .budget_update_params import BudgetUpdateParams as BudgetUpdateParams
12
16
  from .budget_history_response import BudgetHistoryResponse as BudgetHistoryResponse
13
- from .successful_proxy_result import SuccessfulProxyResult as SuccessfulProxyResult
@@ -0,0 +1,49 @@
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
+ from typing_extensions import Literal
6
+
7
+ from .._models import BaseModel
8
+ from .cost_data import CostData
9
+ from .requests_data import RequestsData
10
+
11
+ __all__ = ["BudgetResponse", "Budget", "BudgetTotals"]
12
+
13
+
14
+ class BudgetTotals(BaseModel):
15
+ cost: Optional[CostData] = None
16
+
17
+ requests: Optional[RequestsData] = None
18
+
19
+
20
+ class Budget(BaseModel):
21
+ base_cost_estimate: Literal["Max"]
22
+
23
+ budget_creation_timestamp: datetime
24
+
25
+ budget_id: str
26
+
27
+ budget_name: str
28
+
29
+ budget_response_type: Literal["Block", "Allow"]
30
+
31
+ budget_type: Literal["Conservative", "Liberal"]
32
+
33
+ budget_update_timestamp: datetime
34
+
35
+ currency: str
36
+
37
+ max: float
38
+
39
+ totals: BudgetTotals
40
+
41
+ budget_tags: Optional[List[str]] = None
42
+
43
+
44
+ class BudgetResponse(BaseModel):
45
+ budget: Budget
46
+
47
+ request_id: str
48
+
49
+ message: Optional[str] = None
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from .budget_tags import BudgetTags as BudgetTags
5
6
  from .tag_create_params import TagCreateParams as TagCreateParams
6
7
  from .tag_list_response import TagListResponse as TagListResponse
7
8
  from .tag_remove_params import TagRemoveParams as TagRemoveParams
@@ -10,4 +11,3 @@ from .tag_create_response import TagCreateResponse as TagCreateResponse
10
11
  from .tag_delete_response import TagDeleteResponse as TagDeleteResponse
11
12
  from .tag_remove_response import TagRemoveResponse as TagRemoveResponse
12
13
  from .tag_update_response import TagUpdateResponse as TagUpdateResponse
13
- from .budget_tags_response import BudgetTagsResponse as BudgetTagsResponse
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = ["BudgetTags"]
9
+
10
+
11
+ class BudgetTags(BaseModel):
12
+ created_on: Optional[datetime] = None
13
+
14
+ tag_id: Optional[int] = None
15
+
16
+ tag_name: Optional[str] = None
@@ -2,8 +2,8 @@
2
2
 
3
3
  from typing import List
4
4
 
5
- from .budget_tags_response import BudgetTagsResponse
5
+ from .budget_tags import BudgetTags
6
6
 
7
7
  __all__ = ["TagCreateResponse"]
8
8
 
9
- TagCreateResponse = List[BudgetTagsResponse]
9
+ TagCreateResponse = List[BudgetTags]
@@ -2,8 +2,8 @@
2
2
 
3
3
  from typing import List
4
4
 
5
- from .budget_tags_response import BudgetTagsResponse
5
+ from .budget_tags import BudgetTags
6
6
 
7
7
  __all__ = ["TagDeleteResponse"]
8
8
 
9
- TagDeleteResponse = List[BudgetTagsResponse]
9
+ TagDeleteResponse = List[BudgetTags]
@@ -2,8 +2,8 @@
2
2
 
3
3
  from typing import List
4
4
 
5
- from .budget_tags_response import BudgetTagsResponse
5
+ from .budget_tags import BudgetTags
6
6
 
7
7
  __all__ = ["TagListResponse"]
8
8
 
9
- TagListResponse = List[BudgetTagsResponse]
9
+ TagListResponse = List[BudgetTags]
@@ -2,8 +2,8 @@
2
2
 
3
3
  from typing import List
4
4
 
5
- from .budget_tags_response import BudgetTagsResponse
5
+ from .budget_tags import BudgetTags
6
6
 
7
7
  __all__ = ["TagRemoveResponse"]
8
8
 
9
- TagRemoveResponse = List[BudgetTagsResponse]
9
+ TagRemoveResponse = List[BudgetTags]
@@ -2,8 +2,8 @@
2
2
 
3
3
  from typing import List
4
4
 
5
- from .budget_tags_response import BudgetTagsResponse
5
+ from .budget_tags import BudgetTags
6
6
 
7
7
  __all__ = ["TagUpdateResponse"]
8
8
 
9
- TagUpdateResponse = List[BudgetTagsResponse]
9
+ TagUpdateResponse = List[BudgetTags]
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+
4
+
5
+ from .._models import BaseModel
6
+ from .cost_details import CostDetails
7
+
8
+ __all__ = ["CostData"]
9
+
10
+
11
+ class CostData(BaseModel):
12
+ input: CostDetails
13
+
14
+ output: CostDetails
15
+
16
+ total: CostDetails
@@ -0,0 +1,13 @@
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__ = ["CostDetails"]
8
+
9
+
10
+ class CostDetails(BaseModel):
11
+ base: float
12
+
13
+ overrun_base: Optional[float] = None
@@ -7,63 +7,16 @@ from typing_extensions import Literal
7
7
  from pydantic import Field as FieldInfo
8
8
 
9
9
  from .._models import BaseModel
10
+ from .cost_data import CostData
11
+ from .requests_data import RequestsData
10
12
 
11
- __all__ = [
12
- "PagedBudgetList",
13
- "Item",
14
- "ItemTotals",
15
- "ItemTotalsCost",
16
- "ItemTotalsCostInputCost",
17
- "ItemTotalsCostOutputCost",
18
- "ItemTotalsCostTotalCost",
19
- "ItemTotalsRequests",
20
- ]
21
-
22
-
23
- class ItemTotalsCostInputCost(BaseModel):
24
- base: Optional[float] = None
25
-
26
- overrun_base: Optional[float] = None
27
-
28
-
29
- class ItemTotalsCostOutputCost(BaseModel):
30
- base: Optional[float] = None
31
-
32
- overrun_base: Optional[float] = None
33
-
34
-
35
- class ItemTotalsCostTotalCost(BaseModel):
36
- base: Optional[float] = None
37
-
38
- overrun_base: Optional[float] = None
39
-
40
-
41
- class ItemTotalsCost(BaseModel):
42
- input_cost: Optional[ItemTotalsCostInputCost] = FieldInfo(alias="inputCost", default=None)
43
-
44
- output_cost: Optional[ItemTotalsCostOutputCost] = FieldInfo(alias="outputCost", default=None)
45
-
46
- total_cost: Optional[ItemTotalsCostTotalCost] = FieldInfo(alias="totalCost", default=None)
47
-
48
-
49
- class ItemTotalsRequests(BaseModel):
50
- blocked: Optional[int] = None
51
-
52
- error: Optional[int] = None
53
-
54
- exceeded: Optional[int] = None
55
-
56
- failed: Optional[int] = None
57
-
58
- successful: Optional[int] = None
59
-
60
- total: Optional[int] = None
13
+ __all__ = ["PagedBudgetList", "Item", "ItemTotals"]
61
14
 
62
15
 
63
16
  class ItemTotals(BaseModel):
64
- cost: Optional[ItemTotalsCost] = None
17
+ cost: Optional[CostData] = None
65
18
 
66
- requests: Optional[ItemTotalsRequests] = None
19
+ requests: Optional[RequestsData] = None
67
20
 
68
21
 
69
22
  class Item(BaseModel):
@@ -3,37 +3,26 @@
3
3
  from typing import Dict, List, Optional
4
4
 
5
5
  from .._models import BaseModel
6
+ from .cost_details import CostDetails
6
7
 
7
- __all__ = ["SuccessfulProxyResult", "Budgets", "Cost", "CostInput", "CostOutput", "CostTotal"]
8
+ __all__ = ["ProxyResult", "Budgets", "Cost"]
8
9
 
9
10
 
10
11
  class Budgets(BaseModel):
11
12
  state: Optional[str] = None
12
13
 
13
14
 
14
- class CostInput(BaseModel):
15
- base: Optional[float] = None
16
-
17
-
18
- class CostOutput(BaseModel):
19
- base: Optional[float] = None
20
-
21
-
22
- class CostTotal(BaseModel):
23
- base: Optional[float] = None
24
-
25
-
26
15
  class Cost(BaseModel):
27
16
  currency: Optional[str] = None
28
17
 
29
- input: Optional[CostInput] = None
18
+ input: Optional[CostDetails] = None
30
19
 
31
- output: Optional[CostOutput] = None
20
+ output: Optional[CostDetails] = None
32
21
 
33
- total: Optional[CostTotal] = None
22
+ total: Optional[CostDetails] = None
34
23
 
35
24
 
36
- class SuccessfulProxyResult(BaseModel):
25
+ class ProxyResult(BaseModel):
37
26
  budgets: Optional[Dict[str, Budgets]] = None
38
27
 
39
28
  cost: Optional[Cost] = 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__ = ["RequestsData"]
8
+
9
+
10
+ class RequestsData(BaseModel):
11
+ blocked: Optional[int] = None
12
+
13
+ error: Optional[int] = None
14
+
15
+ exceeded: Optional[int] = None
16
+
17
+ failed: Optional[int] = None
18
+
19
+ successful: Optional[int] = None
20
+
21
+ total: Optional[int] = None
@@ -8,7 +8,7 @@ from typing import Any, cast
8
8
  import pytest
9
9
 
10
10
  from payi import Payi, AsyncPayi
11
- from payi.types import SuccessfulProxyResult
11
+ from payi.types import ProxyResult
12
12
  from tests.utils import assert_matches_type
13
13
 
14
14
  base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -25,7 +25,7 @@ class TestIngest:
25
25
  output=1,
26
26
  resource="x",
27
27
  )
28
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
28
+ assert_matches_type(ProxyResult, ingest, path=["response"])
29
29
 
30
30
  @parametrize
31
31
  def test_method_units_with_all_params(self, client: Payi) -> None:
@@ -37,7 +37,7 @@ class TestIngest:
37
37
  budget_ids=["budgetId1", "budgetId_2"],
38
38
  request_tags=["requestTag1", "request_tag_2"],
39
39
  )
40
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
40
+ assert_matches_type(ProxyResult, ingest, path=["response"])
41
41
 
42
42
  @parametrize
43
43
  def test_raw_response_units(self, client: Payi) -> None:
@@ -51,7 +51,7 @@ class TestIngest:
51
51
  assert response.is_closed is True
52
52
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
53
53
  ingest = response.parse()
54
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
54
+ assert_matches_type(ProxyResult, ingest, path=["response"])
55
55
 
56
56
  @parametrize
57
57
  def test_streaming_response_units(self, client: Payi) -> None:
@@ -65,7 +65,7 @@ class TestIngest:
65
65
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
66
66
 
67
67
  ingest = response.parse()
68
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
68
+ assert_matches_type(ProxyResult, ingest, path=["response"])
69
69
 
70
70
  assert cast(Any, response.is_closed) is True
71
71
 
@@ -81,7 +81,7 @@ class TestAsyncIngest:
81
81
  output=1,
82
82
  resource="x",
83
83
  )
84
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
84
+ assert_matches_type(ProxyResult, ingest, path=["response"])
85
85
 
86
86
  @parametrize
87
87
  async def test_method_units_with_all_params(self, async_client: AsyncPayi) -> None:
@@ -93,7 +93,7 @@ class TestAsyncIngest:
93
93
  budget_ids=["budgetId1", "budgetId_2"],
94
94
  request_tags=["requestTag1", "request_tag_2"],
95
95
  )
96
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
96
+ assert_matches_type(ProxyResult, ingest, path=["response"])
97
97
 
98
98
  @parametrize
99
99
  async def test_raw_response_units(self, async_client: AsyncPayi) -> None:
@@ -107,7 +107,7 @@ class TestAsyncIngest:
107
107
  assert response.is_closed is True
108
108
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
109
109
  ingest = await response.parse()
110
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
110
+ assert_matches_type(ProxyResult, ingest, path=["response"])
111
111
 
112
112
  @parametrize
113
113
  async def test_streaming_response_units(self, async_client: AsyncPayi) -> None:
@@ -121,6 +121,6 @@ class TestAsyncIngest:
121
121
  assert response.http_request.headers.get("X-Stainless-Lang") == "python"
122
122
 
123
123
  ingest = await response.parse()
124
- assert_matches_type(SuccessfulProxyResult, ingest, path=["response"])
124
+ assert_matches_type(ProxyResult, ingest, path=["response"])
125
125
 
126
126
  assert cast(Any, response.is_closed) is True
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.6"
3
- }
@@ -1,98 +0,0 @@
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
- from typing_extensions import Literal
6
-
7
- from pydantic import Field as FieldInfo
8
-
9
- from .._models import BaseModel
10
-
11
- __all__ = [
12
- "BudgetResponse",
13
- "Budget",
14
- "BudgetTotals",
15
- "BudgetTotalsCost",
16
- "BudgetTotalsCostInputCost",
17
- "BudgetTotalsCostOutputCost",
18
- "BudgetTotalsCostTotalCost",
19
- "BudgetTotalsRequests",
20
- ]
21
-
22
-
23
- class BudgetTotalsCostInputCost(BaseModel):
24
- base: Optional[float] = None
25
-
26
- overrun_base: Optional[float] = None
27
-
28
-
29
- class BudgetTotalsCostOutputCost(BaseModel):
30
- base: Optional[float] = None
31
-
32
- overrun_base: Optional[float] = None
33
-
34
-
35
- class BudgetTotalsCostTotalCost(BaseModel):
36
- base: Optional[float] = None
37
-
38
- overrun_base: Optional[float] = None
39
-
40
-
41
- class BudgetTotalsCost(BaseModel):
42
- input_cost: Optional[BudgetTotalsCostInputCost] = FieldInfo(alias="inputCost", default=None)
43
-
44
- output_cost: Optional[BudgetTotalsCostOutputCost] = FieldInfo(alias="outputCost", default=None)
45
-
46
- total_cost: Optional[BudgetTotalsCostTotalCost] = FieldInfo(alias="totalCost", default=None)
47
-
48
-
49
- class BudgetTotalsRequests(BaseModel):
50
- blocked: Optional[int] = None
51
-
52
- error: Optional[int] = None
53
-
54
- exceeded: Optional[int] = None
55
-
56
- failed: Optional[int] = None
57
-
58
- successful: Optional[int] = None
59
-
60
- total: Optional[int] = None
61
-
62
-
63
- class BudgetTotals(BaseModel):
64
- cost: Optional[BudgetTotalsCost] = None
65
-
66
- requests: Optional[BudgetTotalsRequests] = None
67
-
68
-
69
- class Budget(BaseModel):
70
- base_cost_estimate: Literal["Max"]
71
-
72
- budget_creation_timestamp: datetime
73
-
74
- budget_id: str
75
-
76
- budget_name: str
77
-
78
- budget_response_type: Literal["Block", "Allow"]
79
-
80
- budget_type: Literal["Conservative", "Liberal"]
81
-
82
- budget_update_timestamp: datetime
83
-
84
- currency: str
85
-
86
- max: float
87
-
88
- totals: BudgetTotals
89
-
90
- budget_tags: Optional[List[str]] = None
91
-
92
-
93
- class BudgetResponse(BaseModel):
94
- budget: Budget
95
-
96
- request_id: str
97
-
98
- message: Optional[str] = None
@@ -1,18 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import Optional
4
- from datetime import datetime
5
-
6
- from pydantic import Field as FieldInfo
7
-
8
- from ..._models import BaseModel
9
-
10
- __all__ = ["BudgetTagsResponse"]
11
-
12
-
13
- class BudgetTagsResponse(BaseModel):
14
- created_on: Optional[datetime] = FieldInfo(alias="createdOn", default=None)
15
-
16
- tag_id: Optional[int] = FieldInfo(alias="tagId", default=None)
17
-
18
- tag_name: Optional[str] = FieldInfo(alias="tagName", default=None)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes