gr4vy 1.1.35__py3-none-any.whl → 1.2.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.
- gr4vy/_version.py +3 -3
- gr4vy/account_updater.py +6 -3
- gr4vy/basesdk.py +11 -1
- gr4vy/buyers_sdk.py +13 -5
- gr4vy/digital_wallets_sdk.py +6 -4
- gr4vy/errors/__init__.py +15 -3
- gr4vy/gift_cards_sdk.py +5 -3
- gr4vy/models/__init__.py +14 -1
- gr4vy/models/internal/__init__.py +14 -1
- gr4vy/models/transactionevent.py +1 -0
- gr4vy/payment_methods_network_tokens.py +7 -3
- gr4vy/payment_methods_sdk.py +8 -4
- gr4vy/reports_sdk.py +5 -3
- gr4vy/sdk.py +15 -2
- gr4vy/transactions.py +11 -5
- gr4vy/transactions_refunds.py +5 -3
- gr4vy/utils/__init__.py +15 -3
- gr4vy/utils/eventstreaming.py +10 -0
- {gr4vy-1.1.35.dist-info → gr4vy-1.2.0.dist-info}/METADATA +1 -1
- {gr4vy-1.1.35.dist-info → gr4vy-1.2.0.dist-info}/RECORD +21 -21
- {gr4vy-1.1.35.dist-info → gr4vy-1.2.0.dist-info}/WHEEL +0 -0
gr4vy/_version.py
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import importlib.metadata
|
|
4
4
|
|
|
5
5
|
__title__: str = "gr4vy"
|
|
6
|
-
__version__: str = "1.
|
|
6
|
+
__version__: str = "1.2.0"
|
|
7
7
|
__openapi_doc_version__: str = "1.0.0"
|
|
8
|
-
__gen_version__: str = "2.
|
|
9
|
-
__user_agent__: str = "speakeasy-sdk/python 1.
|
|
8
|
+
__gen_version__: str = "2.687.13"
|
|
9
|
+
__user_agent__: str = "speakeasy-sdk/python 1.2.0 2.687.13 1.0.0 gr4vy"
|
|
10
10
|
|
|
11
11
|
try:
|
|
12
12
|
if __package__ is not None:
|
gr4vy/account_updater.py
CHANGED
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
from .basesdk import BaseSDK
|
|
4
4
|
from .sdkconfiguration import SDKConfiguration
|
|
5
5
|
from gr4vy.jobs import Jobs
|
|
6
|
+
from typing import Optional
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class AccountUpdater(BaseSDK):
|
|
9
10
|
jobs: Jobs
|
|
10
11
|
|
|
11
|
-
def __init__(
|
|
12
|
-
|
|
12
|
+
def __init__(
|
|
13
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
14
|
+
) -> None:
|
|
15
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
13
16
|
self.sdk_configuration = sdk_config
|
|
14
17
|
self._init_sdks()
|
|
15
18
|
|
|
16
19
|
def _init_sdks(self):
|
|
17
|
-
self.jobs = Jobs(self.sdk_configuration)
|
|
20
|
+
self.jobs = Jobs(self.sdk_configuration, parent_ref=self.parent_ref)
|
gr4vy/basesdk.py
CHANGED
|
@@ -11,9 +11,19 @@ from urllib.parse import parse_qs, urlparse
|
|
|
11
11
|
|
|
12
12
|
class BaseSDK:
|
|
13
13
|
sdk_configuration: SDKConfiguration
|
|
14
|
+
parent_ref: Optional[object] = None
|
|
15
|
+
"""
|
|
16
|
+
Reference to the root SDK instance, if any. This will prevent it from
|
|
17
|
+
being garbage collected while there are active streams.
|
|
18
|
+
"""
|
|
14
19
|
|
|
15
|
-
def __init__(
|
|
20
|
+
def __init__(
|
|
21
|
+
self,
|
|
22
|
+
sdk_config: SDKConfiguration,
|
|
23
|
+
parent_ref: Optional[object] = None,
|
|
24
|
+
) -> None:
|
|
16
25
|
self.sdk_configuration = sdk_config
|
|
26
|
+
self.parent_ref = parent_ref
|
|
17
27
|
|
|
18
28
|
def _get_url(self, base_url, url_variables):
|
|
19
29
|
sdk_url, sdk_variables = self.sdk_configuration.get_server_details()
|
gr4vy/buyers_sdk.py
CHANGED
|
@@ -19,15 +19,23 @@ class BuyersSDK(BaseSDK):
|
|
|
19
19
|
gift_cards: BuyersGiftCards
|
|
20
20
|
shipping_details: BuyersShippingDetails
|
|
21
21
|
|
|
22
|
-
def __init__(
|
|
23
|
-
|
|
22
|
+
def __init__(
|
|
23
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
24
|
+
) -> None:
|
|
25
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
24
26
|
self.sdk_configuration = sdk_config
|
|
25
27
|
self._init_sdks()
|
|
26
28
|
|
|
27
29
|
def _init_sdks(self):
|
|
28
|
-
self.payment_methods = BuyersPaymentMethods(
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
self.payment_methods = BuyersPaymentMethods(
|
|
31
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
32
|
+
)
|
|
33
|
+
self.gift_cards = BuyersGiftCards(
|
|
34
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
35
|
+
)
|
|
36
|
+
self.shipping_details = BuyersShippingDetails(
|
|
37
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
38
|
+
)
|
|
31
39
|
|
|
32
40
|
def list(
|
|
33
41
|
self,
|
gr4vy/digital_wallets_sdk.py
CHANGED
|
@@ -16,14 +16,16 @@ class DigitalWalletsSDK(BaseSDK):
|
|
|
16
16
|
sessions: Sessions
|
|
17
17
|
domains: Domains
|
|
18
18
|
|
|
19
|
-
def __init__(
|
|
20
|
-
|
|
19
|
+
def __init__(
|
|
20
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
21
|
+
) -> None:
|
|
22
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
21
23
|
self.sdk_configuration = sdk_config
|
|
22
24
|
self._init_sdks()
|
|
23
25
|
|
|
24
26
|
def _init_sdks(self):
|
|
25
|
-
self.sessions = Sessions(self.sdk_configuration)
|
|
26
|
-
self.domains = Domains(self.sdk_configuration)
|
|
27
|
+
self.sessions = Sessions(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
28
|
+
self.domains = Domains(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
27
29
|
|
|
28
30
|
def create(
|
|
29
31
|
self,
|
gr4vy/errors/__init__.py
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
|
+
from .gr4vyerror import Gr4vyError
|
|
3
4
|
from typing import TYPE_CHECKING
|
|
4
5
|
from importlib import import_module
|
|
5
6
|
import builtins
|
|
7
|
+
import sys
|
|
6
8
|
|
|
7
9
|
if TYPE_CHECKING:
|
|
8
10
|
from .apierror import APIError
|
|
@@ -17,7 +19,6 @@ if TYPE_CHECKING:
|
|
|
17
19
|
from .error500 import Error500, Error500Data
|
|
18
20
|
from .error502 import Error502, Error502Data
|
|
19
21
|
from .error504 import Error504, Error504Data
|
|
20
|
-
from .gr4vyerror import Gr4vyError
|
|
21
22
|
from .httpvalidationerror import HTTPValidationError, HTTPValidationErrorData
|
|
22
23
|
from .no_response_error import NoResponseError
|
|
23
24
|
from .responsevalidationerror import ResponseValidationError
|
|
@@ -77,7 +78,6 @@ _dynamic_imports: dict[str, str] = {
|
|
|
77
78
|
"Error502Data": ".error502",
|
|
78
79
|
"Error504": ".error504",
|
|
79
80
|
"Error504Data": ".error504",
|
|
80
|
-
"Gr4vyError": ".gr4vyerror",
|
|
81
81
|
"HTTPValidationError": ".httpvalidationerror",
|
|
82
82
|
"HTTPValidationErrorData": ".httpvalidationerror",
|
|
83
83
|
"NoResponseError": ".no_response_error",
|
|
@@ -85,6 +85,18 @@ _dynamic_imports: dict[str, str] = {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
|
|
88
|
+
def dynamic_import(modname, retries=3):
|
|
89
|
+
for attempt in range(retries):
|
|
90
|
+
try:
|
|
91
|
+
return import_module(modname, __package__)
|
|
92
|
+
except KeyError:
|
|
93
|
+
# Clear any half-initialized module and retry
|
|
94
|
+
sys.modules.pop(modname, None)
|
|
95
|
+
if attempt == retries - 1:
|
|
96
|
+
break
|
|
97
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
98
|
+
|
|
99
|
+
|
|
88
100
|
def __getattr__(attr_name: str) -> object:
|
|
89
101
|
module_name = _dynamic_imports.get(attr_name)
|
|
90
102
|
if module_name is None:
|
|
@@ -93,7 +105,7 @@ def __getattr__(attr_name: str) -> object:
|
|
|
93
105
|
)
|
|
94
106
|
|
|
95
107
|
try:
|
|
96
|
-
module =
|
|
108
|
+
module = dynamic_import(module_name)
|
|
97
109
|
result = getattr(module, attr_name)
|
|
98
110
|
return result
|
|
99
111
|
except ImportError as e:
|
gr4vy/gift_cards_sdk.py
CHANGED
|
@@ -15,13 +15,15 @@ from typing import Any, Dict, List, Mapping, Optional, Union
|
|
|
15
15
|
class GiftCardsSDK(BaseSDK):
|
|
16
16
|
balances: Balances
|
|
17
17
|
|
|
18
|
-
def __init__(
|
|
19
|
-
|
|
18
|
+
def __init__(
|
|
19
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
20
|
+
) -> None:
|
|
21
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
20
22
|
self.sdk_configuration = sdk_config
|
|
21
23
|
self._init_sdks()
|
|
22
24
|
|
|
23
25
|
def _init_sdks(self):
|
|
24
|
-
self.balances = Balances(self.sdk_configuration)
|
|
26
|
+
self.balances = Balances(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
25
27
|
|
|
26
28
|
def get(
|
|
27
29
|
self,
|
gr4vy/models/__init__.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
from importlib import import_module
|
|
5
5
|
import builtins
|
|
6
|
+
import sys
|
|
6
7
|
|
|
7
8
|
if TYPE_CHECKING:
|
|
8
9
|
from .accountsreceivablesreportspec import (
|
|
@@ -2905,6 +2906,18 @@ _dynamic_imports: dict[str, str] = {
|
|
|
2905
2906
|
}
|
|
2906
2907
|
|
|
2907
2908
|
|
|
2909
|
+
def dynamic_import(modname, retries=3):
|
|
2910
|
+
for attempt in range(retries):
|
|
2911
|
+
try:
|
|
2912
|
+
return import_module(modname, __package__)
|
|
2913
|
+
except KeyError:
|
|
2914
|
+
# Clear any half-initialized module and retry
|
|
2915
|
+
sys.modules.pop(modname, None)
|
|
2916
|
+
if attempt == retries - 1:
|
|
2917
|
+
break
|
|
2918
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
2919
|
+
|
|
2920
|
+
|
|
2908
2921
|
def __getattr__(attr_name: str) -> object:
|
|
2909
2922
|
module_name = _dynamic_imports.get(attr_name)
|
|
2910
2923
|
if module_name is None:
|
|
@@ -2913,7 +2926,7 @@ def __getattr__(attr_name: str) -> object:
|
|
|
2913
2926
|
)
|
|
2914
2927
|
|
|
2915
2928
|
try:
|
|
2916
|
-
module =
|
|
2929
|
+
module = dynamic_import(module_name)
|
|
2917
2930
|
result = getattr(module, attr_name)
|
|
2918
2931
|
return result
|
|
2919
2932
|
except ImportError as e:
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
from importlib import import_module
|
|
5
5
|
import builtins
|
|
6
|
+
import sys
|
|
6
7
|
|
|
7
8
|
if TYPE_CHECKING:
|
|
8
9
|
from .globals import Globals, GlobalsTypedDict
|
|
@@ -15,6 +16,18 @@ _dynamic_imports: dict[str, str] = {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
|
|
19
|
+
def dynamic_import(modname, retries=3):
|
|
20
|
+
for attempt in range(retries):
|
|
21
|
+
try:
|
|
22
|
+
return import_module(modname, __package__)
|
|
23
|
+
except KeyError:
|
|
24
|
+
# Clear any half-initialized module and retry
|
|
25
|
+
sys.modules.pop(modname, None)
|
|
26
|
+
if attempt == retries - 1:
|
|
27
|
+
break
|
|
28
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
29
|
+
|
|
30
|
+
|
|
18
31
|
def __getattr__(attr_name: str) -> object:
|
|
19
32
|
module_name = _dynamic_imports.get(attr_name)
|
|
20
33
|
if module_name is None:
|
|
@@ -23,7 +36,7 @@ def __getattr__(attr_name: str) -> object:
|
|
|
23
36
|
)
|
|
24
37
|
|
|
25
38
|
try:
|
|
26
|
-
module =
|
|
39
|
+
module = dynamic_import(module_name)
|
|
27
40
|
result = getattr(module, attr_name)
|
|
28
41
|
return result
|
|
29
42
|
except ImportError as e:
|
gr4vy/models/transactionevent.py
CHANGED
|
@@ -44,6 +44,7 @@ Name = Union[
|
|
|
44
44
|
"payment-connector-response-transaction-capture-failed",
|
|
45
45
|
"payment-connector-response-transaction-capture-declined",
|
|
46
46
|
"payment-connector-response-transaction-cancel-succeeded",
|
|
47
|
+
"payment-connector-response-transaction-cancel-pending",
|
|
47
48
|
"payment-connector-response-transaction-cancel-failed",
|
|
48
49
|
"payment-connector-response-transaction-void-succeeded",
|
|
49
50
|
"payment-connector-response-transaction-void-declined",
|
|
@@ -14,13 +14,17 @@ from typing import Any, Mapping, Optional
|
|
|
14
14
|
class PaymentMethodsNetworkTokens(BaseSDK):
|
|
15
15
|
cryptogram: NetworkTokensCryptogram
|
|
16
16
|
|
|
17
|
-
def __init__(
|
|
18
|
-
|
|
17
|
+
def __init__(
|
|
18
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
19
|
+
) -> None:
|
|
20
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
19
21
|
self.sdk_configuration = sdk_config
|
|
20
22
|
self._init_sdks()
|
|
21
23
|
|
|
22
24
|
def _init_sdks(self):
|
|
23
|
-
self.cryptogram = NetworkTokensCryptogram(
|
|
25
|
+
self.cryptogram = NetworkTokensCryptogram(
|
|
26
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
27
|
+
)
|
|
24
28
|
|
|
25
29
|
def list(
|
|
26
30
|
self,
|
gr4vy/payment_methods_sdk.py
CHANGED
|
@@ -19,16 +19,20 @@ class PaymentMethodsSDK(BaseSDK):
|
|
|
19
19
|
payment_service_tokens: PaymentMethodsPaymentServiceTokens
|
|
20
20
|
network_tokens: PaymentMethodsNetworkTokens
|
|
21
21
|
|
|
22
|
-
def __init__(
|
|
23
|
-
|
|
22
|
+
def __init__(
|
|
23
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
24
|
+
) -> None:
|
|
25
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
24
26
|
self.sdk_configuration = sdk_config
|
|
25
27
|
self._init_sdks()
|
|
26
28
|
|
|
27
29
|
def _init_sdks(self):
|
|
28
30
|
self.payment_service_tokens = PaymentMethodsPaymentServiceTokens(
|
|
29
|
-
self.sdk_configuration
|
|
31
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
32
|
+
)
|
|
33
|
+
self.network_tokens = PaymentMethodsNetworkTokens(
|
|
34
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
30
35
|
)
|
|
31
|
-
self.network_tokens = PaymentMethodsNetworkTokens(self.sdk_configuration)
|
|
32
36
|
|
|
33
37
|
def list(
|
|
34
38
|
self,
|
gr4vy/reports_sdk.py
CHANGED
|
@@ -15,13 +15,15 @@ from typing import Any, Dict, List, Mapping, Optional, Union
|
|
|
15
15
|
class ReportsSDK(BaseSDK):
|
|
16
16
|
executions: Executions
|
|
17
17
|
|
|
18
|
-
def __init__(
|
|
19
|
-
|
|
18
|
+
def __init__(
|
|
19
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
20
|
+
) -> None:
|
|
21
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
20
22
|
self.sdk_configuration = sdk_config
|
|
21
23
|
self._init_sdks()
|
|
22
24
|
|
|
23
25
|
def _init_sdks(self):
|
|
24
|
-
self.executions = Executions(self.sdk_configuration)
|
|
26
|
+
self.executions = Executions(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
25
27
|
|
|
26
28
|
def list(
|
|
27
29
|
self,
|
gr4vy/sdk.py
CHANGED
|
@@ -11,6 +11,7 @@ from gr4vy.models import internal
|
|
|
11
11
|
from gr4vy.types import OptionalNullable, UNSET
|
|
12
12
|
import httpx
|
|
13
13
|
import importlib
|
|
14
|
+
import sys
|
|
14
15
|
from typing import Any, Callable, Dict, Optional, TYPE_CHECKING, Union, cast
|
|
15
16
|
import weakref
|
|
16
17
|
|
|
@@ -173,6 +174,7 @@ class Gr4vy(BaseSDK):
|
|
|
173
174
|
timeout_ms=timeout_ms,
|
|
174
175
|
debug_logger=debug_logger,
|
|
175
176
|
),
|
|
177
|
+
parent_ref=self,
|
|
176
178
|
)
|
|
177
179
|
|
|
178
180
|
hooks = SDKHooks()
|
|
@@ -197,13 +199,24 @@ class Gr4vy(BaseSDK):
|
|
|
197
199
|
self.sdk_configuration.async_client_supplied,
|
|
198
200
|
)
|
|
199
201
|
|
|
202
|
+
def dynamic_import(self, modname, retries=3):
|
|
203
|
+
for attempt in range(retries):
|
|
204
|
+
try:
|
|
205
|
+
return importlib.import_module(modname)
|
|
206
|
+
except KeyError:
|
|
207
|
+
# Clear any half-initialized module and retry
|
|
208
|
+
sys.modules.pop(modname, None)
|
|
209
|
+
if attempt == retries - 1:
|
|
210
|
+
break
|
|
211
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
212
|
+
|
|
200
213
|
def __getattr__(self, name: str):
|
|
201
214
|
if name in self._sub_sdk_map:
|
|
202
215
|
module_path, class_name = self._sub_sdk_map[name]
|
|
203
216
|
try:
|
|
204
|
-
module =
|
|
217
|
+
module = self.dynamic_import(module_path)
|
|
205
218
|
klass = getattr(module, class_name)
|
|
206
|
-
instance = klass(self.sdk_configuration)
|
|
219
|
+
instance = klass(self.sdk_configuration, parent_ref=self)
|
|
207
220
|
setattr(self, name, instance)
|
|
208
221
|
return instance
|
|
209
222
|
except ImportError as e:
|
gr4vy/transactions.py
CHANGED
|
@@ -20,15 +20,21 @@ class Transactions(BaseSDK):
|
|
|
20
20
|
events: Events
|
|
21
21
|
settlements: TransactionsSettlements
|
|
22
22
|
|
|
23
|
-
def __init__(
|
|
24
|
-
|
|
23
|
+
def __init__(
|
|
24
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
25
|
+
) -> None:
|
|
26
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
25
27
|
self.sdk_configuration = sdk_config
|
|
26
28
|
self._init_sdks()
|
|
27
29
|
|
|
28
30
|
def _init_sdks(self):
|
|
29
|
-
self.refunds = TransactionsRefunds(
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
self.refunds = TransactionsRefunds(
|
|
32
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
33
|
+
)
|
|
34
|
+
self.events = Events(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
35
|
+
self.settlements = TransactionsSettlements(
|
|
36
|
+
self.sdk_configuration, parent_ref=self.parent_ref
|
|
37
|
+
)
|
|
32
38
|
|
|
33
39
|
def list(
|
|
34
40
|
self,
|
gr4vy/transactions_refunds.py
CHANGED
|
@@ -14,13 +14,15 @@ from typing import Any, Mapping, Optional
|
|
|
14
14
|
class TransactionsRefunds(BaseSDK):
|
|
15
15
|
all: All
|
|
16
16
|
|
|
17
|
-
def __init__(
|
|
18
|
-
|
|
17
|
+
def __init__(
|
|
18
|
+
self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
|
|
19
|
+
) -> None:
|
|
20
|
+
BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
|
|
19
21
|
self.sdk_configuration = sdk_config
|
|
20
22
|
self._init_sdks()
|
|
21
23
|
|
|
22
24
|
def _init_sdks(self):
|
|
23
|
-
self.all = All(self.sdk_configuration)
|
|
25
|
+
self.all = All(self.sdk_configuration, parent_ref=self.parent_ref)
|
|
24
26
|
|
|
25
27
|
def list(
|
|
26
28
|
self,
|
gr4vy/utils/__init__.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
from importlib import import_module
|
|
5
5
|
import builtins
|
|
6
|
+
import sys
|
|
6
7
|
|
|
7
8
|
if TYPE_CHECKING:
|
|
8
9
|
from .annotations import get_discriminator
|
|
@@ -162,6 +163,18 @@ _dynamic_imports: dict[str, str] = {
|
|
|
162
163
|
}
|
|
163
164
|
|
|
164
165
|
|
|
166
|
+
def dynamic_import(modname, retries=3):
|
|
167
|
+
for attempt in range(retries):
|
|
168
|
+
try:
|
|
169
|
+
return import_module(modname, __package__)
|
|
170
|
+
except KeyError:
|
|
171
|
+
# Clear any half-initialized module and retry
|
|
172
|
+
sys.modules.pop(modname, None)
|
|
173
|
+
if attempt == retries - 1:
|
|
174
|
+
break
|
|
175
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
176
|
+
|
|
177
|
+
|
|
165
178
|
def __getattr__(attr_name: str) -> object:
|
|
166
179
|
module_name = _dynamic_imports.get(attr_name)
|
|
167
180
|
if module_name is None:
|
|
@@ -170,9 +183,8 @@ def __getattr__(attr_name: str) -> object:
|
|
|
170
183
|
)
|
|
171
184
|
|
|
172
185
|
try:
|
|
173
|
-
module =
|
|
174
|
-
|
|
175
|
-
return result
|
|
186
|
+
module = dynamic_import(module_name)
|
|
187
|
+
return getattr(module, attr_name)
|
|
176
188
|
except ImportError as e:
|
|
177
189
|
raise ImportError(
|
|
178
190
|
f"Failed to import {attr_name} from {module_name}: {e}"
|
gr4vy/utils/eventstreaming.py
CHANGED
|
@@ -17,6 +17,9 @@ T = TypeVar("T")
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class EventStream(Generic[T]):
|
|
20
|
+
# Holds a reference to the SDK client to avoid it being garbage collected
|
|
21
|
+
# and cause termination of the underlying httpx client.
|
|
22
|
+
client_ref: Optional[object]
|
|
20
23
|
response: httpx.Response
|
|
21
24
|
generator: Generator[T, None, None]
|
|
22
25
|
|
|
@@ -25,9 +28,11 @@ class EventStream(Generic[T]):
|
|
|
25
28
|
response: httpx.Response,
|
|
26
29
|
decoder: Callable[[str], T],
|
|
27
30
|
sentinel: Optional[str] = None,
|
|
31
|
+
client_ref: Optional[object] = None,
|
|
28
32
|
):
|
|
29
33
|
self.response = response
|
|
30
34
|
self.generator = stream_events(response, decoder, sentinel)
|
|
35
|
+
self.client_ref = client_ref
|
|
31
36
|
|
|
32
37
|
def __iter__(self):
|
|
33
38
|
return self
|
|
@@ -43,6 +48,9 @@ class EventStream(Generic[T]):
|
|
|
43
48
|
|
|
44
49
|
|
|
45
50
|
class EventStreamAsync(Generic[T]):
|
|
51
|
+
# Holds a reference to the SDK client to avoid it being garbage collected
|
|
52
|
+
# and cause termination of the underlying httpx client.
|
|
53
|
+
client_ref: Optional[object]
|
|
46
54
|
response: httpx.Response
|
|
47
55
|
generator: AsyncGenerator[T, None]
|
|
48
56
|
|
|
@@ -51,9 +59,11 @@ class EventStreamAsync(Generic[T]):
|
|
|
51
59
|
response: httpx.Response,
|
|
52
60
|
decoder: Callable[[str], T],
|
|
53
61
|
sentinel: Optional[str] = None,
|
|
62
|
+
client_ref: Optional[object] = None,
|
|
54
63
|
):
|
|
55
64
|
self.response = response
|
|
56
65
|
self.generator = stream_events_async(response, decoder, sentinel)
|
|
66
|
+
self.client_ref = client_ref
|
|
57
67
|
|
|
58
68
|
def __aiter__(self):
|
|
59
69
|
return self
|
|
@@ -2,22 +2,22 @@ gr4vy/__init__.py,sha256=w2u919V3Tzv4zEPQ-OYJ79gQ_4_SyW7GOFFoHtqXDFA,401
|
|
|
2
2
|
gr4vy/_hooks/__init__.py,sha256=p5J13DeYuISQyQWirjJAObHIf2VtIlOtFqnIpvjjVwk,118
|
|
3
3
|
gr4vy/_hooks/sdkhooks.py,sha256=3jKTs2B1lcAxBMJge9C-qL0RGbKGLcrHvikzi67Tbdo,2493
|
|
4
4
|
gr4vy/_hooks/types.py,sha256=0O7dbbolkiFAnHkNULvwoLsiXJu0_Wmhev163bvZbW8,3039
|
|
5
|
-
gr4vy/_version.py,sha256=
|
|
6
|
-
gr4vy/account_updater.py,sha256=
|
|
5
|
+
gr4vy/_version.py,sha256=wjF0z5Lxbzrt5OMLRVfcBYO22uK802C6Elnk-umzM40,454
|
|
6
|
+
gr4vy/account_updater.py,sha256=mmTd25Oap80PBqQ3p4MvZ_buT5VS0zWc8s8cqfI7iyA,607
|
|
7
7
|
gr4vy/all.py,sha256=WwnLoNn3RgXNpf4Xoz12ct94JD7NMpLz-kzesHHh4m8,15172
|
|
8
8
|
gr4vy/audit_logs.py,sha256=iAT3rnS0NYNKZGw5IVl_MC_RPAHMJNXHfd_K--HIplU,17015
|
|
9
9
|
gr4vy/auth.py,sha256=gxS5MjLUA0r1mSZADniCIQV4khqAn7FMvrTh-9Czm1g,8714
|
|
10
10
|
gr4vy/balances.py,sha256=I5ImXo3bgkaCVigCTnUf1SQK-0LxZEHOex4Dx6MuGRk,14396
|
|
11
|
-
gr4vy/basesdk.py,sha256=
|
|
11
|
+
gr4vy/basesdk.py,sha256=blX6OgKfbCxGZ93GxJuXZaAOmfdIoi-yLHe8Zo5Wg1o,12173
|
|
12
12
|
gr4vy/buyers_gift_cards.py,sha256=TRQD2w-J82928Q8htFgnJ-Ulr7_1K4EsGayL-9NO84U,14114
|
|
13
13
|
gr4vy/buyers_payment_methods.py,sha256=lhYTmPxRo0b5_wvotz9NtfAJjfqd8fJ9pOvDdHv7PlY,15591
|
|
14
|
-
gr4vy/buyers_sdk.py,sha256=
|
|
14
|
+
gr4vy/buyers_sdk.py,sha256=zjlEF3mRmR-2sPQHarM-93hlEdxq7me2nzoXNHRw5hM,73526
|
|
15
15
|
gr4vy/buyers_shipping_details.py,sha256=BPnFwoJNXU8F6ChOctILxHfQY8vJvK218Am6nUnhckA,73399
|
|
16
16
|
gr4vy/card_scheme_definitions_sdk.py,sha256=qwoymeumRGbAi1G3rGPh-BRqsCaXEB-IQcTN0MNaekc,13639
|
|
17
17
|
gr4vy/checkout_sessions.py,sha256=njjoKuvOUSH09Rhw0vfrwbvBTPUYzLcoP-DE-NOZn34,57130
|
|
18
|
-
gr4vy/digital_wallets_sdk.py,sha256=
|
|
18
|
+
gr4vy/digital_wallets_sdk.py,sha256=W4QNFKk3N4xtoiUPpEcrVJGN62aZnuHrPQIpppw3ZN0,71233
|
|
19
19
|
gr4vy/domains.py,sha256=fzBmPm5fA9rwO8smhC2ob7TrnkT1o1rnyc9Y9x6j_uA,28586
|
|
20
|
-
gr4vy/errors/__init__.py,sha256=
|
|
20
|
+
gr4vy/errors/__init__.py,sha256=ZDz7v86-UM-FLysIfPwSWRu-TH_1Xfu8xo8SCpVeFY8,3697
|
|
21
21
|
gr4vy/errors/apierror.py,sha256=9ejCsDbUjHPHMM3Ml_LIVOfMQMyTYp6csY8PdqkMxps,1215
|
|
22
22
|
gr4vy/errors/error400.py,sha256=I09HbmsGnS2eN4SjDYn_2dmW-a2NDbAatuu62Q1fqoM,1425
|
|
23
23
|
gr4vy/errors/error401.py,sha256=yMSFG4sAFHYB-tpmgBnwXySzSqhA5Qeg5BXlHEAruX4,1447
|
|
@@ -36,11 +36,11 @@ gr4vy/errors/no_response_error.py,sha256=FQG44Lq6uF7uUlzbUYfM3dJon6sbqXzJ0Ri6YrD
|
|
|
36
36
|
gr4vy/errors/responsevalidationerror.py,sha256=pGG3nQxVp1R4aUNpFcfZt9eFkTmghX_mpaXk7PzOYUU,682
|
|
37
37
|
gr4vy/events.py,sha256=BIMBWIzunyVMD86pj2zzWaUd_o5WY1MQZN77uxHe7es,14735
|
|
38
38
|
gr4vy/executions.py,sha256=e9OaF4qVIo-7ggjDUad3OH_V1PANev6avArdMRu9K8o,43060
|
|
39
|
-
gr4vy/gift_cards_sdk.py,sha256=
|
|
39
|
+
gr4vy/gift_cards_sdk.py,sha256=wGmWTaQqsnVOUNXQ7dFZcDAcw9c5wq8xyoO189ctmpo,57465
|
|
40
40
|
gr4vy/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
|
|
41
41
|
gr4vy/jobs.py,sha256=WHx0epnlxOMHFSXTJPwuI5dhOO_acGTX72Lbz6fvD8A,14565
|
|
42
42
|
gr4vy/merchant_accounts_sdk.py,sha256=TGwGZqyD_b7xR2pggTsOa3H813-zhakhtjS9d_NsfmA,80907
|
|
43
|
-
gr4vy/models/__init__.py,sha256=
|
|
43
|
+
gr4vy/models/__init__.py,sha256=azuF-cmOxGeZLBzktu2NumYuWZ4lIHMJewxGR8lDJwE,130435
|
|
44
44
|
gr4vy/models/accountsreceivablesreportspec.py,sha256=X4YKJ5TII4KFi1I47BYt1Egxsfs84EaqXsb7g90IpLw,1012
|
|
45
45
|
gr4vy/models/accountupdaterinquirysummary.py,sha256=rOJn5uG7cNFUkd6BbsAve6ueUlAJzU5_d_zeDu6RBTg,1097
|
|
46
46
|
gr4vy/models/accountupdaterjob.py,sha256=JKuRwrc5yYSAQ9lD5Ta4MALtfXBF7tn_37lllQsH2B0,1972
|
|
@@ -206,7 +206,7 @@ gr4vy/models/googlepaysessionrequest.py,sha256=Z5kTOUSN707Xz9urjaqfhRwW1oRRbnlzv
|
|
|
206
206
|
gr4vy/models/guestbuyer_input.py,sha256=PhJnN3DMRqd6Lc-_JPLjHVHn0lxT_cez86OdLGLwDTQ,2877
|
|
207
207
|
gr4vy/models/guestbuyer_output.py,sha256=fDSHUtYbZsVoI0Od3Lzxzp6wA-4TrKwHHGGt8aMuTQo,2884
|
|
208
208
|
gr4vy/models/instrumenttype.py,sha256=cPt9UC0QeqeC2EXKJJD0x8t27OS6lQsnRZ22IGUdf_g,400
|
|
209
|
-
gr4vy/models/internal/__init__.py,sha256=
|
|
209
|
+
gr4vy/models/internal/__init__.py,sha256=xowceJVTVAP3WRyQ0NEGkm9PAoYU1l0_VYgXZP0ZvlM,1569
|
|
210
210
|
gr4vy/models/internal/globals.py,sha256=LOin0ZxkLmWMhPRtR0I9rutYwe8KvZ4c-yJyfv9A8Qw,755
|
|
211
211
|
gr4vy/models/latitudeoptions.py,sha256=dswG3n30p01I1F7R49WvUvu6WSCdQUw0E47ipuWgKds,1546
|
|
212
212
|
gr4vy/models/list_all_report_executionsop.py,sha256=ndtvXxp1Lv78pdH7kyE_3nVs0OjWRoS0T4Nrj_SKkuU,6624
|
|
@@ -344,7 +344,7 @@ gr4vy/models/transactioncapture.py,sha256=7WD3uoUyDJ1sejtjIb7b5B5BFtpKEi7KkegVtB
|
|
|
344
344
|
gr4vy/models/transactioncapturecreate.py,sha256=Hs8tTi8iG3xUBptznKHfUD7rvcGZX0OwDzpXOBegd8E,2188
|
|
345
345
|
gr4vy/models/transactionconnectionoptions.py,sha256=GeXBb1VgGyRJvOxt8Dl0-psTHERjFWM5GBBgcvuBGKI,18231
|
|
346
346
|
gr4vy/models/transactioncreate.py,sha256=eMZkJnfkuv50JzEeI3MzlHKs01PSuYLfxoRu4VV1dgE,24223
|
|
347
|
-
gr4vy/models/transactionevent.py,sha256=
|
|
347
|
+
gr4vy/models/transactionevent.py,sha256=rZm6VX53piqFWSMMP1rLsRqV2rw6_5J7BHrUt4Nfh2M,3871
|
|
348
348
|
gr4vy/models/transactionevents.py,sha256=5l2Yc69SMePDlFtcby4i3BxGBkbT62SWQf4X5Xvfypw,2210
|
|
349
349
|
gr4vy/models/transactiongiftcard.py,sha256=E4f_76ezJJdPlW9kIbrXt-PIx2Zgg3bhqPjVzhWdjpM,2329
|
|
350
350
|
gr4vy/models/transactionintent.py,sha256=D_Mfcssx4vzhs2dX_rRdeUWMSb1i6fXmorA_z_g_Aos,260
|
|
@@ -388,9 +388,9 @@ gr4vy/models/wpaypaytoresourceoptions.py,sha256=Ub4XCfIiXKjGXkDERkXmyBWEaFBRxoiB
|
|
|
388
388
|
gr4vy/models/wpaypaytosimulationoptions.py,sha256=_UHWxMSXhhEOjXwf4hOdelhtZNOFoqk7OoaqSjGofmY,1876
|
|
389
389
|
gr4vy/network_tokens_cryptogram.py,sha256=HBv4aCe9FxTmOzV6gONFU9peYVjD3Ww3B9xh93ooU9E,14950
|
|
390
390
|
gr4vy/payment_links_sdk.py,sha256=ezTPTc54698TVlwuS5fZABxx7o0tnpKrE1FFSyMz9DU,64481
|
|
391
|
-
gr4vy/payment_methods_network_tokens.py,sha256=
|
|
391
|
+
gr4vy/payment_methods_network_tokens.py,sha256=MZ92irp_W7i-u7c88SXudOiTCyUv5-oDgW4PUcoZiTk,70265
|
|
392
392
|
gr4vy/payment_methods_payment_service_tokens.py,sha256=NO2Fip0_Aa3CQfvgBC9_5oZNrk4Z8F1N0AtcMWU4kjg,43209
|
|
393
|
-
gr4vy/payment_methods_sdk.py,sha256=
|
|
393
|
+
gr4vy/payment_methods_sdk.py,sha256=B2eaabKEfZoiGoEkjqFk88gb0B2QJ_LyaLNZxb7ZfrY,58032
|
|
394
394
|
gr4vy/payment_options_sdk.py,sha256=i8_MNRvP2_0I0WK0fH_hcuORYbEWOTpNnvvvdHnLBi8,17079
|
|
395
395
|
gr4vy/payment_service_definitions_sdk.py,sha256=FeopZyGstUfbG30vvgzAzxGN5UFxM4oQ6XWXPXAiOPY,41246
|
|
396
396
|
gr4vy/payment_services_sdk.py,sha256=crnzsrsC6q8A43wf6kapeSH-SkpLOgLjFs71CC2sZg4,113732
|
|
@@ -398,20 +398,20 @@ gr4vy/payouts.py,sha256=XdxuCEknh7-feW4r_W4NKoZb4zO54YM7_ducYrrpzj4,47677
|
|
|
398
398
|
gr4vy/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
|
|
399
399
|
gr4vy/refunds_sdk.py,sha256=kpU3NaVMsgKxhWblTF-jfAl_Cdpw1HqARP81TypFsjs,13551
|
|
400
400
|
gr4vy/report_executions_sdk.py,sha256=He-YQa3iTStnx2xAx8jfpnj8qX4vO4_cVHgvuVCWqos,18877
|
|
401
|
-
gr4vy/reports_sdk.py,sha256=
|
|
402
|
-
gr4vy/sdk.py,sha256=
|
|
401
|
+
gr4vy/reports_sdk.py,sha256=lUuxAgnAO0CIDYEoP3VAHnYoG8d4Vq-pi-41uJ4sKPs,59557
|
|
402
|
+
gr4vy/sdk.py,sha256=XqkSODRWO2VLYcVBhQjX0EdgKson0juO_oQMsgJ_h5o,10477
|
|
403
403
|
gr4vy/sdkconfiguration.py,sha256=aBQ8gY9aOjf1TL0kSLat8hEIoH4lCE9_PhihyhBpRE4,1985
|
|
404
404
|
gr4vy/sessions.py,sha256=yg9L1vMfHT6dNc6zjthULHFS2dC67QzXCv5WUFMn3DI,41609
|
|
405
|
-
gr4vy/transactions.py,sha256=
|
|
406
|
-
gr4vy/transactions_refunds.py,sha256=
|
|
405
|
+
gr4vy/transactions.py,sha256=zH9eJO1h4HAgG-wwIsuBRnUOXwZLCABi3PmSXBFN-oA,151423
|
|
406
|
+
gr4vy/transactions_refunds.py,sha256=_YXYEbNw-F5PotIxZE83zU__987Asqz_9JnqBIKhEvw,43591
|
|
407
407
|
gr4vy/transactions_settlements.py,sha256=YOH0JAGvli36XhKKXyQ81JIIuv59uCOpqBri6SlYfa0,27750
|
|
408
408
|
gr4vy/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
|
|
409
409
|
gr4vy/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
|
|
410
|
-
gr4vy/utils/__init__.py,sha256=
|
|
410
|
+
gr4vy/utils/__init__.py,sha256=CAG0O76aEToGKXpT6Ft87Vd-iiQTh4XdBrQ37BVbsiM,5861
|
|
411
411
|
gr4vy/utils/annotations.py,sha256=aR7mZG34FzgRdew7WZPYEu9QGBerpuKxCF4sek5Z_5Y,1699
|
|
412
412
|
gr4vy/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
|
|
413
413
|
gr4vy/utils/enums.py,sha256=REU6ydF8gsVL3xaeGX4sMNyiL3q5P9h29-f6Sa6luAE,2633
|
|
414
|
-
gr4vy/utils/eventstreaming.py,sha256=
|
|
414
|
+
gr4vy/utils/eventstreaming.py,sha256=SgFqMcUOYKlrTQ4gAp_dNcKLvDXukeiEMNU3DP8mXk8,6692
|
|
415
415
|
gr4vy/utils/forms.py,sha256=EJdnrfIkuwpDtekyHutla0HjI_FypTYcmYNyPKEu_W0,6874
|
|
416
416
|
gr4vy/utils/headers.py,sha256=cPxWSmUILrefTGDzTH1Hdj7_Hlsj-EY6K5Tyc4iH4dk,3663
|
|
417
417
|
gr4vy/utils/logger.py,sha256=WdT856mADqljmNjIW_Y1ntFJrIWz3CCOowhK8kcGobk,669
|
|
@@ -425,6 +425,6 @@ gr4vy/utils/unmarshal_json_response.py,sha256=H7jxugtMDuagdBXdpGiPf0Vr5-PWLETp8B
|
|
|
425
425
|
gr4vy/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
|
|
426
426
|
gr4vy/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
|
|
427
427
|
gr4vy/webhooks.py,sha256=2L-ZhdK-XU2X0AkVqgZvhfRqDCKUVs7R4UNCmZJR78w,1359
|
|
428
|
-
gr4vy-1.
|
|
429
|
-
gr4vy-1.
|
|
430
|
-
gr4vy-1.
|
|
428
|
+
gr4vy-1.2.0.dist-info/METADATA,sha256=7-q0NoZ2bCXpnuLAtA9hEAdy3RkCUXn5ZWadrdAELNk,44028
|
|
429
|
+
gr4vy-1.2.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
430
|
+
gr4vy-1.2.0.dist-info/RECORD,,
|
|
File without changes
|