levelfour 0.1.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.
Files changed (208) hide show
  1. levelfour/__init__.py +495 -0
  2. levelfour/api_keys/__init__.py +34 -0
  3. levelfour/api_keys/client.py +337 -0
  4. levelfour/api_keys/raw_client.py +621 -0
  5. levelfour/api_keys/types/__init__.py +34 -0
  6. levelfour/api_keys/types/create_api_key_request_scope.py +5 -0
  7. levelfour/async_levelfour_client.py +39 -0
  8. levelfour/base_client.py +346 -0
  9. levelfour/client.py +54 -0
  10. levelfour/core/__init__.py +127 -0
  11. levelfour/core/api_error.py +23 -0
  12. levelfour/core/client_wrapper.py +105 -0
  13. levelfour/core/datetime_utils.py +70 -0
  14. levelfour/core/file.py +67 -0
  15. levelfour/core/force_multipart.py +18 -0
  16. levelfour/core/http_client.py +776 -0
  17. levelfour/core/http_response.py +59 -0
  18. levelfour/core/http_sse/__init__.py +42 -0
  19. levelfour/core/http_sse/_api.py +112 -0
  20. levelfour/core/http_sse/_decoders.py +61 -0
  21. levelfour/core/http_sse/_exceptions.py +7 -0
  22. levelfour/core/http_sse/_models.py +17 -0
  23. levelfour/core/jsonable_encoder.py +108 -0
  24. levelfour/core/logging.py +107 -0
  25. levelfour/core/pagination.py +82 -0
  26. levelfour/core/pydantic_utilities.py +577 -0
  27. levelfour/core/query_encoder.py +58 -0
  28. levelfour/core/remove_none_from_dict.py +11 -0
  29. levelfour/core/request_options.py +35 -0
  30. levelfour/core/serialization.py +276 -0
  31. levelfour/errors/__init__.py +40 -0
  32. levelfour/errors/forbidden_error.py +11 -0
  33. levelfour/errors/unauthorized_error.py +11 -0
  34. levelfour/errors/unprocessable_entity_error.py +11 -0
  35. levelfour/evaluation/__init__.py +4 -0
  36. levelfour/evaluation/client.py +102 -0
  37. levelfour/evaluation/raw_client.py +141 -0
  38. levelfour/exceptions.py +63 -0
  39. levelfour/health/__init__.py +4 -0
  40. levelfour/health/client.py +163 -0
  41. levelfour/health/raw_client.py +164 -0
  42. levelfour/integrations/__init__.py +0 -0
  43. levelfour/integrations/django.py +26 -0
  44. levelfour/integrations/fastapi.py +39 -0
  45. levelfour/integrations/telemetry.py +66 -0
  46. levelfour/levelfour_client.py +47 -0
  47. levelfour/pagination.py +84 -0
  48. levelfour/pr_analysis/__init__.py +4 -0
  49. levelfour/pr_analysis/client.py +408 -0
  50. levelfour/pr_analysis/raw_client.py +620 -0
  51. levelfour/pr_analysis_actions/__init__.py +4 -0
  52. levelfour/pr_analysis_actions/client.py +588 -0
  53. levelfour/pr_analysis_actions/raw_client.py +939 -0
  54. levelfour/pr_analysis_installations/__init__.py +4 -0
  55. levelfour/pr_analysis_installations/client.py +470 -0
  56. levelfour/pr_analysis_installations/raw_client.py +868 -0
  57. levelfour/providers/__init__.py +34 -0
  58. levelfour/providers/client.py +1504 -0
  59. levelfour/providers/raw_client.py +2398 -0
  60. levelfour/providers/types/__init__.py +36 -0
  61. levelfour/providers/types/list_spending_breakdown_providers_response.py +11 -0
  62. levelfour/py.typed +0 -0
  63. levelfour/recommendations/__init__.py +4 -0
  64. levelfour/recommendations/client.py +1018 -0
  65. levelfour/recommendations/raw_client.py +1810 -0
  66. levelfour/savings/__init__.py +4 -0
  67. levelfour/savings/client.py +401 -0
  68. levelfour/savings/raw_client.py +624 -0
  69. levelfour/spending/__init__.py +34 -0
  70. levelfour/spending/client.py +437 -0
  71. levelfour/spending/raw_client.py +684 -0
  72. levelfour/spending/types/__init__.py +34 -0
  73. levelfour/spending/types/list_breakdown_spending_response.py +12 -0
  74. levelfour/types/__init__.py +413 -0
  75. levelfour/types/accept_terms_data.py +25 -0
  76. levelfour/types/accept_terms_response.py +27 -0
  77. levelfour/types/action_request.py +42 -0
  78. levelfour/types/api_key_created_data.py +28 -0
  79. levelfour/types/api_key_data.py +27 -0
  80. levelfour/types/authentication_error.py +5 -0
  81. levelfour/types/authorization_error.py +5 -0
  82. levelfour/types/bad_request_error.py +5 -0
  83. levelfour/types/comparison_item.py +32 -0
  84. levelfour/types/complete_wizard_data.py +27 -0
  85. levelfour/types/complete_wizard_response.py +27 -0
  86. levelfour/types/conflict_error.py +5 -0
  87. levelfour/types/cost_breakdown_data.py +35 -0
  88. levelfour/types/cost_breakdown_item.py +71 -0
  89. levelfour/types/cost_breakdown_raw_data.py +37 -0
  90. levelfour/types/cost_breakdown_raw_response.py +27 -0
  91. levelfour/types/cost_breakdown_response.py +27 -0
  92. levelfour/types/costs_breakdown_chart_data.py +48 -0
  93. levelfour/types/costs_breakdown_chart_response.py +27 -0
  94. levelfour/types/costs_breakdown_data_point.py +46 -0
  95. levelfour/types/costs_breakdown_grouped_chart_data.py +52 -0
  96. levelfour/types/costs_breakdown_grouped_chart_response.py +27 -0
  97. levelfour/types/costs_breakdown_grouped_data_point.py +36 -0
  98. levelfour/types/costs_breakdown_totals.py +41 -0
  99. levelfour/types/create_api_key_response.py +23 -0
  100. levelfour/types/daily_spending_breakdown_data.py +42 -0
  101. levelfour/types/daily_spending_breakdown_response.py +27 -0
  102. levelfour/types/daily_spending_data_point.py +31 -0
  103. levelfour/types/dashboard_summary_data.py +72 -0
  104. levelfour/types/dashboard_summary_response.py +27 -0
  105. levelfour/types/delete_endpoint_data.py +20 -0
  106. levelfour/types/delete_endpoint_response.py +23 -0
  107. levelfour/types/endpoint_data.py +23 -0
  108. levelfour/types/error_response.py +23 -0
  109. levelfour/types/error_response_error.py +21 -0
  110. levelfour/types/evaluation_status_data.py +71 -0
  111. levelfour/types/evaluation_status_response.py +27 -0
  112. levelfour/types/execution_log_command.py +21 -0
  113. levelfour/types/execution_log_entry.py +23 -0
  114. levelfour/types/execution_step_schema.py +23 -0
  115. levelfour/types/http_validation_error.py +20 -0
  116. levelfour/types/implementation_method_data.py +25 -0
  117. levelfour/types/implementation_method_response.py +27 -0
  118. levelfour/types/implementation_step.py +27 -0
  119. levelfour/types/internal_server_error.py +5 -0
  120. levelfour/types/list_api_keys_data.py +21 -0
  121. levelfour/types/list_api_keys_response.py +23 -0
  122. levelfour/types/list_endpoints_response.py +23 -0
  123. levelfour/types/metric_data_point.py +27 -0
  124. levelfour/types/metric_series.py +40 -0
  125. levelfour/types/metric_series_entry.py +25 -0
  126. levelfour/types/monthly_spending_data.py +27 -0
  127. levelfour/types/monthly_spending_data_point.py +31 -0
  128. levelfour/types/monthly_spending_response.py +27 -0
  129. levelfour/types/not_found_error.py +5 -0
  130. levelfour/types/pagination_meta.py +51 -0
  131. levelfour/types/processing_recommendation_item.py +61 -0
  132. levelfour/types/processing_recommendations_data.py +28 -0
  133. levelfour/types/processing_recommendations_response.py +27 -0
  134. levelfour/types/provider.py +46 -0
  135. levelfour/types/provider_breakdown_data.py +31 -0
  136. levelfour/types/provider_breakdown_item.py +77 -0
  137. levelfour/types/provider_breakdown_response.py +27 -0
  138. levelfour/types/provider_filter_options_data.py +51 -0
  139. levelfour/types/provider_filter_options_response.py +27 -0
  140. levelfour/types/provider_potential_savings_summary_data.py +46 -0
  141. levelfour/types/provider_potential_savings_summary_response.py +27 -0
  142. levelfour/types/provider_recommendations_summary_data.py +37 -0
  143. levelfour/types/provider_recommendations_summary_response.py +27 -0
  144. levelfour/types/provider_saved_summary_data.py +56 -0
  145. levelfour/types/provider_saved_summary_response.py +27 -0
  146. levelfour/types/provider_service_breakdown_data.py +65 -0
  147. levelfour/types/provider_service_breakdown_item.py +72 -0
  148. levelfour/types/provider_service_breakdown_raw_data.py +62 -0
  149. levelfour/types/provider_service_breakdown_raw_response.py +27 -0
  150. levelfour/types/provider_service_breakdown_response.py +27 -0
  151. levelfour/types/provider_service_costs_breakdown_data.py +62 -0
  152. levelfour/types/provider_service_costs_breakdown_response.py +27 -0
  153. levelfour/types/provider_service_costs_data_point.py +36 -0
  154. levelfour/types/provider_spending.py +61 -0
  155. levelfour/types/provider_spending_summary_data.py +67 -0
  156. levelfour/types/provider_spending_summary_response.py +27 -0
  157. levelfour/types/provider_timeline_data.py +57 -0
  158. levelfour/types/provider_timeline_response.py +27 -0
  159. levelfour/types/provider_top_service.py +36 -0
  160. levelfour/types/providers_summary_data.py +24 -0
  161. levelfour/types/providers_summary_response.py +27 -0
  162. levelfour/types/rate_limit_error.py +5 -0
  163. levelfour/types/recommendation_actions.py +60 -0
  164. levelfour/types/recommendation_detail.py +42 -0
  165. levelfour/types/recommendation_detail_response.py +27 -0
  166. levelfour/types/recommendation_filter_options_data.py +41 -0
  167. levelfour/types/recommendation_filter_options_response.py +27 -0
  168. levelfour/types/recommendation_item.py +36 -0
  169. levelfour/types/recommendation_wizard_data.py +173 -0
  170. levelfour/types/recommendation_wizard_data_metrics.py +7 -0
  171. levelfour/types/recommendation_wizard_response.py +27 -0
  172. levelfour/types/recommendations_breakdown_data.py +26 -0
  173. levelfour/types/recommendations_breakdown_response.py +27 -0
  174. levelfour/types/recommendations_overview_data.py +51 -0
  175. levelfour/types/recommendations_overview_response.py +27 -0
  176. levelfour/types/register_endpoint_response.py +23 -0
  177. levelfour/types/resource_change.py +42 -0
  178. levelfour/types/resource_snapshot.py +21 -0
  179. levelfour/types/revoke_api_key_data.py +20 -0
  180. levelfour/types/revoke_api_key_response.py +23 -0
  181. levelfour/types/risk_assessment.py +29 -0
  182. levelfour/types/risk_factor.py +27 -0
  183. levelfour/types/saved_breakdown_data.py +31 -0
  184. levelfour/types/saved_breakdown_response.py +27 -0
  185. levelfour/types/saved_by_provider_breakdown_data.py +31 -0
  186. levelfour/types/saved_by_provider_breakdown_response.py +27 -0
  187. levelfour/types/saved_by_provider_item.py +76 -0
  188. levelfour/types/saved_item.py +35 -0
  189. levelfour/types/saved_provider_summary.py +36 -0
  190. levelfour/types/saved_summary_data.py +57 -0
  191. levelfour/types/saved_summary_response.py +27 -0
  192. levelfour/types/savings_decision_data.py +28 -0
  193. levelfour/types/savings_decision_response.py +27 -0
  194. levelfour/types/spending_by_date_item.py +36 -0
  195. levelfour/types/top_recommendation.py +56 -0
  196. levelfour/types/trigger_info.py +22 -0
  197. levelfour/types/update_tag_data.py +20 -0
  198. levelfour/types/update_tag_response.py +23 -0
  199. levelfour/types/validation_error.py +24 -0
  200. levelfour/types/validation_error_loc_item.py +5 -0
  201. levelfour/webhooks/__init__.py +4 -0
  202. levelfour/webhooks/client.py +273 -0
  203. levelfour/webhooks/raw_client.py +483 -0
  204. levelfour/webhooks/verifier.py +61 -0
  205. levelfour-0.1.0.dist-info/METADATA +12 -0
  206. levelfour-0.1.0.dist-info/RECORD +208 -0
  207. levelfour-0.1.0.dist-info/WHEEL +5 -0
  208. levelfour-0.1.0.dist-info/top_level.txt +1 -0
levelfour/__init__.py ADDED
@@ -0,0 +1,495 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import (
10
+ AcceptTermsData,
11
+ AcceptTermsResponse,
12
+ ActionRequest,
13
+ ApiKeyCreatedData,
14
+ ApiKeyData,
15
+ AuthenticationError,
16
+ AuthorizationError,
17
+ BadRequestError,
18
+ ComparisonItem,
19
+ CompleteWizardData,
20
+ CompleteWizardResponse,
21
+ ConflictError,
22
+ CostBreakdownData,
23
+ CostBreakdownItem,
24
+ CostBreakdownRawData,
25
+ CostBreakdownRawResponse,
26
+ CostBreakdownResponse,
27
+ CostsBreakdownChartData,
28
+ CostsBreakdownChartResponse,
29
+ CostsBreakdownDataPoint,
30
+ CostsBreakdownGroupedChartData,
31
+ CostsBreakdownGroupedChartResponse,
32
+ CostsBreakdownGroupedDataPoint,
33
+ CostsBreakdownTotals,
34
+ CreateApiKeyResponse,
35
+ DailySpendingBreakdownData,
36
+ DailySpendingBreakdownResponse,
37
+ DailySpendingDataPoint,
38
+ DashboardSummaryData,
39
+ DashboardSummaryResponse,
40
+ DeleteEndpointData,
41
+ DeleteEndpointResponse,
42
+ EndpointData,
43
+ ErrorResponse,
44
+ ErrorResponseError,
45
+ EvaluationStatusData,
46
+ EvaluationStatusResponse,
47
+ ExecutionLogCommand,
48
+ ExecutionLogEntry,
49
+ ExecutionStepSchema,
50
+ HttpValidationError,
51
+ ImplementationMethodData,
52
+ ImplementationMethodResponse,
53
+ ImplementationStep,
54
+ InternalServerError,
55
+ ListApiKeysData,
56
+ ListApiKeysResponse,
57
+ ListEndpointsResponse,
58
+ MetricDataPoint,
59
+ MetricSeries,
60
+ MetricSeriesEntry,
61
+ MonthlySpendingData,
62
+ MonthlySpendingDataPoint,
63
+ MonthlySpendingResponse,
64
+ NotFoundError,
65
+ PaginationMeta,
66
+ ProcessingRecommendationItem,
67
+ ProcessingRecommendationsData,
68
+ ProcessingRecommendationsResponse,
69
+ Provider,
70
+ ProviderBreakdownData,
71
+ ProviderBreakdownItem,
72
+ ProviderBreakdownResponse,
73
+ ProviderFilterOptionsData,
74
+ ProviderFilterOptionsResponse,
75
+ ProviderPotentialSavingsSummaryData,
76
+ ProviderPotentialSavingsSummaryResponse,
77
+ ProviderRecommendationsSummaryData,
78
+ ProviderRecommendationsSummaryResponse,
79
+ ProviderSavedSummaryData,
80
+ ProviderSavedSummaryResponse,
81
+ ProviderServiceBreakdownData,
82
+ ProviderServiceBreakdownItem,
83
+ ProviderServiceBreakdownRawData,
84
+ ProviderServiceBreakdownRawResponse,
85
+ ProviderServiceBreakdownResponse,
86
+ ProviderServiceCostsBreakdownData,
87
+ ProviderServiceCostsBreakdownResponse,
88
+ ProviderServiceCostsDataPoint,
89
+ ProviderSpending,
90
+ ProviderSpendingSummaryData,
91
+ ProviderSpendingSummaryResponse,
92
+ ProviderTimelineData,
93
+ ProviderTimelineResponse,
94
+ ProviderTopService,
95
+ ProvidersSummaryData,
96
+ ProvidersSummaryResponse,
97
+ RateLimitError,
98
+ RecommendationActions,
99
+ RecommendationDetail,
100
+ RecommendationDetailResponse,
101
+ RecommendationFilterOptionsData,
102
+ RecommendationFilterOptionsResponse,
103
+ RecommendationItem,
104
+ RecommendationWizardData,
105
+ RecommendationWizardDataMetrics,
106
+ RecommendationWizardResponse,
107
+ RecommendationsBreakdownData,
108
+ RecommendationsBreakdownResponse,
109
+ RecommendationsOverviewData,
110
+ RecommendationsOverviewResponse,
111
+ RegisterEndpointResponse,
112
+ ResourceChange,
113
+ ResourceSnapshot,
114
+ RevokeApiKeyData,
115
+ RevokeApiKeyResponse,
116
+ RiskAssessment,
117
+ RiskFactor,
118
+ SavedBreakdownData,
119
+ SavedBreakdownResponse,
120
+ SavedByProviderBreakdownData,
121
+ SavedByProviderBreakdownResponse,
122
+ SavedByProviderItem,
123
+ SavedItem,
124
+ SavedProviderSummary,
125
+ SavedSummaryData,
126
+ SavedSummaryResponse,
127
+ SavingsDecisionData,
128
+ SavingsDecisionResponse,
129
+ SpendingByDateItem,
130
+ TopRecommendation,
131
+ TriggerInfo,
132
+ UpdateTagData,
133
+ UpdateTagResponse,
134
+ ValidationError,
135
+ ValidationErrorLocItem,
136
+ )
137
+ from .errors import ForbiddenError, UnauthorizedError, UnprocessableEntityError
138
+ from . import (
139
+ api_keys,
140
+ evaluation,
141
+ health,
142
+ pr_analysis,
143
+ pr_analysis_actions,
144
+ pr_analysis_installations,
145
+ providers,
146
+ recommendations,
147
+ savings,
148
+ spending,
149
+ webhooks,
150
+ )
151
+ from .api_keys import CreateApiKeyRequestScope
152
+ from .base_client import AsyncBaseLevelFour, BaseLevelFour
153
+ from .levelfour_client import LevelFour
154
+ from .async_levelfour_client import AsyncLevelFour
155
+ from .exceptions import (
156
+ LevelFourError,
157
+ AuthenticationError as LevelFourAuthenticationError,
158
+ AuthorizationError as LevelFourAuthorizationError,
159
+ BadRequestError as LevelFourBadRequestError,
160
+ ConflictError as LevelFourConflictError,
161
+ InternalServerError as LevelFourInternalServerError,
162
+ NotFoundError as LevelFourNotFoundError,
163
+ RateLimitError as LevelFourRateLimitError,
164
+ ValidationError as LevelFourValidationError,
165
+ )
166
+ from .pagination import AsyncPageIterator, PageIterator
167
+ from .providers import ListSpendingBreakdownProvidersResponse
168
+ from .spending import ListBreakdownSpendingResponse
169
+ _dynamic_imports: typing.Dict[str, str] = {
170
+ "AcceptTermsData": ".types",
171
+ "AcceptTermsResponse": ".types",
172
+ "ActionRequest": ".types",
173
+ "ApiKeyCreatedData": ".types",
174
+ "ApiKeyData": ".types",
175
+ "AsyncBaseLevelFour": ".base_client",
176
+ "AsyncLevelFour": ".async_levelfour_client",
177
+ "AsyncPageIterator": ".pagination",
178
+ "AuthenticationError": ".types",
179
+ "AuthorizationError": ".types",
180
+ "BadRequestError": ".types",
181
+ "BaseLevelFour": ".base_client",
182
+ "ComparisonItem": ".types",
183
+ "CompleteWizardData": ".types",
184
+ "CompleteWizardResponse": ".types",
185
+ "ConflictError": ".types",
186
+ "CostBreakdownData": ".types",
187
+ "CostBreakdownItem": ".types",
188
+ "CostBreakdownRawData": ".types",
189
+ "CostBreakdownRawResponse": ".types",
190
+ "CostBreakdownResponse": ".types",
191
+ "CostsBreakdownChartData": ".types",
192
+ "CostsBreakdownChartResponse": ".types",
193
+ "CostsBreakdownDataPoint": ".types",
194
+ "CostsBreakdownGroupedChartData": ".types",
195
+ "CostsBreakdownGroupedChartResponse": ".types",
196
+ "CostsBreakdownGroupedDataPoint": ".types",
197
+ "CostsBreakdownTotals": ".types",
198
+ "CreateApiKeyRequestScope": ".api_keys",
199
+ "CreateApiKeyResponse": ".types",
200
+ "DailySpendingBreakdownData": ".types",
201
+ "DailySpendingBreakdownResponse": ".types",
202
+ "DailySpendingDataPoint": ".types",
203
+ "DashboardSummaryData": ".types",
204
+ "DashboardSummaryResponse": ".types",
205
+ "DeleteEndpointData": ".types",
206
+ "DeleteEndpointResponse": ".types",
207
+ "EndpointData": ".types",
208
+ "ErrorResponse": ".types",
209
+ "ErrorResponseError": ".types",
210
+ "EvaluationStatusData": ".types",
211
+ "EvaluationStatusResponse": ".types",
212
+ "ExecutionLogCommand": ".types",
213
+ "ExecutionLogEntry": ".types",
214
+ "ExecutionStepSchema": ".types",
215
+ "ForbiddenError": ".errors",
216
+ "HttpValidationError": ".types",
217
+ "ImplementationMethodData": ".types",
218
+ "ImplementationMethodResponse": ".types",
219
+ "ImplementationStep": ".types",
220
+ "InternalServerError": ".types",
221
+ "LevelFour": ".levelfour_client",
222
+ "LevelFourError": ".exceptions",
223
+ "ListApiKeysData": ".types",
224
+ "ListApiKeysResponse": ".types",
225
+ "ListBreakdownSpendingResponse": ".spending",
226
+ "ListEndpointsResponse": ".types",
227
+ "ListSpendingBreakdownProvidersResponse": ".providers",
228
+ "MetricDataPoint": ".types",
229
+ "MetricSeries": ".types",
230
+ "MetricSeriesEntry": ".types",
231
+ "MonthlySpendingData": ".types",
232
+ "MonthlySpendingDataPoint": ".types",
233
+ "MonthlySpendingResponse": ".types",
234
+ "NotFoundError": ".types",
235
+ "PageIterator": ".pagination",
236
+ "PaginationMeta": ".types",
237
+ "ProcessingRecommendationItem": ".types",
238
+ "ProcessingRecommendationsData": ".types",
239
+ "ProcessingRecommendationsResponse": ".types",
240
+ "Provider": ".types",
241
+ "ProviderBreakdownData": ".types",
242
+ "ProviderBreakdownItem": ".types",
243
+ "ProviderBreakdownResponse": ".types",
244
+ "ProviderFilterOptionsData": ".types",
245
+ "ProviderFilterOptionsResponse": ".types",
246
+ "ProviderPotentialSavingsSummaryData": ".types",
247
+ "ProviderPotentialSavingsSummaryResponse": ".types",
248
+ "ProviderRecommendationsSummaryData": ".types",
249
+ "ProviderRecommendationsSummaryResponse": ".types",
250
+ "ProviderSavedSummaryData": ".types",
251
+ "ProviderSavedSummaryResponse": ".types",
252
+ "ProviderServiceBreakdownData": ".types",
253
+ "ProviderServiceBreakdownItem": ".types",
254
+ "ProviderServiceBreakdownRawData": ".types",
255
+ "ProviderServiceBreakdownRawResponse": ".types",
256
+ "ProviderServiceBreakdownResponse": ".types",
257
+ "ProviderServiceCostsBreakdownData": ".types",
258
+ "ProviderServiceCostsBreakdownResponse": ".types",
259
+ "ProviderServiceCostsDataPoint": ".types",
260
+ "ProviderSpending": ".types",
261
+ "ProviderSpendingSummaryData": ".types",
262
+ "ProviderSpendingSummaryResponse": ".types",
263
+ "ProviderTimelineData": ".types",
264
+ "ProviderTimelineResponse": ".types",
265
+ "ProviderTopService": ".types",
266
+ "ProvidersSummaryData": ".types",
267
+ "ProvidersSummaryResponse": ".types",
268
+ "RateLimitError": ".types",
269
+ "RecommendationActions": ".types",
270
+ "RecommendationDetail": ".types",
271
+ "RecommendationDetailResponse": ".types",
272
+ "RecommendationFilterOptionsData": ".types",
273
+ "RecommendationFilterOptionsResponse": ".types",
274
+ "RecommendationItem": ".types",
275
+ "RecommendationWizardData": ".types",
276
+ "RecommendationWizardDataMetrics": ".types",
277
+ "RecommendationWizardResponse": ".types",
278
+ "RecommendationsBreakdownData": ".types",
279
+ "RecommendationsBreakdownResponse": ".types",
280
+ "RecommendationsOverviewData": ".types",
281
+ "RecommendationsOverviewResponse": ".types",
282
+ "RegisterEndpointResponse": ".types",
283
+ "ResourceChange": ".types",
284
+ "ResourceSnapshot": ".types",
285
+ "RevokeApiKeyData": ".types",
286
+ "RevokeApiKeyResponse": ".types",
287
+ "RiskAssessment": ".types",
288
+ "RiskFactor": ".types",
289
+ "SavedBreakdownData": ".types",
290
+ "SavedBreakdownResponse": ".types",
291
+ "SavedByProviderBreakdownData": ".types",
292
+ "SavedByProviderBreakdownResponse": ".types",
293
+ "SavedByProviderItem": ".types",
294
+ "SavedItem": ".types",
295
+ "SavedProviderSummary": ".types",
296
+ "SavedSummaryData": ".types",
297
+ "SavedSummaryResponse": ".types",
298
+ "SavingsDecisionData": ".types",
299
+ "SavingsDecisionResponse": ".types",
300
+ "SpendingByDateItem": ".types",
301
+ "TopRecommendation": ".types",
302
+ "TriggerInfo": ".types",
303
+ "UnauthorizedError": ".errors",
304
+ "UnprocessableEntityError": ".errors",
305
+ "UpdateTagData": ".types",
306
+ "UpdateTagResponse": ".types",
307
+ "ValidationError": ".types",
308
+ "ValidationErrorLocItem": ".types",
309
+ "api_keys": ".api_keys",
310
+ "evaluation": ".evaluation",
311
+ "health": ".health",
312
+ "pr_analysis": ".pr_analysis",
313
+ "pr_analysis_actions": ".pr_analysis_actions",
314
+ "pr_analysis_installations": ".pr_analysis_installations",
315
+ "providers": ".providers",
316
+ "recommendations": ".recommendations",
317
+ "savings": ".savings",
318
+ "spending": ".spending",
319
+ "webhooks": ".webhooks",
320
+ }
321
+
322
+
323
+ def __getattr__(attr_name: str) -> typing.Any:
324
+ module_name = _dynamic_imports.get(attr_name)
325
+ if module_name is None:
326
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
327
+ try:
328
+ module = import_module(module_name, __package__)
329
+ if module_name == f".{attr_name}":
330
+ return module
331
+ else:
332
+ return getattr(module, attr_name)
333
+ except ImportError as e:
334
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
335
+ except AttributeError as e:
336
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
337
+
338
+
339
+ def __dir__():
340
+ lazy_attrs = list(_dynamic_imports.keys())
341
+ return sorted(lazy_attrs)
342
+
343
+
344
+ __all__ = [
345
+ "AcceptTermsData",
346
+ "AcceptTermsResponse",
347
+ "ActionRequest",
348
+ "ApiKeyCreatedData",
349
+ "ApiKeyData",
350
+ "AsyncBaseLevelFour",
351
+ "AsyncLevelFour",
352
+ "AsyncPageIterator",
353
+ "AuthenticationError",
354
+ "AuthorizationError",
355
+ "BadRequestError",
356
+ "BaseLevelFour",
357
+ "ComparisonItem",
358
+ "CompleteWizardData",
359
+ "CompleteWizardResponse",
360
+ "ConflictError",
361
+ "CostBreakdownData",
362
+ "CostBreakdownItem",
363
+ "CostBreakdownRawData",
364
+ "CostBreakdownRawResponse",
365
+ "CostBreakdownResponse",
366
+ "CostsBreakdownChartData",
367
+ "CostsBreakdownChartResponse",
368
+ "CostsBreakdownDataPoint",
369
+ "CostsBreakdownGroupedChartData",
370
+ "CostsBreakdownGroupedChartResponse",
371
+ "CostsBreakdownGroupedDataPoint",
372
+ "CostsBreakdownTotals",
373
+ "CreateApiKeyRequestScope",
374
+ "CreateApiKeyResponse",
375
+ "DailySpendingBreakdownData",
376
+ "DailySpendingBreakdownResponse",
377
+ "DailySpendingDataPoint",
378
+ "DashboardSummaryData",
379
+ "DashboardSummaryResponse",
380
+ "DeleteEndpointData",
381
+ "DeleteEndpointResponse",
382
+ "EndpointData",
383
+ "ErrorResponse",
384
+ "ErrorResponseError",
385
+ "EvaluationStatusData",
386
+ "EvaluationStatusResponse",
387
+ "ExecutionLogCommand",
388
+ "ExecutionLogEntry",
389
+ "ExecutionStepSchema",
390
+ "ForbiddenError",
391
+ "HttpValidationError",
392
+ "ImplementationMethodData",
393
+ "ImplementationMethodResponse",
394
+ "ImplementationStep",
395
+ "InternalServerError",
396
+ "LevelFour",
397
+ "LevelFourError",
398
+ "ListApiKeysData",
399
+ "ListApiKeysResponse",
400
+ "ListBreakdownSpendingResponse",
401
+ "ListEndpointsResponse",
402
+ "ListSpendingBreakdownProvidersResponse",
403
+ "MetricDataPoint",
404
+ "MetricSeries",
405
+ "MetricSeriesEntry",
406
+ "MonthlySpendingData",
407
+ "MonthlySpendingDataPoint",
408
+ "MonthlySpendingResponse",
409
+ "NotFoundError",
410
+ "PageIterator",
411
+ "PaginationMeta",
412
+ "ProcessingRecommendationItem",
413
+ "ProcessingRecommendationsData",
414
+ "ProcessingRecommendationsResponse",
415
+ "Provider",
416
+ "ProviderBreakdownData",
417
+ "ProviderBreakdownItem",
418
+ "ProviderBreakdownResponse",
419
+ "ProviderFilterOptionsData",
420
+ "ProviderFilterOptionsResponse",
421
+ "ProviderPotentialSavingsSummaryData",
422
+ "ProviderPotentialSavingsSummaryResponse",
423
+ "ProviderRecommendationsSummaryData",
424
+ "ProviderRecommendationsSummaryResponse",
425
+ "ProviderSavedSummaryData",
426
+ "ProviderSavedSummaryResponse",
427
+ "ProviderServiceBreakdownData",
428
+ "ProviderServiceBreakdownItem",
429
+ "ProviderServiceBreakdownRawData",
430
+ "ProviderServiceBreakdownRawResponse",
431
+ "ProviderServiceBreakdownResponse",
432
+ "ProviderServiceCostsBreakdownData",
433
+ "ProviderServiceCostsBreakdownResponse",
434
+ "ProviderServiceCostsDataPoint",
435
+ "ProviderSpending",
436
+ "ProviderSpendingSummaryData",
437
+ "ProviderSpendingSummaryResponse",
438
+ "ProviderTimelineData",
439
+ "ProviderTimelineResponse",
440
+ "ProviderTopService",
441
+ "ProvidersSummaryData",
442
+ "ProvidersSummaryResponse",
443
+ "RateLimitError",
444
+ "RecommendationActions",
445
+ "RecommendationDetail",
446
+ "RecommendationDetailResponse",
447
+ "RecommendationFilterOptionsData",
448
+ "RecommendationFilterOptionsResponse",
449
+ "RecommendationItem",
450
+ "RecommendationWizardData",
451
+ "RecommendationWizardDataMetrics",
452
+ "RecommendationWizardResponse",
453
+ "RecommendationsBreakdownData",
454
+ "RecommendationsBreakdownResponse",
455
+ "RecommendationsOverviewData",
456
+ "RecommendationsOverviewResponse",
457
+ "RegisterEndpointResponse",
458
+ "ResourceChange",
459
+ "ResourceSnapshot",
460
+ "RevokeApiKeyData",
461
+ "RevokeApiKeyResponse",
462
+ "RiskAssessment",
463
+ "RiskFactor",
464
+ "SavedBreakdownData",
465
+ "SavedBreakdownResponse",
466
+ "SavedByProviderBreakdownData",
467
+ "SavedByProviderBreakdownResponse",
468
+ "SavedByProviderItem",
469
+ "SavedItem",
470
+ "SavedProviderSummary",
471
+ "SavedSummaryData",
472
+ "SavedSummaryResponse",
473
+ "SavingsDecisionData",
474
+ "SavingsDecisionResponse",
475
+ "SpendingByDateItem",
476
+ "TopRecommendation",
477
+ "TriggerInfo",
478
+ "UnauthorizedError",
479
+ "UnprocessableEntityError",
480
+ "UpdateTagData",
481
+ "UpdateTagResponse",
482
+ "ValidationError",
483
+ "ValidationErrorLocItem",
484
+ "api_keys",
485
+ "evaluation",
486
+ "health",
487
+ "pr_analysis",
488
+ "pr_analysis_actions",
489
+ "pr_analysis_installations",
490
+ "providers",
491
+ "recommendations",
492
+ "savings",
493
+ "spending",
494
+ "webhooks",
495
+ ]
@@ -0,0 +1,34 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import CreateApiKeyRequestScope
10
+ _dynamic_imports: typing.Dict[str, str] = {"CreateApiKeyRequestScope": ".types"}
11
+
12
+
13
+ def __getattr__(attr_name: str) -> typing.Any:
14
+ module_name = _dynamic_imports.get(attr_name)
15
+ if module_name is None:
16
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
17
+ try:
18
+ module = import_module(module_name, __package__)
19
+ if module_name == f".{attr_name}":
20
+ return module
21
+ else:
22
+ return getattr(module, attr_name)
23
+ except ImportError as e:
24
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
25
+ except AttributeError as e:
26
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
27
+
28
+
29
+ def __dir__():
30
+ lazy_attrs = list(_dynamic_imports.keys())
31
+ return sorted(lazy_attrs)
32
+
33
+
34
+ __all__ = ["CreateApiKeyRequestScope"]