Skip to content

Commit ee9ea5b

Browse files
chore: 🐝 Update SDK - Generate SDK 2.0.4
1 parent 16b0dbe commit ee9ea5b

9 files changed

Lines changed: 76 additions & 42 deletions

File tree

.speakeasy/gen.lock

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
lockVersion: 2.0.0
22
id: 833c6a67-4a4a-4ef1-ba24-165a29264e4a
33
management:
4-
docChecksum: e715865015dd173dbd0a81712f3bcdcd
4+
docChecksum: a94fd5224c555d2fad8b04cb94468ddc
55
docVersion: 1.0.0
6-
speakeasyVersion: 1.759.3
7-
generationVersion: 2.869.25
8-
releaseVersion: 2.0.3
9-
configChecksum: 737ae2ba9fd7efe4efdfc2f3857978b4
6+
speakeasyVersion: 1.760.0
7+
generationVersion: 2.873.1
8+
releaseVersion: 2.0.4
9+
configChecksum: 98ca99eb2a36dffce5f63acf3c810c5c
1010
repoURL: https://github.com/gr4vy/gr4vy-python.git
1111
installationURL: https://github.com/gr4vy/gr4vy-python.git
1212
published: true
1313
persistentEdits:
14-
generation_id: 87164e11-a21d-4173-9386-dbedecbb6435
15-
pristine_commit_hash: 308e5de00c849f3c793dc78bc202227e82a15af3
16-
pristine_tree_hash: 3c2de2b40ce4121d2301e69bd9fda58a4f0a5aab
14+
generation_id: 4bd304f1-5a95-49a8-b897-c5066f6d2cd6
15+
pristine_commit_hash: 1f657a809b2d3987767f7ff7c63cdbd1dff1a8e1
16+
pristine_tree_hash: c9d482512701994d597c0539a37cb401da4dafb3
1717
features:
1818
python:
1919
additionalDependencies: 1.0.0
@@ -24,7 +24,7 @@ features:
2424
envVarSecurityUsage: 0.3.2
2525
flatRequests: 1.0.1
2626
flattening: 3.1.1
27-
globalSecurity: 3.0.5
27+
globalSecurity: 3.0.7
2828
globalSecurityCallbacks: 1.0.0
2929
globalSecurityFlattening: 1.0.0
3030
globalServerURLs: 3.2.1
@@ -2416,8 +2416,8 @@ trackedFiles:
24162416
pristine_git_object: cb9c15d314c1930557401074329ed7a737147919
24172417
pyproject.toml:
24182418
id: 5d07e7d72637
2419-
last_write_checksum: sha1:936537f0d97aca6f0203386740561fff5f2ab29e
2420-
pristine_git_object: 2be7d4bd693e59d8bd1610d94a950b0915d3a458
2419+
last_write_checksum: sha1:e7466fcfa291c8308ccff9f69c57759c6bee7a8d
2420+
pristine_git_object: 9ffe0c03d3c4677b8e6fdb3de6b2f9e930af18f1
24212421
scripts/prepare_readme.py:
24222422
id: e0c5957a6035
24232423
last_write_checksum: sha1:63a92abbd1de3323613f0d4c1ae4412076577710
@@ -2444,8 +2444,8 @@ trackedFiles:
24442444
pristine_git_object: 83a0d00f9b5b1a6d837643a32bfd0f82cd4f98ce
24452445
src/gr4vy/_version.py:
24462446
id: 1b5ad1da47aa
2447-
last_write_checksum: sha1:6087c70b913c93395bcf4efc5b2ee00a0d200a14
2448-
pristine_git_object: b5f3b081ca0408648b17794346271cf52037b21d
2447+
last_write_checksum: sha1:ea2d4409bc194e384f073489b9008174d9c5d463
2448+
pristine_git_object: 4482736a2fa23b3f5e725b75cad64f0f28b3a358
24492449
src/gr4vy/account_updater.py:
24502450
id: 6dc8f39e2fb9
24512451
last_write_checksum: sha1:fabc79a59dd06fb927ce2d834fbafbcad5836a4b
@@ -2468,8 +2468,8 @@ trackedFiles:
24682468
pristine_git_object: 93727063293c64b3f5a6ecce8d52ddca19a262b3
24692469
src/gr4vy/basesdk.py:
24702470
id: c0a7e53766ee
2471-
last_write_checksum: sha1:87f9966328fbf1dcf934553a6a7cf153bf2a7fce
2472-
pristine_git_object: c8883b3c4895d576563a6206d8824669577de2a1
2471+
last_write_checksum: sha1:7b335cd29baecab4338d7bd053a9566092aed8d1
2472+
pristine_git_object: 8173a918a11c9561813c2142e9e15ec074018cc4
24732473
src/gr4vy/buyers_gift_cards.py:
24742474
id: 7e27f7deeab1
24752475
last_write_checksum: sha1:93956d90c2092bd10ec004a24bd583f7e44ca221
@@ -4320,8 +4320,8 @@ trackedFiles:
43204320
pristine_git_object: 3decb45d9a7fdb5df70ea7cd7ccc24b822676a2f
43214321
src/gr4vy/utils/metadata.py:
43224322
id: 3cd24adb750a
4323-
last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4
4324-
pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d
4323+
last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8
4324+
pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9
43254325
src/gr4vy/utils/queryparams.py:
43264326
id: e54a34bef481
43274327
last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59
@@ -4336,8 +4336,8 @@ trackedFiles:
43364336
pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e
43374337
src/gr4vy/utils/security.py:
43384338
id: 648156d4ba48
4339-
last_write_checksum: sha1:1dd7e0af4f931ca6683a6f889b2d1c8a241b0950
4340-
pristine_git_object: 7ae8c4414a48c9876c13f0c94b2228ff00d7d563
4339+
last_write_checksum: sha1:8f2a2aef55d9cf6eb91a7a752d3b22ff83e98312
4340+
pristine_git_object: e6358e87066f4664af963197eb863feb377cf1d3
43414341
src/gr4vy/utils/serializers.py:
43424342
id: fc34f2ffef43
43434343
last_write_checksum: sha1:ce1d8d7f500a9ccba0aeca5057cee9c271f4dfd7
@@ -8081,11 +8081,6 @@ examples:
80818081
application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"}
80828082
examplesVersion: 1.0.2
80838083
generatedTests: {}
8084-
releaseNotes: |
8085-
## Python SDK Changes:
8086-
* `gr4vy.transactions.create()`: `request.connection_options` **Changed**
8087-
* `gr4vy.transactions.update()`: `request.connection_options` **Changed**
8088-
* `gr4vy.payment_links.create()`: `request.connection_options` **Changed**
80898084
generatedFiles:
80908085
- .gitattributes
80918086
- .vscode/settings.json

.speakeasy/gen.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ generation:
2929
generateNewTests: false
3030
skipResponseBodyAssertions: false
3131
python:
32-
version: 2.0.3
32+
version: 2.0.4
3333
additionalDependencies:
3434
dev:
3535
freezegun: ^1.5.1

.speakeasy/workflow.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
speakeasyVersion: 1.759.3
1+
speakeasyVersion: 1.760.0
22
sources:
33
openapi:
44
sourceNamespace: openapi
5-
sourceRevisionDigest: sha256:2698a355660f07f029d4d1ab61cc9690c9e356bdeb59578bf2b0e7eb4a94c1de
6-
sourceBlobDigest: sha256:afe129ee8d7c8c6b4700eadf8d367628a05d540fae5b1cb1315a0b6848c97f47
5+
sourceRevisionDigest: sha256:135e13126522eb29aeeeec61a35b9ec02ca433f385f4df3213427f91a6695a90
6+
sourceBlobDigest: sha256:34fc9481206b0b3053e3e583b299e558e3169d66873e6e63c80288e939d4179f
77
tags:
88
- latest
99
- 1.0.0
1010
targets:
1111
python:
1212
source: openapi
1313
sourceNamespace: openapi
14-
sourceRevisionDigest: sha256:2698a355660f07f029d4d1ab61cc9690c9e356bdeb59578bf2b0e7eb4a94c1de
15-
sourceBlobDigest: sha256:afe129ee8d7c8c6b4700eadf8d367628a05d540fae5b1cb1315a0b6848c97f47
14+
sourceRevisionDigest: sha256:135e13126522eb29aeeeec61a35b9ec02ca433f385f4df3213427f91a6695a90
15+
sourceBlobDigest: sha256:34fc9481206b0b3053e3e583b299e558e3169d66873e6e63c80288e939d4179f
1616
codeSamplesNamespace: openapi-python-code-samples
17-
codeSamplesRevisionDigest: sha256:9ce1e861e664c317994fdecf999b633f0efa69a8a22ba7ba73734cd613b802e8
17+
codeSamplesRevisionDigest: sha256:d64b148acc860b6c84b60fbfd5588c6f63be88e382073e407cfc1ec7c09bc7fe
1818
workflow:
1919
workflowVersion: 1.0.0
2020
speakeasyVersion: latest

RELEASES.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1468,4 +1468,14 @@ Based on:
14681468
### Generated
14691469
- [python v2.0.3] .
14701470
### Releases
1471-
- [PyPI v2.0.3] https://pypi.org/project/gr4vy/2.0.3 - .
1471+
- [PyPI v2.0.3] https://pypi.org/project/gr4vy/2.0.3 - .
1472+
1473+
## 2026-03-30 16:15:00
1474+
### Changes
1475+
Based on:
1476+
- OpenAPI Doc
1477+
- Speakeasy CLI 1.760.0 (2.873.1) https://github.com/speakeasy-api/speakeasy
1478+
### Generated
1479+
- [python v2.0.4] .
1480+
### Releases
1481+
- [PyPI v2.0.4] https://pypi.org/project/gr4vy/2.0.4 - .

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
[project]
33
name = "gr4vy"
4-
version = "2.0.3"
4+
version = "2.0.4"
55
description = "Python Client SDK Generated by Speakeasy."
66
authors = [{ name = "Gr4vy" },]
77
readme = "README-PYPI.md"

src/gr4vy/_version.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import importlib.metadata
44

55
__title__: str = "gr4vy"
6-
__version__: str = "2.0.3"
6+
__version__: str = "2.0.4"
77
__openapi_doc_version__: str = "1.0.0"
8-
__gen_version__: str = "2.869.25"
9-
__user_agent__: str = "speakeasy-sdk/python 2.0.3 2.869.25 1.0.0 gr4vy"
8+
__gen_version__: str = "2.873.1"
9+
__user_agent__: str = "speakeasy-sdk/python 2.0.4 2.873.1 1.0.0 gr4vy"
1010

1111
try:
1212
if __package__ is not None:

src/gr4vy/basesdk.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def _build_request_async(
6262
url_override: Optional[str] = None,
6363
http_headers: Optional[Mapping[str, str]] = None,
6464
allow_empty_value: Optional[List[str]] = None,
65+
allowed_fields: Optional[List[str]] = None,
6566
) -> httpx.Request:
6667
client = self.sdk_configuration.async_client
6768
return self._build_request_with_client(
@@ -83,6 +84,7 @@ def _build_request_async(
8384
url_override,
8485
http_headers,
8586
allow_empty_value,
87+
allowed_fields,
8688
)
8789

8890
def _build_request(
@@ -106,6 +108,7 @@ def _build_request(
106108
url_override: Optional[str] = None,
107109
http_headers: Optional[Mapping[str, str]] = None,
108110
allow_empty_value: Optional[List[str]] = None,
111+
allowed_fields: Optional[List[str]] = None,
109112
) -> httpx.Request:
110113
client = self.sdk_configuration.client
111114
return self._build_request_with_client(
@@ -127,6 +130,7 @@ def _build_request(
127130
url_override,
128131
http_headers,
129132
allow_empty_value,
133+
allowed_fields,
130134
)
131135

132136
def _build_request_with_client(
@@ -151,6 +155,7 @@ def _build_request_with_client(
151155
url_override: Optional[str] = None,
152156
http_headers: Optional[Mapping[str, str]] = None,
153157
allow_empty_value: Optional[List[str]] = None,
158+
allowed_fields: Optional[List[str]] = None,
154159
) -> httpx.Request:
155160
query_params = {}
156161

@@ -184,7 +189,9 @@ def _build_request_with_client(
184189
security = security()
185190
security = utils.get_security_from_env(security, models.Security)
186191
if security is not None:
187-
security_headers, security_query_params = utils.get_security(security)
192+
security_headers, security_query_params = utils.get_security(
193+
security, allowed_fields
194+
)
188195
headers = {**headers, **security_headers}
189196
query_params = {**query_params, **security_query_params}
190197

src/gr4vy/utils/metadata.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class SecurityMetadata:
1515
scheme_type: Optional[str] = None
1616
sub_type: Optional[str] = None
1717
field_name: Optional[str] = None
18+
composite: bool = False
1819

1920
def get_field_name(self, default: str) -> str:
2021
return self.field_name or default

src/gr4vy/utils/security.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import os
2020

2121

22-
def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]:
22+
def get_security(
23+
security: Any, allowed_fields: Optional[List[str]] = None
24+
) -> Tuple[Dict[str, str], Dict[str, List[str]]]:
2325
headers: Dict[str, str] = {}
2426
query_params: Dict[str, List[str]] = {}
2527

@@ -30,7 +32,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]:
3032
raise TypeError("security must be a pydantic model")
3133

3234
sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields
33-
for name in sec_fields:
35+
sec_field_names = (
36+
list(sec_fields.keys()) if allowed_fields is None else allowed_fields
37+
)
38+
39+
for name in sec_field_names:
40+
if name not in sec_fields:
41+
continue
42+
3443
sec_field = sec_fields[name]
3544

3645
value = getattr(security, name)
@@ -52,6 +61,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]:
5261
else:
5362
_parse_security_scheme(headers, query_params, metadata, name, value)
5463

64+
if not metadata.composite:
65+
return headers, query_params
66+
5567
return headers, query_params
5668

5769

@@ -77,15 +89,24 @@ def _parse_security_option(
7789
raise TypeError("security option must be a pydantic model")
7890

7991
opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields
92+
8093
for name in opt_fields:
8194
opt_field = opt_fields[name]
8295

8396
metadata = find_field_metadata(opt_field, SecurityMetadata)
8497
if metadata is None or not metadata.scheme:
8598
continue
86-
_parse_security_scheme(
87-
headers, query_params, metadata, name, getattr(option, name)
88-
)
99+
100+
value = getattr(option, name)
101+
if (
102+
metadata.scheme_type == "http"
103+
and metadata.sub_type == "basic"
104+
and not isinstance(value, BaseModel)
105+
):
106+
_parse_basic_auth_scheme(headers, option)
107+
return
108+
109+
_parse_security_scheme(headers, query_params, metadata, name, value)
89110

90111

91112
def _parse_security_scheme(

0 commit comments

Comments
 (0)