gcore 0.4.0__py3-none-any.whl → 0.6.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.

Potentially problematic release.


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

Files changed (145) hide show
  1. gcore/_base_client.py +9 -2
  2. gcore/_client.py +9 -0
  3. gcore/_constants.py +2 -2
  4. gcore/_models.py +8 -5
  5. gcore/_version.py +1 -1
  6. gcore/pagination.py +192 -1
  7. gcore/resources/__init__.py +14 -0
  8. gcore/resources/cloud/__init__.py +14 -0
  9. gcore/resources/cloud/audit_logs.py +480 -0
  10. gcore/resources/cloud/baremetal/servers.py +2 -2
  11. gcore/resources/cloud/cloud.py +32 -0
  12. gcore/resources/cloud/file_shares/file_shares.py +64 -9
  13. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +2 -2
  14. gcore/resources/cloud/inference/__init__.py +14 -0
  15. gcore/resources/cloud/inference/api_keys.py +621 -0
  16. gcore/resources/cloud/inference/deployments/deployments.py +66 -33
  17. gcore/resources/cloud/inference/deployments/logs.py +7 -7
  18. gcore/resources/cloud/inference/inference.py +37 -5
  19. gcore/resources/cloud/inference/models.py +16 -15
  20. gcore/resources/cloud/inference/registry_credentials.py +16 -16
  21. gcore/resources/cloud/inference/secrets.py +4 -5
  22. gcore/resources/cloud/instances/instances.py +2 -2
  23. gcore/resources/cloud/load_balancers/pools/members.py +22 -6
  24. gcore/resources/cloud/secrets.py +14 -224
  25. gcore/resources/cloud/tasks.py +30 -28
  26. gcore/resources/fastedge/__init__.py +103 -0
  27. gcore/resources/fastedge/apps/__init__.py +33 -0
  28. gcore/resources/fastedge/apps/apps.py +932 -0
  29. gcore/resources/fastedge/apps/logs.py +248 -0
  30. gcore/resources/fastedge/binaries.py +286 -0
  31. gcore/resources/fastedge/fastedge.py +327 -0
  32. gcore/resources/fastedge/kv_stores.py +523 -0
  33. gcore/resources/fastedge/secrets.py +687 -0
  34. gcore/resources/fastedge/statistics.py +347 -0
  35. gcore/resources/fastedge/templates.py +652 -0
  36. gcore/types/cloud/__init__.py +4 -28
  37. gcore/types/cloud/audit_log_entry.py +254 -0
  38. gcore/types/cloud/audit_log_list_params.py +158 -0
  39. gcore/types/cloud/baremetal/server_create_params.py +1 -1
  40. gcore/types/cloud/file_share_update_params.py +29 -3
  41. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +1 -1
  42. gcore/types/cloud/inference/__init__.py +17 -8
  43. gcore/types/cloud/inference/api_key_create_params.py +21 -0
  44. gcore/types/cloud/inference/api_key_list_params.py +21 -0
  45. gcore/types/cloud/inference/api_key_update_params.py +16 -0
  46. gcore/types/cloud/inference/deployment_create_params.py +224 -7
  47. gcore/types/cloud/inference/deployment_update_params.py +24 -3
  48. gcore/types/cloud/inference/deployments/__init__.py +1 -0
  49. gcore/types/cloud/inference/{inference_log.py → deployments/inference_deployment_log.py} +3 -3
  50. gcore/types/cloud/inference/inference_api_key.py +24 -0
  51. gcore/types/cloud/inference/inference_api_key_create.py +27 -0
  52. gcore/types/cloud/inference/inference_deployment.py +266 -0
  53. gcore/types/cloud/inference/{inference_apikey_secret.py → inference_deployment_api_key.py} +2 -2
  54. gcore/types/cloud/inference/{mlcatalog_model_card.py → inference_model.py} +2 -2
  55. gcore/types/cloud/inference/{inference_registry_credential.py → inference_registry_credentials.py} +2 -2
  56. gcore/types/cloud/inference/{inference_registry_credential_full.py → inference_registry_credentials_create.py} +2 -2
  57. gcore/types/cloud/inference/inference_secret.py +10 -3
  58. gcore/types/cloud/inference/model_list_params.py +2 -4
  59. gcore/types/cloud/{container_probe.py → inference/probe.py} +9 -9
  60. gcore/types/cloud/{container_probe_config.py → inference/probe_config.py} +5 -5
  61. gcore/types/cloud/{container_probe_exec.py → inference/probe_exec.py} +3 -3
  62. gcore/types/cloud/{container_probe_http_get.py → inference/probe_http_get.py} +3 -3
  63. gcore/types/cloud/{container_probe_tcp_socket.py → inference/probe_tcp_socket.py} +3 -3
  64. gcore/types/cloud/inference/secret_create_params.py +10 -4
  65. gcore/types/cloud/inference/secret_replace_params.py +10 -4
  66. gcore/types/cloud/{region_capacity.py → inference_region_capacity.py} +10 -3
  67. gcore/types/cloud/{region_capacity_list.py → inference_region_capacity_list.py} +4 -4
  68. gcore/types/cloud/instance_create_params.py +1 -1
  69. gcore/types/cloud/load_balancer_create_params.py +14 -3
  70. gcore/types/cloud/load_balancers/pool_create_params.py +14 -3
  71. gcore/types/cloud/load_balancers/pool_update_params.py +14 -3
  72. gcore/types/cloud/load_balancers/pools/member_add_params.py +14 -3
  73. gcore/types/cloud/member.py +12 -4
  74. gcore/types/cloud/task_list_params.py +15 -14
  75. gcore/types/fastedge/__init__.py +48 -0
  76. gcore/types/fastedge/app.py +81 -0
  77. gcore/types/fastedge/app_create_params.py +56 -0
  78. gcore/types/fastedge/app_list_params.py +50 -0
  79. gcore/types/fastedge/app_param.py +56 -0
  80. gcore/types/fastedge/app_replace_params.py +17 -0
  81. gcore/types/fastedge/app_short.py +60 -0
  82. gcore/types/fastedge/app_update_params.py +56 -0
  83. gcore/types/fastedge/apps/__init__.py +6 -0
  84. gcore/types/fastedge/apps/log.py +28 -0
  85. gcore/types/fastedge/apps/log_list_params.py +37 -0
  86. gcore/types/fastedge/binary.py +40 -0
  87. gcore/types/fastedge/binary_list_response.py +12 -0
  88. gcore/types/fastedge/binary_short.py +32 -0
  89. gcore/types/fastedge/call_status.py +24 -0
  90. gcore/types/fastedge/client.py +57 -0
  91. gcore/types/fastedge/duration_stats.py +30 -0
  92. gcore/types/fastedge/kv_store.py +33 -0
  93. gcore/types/fastedge/kv_store_create_params.py +23 -0
  94. gcore/types/fastedge/kv_store_get_response.py +10 -0
  95. gcore/types/fastedge/kv_store_list_params.py +12 -0
  96. gcore/types/fastedge/kv_store_list_response.py +15 -0
  97. gcore/types/fastedge/kv_store_replace_params.py +23 -0
  98. gcore/types/fastedge/kv_store_short.py +19 -0
  99. gcore/types/fastedge/kv_store_stats.py +26 -0
  100. gcore/types/fastedge/secret.py +29 -0
  101. gcore/types/fastedge/secret_create_params.py +27 -0
  102. gcore/types/fastedge/secret_create_response.py +12 -0
  103. gcore/types/fastedge/secret_delete_params.py +12 -0
  104. gcore/types/fastedge/secret_list_params.py +15 -0
  105. gcore/types/{cloud → fastedge}/secret_list_response.py +2 -6
  106. gcore/types/fastedge/secret_replace_params.py +27 -0
  107. gcore/types/fastedge/secret_short.py +21 -0
  108. gcore/types/fastedge/secret_update_params.py +27 -0
  109. gcore/types/fastedge/statistic_get_call_series_params.py +28 -0
  110. gcore/types/fastedge/statistic_get_call_series_response.py +12 -0
  111. gcore/types/fastedge/statistic_get_duration_series_params.py +28 -0
  112. gcore/types/fastedge/statistic_get_duration_series_response.py +12 -0
  113. gcore/types/fastedge/template.py +31 -0
  114. gcore/types/fastedge/template_create_params.py +30 -0
  115. gcore/types/fastedge/template_delete_params.py +12 -0
  116. gcore/types/fastedge/template_list_params.py +25 -0
  117. gcore/types/fastedge/template_parameter.py +22 -0
  118. gcore/types/fastedge/template_parameter_param.py +21 -0
  119. gcore/types/fastedge/template_replace_params.py +30 -0
  120. gcore/types/fastedge/template_short.py +27 -0
  121. {gcore-0.4.0.dist-info → gcore-0.6.0.dist-info}/METADATA +8 -7
  122. {gcore-0.4.0.dist-info → gcore-0.6.0.dist-info}/RECORD +124 -80
  123. gcore/types/cloud/aws_iam_data.py +0 -13
  124. gcore/types/cloud/aws_iam_data_param.py +0 -15
  125. gcore/types/cloud/capacity.py +0 -13
  126. gcore/types/cloud/container_probe_config_create_param.py +0 -17
  127. gcore/types/cloud/container_probe_create_param.py +0 -38
  128. gcore/types/cloud/container_probe_exec_create_param.py +0 -13
  129. gcore/types/cloud/container_probe_http_get_create_param.py +0 -25
  130. gcore/types/cloud/container_probe_tcp_socket_create_param.py +0 -12
  131. gcore/types/cloud/container_scale.py +0 -25
  132. gcore/types/cloud/container_scale_trigger_rate.py +0 -13
  133. gcore/types/cloud/container_scale_trigger_sqs.py +0 -33
  134. gcore/types/cloud/container_scale_trigger_threshold.py +0 -10
  135. gcore/types/cloud/container_scale_triggers.py +0 -36
  136. gcore/types/cloud/deploy_status.py +0 -13
  137. gcore/types/cloud/inference/container.py +0 -26
  138. gcore/types/cloud/inference/inference.py +0 -95
  139. gcore/types/cloud/inference/mlcatalog_order_by_choices.py +0 -7
  140. gcore/types/cloud/inference_probes.py +0 -19
  141. gcore/types/cloud/ingress_opts_out.py +0 -16
  142. gcore/types/cloud/ingress_opts_param.py +0 -18
  143. gcore/types/cloud/secret_create_params.py +0 -66
  144. {gcore-0.4.0.dist-info → gcore-0.6.0.dist-info}/WHEEL +0 -0
  145. {gcore-0.4.0.dist-info → gcore-0.6.0.dist-info}/licenses/LICENSE +0 -0
gcore/_base_client.py CHANGED
@@ -529,6 +529,15 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
529
529
  # work around https://github.com/encode/httpx/discussions/2880
530
530
  kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
531
531
 
532
+ is_body_allowed = options.method.lower() != "get"
533
+
534
+ if is_body_allowed:
535
+ kwargs["json"] = json_data if is_given(json_data) else None
536
+ kwargs["files"] = files
537
+ else:
538
+ headers.pop("Content-Type", None)
539
+ kwargs.pop("data", None)
540
+
532
541
  # TODO: report this error to httpx
533
542
  return self._client.build_request( # pyright: ignore[reportUnknownMemberType]
534
543
  headers=headers,
@@ -540,8 +549,6 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
540
549
  # so that passing a `TypedDict` doesn't cause an error.
541
550
  # https://github.com/microsoft/pyright/issues/3526#event-6715453066
542
551
  params=self.qs.stringify(cast(Mapping[str, Any], params)) if params else None,
543
- json=json_data if is_given(json_data) else None,
544
- files=files,
545
552
  **kwargs,
546
553
  )
547
554
 
gcore/_client.py CHANGED
@@ -31,6 +31,7 @@ from ._base_client import (
31
31
  from .resources.iam import iam
32
32
  from .resources.waap import waap
33
33
  from .resources.cloud import cloud
34
+ from .resources.fastedge import fastedge
34
35
 
35
36
  __all__ = ["Timeout", "Transport", "ProxiesTypes", "RequestOptions", "Gcore", "AsyncGcore", "Client", "AsyncClient"]
36
37
 
@@ -39,6 +40,7 @@ class Gcore(SyncAPIClient):
39
40
  cloud: cloud.CloudResource
40
41
  waap: waap.WaapResource
41
42
  iam: iam.IamResource
43
+ fastedge: fastedge.FastedgeResource
42
44
  with_raw_response: GcoreWithRawResponse
43
45
  with_streaming_response: GcoreWithStreamedResponse
44
46
 
@@ -120,6 +122,7 @@ class Gcore(SyncAPIClient):
120
122
  self.cloud = cloud.CloudResource(self)
121
123
  self.waap = waap.WaapResource(self)
122
124
  self.iam = iam.IamResource(self)
125
+ self.fastedge = fastedge.FastedgeResource(self)
123
126
  self.with_raw_response = GcoreWithRawResponse(self)
124
127
  self.with_streaming_response = GcoreWithStreamedResponse(self)
125
128
 
@@ -256,6 +259,7 @@ class AsyncGcore(AsyncAPIClient):
256
259
  cloud: cloud.AsyncCloudResource
257
260
  waap: waap.AsyncWaapResource
258
261
  iam: iam.AsyncIamResource
262
+ fastedge: fastedge.AsyncFastedgeResource
259
263
  with_raw_response: AsyncGcoreWithRawResponse
260
264
  with_streaming_response: AsyncGcoreWithStreamedResponse
261
265
 
@@ -337,6 +341,7 @@ class AsyncGcore(AsyncAPIClient):
337
341
  self.cloud = cloud.AsyncCloudResource(self)
338
342
  self.waap = waap.AsyncWaapResource(self)
339
343
  self.iam = iam.AsyncIamResource(self)
344
+ self.fastedge = fastedge.AsyncFastedgeResource(self)
340
345
  self.with_raw_response = AsyncGcoreWithRawResponse(self)
341
346
  self.with_streaming_response = AsyncGcoreWithStreamedResponse(self)
342
347
 
@@ -474,6 +479,7 @@ class GcoreWithRawResponse:
474
479
  self.cloud = cloud.CloudResourceWithRawResponse(client.cloud)
475
480
  self.waap = waap.WaapResourceWithRawResponse(client.waap)
476
481
  self.iam = iam.IamResourceWithRawResponse(client.iam)
482
+ self.fastedge = fastedge.FastedgeResourceWithRawResponse(client.fastedge)
477
483
 
478
484
 
479
485
  class AsyncGcoreWithRawResponse:
@@ -481,6 +487,7 @@ class AsyncGcoreWithRawResponse:
481
487
  self.cloud = cloud.AsyncCloudResourceWithRawResponse(client.cloud)
482
488
  self.waap = waap.AsyncWaapResourceWithRawResponse(client.waap)
483
489
  self.iam = iam.AsyncIamResourceWithRawResponse(client.iam)
490
+ self.fastedge = fastedge.AsyncFastedgeResourceWithRawResponse(client.fastedge)
484
491
 
485
492
 
486
493
  class GcoreWithStreamedResponse:
@@ -488,6 +495,7 @@ class GcoreWithStreamedResponse:
488
495
  self.cloud = cloud.CloudResourceWithStreamingResponse(client.cloud)
489
496
  self.waap = waap.WaapResourceWithStreamingResponse(client.waap)
490
497
  self.iam = iam.IamResourceWithStreamingResponse(client.iam)
498
+ self.fastedge = fastedge.FastedgeResourceWithStreamingResponse(client.fastedge)
491
499
 
492
500
 
493
501
  class AsyncGcoreWithStreamedResponse:
@@ -495,6 +503,7 @@ class AsyncGcoreWithStreamedResponse:
495
503
  self.cloud = cloud.AsyncCloudResourceWithStreamingResponse(client.cloud)
496
504
  self.waap = waap.AsyncWaapResourceWithStreamingResponse(client.waap)
497
505
  self.iam = iam.AsyncIamResourceWithStreamingResponse(client.iam)
506
+ self.fastedge = fastedge.AsyncFastedgeResourceWithStreamingResponse(client.fastedge)
498
507
 
499
508
 
500
509
  Client = Gcore
gcore/_constants.py CHANGED
@@ -5,8 +5,8 @@ import httpx
5
5
  RAW_RESPONSE_HEADER = "X-Stainless-Raw-Response"
6
6
  OVERRIDE_CAST_TO_HEADER = "____stainless_override_cast_to"
7
7
 
8
- # default timeout is 1 minute
9
- DEFAULT_TIMEOUT = httpx.Timeout(timeout=60, connect=5.0)
8
+ # default timeout is 2 minutes
9
+ DEFAULT_TIMEOUT = httpx.Timeout(timeout=120, connect=5.0)
10
10
  DEFAULT_MAX_RETRIES = 2
11
11
  DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=100, max_keepalive_connections=20)
12
12
 
gcore/_models.py CHANGED
@@ -2,9 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import os
4
4
  import inspect
5
- from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, cast
5
+ from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, Optional, cast
6
6
  from datetime import date, datetime
7
7
  from typing_extensions import (
8
+ List,
8
9
  Unpack,
9
10
  Literal,
10
11
  ClassVar,
@@ -366,7 +367,7 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
366
367
  if type_ is None:
367
368
  raise RuntimeError(f"Unexpected field type is None for {key}")
368
369
 
369
- return construct_type(value=value, type_=type_)
370
+ return construct_type(value=value, type_=type_, metadata=getattr(field, "metadata", None))
370
371
 
371
372
 
372
373
  def is_basemodel(type_: type) -> bool:
@@ -420,7 +421,7 @@ def construct_type_unchecked(*, value: object, type_: type[_T]) -> _T:
420
421
  return cast(_T, construct_type(value=value, type_=type_))
421
422
 
422
423
 
423
- def construct_type(*, value: object, type_: object) -> object:
424
+ def construct_type(*, value: object, type_: object, metadata: Optional[List[Any]] = None) -> object:
424
425
  """Loose coercion to the expected type with construction of nested values.
425
426
 
426
427
  If the given value does not match the expected type then it is returned as-is.
@@ -438,8 +439,10 @@ def construct_type(*, value: object, type_: object) -> object:
438
439
  type_ = type_.__value__ # type: ignore[unreachable]
439
440
 
440
441
  # unwrap `Annotated[T, ...]` -> `T`
441
- if is_annotated_type(type_):
442
- meta: tuple[Any, ...] = get_args(type_)[1:]
442
+ if metadata is not None:
443
+ meta: tuple[Any, ...] = tuple(metadata)
444
+ elif is_annotated_type(type_):
445
+ meta = get_args(type_)[1:]
443
446
  type_ = extract_type_arg(type_, 0)
444
447
  else:
445
448
  meta = tuple()
gcore/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "gcore"
4
- __version__ = "0.4.0" # x-release-please-version
4
+ __version__ = "0.6.0" # x-release-please-version
gcore/pagination.py CHANGED
@@ -5,7 +5,18 @@ from typing_extensions import override
5
5
 
6
6
  from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
7
7
 
8
- __all__ = ["SyncOffsetPage", "AsyncOffsetPage", "SyncOffsetPageIam", "AsyncOffsetPageIam"]
8
+ __all__ = [
9
+ "SyncOffsetPage",
10
+ "AsyncOffsetPage",
11
+ "SyncOffsetPageIam",
12
+ "AsyncOffsetPageIam",
13
+ "SyncOffsetPageFastedgeApps",
14
+ "AsyncOffsetPageFastedgeApps",
15
+ "SyncOffsetPageFastedgeTemplates",
16
+ "AsyncOffsetPageFastedgeTemplates",
17
+ "SyncOffsetPageFastedgeAppLogs",
18
+ "AsyncOffsetPageFastedgeAppLogs",
19
+ ]
9
20
 
10
21
  _T = TypeVar("_T")
11
22
 
@@ -128,3 +139,183 @@ class AsyncOffsetPageIam(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
128
139
  return PageInfo(params={"offset": current_count})
129
140
 
130
141
  return None
142
+
143
+
144
+ class SyncOffsetPageFastedgeApps(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
145
+ apps: List[_T]
146
+ count: Optional[int] = None
147
+
148
+ @override
149
+ def _get_page_items(self) -> List[_T]:
150
+ apps = self.apps
151
+ if not apps:
152
+ return []
153
+ return apps
154
+
155
+ @override
156
+ def next_page_info(self) -> Optional[PageInfo]:
157
+ offset = self._options.params.get("offset") or 0
158
+ if not isinstance(offset, int):
159
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
160
+
161
+ length = len(self._get_page_items())
162
+ current_count = offset + length
163
+
164
+ count = self.count
165
+ if count is None:
166
+ return None
167
+
168
+ if current_count < count:
169
+ return PageInfo(params={"offset": current_count})
170
+
171
+ return None
172
+
173
+
174
+ class AsyncOffsetPageFastedgeApps(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
175
+ apps: List[_T]
176
+ count: Optional[int] = None
177
+
178
+ @override
179
+ def _get_page_items(self) -> List[_T]:
180
+ apps = self.apps
181
+ if not apps:
182
+ return []
183
+ return apps
184
+
185
+ @override
186
+ def next_page_info(self) -> Optional[PageInfo]:
187
+ offset = self._options.params.get("offset") or 0
188
+ if not isinstance(offset, int):
189
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
190
+
191
+ length = len(self._get_page_items())
192
+ current_count = offset + length
193
+
194
+ count = self.count
195
+ if count is None:
196
+ return None
197
+
198
+ if current_count < count:
199
+ return PageInfo(params={"offset": current_count})
200
+
201
+ return None
202
+
203
+
204
+ class SyncOffsetPageFastedgeTemplates(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
205
+ templates: List[_T]
206
+ count: Optional[int] = None
207
+
208
+ @override
209
+ def _get_page_items(self) -> List[_T]:
210
+ templates = self.templates
211
+ if not templates:
212
+ return []
213
+ return templates
214
+
215
+ @override
216
+ def next_page_info(self) -> Optional[PageInfo]:
217
+ offset = self._options.params.get("offset") or 0
218
+ if not isinstance(offset, int):
219
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
220
+
221
+ length = len(self._get_page_items())
222
+ current_count = offset + length
223
+
224
+ count = self.count
225
+ if count is None:
226
+ return None
227
+
228
+ if current_count < count:
229
+ return PageInfo(params={"offset": current_count})
230
+
231
+ return None
232
+
233
+
234
+ class AsyncOffsetPageFastedgeTemplates(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
235
+ templates: List[_T]
236
+ count: Optional[int] = None
237
+
238
+ @override
239
+ def _get_page_items(self) -> List[_T]:
240
+ templates = self.templates
241
+ if not templates:
242
+ return []
243
+ return templates
244
+
245
+ @override
246
+ def next_page_info(self) -> Optional[PageInfo]:
247
+ offset = self._options.params.get("offset") or 0
248
+ if not isinstance(offset, int):
249
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
250
+
251
+ length = len(self._get_page_items())
252
+ current_count = offset + length
253
+
254
+ count = self.count
255
+ if count is None:
256
+ return None
257
+
258
+ if current_count < count:
259
+ return PageInfo(params={"offset": current_count})
260
+
261
+ return None
262
+
263
+
264
+ class SyncOffsetPageFastedgeAppLogs(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
265
+ logs: List[_T]
266
+ total_count: Optional[int] = None
267
+
268
+ @override
269
+ def _get_page_items(self) -> List[_T]:
270
+ logs = self.logs
271
+ if not logs:
272
+ return []
273
+ return logs
274
+
275
+ @override
276
+ def next_page_info(self) -> Optional[PageInfo]:
277
+ offset = self._options.params.get("offset") or 0
278
+ if not isinstance(offset, int):
279
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
280
+
281
+ length = len(self._get_page_items())
282
+ current_count = offset + length
283
+
284
+ total_count = self.total_count
285
+ if total_count is None:
286
+ return None
287
+
288
+ if current_count < total_count:
289
+ return PageInfo(params={"offset": current_count})
290
+
291
+ return None
292
+
293
+
294
+ class AsyncOffsetPageFastedgeAppLogs(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
295
+ logs: List[_T]
296
+ total_count: Optional[int] = None
297
+
298
+ @override
299
+ def _get_page_items(self) -> List[_T]:
300
+ logs = self.logs
301
+ if not logs:
302
+ return []
303
+ return logs
304
+
305
+ @override
306
+ def next_page_info(self) -> Optional[PageInfo]:
307
+ offset = self._options.params.get("offset") or 0
308
+ if not isinstance(offset, int):
309
+ raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
310
+
311
+ length = len(self._get_page_items())
312
+ current_count = offset + length
313
+
314
+ total_count = self.total_count
315
+ if total_count is None:
316
+ return None
317
+
318
+ if current_count < total_count:
319
+ return PageInfo(params={"offset": current_count})
320
+
321
+ return None
@@ -24,6 +24,14 @@ from .cloud import (
24
24
  CloudResourceWithStreamingResponse,
25
25
  AsyncCloudResourceWithStreamingResponse,
26
26
  )
27
+ from .fastedge import (
28
+ FastedgeResource,
29
+ AsyncFastedgeResource,
30
+ FastedgeResourceWithRawResponse,
31
+ AsyncFastedgeResourceWithRawResponse,
32
+ FastedgeResourceWithStreamingResponse,
33
+ AsyncFastedgeResourceWithStreamingResponse,
34
+ )
27
35
 
28
36
  __all__ = [
29
37
  "CloudResource",
@@ -44,4 +52,10 @@ __all__ = [
44
52
  "AsyncIamResourceWithRawResponse",
45
53
  "IamResourceWithStreamingResponse",
46
54
  "AsyncIamResourceWithStreamingResponse",
55
+ "FastedgeResource",
56
+ "AsyncFastedgeResource",
57
+ "FastedgeResourceWithRawResponse",
58
+ "AsyncFastedgeResourceWithRawResponse",
59
+ "FastedgeResourceWithStreamingResponse",
60
+ "AsyncFastedgeResourceWithStreamingResponse",
47
61
  ]
@@ -112,6 +112,14 @@ from .ip_ranges import (
112
112
  IPRangesResourceWithStreamingResponse,
113
113
  AsyncIPRangesResourceWithStreamingResponse,
114
114
  )
115
+ from .audit_logs import (
116
+ AuditLogsResource,
117
+ AsyncAuditLogsResource,
118
+ AuditLogsResourceWithRawResponse,
119
+ AsyncAuditLogsResourceWithRawResponse,
120
+ AuditLogsResourceWithStreamingResponse,
121
+ AsyncAuditLogsResourceWithStreamingResponse,
122
+ )
115
123
  from .registries import (
116
124
  RegistriesResource,
117
125
  AsyncRegistriesResource,
@@ -318,6 +326,12 @@ __all__ = [
318
326
  "AsyncInstancesResourceWithRawResponse",
319
327
  "InstancesResourceWithStreamingResponse",
320
328
  "AsyncInstancesResourceWithStreamingResponse",
329
+ "AuditLogsResource",
330
+ "AsyncAuditLogsResource",
331
+ "AuditLogsResourceWithRawResponse",
332
+ "AsyncAuditLogsResourceWithRawResponse",
333
+ "AuditLogsResourceWithStreamingResponse",
334
+ "AsyncAuditLogsResourceWithStreamingResponse",
321
335
  "CloudResource",
322
336
  "AsyncCloudResource",
323
337
  "CloudResourceWithRawResponse",