Skip to content

Commit 13403a2

Browse files
stainless-app[bot]stainless-bot
authored andcommitted
feat(api): update via SDK Studio (#339)
1 parent 8aa19d4 commit 13403a2

File tree

10 files changed

+40
-34
lines changed

10 files changed

+40
-34
lines changed

api.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ from cloudflare.types import (
55
AuditLog,
66
CloudflareTunnel,
77
ErrorData,
8-
IamMember,
98
Identifier,
109
LoadBalancerPreview,
10+
Member,
1111
PaginationInfo,
1212
Permission,
1313
PermissionGrant,
@@ -47,10 +47,10 @@ from cloudflare.types.accounts import UserWithInviteCode, MemberListResponse, Me
4747
Methods:
4848

4949
- <code title="post /accounts/{account_id}/members">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">create</a>(\*, account_id, \*\*<a href="src/cloudflare/types/accounts/member_create_params.py">params</a>) -> <a href="./src/cloudflare/types/accounts/user_with_invite_code.py">UserWithInviteCode</a></code>
50-
- <code title="put /accounts/{account_id}/members/{member_id}">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">update</a>(member_id, \*, account_id, \*\*<a href="src/cloudflare/types/accounts/member_update_params.py">params</a>) -> <a href="./src/cloudflare/types/shared/iam_member.py">IamMember</a></code>
50+
- <code title="put /accounts/{account_id}/members/{member_id}">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">update</a>(member_id, \*, account_id, \*\*<a href="src/cloudflare/types/accounts/member_update_params.py">params</a>) -> <a href="./src/cloudflare/types/shared/member.py">Member</a></code>
5151
- <code title="get /accounts/{account_id}/members">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">list</a>(\*, account_id, \*\*<a href="src/cloudflare/types/accounts/member_list_params.py">params</a>) -> <a href="./src/cloudflare/types/accounts/member_list_response.py">SyncV4PagePaginationArray[MemberListResponse]</a></code>
5252
- <code title="delete /accounts/{account_id}/members/{member_id}">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">delete</a>(member_id, \*, account_id, \*\*<a href="src/cloudflare/types/accounts/member_delete_params.py">params</a>) -> <a href="./src/cloudflare/types/accounts/member_delete_response.py">Optional</a></code>
53-
- <code title="get /accounts/{account_id}/members/{member_id}">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">get</a>(member_id, \*, account_id) -> <a href="./src/cloudflare/types/shared/iam_member.py">IamMember</a></code>
53+
- <code title="get /accounts/{account_id}/members/{member_id}">client.accounts.members.<a href="./src/cloudflare/resources/accounts/members.py">get</a>(member_id, \*, account_id) -> <a href="./src/cloudflare/types/shared/member.py">Member</a></code>
5454

5555
## Roles
5656

pyproject.toml

+6-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ select = [
162162
"T201",
163163
"T203",
164164
# misuse of typing.TYPE_CHECKING
165-
"TCH004"
165+
"TCH004",
166+
# import rules
167+
"TID251",
166168
]
167169
ignore = [
168170
# mutable defaults
@@ -178,6 +180,9 @@ ignore-init-module-imports = true
178180
[tool.ruff.format]
179181
docstring-code-format = true
180182

183+
[tool.ruff.lint.flake8-tidy-imports.banned-api]
184+
"functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
185+
181186
[tool.ruff.lint.isort]
182187
length-sort = true
183188
length-sort-straight = true

src/cloudflare/_base_client.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
cast,
3030
overload,
3131
)
32-
from functools import lru_cache
3332
from typing_extensions import Literal, override, get_origin
3433

3534
import anyio
@@ -61,7 +60,7 @@
6160
RequestOptions,
6261
ModelBuilderProtocol,
6362
)
64-
from ._utils import is_dict, is_list, is_given, is_mapping
63+
from ._utils import is_dict, is_list, is_given, lru_cache, is_mapping
6564
from ._compat import model_copy, model_dump
6665
from ._models import GenericModel, FinalRequestOptions, validate_type, construct_type
6766
from ._response import (

src/cloudflare/_models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import inspect
55
from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, cast
66
from datetime import date, datetime
7-
from functools import lru_cache
87
from typing_extensions import (
98
Unpack,
109
Literal,
@@ -37,6 +36,7 @@
3736
PropertyInfo,
3837
is_list,
3938
is_given,
39+
lru_cache,
4040
is_mapping,
4141
parse_date,
4242
coerce_boolean,

src/cloudflare/_utils/_utils.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -395,5 +395,7 @@ def lru_cache(*, maxsize: int | None = 128) -> Callable[[CallableT], CallableT]:
395395
"""A version of functools.lru_cache that retains the type signature
396396
for the wrapped function arguments.
397397
"""
398-
wrapper = functools.lru_cache(maxsize=maxsize)
398+
wrapper = functools.lru_cache( # noqa: TID251
399+
maxsize=maxsize,
400+
)
399401
return cast(Any, wrapper) # type: ignore[no-any-return]

src/cloudflare/resources/accounts/members.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
AsyncPaginator,
2727
make_request_options,
2828
)
29-
from ...types.shared import IamMember
29+
from ...types.shared import Member
3030
from ...types.accounts import (
3131
MemberListResponse,
3232
UserWithInviteCode,
@@ -111,7 +111,7 @@ def update(
111111
extra_query: Query | None = None,
112112
extra_body: Body | None = None,
113113
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
114-
) -> IamMember:
114+
) -> Member:
115115
"""
116116
Modify an account member.
117117
@@ -140,7 +140,7 @@ def update(
140140
timeout=timeout,
141141
post_parser=ResultWrapper._unwrapper,
142142
),
143-
cast_to=cast(Type[IamMember], ResultWrapper[IamMember]),
143+
cast_to=cast(Type[Member], ResultWrapper[Member]),
144144
)
145145

146146
def list(
@@ -256,7 +256,7 @@ def get(
256256
extra_query: Query | None = None,
257257
extra_body: Body | None = None,
258258
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
259-
) -> IamMember:
259+
) -> Member:
260260
"""
261261
Get information about a specific member of an account.
262262
@@ -282,7 +282,7 @@ def get(
282282
timeout=timeout,
283283
post_parser=ResultWrapper._unwrapper,
284284
),
285-
cast_to=cast(Type[IamMember], ResultWrapper[IamMember]),
285+
cast_to=cast(Type[Member], ResultWrapper[Member]),
286286
)
287287

288288

@@ -357,7 +357,7 @@ async def update(
357357
extra_query: Query | None = None,
358358
extra_body: Body | None = None,
359359
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
360-
) -> IamMember:
360+
) -> Member:
361361
"""
362362
Modify an account member.
363363
@@ -386,7 +386,7 @@ async def update(
386386
timeout=timeout,
387387
post_parser=ResultWrapper._unwrapper,
388388
),
389-
cast_to=cast(Type[IamMember], ResultWrapper[IamMember]),
389+
cast_to=cast(Type[Member], ResultWrapper[Member]),
390390
)
391391

392392
def list(
@@ -502,7 +502,7 @@ async def get(
502502
extra_query: Query | None = None,
503503
extra_body: Body | None = None,
504504
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
505-
) -> IamMember:
505+
) -> Member:
506506
"""
507507
Get information about a specific member of an account.
508508
@@ -528,7 +528,7 @@ async def get(
528528
timeout=timeout,
529529
post_parser=ResultWrapper._unwrapper,
530530
),
531-
cast_to=cast(Type[IamMember], ResultWrapper[IamMember]),
531+
cast_to=cast(Type[Member], ResultWrapper[Member]),
532532
)
533533

534534

src/cloudflare/types/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
from .shared import (
66
Role as Role,
7+
Member as Member,
78
Result as Result,
89
AuditLog as AuditLog,
910
ErrorData as ErrorData,
10-
IamMember as IamMember,
1111
Identifier as Identifier,
1212
Permission as Permission,
1313
ResponseInfo as ResponseInfo,

src/cloudflare/types/shared/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
from .role import Role as Role
4+
from .member import Member as Member
45
from .result import Result as Result
56
from .audit_log import AuditLog as AuditLog
67
from .error_data import ErrorData as ErrorData
7-
from .iam_member import IamMember as IamMember
88
from .identifier import Identifier as Identifier
99
from .permission import Permission as Permission
1010
from .response_info import ResponseInfo as ResponseInfo

src/cloudflare/types/shared/iam_member.py src/cloudflare/types/shared/member.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from ..._models import BaseModel
66
from .permission_grant import PermissionGrant
77

8-
__all__ = ["IamMember", "Role", "RolePermissions", "User"]
8+
__all__ = ["Member", "Role", "RolePermissions", "User"]
99

1010

1111
class RolePermissions(BaseModel):
@@ -67,7 +67,7 @@ class User(BaseModel):
6767
"""
6868

6969

70-
class IamMember(BaseModel):
70+
class Member(BaseModel):
7171
id: str
7272
"""Membership identifier tag."""
7373

tests/api_resources/accounts/test_members.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from cloudflare import Cloudflare, AsyncCloudflare
1111
from tests.utils import assert_matches_type
1212
from cloudflare.pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
13-
from cloudflare.types.shared import IamMember
13+
from cloudflare.types.shared import Member
1414
from cloudflare.types.accounts import (
1515
MemberListResponse,
1616
UserWithInviteCode,
@@ -102,7 +102,7 @@ def test_method_update(self, client: Cloudflare) -> None:
102102
{"id": "3536bcfad5faccb999b47003c79917fb"},
103103
],
104104
)
105-
assert_matches_type(IamMember, member, path=["response"])
105+
assert_matches_type(Member, member, path=["response"])
106106

107107
@pytest.mark.skip()
108108
@parametrize
@@ -120,7 +120,7 @@ def test_raw_response_update(self, client: Cloudflare) -> None:
120120
assert response.is_closed is True
121121
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
122122
member = response.parse()
123-
assert_matches_type(IamMember, member, path=["response"])
123+
assert_matches_type(Member, member, path=["response"])
124124

125125
@pytest.mark.skip()
126126
@parametrize
@@ -138,7 +138,7 @@ def test_streaming_response_update(self, client: Cloudflare) -> None:
138138
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
139139

140140
member = response.parse()
141-
assert_matches_type(IamMember, member, path=["response"])
141+
assert_matches_type(Member, member, path=["response"])
142142

143143
assert cast(Any, response.is_closed) is True
144144

@@ -260,7 +260,7 @@ def test_method_get(self, client: Cloudflare) -> None:
260260
"4536bcfad5faccb111b47003c79917fa",
261261
account_id={},
262262
)
263-
assert_matches_type(IamMember, member, path=["response"])
263+
assert_matches_type(Member, member, path=["response"])
264264

265265
@pytest.mark.skip()
266266
@parametrize
@@ -273,7 +273,7 @@ def test_raw_response_get(self, client: Cloudflare) -> None:
273273
assert response.is_closed is True
274274
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
275275
member = response.parse()
276-
assert_matches_type(IamMember, member, path=["response"])
276+
assert_matches_type(Member, member, path=["response"])
277277

278278
@pytest.mark.skip()
279279
@parametrize
@@ -286,7 +286,7 @@ def test_streaming_response_get(self, client: Cloudflare) -> None:
286286
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
287287

288288
member = response.parse()
289-
assert_matches_type(IamMember, member, path=["response"])
289+
assert_matches_type(Member, member, path=["response"])
290290

291291
assert cast(Any, response.is_closed) is True
292292

@@ -382,7 +382,7 @@ async def test_method_update(self, async_client: AsyncCloudflare) -> None:
382382
{"id": "3536bcfad5faccb999b47003c79917fb"},
383383
],
384384
)
385-
assert_matches_type(IamMember, member, path=["response"])
385+
assert_matches_type(Member, member, path=["response"])
386386

387387
@pytest.mark.skip()
388388
@parametrize
@@ -400,7 +400,7 @@ async def test_raw_response_update(self, async_client: AsyncCloudflare) -> None:
400400
assert response.is_closed is True
401401
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
402402
member = await response.parse()
403-
assert_matches_type(IamMember, member, path=["response"])
403+
assert_matches_type(Member, member, path=["response"])
404404

405405
@pytest.mark.skip()
406406
@parametrize
@@ -418,7 +418,7 @@ async def test_streaming_response_update(self, async_client: AsyncCloudflare) ->
418418
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
419419

420420
member = await response.parse()
421-
assert_matches_type(IamMember, member, path=["response"])
421+
assert_matches_type(Member, member, path=["response"])
422422

423423
assert cast(Any, response.is_closed) is True
424424

@@ -540,7 +540,7 @@ async def test_method_get(self, async_client: AsyncCloudflare) -> None:
540540
"4536bcfad5faccb111b47003c79917fa",
541541
account_id={},
542542
)
543-
assert_matches_type(IamMember, member, path=["response"])
543+
assert_matches_type(Member, member, path=["response"])
544544

545545
@pytest.mark.skip()
546546
@parametrize
@@ -553,7 +553,7 @@ async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
553553
assert response.is_closed is True
554554
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
555555
member = await response.parse()
556-
assert_matches_type(IamMember, member, path=["response"])
556+
assert_matches_type(Member, member, path=["response"])
557557

558558
@pytest.mark.skip()
559559
@parametrize
@@ -566,7 +566,7 @@ async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> No
566566
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
567567

568568
member = await response.parse()
569-
assert_matches_type(IamMember, member, path=["response"])
569+
assert_matches_type(Member, member, path=["response"])
570570

571571
assert cast(Any, response.is_closed) is True
572572

0 commit comments

Comments
 (0)