Skip to content

Commit ac63efe

Browse files
feat(api): update via SDK Studio (#187)
1 parent b9ad754 commit ac63efe

338 files changed

Lines changed: 2770 additions & 4013 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api.md

Lines changed: 164 additions & 243 deletions
Large diffs are not rendered by default.

src/cloudflare/pagination.py

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from typing import Any, List, Type, Generic, Mapping, TypeVar, Optional, cast
3+
from typing import List, Generic, TypeVar, Optional, cast
44
from typing_extensions import override
55

6-
from httpx import Response
7-
8-
from ._utils import is_mapping
96
from ._models import BaseModel, GenericModel
107
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
118

@@ -27,8 +24,6 @@
2724
"AsyncSinglePage",
2825
]
2926

30-
_BaseModelT = TypeVar("_BaseModelT", bound=BaseModel)
31-
3227
_T = TypeVar("_T")
3328

3429

@@ -257,14 +252,14 @@ def next_page_info(self) -> Optional[PageInfo]:
257252

258253

259254
class SyncSinglePage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
260-
items: List[_T]
255+
result: List[_T]
261256

262257
@override
263258
def _get_page_items(self) -> List[_T]:
264-
items = self.items
265-
if not items:
259+
result = self.result
260+
if not result:
266261
return []
267-
return items
262+
return result
268263

269264
@override
270265
def next_page_info(self) -> None:
@@ -274,25 +269,16 @@ def next_page_info(self) -> None:
274269
"""
275270
return None
276271

277-
@classmethod
278-
def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
279-
return cls.construct(
280-
None,
281-
**{
282-
**(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
283-
},
284-
)
285-
286272

287273
class AsyncSinglePage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
288-
items: List[_T]
274+
result: List[_T]
289275

290276
@override
291277
def _get_page_items(self) -> List[_T]:
292-
items = self.items
293-
if not items:
278+
result = self.result
279+
if not result:
294280
return []
295-
return items
281+
return result
296282

297283
@override
298284
def next_page_info(self) -> None:
@@ -301,12 +287,3 @@ def next_page_info(self) -> None:
301287
so there will never be a next page.
302288
"""
303289
return None
304-
305-
@classmethod
306-
def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
307-
return cls.construct(
308-
None,
309-
**{
310-
**(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
311-
},
312-
)

src/cloudflare/resources/accounts/roles.py

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Any, Type, Optional, cast
5+
from typing import Any, cast
66

77
import httpx
88

@@ -16,10 +16,12 @@
1616
async_to_streamed_response_wrapper,
1717
)
1818
from ..._wrappers import ResultWrapper
19+
from ...pagination import SyncSinglePage, AsyncSinglePage
1920
from ..._base_client import (
21+
AsyncPaginator,
2022
make_request_options,
2123
)
22-
from ...types.accounts import RoleGetResponse, RoleListResponse
24+
from ...types.accounts import Role, RoleGetResponse
2325

2426
__all__ = ["Roles", "AsyncRoles"]
2527

@@ -43,7 +45,7 @@ def list(
4345
extra_query: Query | None = None,
4446
extra_body: Body | None = None,
4547
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
46-
) -> Optional[RoleListResponse]:
48+
) -> SyncSinglePage[Role]:
4749
"""
4850
Get all available roles for an account.
4951
@@ -56,16 +58,13 @@ def list(
5658
5759
timeout: Override the client-level default timeout for this request, in seconds
5860
"""
59-
return self._get(
61+
return self._get_api_list(
6062
f"/accounts/{account_id}/roles",
63+
page=SyncSinglePage[Role],
6164
options=make_request_options(
62-
extra_headers=extra_headers,
63-
extra_query=extra_query,
64-
extra_body=extra_body,
65-
timeout=timeout,
66-
post_parser=ResultWrapper._unwrapper,
65+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
6766
),
68-
cast_to=cast(Type[Optional[RoleListResponse]], ResultWrapper[RoleListResponse]),
67+
model=Role,
6968
)
7069

7170
def get(
@@ -119,7 +118,7 @@ def with_raw_response(self) -> AsyncRolesWithRawResponse:
119118
def with_streaming_response(self) -> AsyncRolesWithStreamingResponse:
120119
return AsyncRolesWithStreamingResponse(self)
121120

122-
async def list(
121+
def list(
123122
self,
124123
*,
125124
account_id: object,
@@ -129,7 +128,7 @@ async def list(
129128
extra_query: Query | None = None,
130129
extra_body: Body | None = None,
131130
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
132-
) -> Optional[RoleListResponse]:
131+
) -> AsyncPaginator[Role, AsyncSinglePage[Role]]:
133132
"""
134133
Get all available roles for an account.
135134
@@ -142,16 +141,13 @@ async def list(
142141
143142
timeout: Override the client-level default timeout for this request, in seconds
144143
"""
145-
return await self._get(
144+
return self._get_api_list(
146145
f"/accounts/{account_id}/roles",
146+
page=AsyncSinglePage[Role],
147147
options=make_request_options(
148-
extra_headers=extra_headers,
149-
extra_query=extra_query,
150-
extra_body=extra_body,
151-
timeout=timeout,
152-
post_parser=ResultWrapper._unwrapper,
148+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
153149
),
154-
cast_to=cast(Type[Optional[RoleListResponse]], ResultWrapper[RoleListResponse]),
150+
model=Role,
155151
)
156152

157153
async def get(

src/cloudflare/resources/addressing/address_maps/address_maps.py

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@
4444
async_to_streamed_response_wrapper,
4545
)
4646
from ...._wrappers import ResultWrapper
47+
from ....pagination import SyncSinglePage, AsyncSinglePage
4748
from ...._base_client import (
49+
AsyncPaginator,
4850
make_request_options,
4951
)
5052
from ....types.addressing import (
5153
AddressingAddressMaps,
5254
AddressMapGetResponse,
53-
AddressMapListResponse,
5455
AddressMapCreateResponse,
5556
AddressMapDeleteResponse,
5657
address_map_edit_params,
@@ -145,7 +146,7 @@ def list(
145146
extra_query: Query | None = None,
146147
extra_body: Body | None = None,
147148
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
148-
) -> Optional[AddressMapListResponse]:
149+
) -> SyncSinglePage[AddressingAddressMaps]:
149150
"""
150151
List all address maps owned by the account.
151152
@@ -162,16 +163,13 @@ def list(
162163
"""
163164
if not account_id:
164165
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
165-
return self._get(
166+
return self._get_api_list(
166167
f"/accounts/{account_id}/addressing/address_maps",
168+
page=SyncSinglePage[AddressingAddressMaps],
167169
options=make_request_options(
168-
extra_headers=extra_headers,
169-
extra_query=extra_query,
170-
extra_body=extra_body,
171-
timeout=timeout,
172-
post_parser=ResultWrapper._unwrapper,
170+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
173171
),
174-
cast_to=cast(Type[Optional[AddressMapListResponse]], ResultWrapper[AddressMapListResponse]),
172+
model=AddressingAddressMaps,
175173
)
176174

177175
def delete(
@@ -412,7 +410,7 @@ async def create(
412410
cast_to=cast(Type[AddressMapCreateResponse], ResultWrapper[AddressMapCreateResponse]),
413411
)
414412

415-
async def list(
413+
def list(
416414
self,
417415
*,
418416
account_id: str,
@@ -422,7 +420,7 @@ async def list(
422420
extra_query: Query | None = None,
423421
extra_body: Body | None = None,
424422
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
425-
) -> Optional[AddressMapListResponse]:
423+
) -> AsyncPaginator[AddressingAddressMaps, AsyncSinglePage[AddressingAddressMaps]]:
426424
"""
427425
List all address maps owned by the account.
428426
@@ -439,16 +437,13 @@ async def list(
439437
"""
440438
if not account_id:
441439
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
442-
return await self._get(
440+
return self._get_api_list(
443441
f"/accounts/{account_id}/addressing/address_maps",
442+
page=AsyncSinglePage[AddressingAddressMaps],
444443
options=make_request_options(
445-
extra_headers=extra_headers,
446-
extra_query=extra_query,
447-
extra_body=extra_body,
448-
timeout=timeout,
449-
post_parser=ResultWrapper._unwrapper,
444+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
450445
),
451-
cast_to=cast(Type[Optional[AddressMapListResponse]], ResultWrapper[AddressMapListResponse]),
446+
model=AddressingAddressMaps,
452447
)
453448

454449
async def delete(

src/cloudflare/resources/addressing/prefixes/bgp/bindings.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,12 @@
2020
async_to_streamed_response_wrapper,
2121
)
2222
from ....._wrappers import ResultWrapper
23+
from .....pagination import SyncSinglePage, AsyncSinglePage
2324
from ....._base_client import (
25+
AsyncPaginator,
2426
make_request_options,
2527
)
26-
from .....types.addressing.prefixes.bgp import (
27-
BindingListResponse,
28-
BindingDeleteResponse,
29-
AddressingServiceBinding,
30-
binding_create_params,
31-
)
28+
from .....types.addressing.prefixes.bgp import BindingDeleteResponse, AddressingServiceBinding, binding_create_params
3229

3330
__all__ = ["Bindings", "AsyncBindings"]
3431

@@ -113,7 +110,7 @@ def list(
113110
extra_query: Query | None = None,
114111
extra_body: Body | None = None,
115112
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
116-
) -> BindingListResponse:
113+
) -> SyncSinglePage[AddressingServiceBinding]:
117114
"""List the Cloudflare services this prefix is currently bound to.
118115
119116
Traffic sent to
@@ -140,16 +137,13 @@ def list(
140137
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
141138
if not prefix_id:
142139
raise ValueError(f"Expected a non-empty value for `prefix_id` but received {prefix_id!r}")
143-
return self._get(
140+
return self._get_api_list(
144141
f"/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings",
142+
page=SyncSinglePage[AddressingServiceBinding],
145143
options=make_request_options(
146-
extra_headers=extra_headers,
147-
extra_query=extra_query,
148-
extra_body=extra_body,
149-
timeout=timeout,
150-
post_parser=ResultWrapper._unwrapper,
144+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
151145
),
152-
cast_to=cast(Type[BindingListResponse], ResultWrapper[BindingListResponse]),
146+
model=AddressingServiceBinding,
153147
)
154148

155149
def delete(
@@ -325,7 +319,7 @@ async def create(
325319
cast_to=cast(Type[AddressingServiceBinding], ResultWrapper[AddressingServiceBinding]),
326320
)
327321

328-
async def list(
322+
def list(
329323
self,
330324
prefix_id: str,
331325
*,
@@ -336,7 +330,7 @@ async def list(
336330
extra_query: Query | None = None,
337331
extra_body: Body | None = None,
338332
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
339-
) -> BindingListResponse:
333+
) -> AsyncPaginator[AddressingServiceBinding, AsyncSinglePage[AddressingServiceBinding]]:
340334
"""List the Cloudflare services this prefix is currently bound to.
341335
342336
Traffic sent to
@@ -363,16 +357,13 @@ async def list(
363357
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
364358
if not prefix_id:
365359
raise ValueError(f"Expected a non-empty value for `prefix_id` but received {prefix_id!r}")
366-
return await self._get(
360+
return self._get_api_list(
367361
f"/accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings",
362+
page=AsyncSinglePage[AddressingServiceBinding],
368363
options=make_request_options(
369-
extra_headers=extra_headers,
370-
extra_query=extra_query,
371-
extra_body=extra_body,
372-
timeout=timeout,
373-
post_parser=ResultWrapper._unwrapper,
364+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
374365
),
375-
cast_to=cast(Type[BindingListResponse], ResultWrapper[BindingListResponse]),
366+
model=AddressingServiceBinding,
376367
)
377368

378369
async def delete(

0 commit comments

Comments
 (0)