celitech-sdk 2.0.1__tar.gz → 2.0.4__tar.gz
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.
- {celitech_sdk-2.0.1/src/celitech_sdk.egg-info → celitech_sdk-2.0.4}/PKG-INFO +4 -4
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/PyPI_README.md +3 -3
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/README.md +3 -3
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/pyproject.toml +1 -1
- celitech_sdk-2.0.4/src/celitech/models/__init__.py +142 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/cast_models.py +14 -1
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/one_of_base_model.py +12 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/oauth/token_manager.py +1 -1
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/api_error.py +9 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/serializer.py +1 -1
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/o_auth.py +2 -2
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/o_auth.py +7 -7
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4/src/celitech_sdk.egg-info}/PKG-INFO +4 -4
- celitech_sdk-2.0.1/src/celitech/models/__init__.py +0 -75
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/LICENSE +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/setup.cfg +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/bad_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_v2_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_v2_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/edit_purchase_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/edit_purchase_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_esim_device_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_esim_history_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_esim_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_purchase_consumption_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/grant_type.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/list_destinations_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/list_packages_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/list_purchases_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/o_auth_token_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/o_auth_token_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/token_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/top_up_esim_ok_response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/top_up_esim_request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/unauthorized.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/base_error.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/base_model.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/json_map.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/utils/sentinel.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/environment/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/environment/environment.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/headers/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/headers/base_header.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/base_handler.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/http_handler.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/oauth_handler.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/retry_handler.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/request_chain.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/sdk_config.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/request.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/request_error.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/response.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/transport/utils.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/sdk.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/sdk_async.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/destinations.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/e_sim.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/i_frame.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/packages.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/purchases.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/utils/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/async_/utils/to_async.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/destinations.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/e_sim.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/i_frame.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/packages.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/purchases.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/utils/__init__.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/utils/base_service.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/utils/default_headers.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/services/utils/validator.py +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech_sdk.egg-info/SOURCES.txt +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech_sdk.egg-info/dependency_links.txt +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech_sdk.egg-info/requires.txt +0 -0
- {celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech_sdk.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: celitech-sdk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
4
4
|
Summary: Welcome to the CELITECH API documentation!
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Repository, https://github.com/Celitech/CelitechSDKPython
|
|
@@ -11,14 +11,14 @@ Requires-Dist: requests>=2.31.0
|
|
|
11
11
|
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
12
12
|
Dynamic: license-file
|
|
13
13
|
|
|
14
|
-
# Celitech Python SDK 2.0.
|
|
14
|
+
# Celitech Python SDK 2.0.4<a id="celitech-python-sdk-204"></a>
|
|
15
15
|
|
|
16
16
|
Welcome to the Celitech SDK documentation. This guide will help you get started with integrating and using the Celitech SDK in your project.
|
|
17
17
|
|
|
18
18
|
## Versions<a id="versions"></a>
|
|
19
19
|
|
|
20
|
-
- API version: `2.0.
|
|
21
|
-
- SDK version: `2.0.
|
|
20
|
+
- API version: `2.0.4`
|
|
21
|
+
- SDK version: `2.0.4`
|
|
22
22
|
|
|
23
23
|
## About the API<a id="about-the-api"></a>
|
|
24
24
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Celitech Python SDK 2.0.
|
|
1
|
+
# Celitech Python SDK 2.0.4<a id="celitech-python-sdk-204"></a>
|
|
2
2
|
|
|
3
3
|
Welcome to the Celitech SDK documentation. This guide will help you get started with integrating and using the Celitech SDK in your project.
|
|
4
4
|
|
|
5
5
|
## Versions<a id="versions"></a>
|
|
6
6
|
|
|
7
|
-
- API version: `2.0.
|
|
8
|
-
- SDK version: `2.0.
|
|
7
|
+
- API version: `2.0.4`
|
|
8
|
+
- SDK version: `2.0.4`
|
|
9
9
|
|
|
10
10
|
## About the API<a id="about-the-api"></a>
|
|
11
11
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Celitech Python SDK 2.0.
|
|
1
|
+
# Celitech Python SDK 2.0.4
|
|
2
2
|
|
|
3
3
|
Welcome to the Celitech SDK documentation. This guide will help you get started with integrating and using the Celitech SDK in your project.
|
|
4
4
|
|
|
5
5
|
## Versions
|
|
6
6
|
|
|
7
|
-
- API version: `2.0.
|
|
8
|
-
- SDK version: `2.0.
|
|
7
|
+
- API version: `2.0.4`
|
|
8
|
+
- SDK version: `2.0.4`
|
|
9
9
|
|
|
10
10
|
## About the API
|
|
11
11
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "celitech-sdk"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.4"
|
|
8
8
|
license = { text = "MIT" }
|
|
9
9
|
description = """Welcome to the CELITECH API documentation!\n\nUseful links: [Homepage](https://www.celitech.com) | [Support email](mailto:support@celitech.com) | [Blog](https://www.celitech.com/blog/)\n"""
|
|
10
10
|
readme = "PyPI_README.md"
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""Lazy model exports.
|
|
2
|
+
|
|
3
|
+
Names are resolved on first attribute access via PEP 562 ``__getattr__``,
|
|
4
|
+
then cached in module globals. Avoids the multi-second eager-import cost
|
|
5
|
+
on SDKs with thousands of generated models.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import importlib
|
|
9
|
+
|
|
10
|
+
_MODEL_TO_MODULE = {
|
|
11
|
+
"ListDestinationsOkResponse": "list_destinations_ok_response",
|
|
12
|
+
"Destinations": "list_destinations_ok_response",
|
|
13
|
+
"ListPackagesOkResponse": "list_packages_ok_response",
|
|
14
|
+
"Packages": "list_packages_ok_response",
|
|
15
|
+
"CreatePurchaseV2Request": "create_purchase_v2_request",
|
|
16
|
+
"CreatePurchaseV2RequestLanguage": "create_purchase_v2_request",
|
|
17
|
+
"CreatePurchaseV2OkResponse": "create_purchase_v2_ok_response",
|
|
18
|
+
"CreatePurchaseV2OkResponsePurchase": "create_purchase_v2_ok_response",
|
|
19
|
+
"CreatePurchaseV2OkResponseProfile": "create_purchase_v2_ok_response",
|
|
20
|
+
"ListPurchasesOkResponse": "list_purchases_ok_response",
|
|
21
|
+
"Purchases": "list_purchases_ok_response",
|
|
22
|
+
"CreatePurchaseRequest": "create_purchase_request",
|
|
23
|
+
"CreatePurchaseRequestLanguage": "create_purchase_request",
|
|
24
|
+
"CreatePurchaseOkResponse": "create_purchase_ok_response",
|
|
25
|
+
"CreatePurchaseOkResponsePurchase": "create_purchase_ok_response",
|
|
26
|
+
"CreatePurchaseOkResponseProfile": "create_purchase_ok_response",
|
|
27
|
+
"TopUpEsimRequest": "top_up_esim_request",
|
|
28
|
+
"TopUpEsimOkResponse": "top_up_esim_ok_response",
|
|
29
|
+
"TopUpEsimOkResponsePurchase": "top_up_esim_ok_response",
|
|
30
|
+
"TopUpEsimOkResponseProfile": "top_up_esim_ok_response",
|
|
31
|
+
"EditPurchaseRequest": "edit_purchase_request",
|
|
32
|
+
"EditPurchaseOkResponse": "edit_purchase_ok_response",
|
|
33
|
+
"GetPurchaseConsumptionOkResponse": "get_purchase_consumption_ok_response",
|
|
34
|
+
"GetEsimOkResponse": "get_esim_ok_response",
|
|
35
|
+
"GetEsimOkResponseEsim": "get_esim_ok_response",
|
|
36
|
+
"GetEsimDeviceOkResponse": "get_esim_device_ok_response",
|
|
37
|
+
"Device": "get_esim_device_ok_response",
|
|
38
|
+
"GetEsimHistoryOkResponse": "get_esim_history_ok_response",
|
|
39
|
+
"GetEsimHistoryOkResponseEsim": "get_esim_history_ok_response",
|
|
40
|
+
"TokenOkResponse": "token_ok_response",
|
|
41
|
+
"OAuthTokenRequest": "o_auth_token_request",
|
|
42
|
+
"OAuthTokenResponse": "o_auth_token_response",
|
|
43
|
+
"GrantType": "grant_type",
|
|
44
|
+
"BadRequest": "bad_request",
|
|
45
|
+
"Unauthorized": "unauthorized",
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
_REBUILD_NAMES = frozenset(
|
|
49
|
+
{
|
|
50
|
+
"ListDestinationsOkResponse",
|
|
51
|
+
"Destinations",
|
|
52
|
+
"ListPackagesOkResponse",
|
|
53
|
+
"Packages",
|
|
54
|
+
"CreatePurchaseV2Request",
|
|
55
|
+
"CreatePurchaseV2OkResponse",
|
|
56
|
+
"CreatePurchaseV2OkResponsePurchase",
|
|
57
|
+
"CreatePurchaseV2OkResponseProfile",
|
|
58
|
+
"ListPurchasesOkResponse",
|
|
59
|
+
"Purchases",
|
|
60
|
+
"CreatePurchaseRequest",
|
|
61
|
+
"CreatePurchaseOkResponse",
|
|
62
|
+
"CreatePurchaseOkResponsePurchase",
|
|
63
|
+
"CreatePurchaseOkResponseProfile",
|
|
64
|
+
"TopUpEsimRequest",
|
|
65
|
+
"TopUpEsimOkResponse",
|
|
66
|
+
"TopUpEsimOkResponsePurchase",
|
|
67
|
+
"TopUpEsimOkResponseProfile",
|
|
68
|
+
"EditPurchaseRequest",
|
|
69
|
+
"EditPurchaseOkResponse",
|
|
70
|
+
"GetPurchaseConsumptionOkResponse",
|
|
71
|
+
"GetEsimOkResponse",
|
|
72
|
+
"GetEsimOkResponseEsim",
|
|
73
|
+
"GetEsimDeviceOkResponse",
|
|
74
|
+
"Device",
|
|
75
|
+
"GetEsimHistoryOkResponse",
|
|
76
|
+
"GetEsimHistoryOkResponseEsim",
|
|
77
|
+
"TokenOkResponse",
|
|
78
|
+
"OAuthTokenRequest",
|
|
79
|
+
"OAuthTokenResponse",
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
__all__ = list(_MODEL_TO_MODULE.keys())
|
|
84
|
+
|
|
85
|
+
_rebuilt = False
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _load(name):
|
|
89
|
+
module = _MODEL_TO_MODULE.get(name)
|
|
90
|
+
if module is None:
|
|
91
|
+
return None
|
|
92
|
+
obj = getattr(importlib.import_module("." + module, __name__), name)
|
|
93
|
+
globals()[name] = obj
|
|
94
|
+
return obj
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _ensure_rebuilt():
|
|
98
|
+
"""Resolve forward refs across every BaseModel in one batched pass.
|
|
99
|
+
|
|
100
|
+
Individual model files import their cross-references inside a
|
|
101
|
+
``TYPE_CHECKING`` block, so at runtime each file's globals contain
|
|
102
|
+
only itself. ``model_rebuild()`` walks the call stack to find
|
|
103
|
+
forward-ref names — calling it from this module once every
|
|
104
|
+
BaseModel has been loaded into our globals is what lets pydantic
|
|
105
|
+
resolve circular refs (the same shape the prior eager-import form
|
|
106
|
+
relied on). Enums, Union types, and error models stay lazy.
|
|
107
|
+
"""
|
|
108
|
+
global _rebuilt
|
|
109
|
+
if _rebuilt:
|
|
110
|
+
return
|
|
111
|
+
_rebuilt = True
|
|
112
|
+
for name in _REBUILD_NAMES:
|
|
113
|
+
if name not in globals():
|
|
114
|
+
try:
|
|
115
|
+
_load(name)
|
|
116
|
+
except Exception:
|
|
117
|
+
pass
|
|
118
|
+
ns = globals()
|
|
119
|
+
for name in _REBUILD_NAMES:
|
|
120
|
+
cls = ns.get(name)
|
|
121
|
+
if cls is None:
|
|
122
|
+
continue
|
|
123
|
+
try:
|
|
124
|
+
# _types_namespace is mandatory: pydantic resolves forward refs
|
|
125
|
+
# against caller-frame locals by default, but we're calling from
|
|
126
|
+
# inside a helper — the names live in this module's globals.
|
|
127
|
+
cls.model_rebuild(_types_namespace=ns)
|
|
128
|
+
except Exception:
|
|
129
|
+
pass
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def __getattr__(name):
|
|
133
|
+
if name not in _MODEL_TO_MODULE:
|
|
134
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
135
|
+
obj = _load(name)
|
|
136
|
+
if name in _REBUILD_NAMES:
|
|
137
|
+
_ensure_rebuilt()
|
|
138
|
+
return obj
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def __dir__():
|
|
142
|
+
return sorted(set(globals()).union(_MODEL_TO_MODULE))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import get_args, Union
|
|
2
|
+
from typing import Any, get_args, Union
|
|
3
3
|
from inspect import isclass
|
|
4
4
|
from .one_of_base_model import OneOfBaseModel
|
|
5
5
|
from pydantic import ValidationError
|
|
@@ -40,6 +40,14 @@ def cast_models(func):
|
|
|
40
40
|
:param input_type: The type of the input.
|
|
41
41
|
:return: The instanced type.
|
|
42
42
|
"""
|
|
43
|
+
# `typing.Any` means "no validation" — pass the data through
|
|
44
|
+
# unchanged. Without this guard, downstream branches eventually
|
|
45
|
+
# call `isinstance(data, Any)`, which raises
|
|
46
|
+
# `TypeError: typing.Any cannot be used with isinstance()` and
|
|
47
|
+
# crashes any method whose annotation propagates an Any-schema.
|
|
48
|
+
if input_type is Any:
|
|
49
|
+
return data
|
|
50
|
+
|
|
43
51
|
# Instanciate oneOf models
|
|
44
52
|
if _is_one_of_model(input_type):
|
|
45
53
|
class_list = {
|
|
@@ -72,6 +80,11 @@ def cast_models(func):
|
|
|
72
80
|
# Instanciate list of object models
|
|
73
81
|
elif isinstance(data, list) and all(isinstance(i, dict) for i in data):
|
|
74
82
|
element_type = get_args(input_type)[0]
|
|
83
|
+
# `List[Any]` — no per-item validation, just return the list as-is.
|
|
84
|
+
# Otherwise the else-branch would call `Any(**item)` which raises
|
|
85
|
+
# `TypeError: Cannot instantiate typing.Any`.
|
|
86
|
+
if element_type is Any:
|
|
87
|
+
return data
|
|
75
88
|
# Pydantic models: use model_validate() for each item
|
|
76
89
|
if hasattr(element_type, "model_validate"):
|
|
77
90
|
try:
|
|
@@ -68,6 +68,13 @@ class OneOfBaseModel:
|
|
|
68
68
|
:return: An instance of the class if the input data matches the class constructor
|
|
69
69
|
or can be used to initialize the class, None otherwise.
|
|
70
70
|
"""
|
|
71
|
+
# `Union[..., Any]` / `Optional[Any]` propagate `typing.Any` through
|
|
72
|
+
# `class_list`. `isinstance(..., Any)` raises, so short-circuit and
|
|
73
|
+
# pass the data through — `Any` in a oneOf means the branch accepts
|
|
74
|
+
# anything by definition.
|
|
75
|
+
if class_constructor is Any:
|
|
76
|
+
return input_data
|
|
77
|
+
|
|
71
78
|
# Check if the class is only a TypeHint.
|
|
72
79
|
origin = get_origin(class_constructor)
|
|
73
80
|
if origin is not None and isinstance(input_data, list):
|
|
@@ -108,6 +115,11 @@ class OneOfBaseModel:
|
|
|
108
115
|
|
|
109
116
|
inner_type = args[0]
|
|
110
117
|
|
|
118
|
+
# `List[Any]` inside a oneOf branch — every item satisfies it by
|
|
119
|
+
# definition, and `isinstance(item, Any)` would raise.
|
|
120
|
+
if inner_type is Any:
|
|
121
|
+
return input_data
|
|
122
|
+
|
|
111
123
|
if not all(isinstance(item, inner_type) for item in input_data):
|
|
112
124
|
return [inner_type._unmap(item) for item in input_data]
|
|
113
125
|
|
|
@@ -108,7 +108,7 @@ class TokenManager:
|
|
|
108
108
|
from ...services.o_auth import OAuthService
|
|
109
109
|
|
|
110
110
|
service = OAuthService(base_url=self._base_oauth_url, token_manager=self)
|
|
111
|
-
return service.
|
|
111
|
+
return service.get_access_token_(
|
|
112
112
|
request_body={
|
|
113
113
|
k: v
|
|
114
114
|
for k, v in {
|
|
@@ -25,3 +25,12 @@ class ApiError(Exception):
|
|
|
25
25
|
self.message = message
|
|
26
26
|
self.status = status
|
|
27
27
|
self.response = response
|
|
28
|
+
super().__init__(message)
|
|
29
|
+
|
|
30
|
+
def __str__(self) -> str:
|
|
31
|
+
parts = []
|
|
32
|
+
if self.status is not None:
|
|
33
|
+
parts.append(f"status={self.status}")
|
|
34
|
+
if self.message:
|
|
35
|
+
parts.append(self.message)
|
|
36
|
+
return ": ".join(parts)
|
|
@@ -45,7 +45,7 @@ class Serializer:
|
|
|
45
45
|
self.errors: dict[int, ApiError] = {}
|
|
46
46
|
self.config: Optional["SdkConfig"] = config
|
|
47
47
|
|
|
48
|
-
self.headers["User-Agent"] = "postman-codegen/1.
|
|
48
|
+
self.headers["User-Agent"] = "postman-codegen/1.5.0 celitech-sdk/2.0.4 (python)"
|
|
49
49
|
|
|
50
50
|
# Apply default headers
|
|
51
51
|
for header in default_headers:
|
|
@@ -10,12 +10,12 @@ class OAuthServiceAsync(OAuthService):
|
|
|
10
10
|
Async Wrapper for OAuthServiceAsync
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
def
|
|
13
|
+
def get_access_token_(
|
|
14
14
|
self,
|
|
15
15
|
request_body: OAuthTokenRequest,
|
|
16
16
|
*,
|
|
17
17
|
request_config: Optional[SdkConfig] = None,
|
|
18
18
|
) -> Awaitable[OAuthTokenResponse]:
|
|
19
|
-
return to_async(super().
|
|
19
|
+
return to_async(super().get_access_token_)(
|
|
20
20
|
request_body, request_config=request_config
|
|
21
21
|
)
|
|
@@ -18,26 +18,26 @@ class OAuthService(BaseService):
|
|
|
18
18
|
def __init__(self, *args, **kwargs):
|
|
19
19
|
"""Initialize the service and method-level configurations."""
|
|
20
20
|
super().__init__(*args, **kwargs)
|
|
21
|
-
self.
|
|
21
|
+
self._get_access_token__config: SdkConfig = {}
|
|
22
22
|
|
|
23
|
-
def
|
|
23
|
+
def set_get_access_token__config(self, config: SdkConfig):
|
|
24
24
|
"""
|
|
25
|
-
Sets method-level configuration for
|
|
25
|
+
Sets method-level configuration for get_access_token_.
|
|
26
26
|
|
|
27
27
|
:param SdkConfig config: Configuration dictionary to override service-level defaults.
|
|
28
28
|
:return: The service instance for method chaining.
|
|
29
29
|
"""
|
|
30
|
-
self.
|
|
30
|
+
self._get_access_token__config = config
|
|
31
31
|
return self
|
|
32
32
|
|
|
33
33
|
@cast_models
|
|
34
|
-
def
|
|
34
|
+
def get_access_token_(
|
|
35
35
|
self,
|
|
36
36
|
request_body: OAuthTokenRequest,
|
|
37
37
|
*,
|
|
38
38
|
request_config: Optional[SdkConfig] = None,
|
|
39
39
|
) -> OAuthTokenResponse:
|
|
40
|
-
"""
|
|
40
|
+
"""get_access_token_
|
|
41
41
|
|
|
42
42
|
:param request_body: The request body.
|
|
43
43
|
:type request_body: OAuthTokenRequest
|
|
@@ -51,7 +51,7 @@ class OAuthService(BaseService):
|
|
|
51
51
|
Validator(OAuthTokenRequest).validate(request_body)
|
|
52
52
|
|
|
53
53
|
resolved_config = self._get_resolved_config(
|
|
54
|
-
self.
|
|
54
|
+
self._get_access_token__config, request_config
|
|
55
55
|
)
|
|
56
56
|
|
|
57
57
|
serialized_request = (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: celitech-sdk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
4
4
|
Summary: Welcome to the CELITECH API documentation!
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Repository, https://github.com/Celitech/CelitechSDKPython
|
|
@@ -11,14 +11,14 @@ Requires-Dist: requests>=2.31.0
|
|
|
11
11
|
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
12
12
|
Dynamic: license-file
|
|
13
13
|
|
|
14
|
-
# Celitech Python SDK 2.0.
|
|
14
|
+
# Celitech Python SDK 2.0.4<a id="celitech-python-sdk-204"></a>
|
|
15
15
|
|
|
16
16
|
Welcome to the Celitech SDK documentation. This guide will help you get started with integrating and using the Celitech SDK in your project.
|
|
17
17
|
|
|
18
18
|
## Versions<a id="versions"></a>
|
|
19
19
|
|
|
20
|
-
- API version: `2.0.
|
|
21
|
-
- SDK version: `2.0.
|
|
20
|
+
- API version: `2.0.4`
|
|
21
|
+
- SDK version: `2.0.4`
|
|
22
22
|
|
|
23
23
|
## About the API<a id="about-the-api"></a>
|
|
24
24
|
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
from .list_destinations_ok_response import ListDestinationsOkResponse, Destinations
|
|
2
|
-
from .list_packages_ok_response import ListPackagesOkResponse, Packages
|
|
3
|
-
from .create_purchase_v2_request import (
|
|
4
|
-
CreatePurchaseV2Request,
|
|
5
|
-
CreatePurchaseV2RequestLanguage,
|
|
6
|
-
)
|
|
7
|
-
from .create_purchase_v2_ok_response import (
|
|
8
|
-
CreatePurchaseV2OkResponse,
|
|
9
|
-
CreatePurchaseV2OkResponsePurchase,
|
|
10
|
-
CreatePurchaseV2OkResponseProfile,
|
|
11
|
-
)
|
|
12
|
-
from .list_purchases_ok_response import ListPurchasesOkResponse, Purchases
|
|
13
|
-
from .create_purchase_request import (
|
|
14
|
-
CreatePurchaseRequest,
|
|
15
|
-
CreatePurchaseRequestLanguage,
|
|
16
|
-
)
|
|
17
|
-
from .create_purchase_ok_response import (
|
|
18
|
-
CreatePurchaseOkResponse,
|
|
19
|
-
CreatePurchaseOkResponsePurchase,
|
|
20
|
-
CreatePurchaseOkResponseProfile,
|
|
21
|
-
)
|
|
22
|
-
from .top_up_esim_request import TopUpEsimRequest
|
|
23
|
-
from .top_up_esim_ok_response import (
|
|
24
|
-
TopUpEsimOkResponse,
|
|
25
|
-
TopUpEsimOkResponsePurchase,
|
|
26
|
-
TopUpEsimOkResponseProfile,
|
|
27
|
-
)
|
|
28
|
-
from .edit_purchase_request import EditPurchaseRequest
|
|
29
|
-
from .edit_purchase_ok_response import EditPurchaseOkResponse
|
|
30
|
-
from .get_purchase_consumption_ok_response import GetPurchaseConsumptionOkResponse
|
|
31
|
-
from .get_esim_ok_response import GetEsimOkResponse, GetEsimOkResponseEsim
|
|
32
|
-
from .get_esim_device_ok_response import GetEsimDeviceOkResponse, Device
|
|
33
|
-
from .get_esim_history_ok_response import (
|
|
34
|
-
GetEsimHistoryOkResponse,
|
|
35
|
-
GetEsimHistoryOkResponseEsim,
|
|
36
|
-
)
|
|
37
|
-
from .token_ok_response import TokenOkResponse
|
|
38
|
-
from .o_auth_token_request import OAuthTokenRequest
|
|
39
|
-
from .o_auth_token_response import OAuthTokenResponse
|
|
40
|
-
from .grant_type import GrantType
|
|
41
|
-
from .bad_request import BadRequest
|
|
42
|
-
from .unauthorized import Unauthorized
|
|
43
|
-
|
|
44
|
-
# Rebuild models to resolve circular forward references
|
|
45
|
-
# This ensures Pydantic can properly validate models that reference each other
|
|
46
|
-
ListDestinationsOkResponse.model_rebuild()
|
|
47
|
-
Destinations.model_rebuild()
|
|
48
|
-
ListPackagesOkResponse.model_rebuild()
|
|
49
|
-
Packages.model_rebuild()
|
|
50
|
-
CreatePurchaseV2Request.model_rebuild()
|
|
51
|
-
CreatePurchaseV2OkResponse.model_rebuild()
|
|
52
|
-
CreatePurchaseV2OkResponsePurchase.model_rebuild()
|
|
53
|
-
CreatePurchaseV2OkResponseProfile.model_rebuild()
|
|
54
|
-
ListPurchasesOkResponse.model_rebuild()
|
|
55
|
-
Purchases.model_rebuild()
|
|
56
|
-
CreatePurchaseRequest.model_rebuild()
|
|
57
|
-
CreatePurchaseOkResponse.model_rebuild()
|
|
58
|
-
CreatePurchaseOkResponsePurchase.model_rebuild()
|
|
59
|
-
CreatePurchaseOkResponseProfile.model_rebuild()
|
|
60
|
-
TopUpEsimRequest.model_rebuild()
|
|
61
|
-
TopUpEsimOkResponse.model_rebuild()
|
|
62
|
-
TopUpEsimOkResponsePurchase.model_rebuild()
|
|
63
|
-
TopUpEsimOkResponseProfile.model_rebuild()
|
|
64
|
-
EditPurchaseRequest.model_rebuild()
|
|
65
|
-
EditPurchaseOkResponse.model_rebuild()
|
|
66
|
-
GetPurchaseConsumptionOkResponse.model_rebuild()
|
|
67
|
-
GetEsimOkResponse.model_rebuild()
|
|
68
|
-
GetEsimOkResponseEsim.model_rebuild()
|
|
69
|
-
GetEsimDeviceOkResponse.model_rebuild()
|
|
70
|
-
Device.model_rebuild()
|
|
71
|
-
GetEsimHistoryOkResponse.model_rebuild()
|
|
72
|
-
GetEsimHistoryOkResponseEsim.model_rebuild()
|
|
73
|
-
TokenOkResponse.model_rebuild()
|
|
74
|
-
OAuthTokenRequest.model_rebuild()
|
|
75
|
-
OAuthTokenResponse.model_rebuild()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_ok_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/create_purchase_v2_ok_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_esim_device_ok_response.py
RENAMED
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/get_esim_history_ok_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/models/list_destinations_ok_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/__init__.py
RENAMED
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/base_handler.py
RENAMED
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/http_handler.py
RENAMED
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/oauth_handler.py
RENAMED
|
File without changes
|
{celitech_sdk-2.0.1 → celitech_sdk-2.0.4}/src/celitech/net/request_chain/handlers/retry_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|