gcore 0.6.0__py3-none-any.whl → 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gcore might be problematic. Click here for more details.
- gcore/_client.py +9 -0
- gcore/_models.py +24 -3
- gcore/_version.py +1 -1
- gcore/pagination.py +101 -63
- gcore/resources/__init__.py +14 -0
- gcore/resources/cloud/__init__.py +28 -0
- gcore/resources/cloud/cloud.py +64 -0
- gcore/resources/cloud/cost_reports.py +811 -0
- gcore/resources/cloud/file_shares/file_shares.py +10 -0
- gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +61 -26
- gcore/resources/cloud/inference/registry_credentials.py +4 -6
- gcore/resources/cloud/usage_reports.py +337 -0
- gcore/resources/iam/users.py +5 -5
- gcore/resources/streaming/__init__.py +159 -0
- gcore/resources/streaming/ai_tasks.py +1288 -0
- gcore/resources/streaming/broadcasts.py +579 -0
- gcore/resources/streaming/directories.py +515 -0
- gcore/resources/streaming/players.py +577 -0
- gcore/resources/streaming/playlists.py +1059 -0
- gcore/resources/streaming/quality_sets.py +331 -0
- gcore/resources/streaming/restreams.py +484 -0
- gcore/resources/streaming/statistics.py +3224 -0
- gcore/resources/streaming/streaming.py +390 -0
- gcore/resources/streaming/streams/__init__.py +33 -0
- gcore/resources/streaming/streams/overlays.py +716 -0
- gcore/resources/streaming/streams/streams.py +1592 -0
- gcore/resources/streaming/videos/__init__.py +33 -0
- gcore/resources/streaming/videos/subtitles.py +623 -0
- gcore/resources/streaming/videos/videos.py +1553 -0
- gcore/resources/waap/ip_info.py +28 -10
- gcore/types/cloud/__init__.py +10 -0
- gcore/types/cloud/cost_report_aggregated.py +865 -0
- gcore/types/cloud/cost_report_aggregated_monthly.py +865 -0
- gcore/types/cloud/cost_report_detailed.py +1343 -0
- gcore/types/cloud/cost_report_get_aggregated_monthly_params.py +394 -0
- gcore/types/cloud/cost_report_get_aggregated_params.py +409 -0
- gcore/types/cloud/cost_report_get_detailed_params.py +435 -0
- gcore/types/cloud/file_share.py +37 -3
- gcore/types/cloud/file_share_create_params.py +16 -0
- gcore/types/cloud/floating_ip.py +0 -9
- gcore/types/cloud/floating_ip_detailed.py +0 -9
- gcore/types/cloud/gpu_baremetal_cluster.py +2 -2
- gcore/types/cloud/gpu_baremetal_cluster_create_params.py +9 -0
- gcore/types/cloud/quota_get_all_response.py +24 -2
- gcore/types/cloud/quota_get_by_region_response.py +24 -2
- gcore/types/cloud/quotas/request_create_params.py +12 -1
- gcore/types/cloud/quotas/request_get_response.py +12 -1
- gcore/types/cloud/quotas/request_list_response.py +12 -1
- gcore/types/cloud/subnet.py +1 -1
- gcore/types/cloud/usage_report.py +1612 -0
- gcore/types/cloud/usage_report_get_params.py +432 -0
- gcore/types/streaming/__init__.py +143 -0
- gcore/types/streaming/ai_contentmoderation_casm.py +39 -0
- gcore/types/streaming/ai_contentmoderation_hardnudity.py +54 -0
- gcore/types/streaming/ai_contentmoderation_nsfw.py +39 -0
- gcore/types/streaming/ai_contentmoderation_softnudity.py +66 -0
- gcore/types/streaming/ai_contentmoderation_sport.py +39 -0
- gcore/types/streaming/ai_contentmoderation_weapon.py +39 -0
- gcore/types/streaming/ai_task.py +205 -0
- gcore/types/streaming/ai_task_cancel_response.py +12 -0
- gcore/types/streaming/ai_task_create_params.py +168 -0
- gcore/types/streaming/ai_task_create_response.py +10 -0
- gcore/types/streaming/ai_task_get_ai_settings_params.py +27 -0
- gcore/types/streaming/ai_task_get_ai_settings_response.py +12 -0
- gcore/types/streaming/ai_task_get_response.py +313 -0
- gcore/types/streaming/ai_task_list_params.py +50 -0
- gcore/types/streaming/broadcast.py +71 -0
- gcore/types/streaming/broadcast_create_params.py +76 -0
- gcore/types/streaming/broadcast_list_params.py +12 -0
- gcore/types/streaming/broadcast_spectators_count.py +12 -0
- gcore/types/streaming/broadcast_update_params.py +76 -0
- gcore/types/streaming/clip.py +78 -0
- gcore/types/streaming/create_video_param.py +214 -0
- gcore/types/streaming/direct_upload_parameters.py +33 -0
- gcore/types/streaming/directories_tree.py +19 -0
- gcore/types/streaming/directory_base.py +31 -0
- gcore/types/streaming/directory_create_params.py +15 -0
- gcore/types/streaming/directory_get_response.py +19 -0
- gcore/types/streaming/directory_item.py +13 -0
- gcore/types/streaming/directory_update_params.py +18 -0
- gcore/types/streaming/directory_video.py +13 -0
- gcore/types/streaming/ffprobes.py +25 -0
- gcore/types/streaming/max_stream_series.py +21 -0
- gcore/types/streaming/meet_series.py +23 -0
- gcore/types/streaming/player.py +114 -0
- gcore/types/streaming/player_create_params.py +18 -0
- gcore/types/streaming/player_list_params.py +12 -0
- gcore/types/streaming/player_param.py +114 -0
- gcore/types/streaming/player_update_params.py +18 -0
- gcore/types/streaming/playlist.py +102 -0
- gcore/types/streaming/playlist_create.py +12 -0
- gcore/types/streaming/playlist_create_params.py +102 -0
- gcore/types/streaming/playlist_list_params.py +12 -0
- gcore/types/streaming/playlist_list_videos_response.py +10 -0
- gcore/types/streaming/playlist_update_params.py +102 -0
- gcore/types/streaming/playlist_video.py +215 -0
- gcore/types/streaming/popular_videos.py +17 -0
- gcore/types/streaming/quality_set_set_default_params.py +23 -0
- gcore/types/streaming/quality_sets.py +57 -0
- gcore/types/streaming/restream.py +37 -0
- gcore/types/streaming/restream_create_params.py +41 -0
- gcore/types/streaming/restream_list_params.py +12 -0
- gcore/types/streaming/restream_update_params.py +41 -0
- gcore/types/streaming/statistic_get_ffprobes_params.py +22 -0
- gcore/types/streaming/statistic_get_live_unique_viewers_params.py +26 -0
- gcore/types/streaming/statistic_get_live_unique_viewers_response.py +25 -0
- gcore/types/streaming/statistic_get_live_watch_time_cdn_params.py +32 -0
- gcore/types/streaming/statistic_get_live_watch_time_total_cdn_params.py +30 -0
- gcore/types/streaming/statistic_get_max_streams_series_params.py +20 -0
- gcore/types/streaming/statistic_get_meet_series_params.py +20 -0
- gcore/types/streaming/statistic_get_popular_videos_params.py +15 -0
- gcore/types/streaming/statistic_get_storage_series_params.py +20 -0
- gcore/types/streaming/statistic_get_stream_series_params.py +20 -0
- gcore/types/streaming/statistic_get_unique_viewers_cdn_params.py +27 -0
- gcore/types/streaming/statistic_get_unique_viewers_params.py +34 -0
- gcore/types/streaming/statistic_get_views_by_browsers_params.py +15 -0
- gcore/types/streaming/statistic_get_views_by_country_params.py +15 -0
- gcore/types/streaming/statistic_get_views_by_hostname_params.py +15 -0
- gcore/types/streaming/statistic_get_views_by_operating_system_params.py +15 -0
- gcore/types/streaming/statistic_get_views_by_referer_params.py +15 -0
- gcore/types/streaming/statistic_get_views_by_region_params.py +15 -0
- gcore/types/streaming/statistic_get_views_heatmap_params.py +21 -0
- gcore/types/streaming/statistic_get_views_params.py +34 -0
- gcore/types/streaming/statistic_get_vod_storage_volume_params.py +17 -0
- gcore/types/streaming/statistic_get_vod_transcoding_duration_params.py +17 -0
- gcore/types/streaming/statistic_get_vod_unique_viewers_cdn_params.py +26 -0
- gcore/types/streaming/statistic_get_vod_watch_time_cdn_params.py +32 -0
- gcore/types/streaming/statistic_get_vod_watch_time_total_cdn_params.py +30 -0
- gcore/types/streaming/statistic_get_vod_watch_time_total_cdn_response.py +22 -0
- gcore/types/streaming/storage_series.py +23 -0
- gcore/types/streaming/stream.py +420 -0
- gcore/types/streaming/stream_create_clip_params.py +48 -0
- gcore/types/streaming/stream_create_params.py +165 -0
- gcore/types/streaming/stream_list_clips_response.py +10 -0
- gcore/types/streaming/stream_list_params.py +18 -0
- gcore/types/streaming/stream_series.py +21 -0
- gcore/types/streaming/stream_start_recording_response.py +76 -0
- gcore/types/streaming/stream_update_params.py +169 -0
- gcore/types/streaming/streams/__init__.py +11 -0
- gcore/types/streaming/streams/overlay.py +43 -0
- gcore/types/streaming/streams/overlay_create_params.py +36 -0
- gcore/types/streaming/streams/overlay_create_response.py +10 -0
- gcore/types/streaming/streams/overlay_list_response.py +10 -0
- gcore/types/streaming/streams/overlay_update_multiple_params.py +39 -0
- gcore/types/streaming/streams/overlay_update_multiple_response.py +10 -0
- gcore/types/streaming/streams/overlay_update_params.py +33 -0
- gcore/types/streaming/subtitle.py +12 -0
- gcore/types/streaming/subtitle_base.py +18 -0
- gcore/types/streaming/subtitle_base_param.py +18 -0
- gcore/types/streaming/unique_viewers.py +35 -0
- gcore/types/streaming/unique_viewers_cdn.py +17 -0
- gcore/types/streaming/video.py +444 -0
- gcore/types/streaming/video_create_multiple_params.py +28 -0
- gcore/types/streaming/video_create_multiple_response.py +10 -0
- gcore/types/streaming/video_create_params.py +13 -0
- gcore/types/streaming/video_create_response.py +10 -0
- gcore/types/streaming/video_list_names_params.py +13 -0
- gcore/types/streaming/video_list_params.py +59 -0
- gcore/types/streaming/video_update_params.py +214 -0
- gcore/types/streaming/videos/__init__.py +7 -0
- gcore/types/streaming/videos/subtitle_create_params.py +17 -0
- gcore/types/streaming/videos/subtitle_list_response.py +10 -0
- gcore/types/streaming/videos/subtitle_update_params.py +20 -0
- gcore/types/streaming/views.py +35 -0
- gcore/types/streaming/views_by_browser.py +17 -0
- gcore/types/streaming/views_by_country.py +19 -0
- gcore/types/streaming/views_by_hostname.py +17 -0
- gcore/types/streaming/views_by_operating_system.py +17 -0
- gcore/types/streaming/views_by_referer.py +17 -0
- gcore/types/streaming/views_by_region.py +19 -0
- gcore/types/streaming/views_heatmap.py +19 -0
- gcore/types/streaming/vod_statistics_series.py +21 -0
- gcore/types/streaming/vod_total_stream_duration_series.py +22 -0
- gcore/types/waap/domains/custom_rule_create_params.py +4 -4
- gcore/types/waap/domains/custom_rule_update_params.py +4 -4
- gcore/types/waap/ip_info_get_blocked_requests_params.py +5 -1
- gcore/types/waap/ip_info_get_counts_params.py +2 -1
- gcore/types/waap/ip_info_get_top_sessions_params.py +5 -1
- gcore/types/waap/ip_info_get_top_urls_params.py +5 -1
- gcore/types/waap/ip_info_get_top_user_agents_params.py +5 -1
- gcore/types/waap/waap_custom_rule.py +4 -4
- {gcore-0.6.0.dist-info → gcore-0.8.0.dist-info}/METADATA +1 -1
- {gcore-0.6.0.dist-info → gcore-0.8.0.dist-info}/RECORD +185 -37
- {gcore-0.6.0.dist-info → gcore-0.8.0.dist-info}/WHEEL +0 -0
- {gcore-0.6.0.dist-info → gcore-0.8.0.dist-info}/licenses/LICENSE +0 -0
gcore/_client.py
CHANGED
|
@@ -32,6 +32,7 @@ from .resources.iam import iam
|
|
|
32
32
|
from .resources.waap import waap
|
|
33
33
|
from .resources.cloud import cloud
|
|
34
34
|
from .resources.fastedge import fastedge
|
|
35
|
+
from .resources.streaming import streaming
|
|
35
36
|
|
|
36
37
|
__all__ = ["Timeout", "Transport", "ProxiesTypes", "RequestOptions", "Gcore", "AsyncGcore", "Client", "AsyncClient"]
|
|
37
38
|
|
|
@@ -41,6 +42,7 @@ class Gcore(SyncAPIClient):
|
|
|
41
42
|
waap: waap.WaapResource
|
|
42
43
|
iam: iam.IamResource
|
|
43
44
|
fastedge: fastedge.FastedgeResource
|
|
45
|
+
streaming: streaming.StreamingResource
|
|
44
46
|
with_raw_response: GcoreWithRawResponse
|
|
45
47
|
with_streaming_response: GcoreWithStreamedResponse
|
|
46
48
|
|
|
@@ -123,6 +125,7 @@ class Gcore(SyncAPIClient):
|
|
|
123
125
|
self.waap = waap.WaapResource(self)
|
|
124
126
|
self.iam = iam.IamResource(self)
|
|
125
127
|
self.fastedge = fastedge.FastedgeResource(self)
|
|
128
|
+
self.streaming = streaming.StreamingResource(self)
|
|
126
129
|
self.with_raw_response = GcoreWithRawResponse(self)
|
|
127
130
|
self.with_streaming_response = GcoreWithStreamedResponse(self)
|
|
128
131
|
|
|
@@ -260,6 +263,7 @@ class AsyncGcore(AsyncAPIClient):
|
|
|
260
263
|
waap: waap.AsyncWaapResource
|
|
261
264
|
iam: iam.AsyncIamResource
|
|
262
265
|
fastedge: fastedge.AsyncFastedgeResource
|
|
266
|
+
streaming: streaming.AsyncStreamingResource
|
|
263
267
|
with_raw_response: AsyncGcoreWithRawResponse
|
|
264
268
|
with_streaming_response: AsyncGcoreWithStreamedResponse
|
|
265
269
|
|
|
@@ -342,6 +346,7 @@ class AsyncGcore(AsyncAPIClient):
|
|
|
342
346
|
self.waap = waap.AsyncWaapResource(self)
|
|
343
347
|
self.iam = iam.AsyncIamResource(self)
|
|
344
348
|
self.fastedge = fastedge.AsyncFastedgeResource(self)
|
|
349
|
+
self.streaming = streaming.AsyncStreamingResource(self)
|
|
345
350
|
self.with_raw_response = AsyncGcoreWithRawResponse(self)
|
|
346
351
|
self.with_streaming_response = AsyncGcoreWithStreamedResponse(self)
|
|
347
352
|
|
|
@@ -480,6 +485,7 @@ class GcoreWithRawResponse:
|
|
|
480
485
|
self.waap = waap.WaapResourceWithRawResponse(client.waap)
|
|
481
486
|
self.iam = iam.IamResourceWithRawResponse(client.iam)
|
|
482
487
|
self.fastedge = fastedge.FastedgeResourceWithRawResponse(client.fastedge)
|
|
488
|
+
self.streaming = streaming.StreamingResourceWithRawResponse(client.streaming)
|
|
483
489
|
|
|
484
490
|
|
|
485
491
|
class AsyncGcoreWithRawResponse:
|
|
@@ -488,6 +494,7 @@ class AsyncGcoreWithRawResponse:
|
|
|
488
494
|
self.waap = waap.AsyncWaapResourceWithRawResponse(client.waap)
|
|
489
495
|
self.iam = iam.AsyncIamResourceWithRawResponse(client.iam)
|
|
490
496
|
self.fastedge = fastedge.AsyncFastedgeResourceWithRawResponse(client.fastedge)
|
|
497
|
+
self.streaming = streaming.AsyncStreamingResourceWithRawResponse(client.streaming)
|
|
491
498
|
|
|
492
499
|
|
|
493
500
|
class GcoreWithStreamedResponse:
|
|
@@ -496,6 +503,7 @@ class GcoreWithStreamedResponse:
|
|
|
496
503
|
self.waap = waap.WaapResourceWithStreamingResponse(client.waap)
|
|
497
504
|
self.iam = iam.IamResourceWithStreamingResponse(client.iam)
|
|
498
505
|
self.fastedge = fastedge.FastedgeResourceWithStreamingResponse(client.fastedge)
|
|
506
|
+
self.streaming = streaming.StreamingResourceWithStreamingResponse(client.streaming)
|
|
499
507
|
|
|
500
508
|
|
|
501
509
|
class AsyncGcoreWithStreamedResponse:
|
|
@@ -504,6 +512,7 @@ class AsyncGcoreWithStreamedResponse:
|
|
|
504
512
|
self.waap = waap.AsyncWaapResourceWithStreamingResponse(client.waap)
|
|
505
513
|
self.iam = iam.AsyncIamResourceWithStreamingResponse(client.iam)
|
|
506
514
|
self.fastedge = fastedge.AsyncFastedgeResourceWithStreamingResponse(client.fastedge)
|
|
515
|
+
self.streaming = streaming.AsyncStreamingResourceWithStreamingResponse(client.streaming)
|
|
507
516
|
|
|
508
517
|
|
|
509
518
|
Client = Gcore
|
gcore/_models.py
CHANGED
|
@@ -208,14 +208,18 @@ class BaseModel(pydantic.BaseModel):
|
|
|
208
208
|
else:
|
|
209
209
|
fields_values[name] = field_get_default(field)
|
|
210
210
|
|
|
211
|
+
extra_field_type = _get_extra_fields_type(__cls)
|
|
212
|
+
|
|
211
213
|
_extra = {}
|
|
212
214
|
for key, value in values.items():
|
|
213
215
|
if key not in model_fields:
|
|
216
|
+
parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value
|
|
217
|
+
|
|
214
218
|
if PYDANTIC_V2:
|
|
215
|
-
_extra[key] =
|
|
219
|
+
_extra[key] = parsed
|
|
216
220
|
else:
|
|
217
221
|
_fields_set.add(key)
|
|
218
|
-
fields_values[key] =
|
|
222
|
+
fields_values[key] = parsed
|
|
219
223
|
|
|
220
224
|
object.__setattr__(m, "__dict__", fields_values)
|
|
221
225
|
|
|
@@ -370,6 +374,23 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
|
|
|
370
374
|
return construct_type(value=value, type_=type_, metadata=getattr(field, "metadata", None))
|
|
371
375
|
|
|
372
376
|
|
|
377
|
+
def _get_extra_fields_type(cls: type[pydantic.BaseModel]) -> type | None:
|
|
378
|
+
if not PYDANTIC_V2:
|
|
379
|
+
# TODO
|
|
380
|
+
return None
|
|
381
|
+
|
|
382
|
+
schema = cls.__pydantic_core_schema__
|
|
383
|
+
if schema["type"] == "model":
|
|
384
|
+
fields = schema["schema"]
|
|
385
|
+
if fields["type"] == "model-fields":
|
|
386
|
+
extras = fields.get("extras_schema")
|
|
387
|
+
if extras and "cls" in extras:
|
|
388
|
+
# mypy can't narrow the type
|
|
389
|
+
return extras["cls"] # type: ignore[no-any-return]
|
|
390
|
+
|
|
391
|
+
return None
|
|
392
|
+
|
|
393
|
+
|
|
373
394
|
def is_basemodel(type_: type) -> bool:
|
|
374
395
|
"""Returns whether or not the given type is either a `BaseModel` or a union of `BaseModel`"""
|
|
375
396
|
if is_union(type_):
|
|
@@ -439,7 +460,7 @@ def construct_type(*, value: object, type_: object, metadata: Optional[List[Any]
|
|
|
439
460
|
type_ = type_.__value__ # type: ignore[unreachable]
|
|
440
461
|
|
|
441
462
|
# unwrap `Annotated[T, ...]` -> `T`
|
|
442
|
-
if metadata is not None:
|
|
463
|
+
if metadata is not None and len(metadata) > 0:
|
|
443
464
|
meta: tuple[Any, ...] = tuple(metadata)
|
|
444
465
|
elif is_annotated_type(type_):
|
|
445
466
|
meta = get_args(type_)[1:]
|
gcore/_version.py
CHANGED
gcore/pagination.py
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
|
|
3
|
-
from typing import List, Generic, TypeVar, Optional
|
|
3
|
+
from typing import Any, List, Type, Generic, Mapping, TypeVar, Optional, cast
|
|
4
4
|
from typing_extensions import override
|
|
5
5
|
|
|
6
|
+
from httpx import Response
|
|
7
|
+
|
|
8
|
+
from ._utils import is_mapping
|
|
9
|
+
from ._models import BaseModel
|
|
6
10
|
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
|
|
7
11
|
|
|
8
12
|
__all__ = [
|
|
9
13
|
"SyncOffsetPage",
|
|
10
14
|
"AsyncOffsetPage",
|
|
11
|
-
"SyncOffsetPageIam",
|
|
12
|
-
"AsyncOffsetPageIam",
|
|
13
15
|
"SyncOffsetPageFastedgeApps",
|
|
14
16
|
"AsyncOffsetPageFastedgeApps",
|
|
15
17
|
"SyncOffsetPageFastedgeTemplates",
|
|
16
18
|
"AsyncOffsetPageFastedgeTemplates",
|
|
17
19
|
"SyncOffsetPageFastedgeAppLogs",
|
|
18
20
|
"AsyncOffsetPageFastedgeAppLogs",
|
|
21
|
+
"SyncPageStreamingAI",
|
|
22
|
+
"AsyncPageStreamingAI",
|
|
23
|
+
"SyncPageStreaming",
|
|
24
|
+
"AsyncPageStreaming",
|
|
19
25
|
]
|
|
20
26
|
|
|
27
|
+
_BaseModelT = TypeVar("_BaseModelT", bound=BaseModel)
|
|
28
|
+
|
|
21
29
|
_T = TypeVar("_T")
|
|
22
30
|
|
|
23
31
|
|
|
@@ -81,66 +89,6 @@ class AsyncOffsetPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
|
|
|
81
89
|
return None
|
|
82
90
|
|
|
83
91
|
|
|
84
|
-
class SyncOffsetPageIam(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
|
|
85
|
-
result: List[_T]
|
|
86
|
-
count: Optional[int] = None
|
|
87
|
-
|
|
88
|
-
@override
|
|
89
|
-
def _get_page_items(self) -> List[_T]:
|
|
90
|
-
result = self.result
|
|
91
|
-
if not result:
|
|
92
|
-
return []
|
|
93
|
-
return result
|
|
94
|
-
|
|
95
|
-
@override
|
|
96
|
-
def next_page_info(self) -> Optional[PageInfo]:
|
|
97
|
-
offset = self._options.params.get("offset") or 0
|
|
98
|
-
if not isinstance(offset, int):
|
|
99
|
-
raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
|
|
100
|
-
|
|
101
|
-
length = len(self._get_page_items())
|
|
102
|
-
current_count = offset + length
|
|
103
|
-
|
|
104
|
-
count = self.count
|
|
105
|
-
if count is None:
|
|
106
|
-
return None
|
|
107
|
-
|
|
108
|
-
if current_count < count:
|
|
109
|
-
return PageInfo(params={"offset": current_count})
|
|
110
|
-
|
|
111
|
-
return None
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class AsyncOffsetPageIam(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
|
|
115
|
-
result: List[_T]
|
|
116
|
-
count: Optional[int] = None
|
|
117
|
-
|
|
118
|
-
@override
|
|
119
|
-
def _get_page_items(self) -> List[_T]:
|
|
120
|
-
result = self.result
|
|
121
|
-
if not result:
|
|
122
|
-
return []
|
|
123
|
-
return result
|
|
124
|
-
|
|
125
|
-
@override
|
|
126
|
-
def next_page_info(self) -> Optional[PageInfo]:
|
|
127
|
-
offset = self._options.params.get("offset") or 0
|
|
128
|
-
if not isinstance(offset, int):
|
|
129
|
-
raise ValueError(f'Expected "offset" param to be an integer but got {offset}')
|
|
130
|
-
|
|
131
|
-
length = len(self._get_page_items())
|
|
132
|
-
current_count = offset + length
|
|
133
|
-
|
|
134
|
-
count = self.count
|
|
135
|
-
if count is None:
|
|
136
|
-
return None
|
|
137
|
-
|
|
138
|
-
if current_count < count:
|
|
139
|
-
return PageInfo(params={"offset": current_count})
|
|
140
|
-
|
|
141
|
-
return None
|
|
142
|
-
|
|
143
|
-
|
|
144
92
|
class SyncOffsetPageFastedgeApps(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
|
|
145
93
|
apps: List[_T]
|
|
146
94
|
count: Optional[int] = None
|
|
@@ -319,3 +267,93 @@ class AsyncOffsetPageFastedgeAppLogs(BaseAsyncPage[_T], BasePage[_T], Generic[_T
|
|
|
319
267
|
return PageInfo(params={"offset": current_count})
|
|
320
268
|
|
|
321
269
|
return None
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class SyncPageStreamingAI(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
|
|
273
|
+
results: List[_T]
|
|
274
|
+
|
|
275
|
+
@override
|
|
276
|
+
def _get_page_items(self) -> List[_T]:
|
|
277
|
+
results = self.results
|
|
278
|
+
if not results:
|
|
279
|
+
return []
|
|
280
|
+
return results
|
|
281
|
+
|
|
282
|
+
@override
|
|
283
|
+
def next_page_info(self) -> Optional[PageInfo]:
|
|
284
|
+
last_page = cast("int | None", self._options.params.get("page")) or 1
|
|
285
|
+
|
|
286
|
+
return PageInfo(params={"page": last_page + 1})
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
class AsyncPageStreamingAI(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
|
|
290
|
+
results: List[_T]
|
|
291
|
+
|
|
292
|
+
@override
|
|
293
|
+
def _get_page_items(self) -> List[_T]:
|
|
294
|
+
results = self.results
|
|
295
|
+
if not results:
|
|
296
|
+
return []
|
|
297
|
+
return results
|
|
298
|
+
|
|
299
|
+
@override
|
|
300
|
+
def next_page_info(self) -> Optional[PageInfo]:
|
|
301
|
+
last_page = cast("int | None", self._options.params.get("page")) or 1
|
|
302
|
+
|
|
303
|
+
return PageInfo(params={"page": last_page + 1})
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
class SyncPageStreaming(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
|
|
307
|
+
items: List[_T]
|
|
308
|
+
|
|
309
|
+
@override
|
|
310
|
+
def _get_page_items(self) -> List[_T]:
|
|
311
|
+
items = self.items
|
|
312
|
+
if not items:
|
|
313
|
+
return []
|
|
314
|
+
return items
|
|
315
|
+
|
|
316
|
+
@override
|
|
317
|
+
def next_page_info(self) -> None:
|
|
318
|
+
"""
|
|
319
|
+
This page represents a response that isn't actually paginated at the API level
|
|
320
|
+
so there will never be a next page.
|
|
321
|
+
"""
|
|
322
|
+
return None
|
|
323
|
+
|
|
324
|
+
@classmethod
|
|
325
|
+
def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
|
|
326
|
+
return cls.construct(
|
|
327
|
+
None,
|
|
328
|
+
**{
|
|
329
|
+
**(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
|
|
330
|
+
},
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
class AsyncPageStreaming(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
|
|
335
|
+
items: List[_T]
|
|
336
|
+
|
|
337
|
+
@override
|
|
338
|
+
def _get_page_items(self) -> List[_T]:
|
|
339
|
+
items = self.items
|
|
340
|
+
if not items:
|
|
341
|
+
return []
|
|
342
|
+
return items
|
|
343
|
+
|
|
344
|
+
@override
|
|
345
|
+
def next_page_info(self) -> None:
|
|
346
|
+
"""
|
|
347
|
+
This page represents a response that isn't actually paginated at the API level
|
|
348
|
+
so there will never be a next page.
|
|
349
|
+
"""
|
|
350
|
+
return None
|
|
351
|
+
|
|
352
|
+
@classmethod
|
|
353
|
+
def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
|
|
354
|
+
return cls.construct(
|
|
355
|
+
None,
|
|
356
|
+
**{
|
|
357
|
+
**(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
|
|
358
|
+
},
|
|
359
|
+
)
|
gcore/resources/__init__.py
CHANGED
|
@@ -32,6 +32,14 @@ from .fastedge import (
|
|
|
32
32
|
FastedgeResourceWithStreamingResponse,
|
|
33
33
|
AsyncFastedgeResourceWithStreamingResponse,
|
|
34
34
|
)
|
|
35
|
+
from .streaming import (
|
|
36
|
+
StreamingResource,
|
|
37
|
+
AsyncStreamingResource,
|
|
38
|
+
StreamingResourceWithRawResponse,
|
|
39
|
+
AsyncStreamingResourceWithRawResponse,
|
|
40
|
+
StreamingResourceWithStreamingResponse,
|
|
41
|
+
AsyncStreamingResourceWithStreamingResponse,
|
|
42
|
+
)
|
|
35
43
|
|
|
36
44
|
__all__ = [
|
|
37
45
|
"CloudResource",
|
|
@@ -58,4 +66,10 @@ __all__ = [
|
|
|
58
66
|
"AsyncFastedgeResourceWithRawResponse",
|
|
59
67
|
"FastedgeResourceWithStreamingResponse",
|
|
60
68
|
"AsyncFastedgeResourceWithStreamingResponse",
|
|
69
|
+
"StreamingResource",
|
|
70
|
+
"AsyncStreamingResource",
|
|
71
|
+
"StreamingResourceWithRawResponse",
|
|
72
|
+
"AsyncStreamingResourceWithRawResponse",
|
|
73
|
+
"StreamingResourceWithStreamingResponse",
|
|
74
|
+
"AsyncStreamingResourceWithStreamingResponse",
|
|
61
75
|
]
|
|
@@ -136,6 +136,14 @@ from .file_shares import (
|
|
|
136
136
|
FileSharesResourceWithStreamingResponse,
|
|
137
137
|
AsyncFileSharesResourceWithStreamingResponse,
|
|
138
138
|
)
|
|
139
|
+
from .cost_reports import (
|
|
140
|
+
CostReportsResource,
|
|
141
|
+
AsyncCostReportsResource,
|
|
142
|
+
CostReportsResourceWithRawResponse,
|
|
143
|
+
AsyncCostReportsResourceWithRawResponse,
|
|
144
|
+
CostReportsResourceWithStreamingResponse,
|
|
145
|
+
AsyncCostReportsResourceWithStreamingResponse,
|
|
146
|
+
)
|
|
139
147
|
from .floating_ips import (
|
|
140
148
|
FloatingIPsResource,
|
|
141
149
|
AsyncFloatingIPsResource,
|
|
@@ -144,6 +152,14 @@ from .floating_ips import (
|
|
|
144
152
|
FloatingIPsResourceWithStreamingResponse,
|
|
145
153
|
AsyncFloatingIPsResourceWithStreamingResponse,
|
|
146
154
|
)
|
|
155
|
+
from .usage_reports import (
|
|
156
|
+
UsageReportsResource,
|
|
157
|
+
AsyncUsageReportsResource,
|
|
158
|
+
UsageReportsResourceWithRawResponse,
|
|
159
|
+
AsyncUsageReportsResourceWithRawResponse,
|
|
160
|
+
UsageReportsResourceWithStreamingResponse,
|
|
161
|
+
AsyncUsageReportsResourceWithStreamingResponse,
|
|
162
|
+
)
|
|
147
163
|
from .load_balancers import (
|
|
148
164
|
LoadBalancersResource,
|
|
149
165
|
AsyncLoadBalancersResource,
|
|
@@ -332,6 +348,18 @@ __all__ = [
|
|
|
332
348
|
"AsyncAuditLogsResourceWithRawResponse",
|
|
333
349
|
"AuditLogsResourceWithStreamingResponse",
|
|
334
350
|
"AsyncAuditLogsResourceWithStreamingResponse",
|
|
351
|
+
"CostReportsResource",
|
|
352
|
+
"AsyncCostReportsResource",
|
|
353
|
+
"CostReportsResourceWithRawResponse",
|
|
354
|
+
"AsyncCostReportsResourceWithRawResponse",
|
|
355
|
+
"CostReportsResourceWithStreamingResponse",
|
|
356
|
+
"AsyncCostReportsResourceWithStreamingResponse",
|
|
357
|
+
"UsageReportsResource",
|
|
358
|
+
"AsyncUsageReportsResource",
|
|
359
|
+
"UsageReportsResourceWithRawResponse",
|
|
360
|
+
"AsyncUsageReportsResourceWithRawResponse",
|
|
361
|
+
"UsageReportsResourceWithStreamingResponse",
|
|
362
|
+
"AsyncUsageReportsResourceWithStreamingResponse",
|
|
335
363
|
"CloudResource",
|
|
336
364
|
"AsyncCloudResource",
|
|
337
365
|
"CloudResourceWithRawResponse",
|
gcore/resources/cloud/cloud.py
CHANGED
|
@@ -76,6 +76,14 @@ from .users.users import (
|
|
|
76
76
|
UsersResourceWithStreamingResponse,
|
|
77
77
|
AsyncUsersResourceWithStreamingResponse,
|
|
78
78
|
)
|
|
79
|
+
from .cost_reports import (
|
|
80
|
+
CostReportsResource,
|
|
81
|
+
AsyncCostReportsResource,
|
|
82
|
+
CostReportsResourceWithRawResponse,
|
|
83
|
+
AsyncCostReportsResourceWithRawResponse,
|
|
84
|
+
CostReportsResourceWithStreamingResponse,
|
|
85
|
+
AsyncCostReportsResourceWithStreamingResponse,
|
|
86
|
+
)
|
|
79
87
|
from .floating_ips import (
|
|
80
88
|
FloatingIPsResource,
|
|
81
89
|
AsyncFloatingIPsResource,
|
|
@@ -92,6 +100,14 @@ from .quotas.quotas import (
|
|
|
92
100
|
QuotasResourceWithStreamingResponse,
|
|
93
101
|
AsyncQuotasResourceWithStreamingResponse,
|
|
94
102
|
)
|
|
103
|
+
from .usage_reports import (
|
|
104
|
+
UsageReportsResource,
|
|
105
|
+
AsyncUsageReportsResource,
|
|
106
|
+
UsageReportsResourceWithRawResponse,
|
|
107
|
+
AsyncUsageReportsResourceWithRawResponse,
|
|
108
|
+
UsageReportsResourceWithStreamingResponse,
|
|
109
|
+
AsyncUsageReportsResourceWithStreamingResponse,
|
|
110
|
+
)
|
|
95
111
|
from .placement_groups import (
|
|
96
112
|
PlacementGroupsResource,
|
|
97
113
|
AsyncPlacementGroupsResource,
|
|
@@ -285,6 +301,14 @@ class CloudResource(SyncAPIResource):
|
|
|
285
301
|
def audit_logs(self) -> AuditLogsResource:
|
|
286
302
|
return AuditLogsResource(self._client)
|
|
287
303
|
|
|
304
|
+
@cached_property
|
|
305
|
+
def cost_reports(self) -> CostReportsResource:
|
|
306
|
+
return CostReportsResource(self._client)
|
|
307
|
+
|
|
308
|
+
@cached_property
|
|
309
|
+
def usage_reports(self) -> UsageReportsResource:
|
|
310
|
+
return UsageReportsResource(self._client)
|
|
311
|
+
|
|
288
312
|
@cached_property
|
|
289
313
|
def with_raw_response(self) -> CloudResourceWithRawResponse:
|
|
290
314
|
"""
|
|
@@ -398,6 +422,14 @@ class AsyncCloudResource(AsyncAPIResource):
|
|
|
398
422
|
def audit_logs(self) -> AsyncAuditLogsResource:
|
|
399
423
|
return AsyncAuditLogsResource(self._client)
|
|
400
424
|
|
|
425
|
+
@cached_property
|
|
426
|
+
def cost_reports(self) -> AsyncCostReportsResource:
|
|
427
|
+
return AsyncCostReportsResource(self._client)
|
|
428
|
+
|
|
429
|
+
@cached_property
|
|
430
|
+
def usage_reports(self) -> AsyncUsageReportsResource:
|
|
431
|
+
return AsyncUsageReportsResource(self._client)
|
|
432
|
+
|
|
401
433
|
@cached_property
|
|
402
434
|
def with_raw_response(self) -> AsyncCloudResourceWithRawResponse:
|
|
403
435
|
"""
|
|
@@ -514,6 +546,14 @@ class CloudResourceWithRawResponse:
|
|
|
514
546
|
def audit_logs(self) -> AuditLogsResourceWithRawResponse:
|
|
515
547
|
return AuditLogsResourceWithRawResponse(self._cloud.audit_logs)
|
|
516
548
|
|
|
549
|
+
@cached_property
|
|
550
|
+
def cost_reports(self) -> CostReportsResourceWithRawResponse:
|
|
551
|
+
return CostReportsResourceWithRawResponse(self._cloud.cost_reports)
|
|
552
|
+
|
|
553
|
+
@cached_property
|
|
554
|
+
def usage_reports(self) -> UsageReportsResourceWithRawResponse:
|
|
555
|
+
return UsageReportsResourceWithRawResponse(self._cloud.usage_reports)
|
|
556
|
+
|
|
517
557
|
|
|
518
558
|
class AsyncCloudResourceWithRawResponse:
|
|
519
559
|
def __init__(self, cloud: AsyncCloudResource) -> None:
|
|
@@ -611,6 +651,14 @@ class AsyncCloudResourceWithRawResponse:
|
|
|
611
651
|
def audit_logs(self) -> AsyncAuditLogsResourceWithRawResponse:
|
|
612
652
|
return AsyncAuditLogsResourceWithRawResponse(self._cloud.audit_logs)
|
|
613
653
|
|
|
654
|
+
@cached_property
|
|
655
|
+
def cost_reports(self) -> AsyncCostReportsResourceWithRawResponse:
|
|
656
|
+
return AsyncCostReportsResourceWithRawResponse(self._cloud.cost_reports)
|
|
657
|
+
|
|
658
|
+
@cached_property
|
|
659
|
+
def usage_reports(self) -> AsyncUsageReportsResourceWithRawResponse:
|
|
660
|
+
return AsyncUsageReportsResourceWithRawResponse(self._cloud.usage_reports)
|
|
661
|
+
|
|
614
662
|
|
|
615
663
|
class CloudResourceWithStreamingResponse:
|
|
616
664
|
def __init__(self, cloud: CloudResource) -> None:
|
|
@@ -708,6 +756,14 @@ class CloudResourceWithStreamingResponse:
|
|
|
708
756
|
def audit_logs(self) -> AuditLogsResourceWithStreamingResponse:
|
|
709
757
|
return AuditLogsResourceWithStreamingResponse(self._cloud.audit_logs)
|
|
710
758
|
|
|
759
|
+
@cached_property
|
|
760
|
+
def cost_reports(self) -> CostReportsResourceWithStreamingResponse:
|
|
761
|
+
return CostReportsResourceWithStreamingResponse(self._cloud.cost_reports)
|
|
762
|
+
|
|
763
|
+
@cached_property
|
|
764
|
+
def usage_reports(self) -> UsageReportsResourceWithStreamingResponse:
|
|
765
|
+
return UsageReportsResourceWithStreamingResponse(self._cloud.usage_reports)
|
|
766
|
+
|
|
711
767
|
|
|
712
768
|
class AsyncCloudResourceWithStreamingResponse:
|
|
713
769
|
def __init__(self, cloud: AsyncCloudResource) -> None:
|
|
@@ -804,3 +860,11 @@ class AsyncCloudResourceWithStreamingResponse:
|
|
|
804
860
|
@cached_property
|
|
805
861
|
def audit_logs(self) -> AsyncAuditLogsResourceWithStreamingResponse:
|
|
806
862
|
return AsyncAuditLogsResourceWithStreamingResponse(self._cloud.audit_logs)
|
|
863
|
+
|
|
864
|
+
@cached_property
|
|
865
|
+
def cost_reports(self) -> AsyncCostReportsResourceWithStreamingResponse:
|
|
866
|
+
return AsyncCostReportsResourceWithStreamingResponse(self._cloud.cost_reports)
|
|
867
|
+
|
|
868
|
+
@cached_property
|
|
869
|
+
def usage_reports(self) -> AsyncUsageReportsResourceWithStreamingResponse:
|
|
870
|
+
return AsyncUsageReportsResourceWithStreamingResponse(self._cloud.usage_reports)
|