diracx-client 0.0.1a17__py3-none-any.whl → 0.0.1a19__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.
- diracx/client/__init__.py +4 -18
- diracx/client/aio.py +1 -0
- diracx/client/extensions.py +90 -0
- diracx/client/{aio → generated}/__init__.py +2 -2
- diracx/client/{_client.py → generated/_client.py} +7 -6
- diracx/client/{_configuration.py → generated/_configuration.py} +1 -1
- diracx/client/generated/_patch.py +47 -0
- diracx/client/{_serialization.py → generated/_serialization.py} +301 -151
- diracx/client/{_vendor.py → generated/_vendor.py} +1 -1
- diracx/client/generated/aio/__init__.py +21 -0
- diracx/client/{aio → generated/aio}/_client.py +7 -6
- diracx/client/{aio → generated/aio}/_configuration.py +1 -1
- diracx/client/generated/aio/_patch.py +23 -0
- diracx/client/{aio → generated/aio}/_vendor.py +1 -1
- diracx/client/{aio → generated/aio}/operations/__init__.py +1 -1
- diracx/client/{aio → generated/aio}/operations/_operations.py +402 -385
- diracx/client/{models → generated/models}/__init__.py +3 -1
- diracx/client/{models → generated/models}/_enums.py +2 -2
- diracx/client/{models → generated/models}/_models.py +84 -43
- diracx/client/{operations → generated/operations}/__init__.py +1 -1
- diracx/client/{operations → generated/operations}/_operations.py +402 -385
- diracx/client/generated/py.typed +1 -0
- diracx/client/models.py +5 -0
- diracx/client/patches/__init__.py +19 -0
- diracx/client/patches/aio/__init__.py +18 -0
- diracx/client/{aio/_patch.py → patches/aio/utils.py} +10 -19
- diracx/client/{_patch.py → patches/utils.py} +98 -121
- {diracx_client-0.0.1a17.dist-info → diracx_client-0.0.1a19.dist-info}/METADATA +4 -4
- diracx_client-0.0.1a19.dist-info/RECORD +36 -0
- {diracx_client-0.0.1a17.dist-info → diracx_client-0.0.1a19.dist-info}/WHEEL +1 -1
- diracx_client-0.0.1a19.dist-info/entry_points.txt +3 -0
- diracx_client-0.0.1a17.dist-info/RECORD +0 -26
- /diracx/client/{aio → generated/aio}/operations/_patch.py +0 -0
- /diracx/client/{models → generated/models}/_patch.py +0 -0
- /diracx/client/{operations → generated/operations}/_patch.py +0 -0
- {diracx_client-0.0.1a17.dist-info → diracx_client-0.0.1a19.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
# Marker file for PEP 561.
|
diracx/client/models.py
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import List
|
4
|
+
|
5
|
+
from .utils import DiracClientMixin
|
6
|
+
|
7
|
+
|
8
|
+
from diracx.core.extensions import select_from_extension
|
9
|
+
|
10
|
+
real_client = select_from_extension(group="diracx", name="client_class")[0].load()
|
11
|
+
DiracGenerated = real_client
|
12
|
+
|
13
|
+
|
14
|
+
__all__: List[str] = [
|
15
|
+
"DiracClient",
|
16
|
+
] # Add all objects you want publicly available to users at this package level
|
17
|
+
|
18
|
+
|
19
|
+
class DiracClient(DiracClientMixin, DiracGenerated): ... # type: ignore
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import List
|
4
|
+
|
5
|
+
from .utils import DiracClientMixin
|
6
|
+
|
7
|
+
|
8
|
+
from diracx.core.extensions import select_from_extension
|
9
|
+
|
10
|
+
real_client = select_from_extension(group="diracx", name="aio_client_class")[0].load()
|
11
|
+
DiracGenerated = real_client
|
12
|
+
|
13
|
+
__all__: List[str] = [
|
14
|
+
"DiracClient",
|
15
|
+
] # Add all objects you want publicly available to users at this package level
|
16
|
+
|
17
|
+
|
18
|
+
class DiracClient(DiracClientMixin, DiracGenerated): ... # type: ignore
|
@@ -6,10 +6,13 @@
|
|
6
6
|
|
7
7
|
Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize
|
8
8
|
"""
|
9
|
+
from __future__ import annotations
|
10
|
+
|
11
|
+
import abc
|
9
12
|
import json
|
10
13
|
from types import TracebackType
|
11
14
|
from pathlib import Path
|
12
|
-
from typing import Any, List, Optional
|
15
|
+
from typing import Any, List, Optional, Self
|
13
16
|
from azure.core.credentials import AccessToken
|
14
17
|
from azure.core.credentials_async import AsyncTokenCredential
|
15
18
|
from azure.core.pipeline import PipelineRequest
|
@@ -17,8 +20,7 @@ from azure.core.pipeline.policies import AsyncBearerTokenCredentialPolicy
|
|
17
20
|
|
18
21
|
from diracx.core.preferences import get_diracx_preferences, DiracxPreferences
|
19
22
|
|
20
|
-
from
|
21
|
-
from .._patch import (
|
23
|
+
from ..utils import (
|
22
24
|
get_openid_configuration,
|
23
25
|
get_token,
|
24
26
|
refresh_token,
|
@@ -30,15 +32,6 @@ __all__: List[str] = [
|
|
30
32
|
] # Add all objects you want publicly available to users at this package level
|
31
33
|
|
32
34
|
|
33
|
-
def patch_sdk():
|
34
|
-
"""Do not remove from this file.
|
35
|
-
|
36
|
-
`patch_sdk` is a last resort escape hatch that allows you to do customizations
|
37
|
-
you can't accomplish using the techniques described in
|
38
|
-
https://aka.ms/azsdk/python/dpcodegen/python/customize
|
39
|
-
"""
|
40
|
-
|
41
|
-
|
42
35
|
class DiracTokenCredential(AsyncTokenCredential):
|
43
36
|
"""Tailor get_token() for our context"""
|
44
37
|
|
@@ -140,7 +133,7 @@ class DiracBearerTokenCredentialPolicy(AsyncBearerTokenCredentialPolicy):
|
|
140
133
|
request.http_request.headers["Authorization"] = f"Bearer {self._token.token}"
|
141
134
|
|
142
135
|
|
143
|
-
class
|
136
|
+
class DiracClientMixin(metaclass=abc.ABCMeta):
|
144
137
|
"""This class inherits from the generated Dirac client and adds support for tokens,
|
145
138
|
so that the caller does not need to configure it by itself.
|
146
139
|
"""
|
@@ -164,7 +157,10 @@ class DiracClient(DiracGenerated):
|
|
164
157
|
openid_configuration = get_openid_configuration(self._endpoint, verify=verify)
|
165
158
|
|
166
159
|
# Initialize Dirac with a Dirac-specific token credential policy
|
167
|
-
|
160
|
+
# We need to ignore types here because mypy complains that we give
|
161
|
+
# too many arguments to "object" constructor as this is a mixin
|
162
|
+
|
163
|
+
super().__init__( # type: ignore
|
168
164
|
endpoint=self._endpoint,
|
169
165
|
authentication_policy=DiracBearerTokenCredentialPolicy(
|
170
166
|
DiracTokenCredential(
|
@@ -180,8 +176,3 @@ class DiracClient(DiracGenerated):
|
|
180
176
|
@property
|
181
177
|
def client_id(self):
|
182
178
|
return self._client_id
|
183
|
-
|
184
|
-
async def __aenter__(self) -> "DiracClient":
|
185
|
-
"""Redefined to provide the patched Dirac client in the managed context"""
|
186
|
-
await self._client.__aenter__()
|
187
|
-
return self
|
@@ -1,11 +1,3 @@
|
|
1
|
-
# ------------------------------------
|
2
|
-
# Copyright (c) Microsoft Corporation.
|
3
|
-
# Licensed under the MIT License.
|
4
|
-
# ------------------------------------
|
5
|
-
"""Customize generated code here.
|
6
|
-
|
7
|
-
Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize
|
8
|
-
"""
|
9
1
|
from __future__ import annotations
|
10
2
|
|
11
3
|
from datetime import datetime, timezone
|
@@ -13,33 +5,114 @@ import json
|
|
13
5
|
import jwt
|
14
6
|
import requests
|
15
7
|
|
8
|
+
|
16
9
|
from pathlib import Path
|
17
|
-
from typing import Any, Dict, List, Optional, cast
|
10
|
+
from typing import Any, Dict, List, Optional, cast, Self
|
18
11
|
from urllib import parse
|
19
12
|
from azure.core.credentials import AccessToken
|
20
13
|
from azure.core.credentials import TokenCredential
|
21
14
|
from azure.core.pipeline import PipelineRequest
|
22
15
|
from azure.core.pipeline.policies import BearerTokenCredentialPolicy
|
23
16
|
|
24
|
-
from
|
17
|
+
from ..generated.models import TokenResponse
|
25
18
|
from diracx.core.models import TokenResponse as CoreTokenResponse
|
26
19
|
from diracx.core.preferences import DiracxPreferences, get_diracx_preferences
|
27
20
|
|
28
|
-
|
21
|
+
import sys
|
29
22
|
|
30
23
|
|
31
|
-
|
32
|
-
|
33
|
-
|
24
|
+
def refresh_token(
|
25
|
+
location: Path,
|
26
|
+
token_endpoint: str,
|
27
|
+
client_id: str,
|
28
|
+
refresh_token: str,
|
29
|
+
*,
|
30
|
+
verify: bool | str = True,
|
31
|
+
) -> AccessToken:
|
32
|
+
"""Refresh the access token using the refresh_token flow."""
|
33
|
+
from diracx.core.utils import write_credentials
|
34
34
|
|
35
|
+
response = requests.post(
|
36
|
+
url=token_endpoint,
|
37
|
+
data={
|
38
|
+
"client_id": client_id,
|
39
|
+
"grant_type": "refresh_token",
|
40
|
+
"refresh_token": refresh_token,
|
41
|
+
},
|
42
|
+
verify=verify,
|
43
|
+
)
|
35
44
|
|
36
|
-
|
37
|
-
|
45
|
+
if response.status_code != 200:
|
46
|
+
raise RuntimeError(
|
47
|
+
f"An issue occured while refreshing your access token: {response.json()['detail']}"
|
48
|
+
)
|
38
49
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
50
|
+
res = response.json()
|
51
|
+
token_response = TokenResponse(
|
52
|
+
access_token=res["access_token"],
|
53
|
+
expires_in=res["expires_in"],
|
54
|
+
token_type=res.get("token_type"),
|
55
|
+
refresh_token=res.get("refresh_token"),
|
56
|
+
)
|
57
|
+
|
58
|
+
write_credentials(cast(CoreTokenResponse, token_response), location=location)
|
59
|
+
credentials = json.loads(location.read_text())
|
60
|
+
return AccessToken(credentials.get("access_token"), credentials.get("expires_on"))
|
61
|
+
|
62
|
+
|
63
|
+
def get_openid_configuration(
|
64
|
+
endpoint: str, *, verify: bool | str = True
|
65
|
+
) -> Dict[str, str]:
|
66
|
+
"""Get the openid configuration from the .well-known endpoint"""
|
67
|
+
response = requests.get(
|
68
|
+
url=parse.urljoin(endpoint, ".well-known/openid-configuration"),
|
69
|
+
verify=verify,
|
70
|
+
)
|
71
|
+
if not response.ok:
|
72
|
+
raise RuntimeError("Cannot fetch any information from the .well-known endpoint")
|
73
|
+
return response.json()
|
74
|
+
|
75
|
+
|
76
|
+
def get_token(location: Path, token: AccessToken | None) -> AccessToken | None:
|
77
|
+
"""Get token if available and still valid."""
|
78
|
+
# If the credentials path does not exist, raise an error
|
79
|
+
if not location.exists():
|
80
|
+
raise RuntimeError("credentials are not set")
|
81
|
+
|
82
|
+
# Load the existing credentials
|
83
|
+
if not token:
|
84
|
+
credentials = json.loads(location.read_text())
|
85
|
+
token = AccessToken(
|
86
|
+
cast(str, credentials.get("access_token")),
|
87
|
+
cast(int, credentials.get("expires_on")),
|
88
|
+
)
|
89
|
+
|
90
|
+
# We check the validity of the token
|
91
|
+
# If not valid, then return None to inform the caller that a new token
|
92
|
+
# is needed
|
93
|
+
if not is_token_valid(token):
|
94
|
+
return None
|
95
|
+
|
96
|
+
return token
|
97
|
+
|
98
|
+
|
99
|
+
def is_refresh_token_valid(refresh_token: str) -> bool:
|
100
|
+
"""Check if the refresh token is still valid."""
|
101
|
+
# Decode the refresh token
|
102
|
+
refresh_payload = jwt.decode(refresh_token, options={"verify_signature": False})
|
103
|
+
if not refresh_payload or "exp" not in refresh_payload:
|
104
|
+
return False
|
105
|
+
|
106
|
+
# Check the expiration time
|
107
|
+
return refresh_payload["exp"] > datetime.now(tz=timezone.utc).timestamp()
|
108
|
+
|
109
|
+
|
110
|
+
def is_token_valid(token: AccessToken) -> bool:
|
111
|
+
"""Condition to get a new token"""
|
112
|
+
return (
|
113
|
+
datetime.fromtimestamp(token.expires_on, tz=timezone.utc)
|
114
|
+
- datetime.now(tz=timezone.utc)
|
115
|
+
).total_seconds() > 300
|
43
116
|
|
44
117
|
|
45
118
|
class DiracTokenCredential(TokenCredential):
|
@@ -125,7 +198,7 @@ class DiracBearerTokenCredentialPolicy(BearerTokenCredentialPolicy):
|
|
125
198
|
request.http_request.headers["Authorization"] = f"Bearer {self._token.token}"
|
126
199
|
|
127
200
|
|
128
|
-
class
|
201
|
+
class DiracClientMixin:
|
129
202
|
"""This class inherits from the generated Dirac client and adds support for tokens,
|
130
203
|
so that the caller does not need to configure it by itself.
|
131
204
|
"""
|
@@ -149,7 +222,10 @@ class DiracClient(DiracGenerated):
|
|
149
222
|
openid_configuration = get_openid_configuration(self._endpoint, verify=verify)
|
150
223
|
|
151
224
|
# Initialize Dirac with a Dirac-specific token credential policy
|
152
|
-
|
225
|
+
# We need to ignore types here because mypy complains that we give
|
226
|
+
# too many arguments to "object" constructor as this is a mixin
|
227
|
+
|
228
|
+
super().__init__( # type: ignore
|
153
229
|
endpoint=self._endpoint,
|
154
230
|
authentication_policy=DiracBearerTokenCredentialPolicy(
|
155
231
|
DiracTokenCredential(
|
@@ -165,102 +241,3 @@ class DiracClient(DiracGenerated):
|
|
165
241
|
@property
|
166
242
|
def client_id(self):
|
167
243
|
return self._client_id
|
168
|
-
|
169
|
-
def __aenter__(self) -> "DiracClient":
|
170
|
-
"""Redefined to provide the patched Dirac client in the managed context"""
|
171
|
-
self._client.__enter__()
|
172
|
-
return self
|
173
|
-
|
174
|
-
|
175
|
-
def refresh_token(
|
176
|
-
location: Path,
|
177
|
-
token_endpoint: str,
|
178
|
-
client_id: str,
|
179
|
-
refresh_token: str,
|
180
|
-
*,
|
181
|
-
verify: bool | str = True,
|
182
|
-
) -> AccessToken:
|
183
|
-
"""Refresh the access token using the refresh_token flow."""
|
184
|
-
from diracx.core.utils import write_credentials
|
185
|
-
|
186
|
-
response = requests.post(
|
187
|
-
url=token_endpoint,
|
188
|
-
data={
|
189
|
-
"client_id": client_id,
|
190
|
-
"grant_type": "refresh_token",
|
191
|
-
"refresh_token": refresh_token,
|
192
|
-
},
|
193
|
-
verify=verify,
|
194
|
-
)
|
195
|
-
|
196
|
-
if response.status_code != 200:
|
197
|
-
raise RuntimeError(
|
198
|
-
f"An issue occured while refreshing your access token: {response.json()['detail']}"
|
199
|
-
)
|
200
|
-
|
201
|
-
res = response.json()
|
202
|
-
token_response = TokenResponse(
|
203
|
-
access_token=res["access_token"],
|
204
|
-
expires_in=res["expires_in"],
|
205
|
-
token_type=res.get("token_type"),
|
206
|
-
refresh_token=res.get("refresh_token"),
|
207
|
-
)
|
208
|
-
|
209
|
-
write_credentials(cast(CoreTokenResponse, token_response), location=location)
|
210
|
-
credentials = json.loads(location.read_text())
|
211
|
-
return AccessToken(credentials.get("access_token"), credentials.get("expires_on"))
|
212
|
-
|
213
|
-
|
214
|
-
def get_openid_configuration(
|
215
|
-
endpoint: str, *, verify: bool | str = True
|
216
|
-
) -> Dict[str, str]:
|
217
|
-
"""Get the openid configuration from the .well-known endpoint"""
|
218
|
-
response = requests.get(
|
219
|
-
url=parse.urljoin(endpoint, ".well-known/openid-configuration"),
|
220
|
-
verify=verify,
|
221
|
-
)
|
222
|
-
if not response.ok:
|
223
|
-
raise RuntimeError("Cannot fetch any information from the .well-known endpoint")
|
224
|
-
return response.json()
|
225
|
-
|
226
|
-
|
227
|
-
def get_token(location: Path, token: AccessToken | None) -> AccessToken | None:
|
228
|
-
"""Get token if available and still valid."""
|
229
|
-
# If the credentials path does not exist, raise an error
|
230
|
-
if not location.exists():
|
231
|
-
raise RuntimeError("credentials are not set")
|
232
|
-
|
233
|
-
# Load the existing credentials
|
234
|
-
if not token:
|
235
|
-
credentials = json.loads(location.read_text())
|
236
|
-
token = AccessToken(
|
237
|
-
cast(str, credentials.get("access_token")),
|
238
|
-
cast(int, credentials.get("expires_on")),
|
239
|
-
)
|
240
|
-
|
241
|
-
# We check the validity of the token
|
242
|
-
# If not valid, then return None to inform the caller that a new token
|
243
|
-
# is needed
|
244
|
-
if not is_token_valid(token):
|
245
|
-
return None
|
246
|
-
|
247
|
-
return token
|
248
|
-
|
249
|
-
|
250
|
-
def is_refresh_token_valid(refresh_token: str) -> bool:
|
251
|
-
"""Check if the refresh token is still valid."""
|
252
|
-
# Decode the refresh token
|
253
|
-
refresh_payload = jwt.decode(refresh_token, options={"verify_signature": False})
|
254
|
-
if not refresh_payload or "exp" not in refresh_payload:
|
255
|
-
return False
|
256
|
-
|
257
|
-
# Check the expiration time
|
258
|
-
return refresh_payload["exp"] > datetime.now(tz=timezone.utc).timestamp()
|
259
|
-
|
260
|
-
|
261
|
-
def is_token_valid(token: AccessToken) -> bool:
|
262
|
-
"""Condition to get a new token"""
|
263
|
-
return (
|
264
|
-
datetime.fromtimestamp(token.expires_on, tz=timezone.utc)
|
265
|
-
- datetime.now(tz=timezone.utc)
|
266
|
-
).total_seconds() > 300
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: diracx-client
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.1a19
|
4
4
|
Summary: TODO
|
5
5
|
License: GPL-3.0-only
|
6
6
|
Classifier: Intended Audience :: Science/Research
|
@@ -8,14 +8,14 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
9
9
|
Classifier: Topic :: Scientific/Engineering
|
10
10
|
Classifier: Topic :: System :: Distributed Computing
|
11
|
-
Requires-Python: >=3.
|
11
|
+
Requires-Python: >=3.11
|
12
12
|
Description-Content-Type: text/markdown
|
13
13
|
Requires-Dist: azure-core
|
14
14
|
Requires-Dist: diracx-core
|
15
15
|
Requires-Dist: isodate
|
16
16
|
Requires-Dist: requests
|
17
17
|
Provides-Extra: testing
|
18
|
-
Requires-Dist: diracx-testing
|
18
|
+
Requires-Dist: diracx-testing; extra == "testing"
|
19
19
|
Provides-Extra: types
|
20
|
-
Requires-Dist: types-requests
|
20
|
+
Requires-Dist: types-requests; extra == "types"
|
21
21
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
diracx/client/__init__.py,sha256=aLo7lP4xwlCtxs7MKD55gr2oDLQyWEvRHZVHwj5Sl2c,165
|
2
|
+
diracx/client/aio.py,sha256=gqVCOxYYl-q6hrz6dbhiT8kXuYWZfQeIQLHAHF9liI4,37
|
3
|
+
diracx/client/extensions.py,sha256=igHJAXhgpYQq-Di1ZOX2b2okqgjQHTs9HL8mBTHb6ss,3385
|
4
|
+
diracx/client/models.py,sha256=ToGTZHywDTtn-uw1woTLxNAcSw1eRCx2A_kr67ix2Hw,163
|
5
|
+
diracx/client/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
6
|
+
diracx/client/generated/__init__.py,sha256=B9QWqpEmloFGgHcz5Qr_JhZ1VWuue3bFqG8P8tNRnOo,699
|
7
|
+
diracx/client/generated/_client.py,sha256=Ucb7XVfbGg3wwzyUzyXVM7vHyHpiVY_SI-hLIlrzM10,4831
|
8
|
+
diracx/client/generated/_configuration.py,sha256=cV68TslcEaEz1UC9I1w0fD97B8Qd-qp4e9DdnN52RNo,1936
|
9
|
+
diracx/client/generated/_patch.py,sha256=ZsuUeieEbKp0OjXJz2qAW-z6W0Xt8wwb38J-RvQxfNE,1328
|
10
|
+
diracx/client/generated/_serialization.py,sha256=D2NDvU1N7HsRxZcro5RqQsjwzeVrW89OfQABp2m-RT8,86957
|
11
|
+
diracx/client/generated/_vendor.py,sha256=G4uvSqVEkCV40TKFEGOXRzs4kjAx70wPBNPS8cdzSBg,1936
|
12
|
+
diracx/client/generated/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
13
|
+
diracx/client/generated/aio/__init__.py,sha256=B9QWqpEmloFGgHcz5Qr_JhZ1VWuue3bFqG8P8tNRnOo,699
|
14
|
+
diracx/client/generated/aio/_client.py,sha256=sT_kcTQdSmZctC-uVACv_KvtUQUANbYNorpz31tcGsc,4952
|
15
|
+
diracx/client/generated/aio/_configuration.py,sha256=XLwTMklUFCJUPdY7nyx2YjLHyu23q6H0nPYgbQfsr48,1968
|
16
|
+
diracx/client/generated/aio/_patch.py,sha256=6FYNV6Yt0ttTc7A5EQui764Ujuzypkjpv47LVdccmD8,697
|
17
|
+
diracx/client/generated/aio/_vendor.py,sha256=G4uvSqVEkCV40TKFEGOXRzs4kjAx70wPBNPS8cdzSBg,1936
|
18
|
+
diracx/client/generated/aio/operations/__init__.py,sha256=GHpFQ9Xm5etewGThBTvKhKms0KHnhp2_vuNkb6na8a0,868
|
19
|
+
diracx/client/generated/aio/operations/_operations.py,sha256=5h5c7NFGLOi53yxgC4ZPO4joSNysax4O4hxpDnNGNPE,99551
|
20
|
+
diracx/client/generated/aio/operations/_patch.py,sha256=3oHjHqBF7DXruMSVUTRxW0Xpv_mY1WaB8iyo47YBTec,4229
|
21
|
+
diracx/client/generated/models/__init__.py,sha256=1W96tTA46xJpxwVE73kswpIkUwuKZAVxKdr7mdUgykw,3110
|
22
|
+
diracx/client/generated/models/_enums.py,sha256=xhX35Xy2EkLB1gX5TyOSFTV0pw9iAgR98UenK5yKB2o,2389
|
23
|
+
diracx/client/generated/models/_models.py,sha256=WJoQCHRJ0rXehIr0gUwNNfKXp9uIifKb8smXmH0IQoE,39799
|
24
|
+
diracx/client/generated/models/_patch.py,sha256=uvLwKzjWO_t-VZ4aSuLhuJ05RVxAP9UJxZV3XDeGMnU,1497
|
25
|
+
diracx/client/generated/operations/__init__.py,sha256=GHpFQ9Xm5etewGThBTvKhKms0KHnhp2_vuNkb6na8a0,868
|
26
|
+
diracx/client/generated/operations/_operations.py,sha256=jv07HbP9JF0DF56eyu7FYYjW4DSB1GxjMDHVRkM1LvY,124482
|
27
|
+
diracx/client/generated/operations/_patch.py,sha256=FvemlcswH_zZkdyoGObyTwRnwTsYIZJa3seO66C2BQI,4202
|
28
|
+
diracx/client/patches/__init__.py,sha256=8mzMyg1Kd9lJH1K7DYJ6FgjkTJgPRJmF0sYmuFv5wcs,468
|
29
|
+
diracx/client/patches/utils.py,sha256=srbqBTsnNUKajHAP4aT3hR29P6rmJlsojIiJdMBW9wo,8403
|
30
|
+
diracx/client/patches/aio/__init__.py,sha256=qIy1qj8HzaZDEU2PCjEHjFbylwfYRAM0i90WEDs2WuQ,471
|
31
|
+
diracx/client/patches/aio/utils.py,sha256=d_OvqJuzJUfmeSmfmDD3J6CArVW3M9BZg9fnslzltKQ,6412
|
32
|
+
diracx_client-0.0.1a19.dist-info/METADATA,sha256=7gHtve3zQW3j57bJyUOVYOoTykIkwGtjpVyi39uK5wg,677
|
33
|
+
diracx_client-0.0.1a19.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
34
|
+
diracx_client-0.0.1a19.dist-info/entry_points.txt,sha256=NP67B7z-VIy8vEG3ZYtOAyxZqLtrOAD5hh2pA2AFBKI,123
|
35
|
+
diracx_client-0.0.1a19.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
|
36
|
+
diracx_client-0.0.1a19.dist-info/RECORD,,
|
@@ -1,26 +0,0 @@
|
|
1
|
-
diracx/client/__init__.py,sha256=NpsBFQPgWn_D_IVhT2RbRy0Y9oIKicEh6QBD0zGYHy4,701
|
2
|
-
diracx/client/_client.py,sha256=agmWB402dpROnDRlqL_StInHTBIqDj-ZLSPinGfrxGk,4788
|
3
|
-
diracx/client/_configuration.py,sha256=87XGycT5MOvmixM7v4Hq8kGsJhDAA6Zv_8pxO2sCAvQ,1937
|
4
|
-
diracx/client/_patch.py,sha256=Dgf3pYZrSRurPsx6yxio9kMRmW30LHNEqL744ksZiPI,9130
|
5
|
-
diracx/client/_serialization.py,sha256=jd8QTNv6p8YvcNhCkJPIjiZyuVQL55YEGOpy4cVcVzI,80965
|
6
|
-
diracx/client/_vendor.py,sha256=ubmRRLS5-52w6qbvaWwOZBz-gS-MH3StxRlmXROIMvs,1937
|
7
|
-
diracx/client/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
8
|
-
diracx/client/aio/__init__.py,sha256=NpsBFQPgWn_D_IVhT2RbRy0Y9oIKicEh6QBD0zGYHy4,701
|
9
|
-
diracx/client/aio/_client.py,sha256=zaVOzCPZfUPTTXfHohO7fm43mjo5_zPHVWFwG0ZSvOs,4909
|
10
|
-
diracx/client/aio/_configuration.py,sha256=5AiZRmwQ1B8SjUPIY6bYtD-V71eumeHxQUj7Maigs4c,1969
|
11
|
-
diracx/client/aio/_patch.py,sha256=fCRZTD-wvBE2-QZo4jiN1OsZzM2mWbtSAXk9X9Als9Q,6688
|
12
|
-
diracx/client/aio/_vendor.py,sha256=ubmRRLS5-52w6qbvaWwOZBz-gS-MH3StxRlmXROIMvs,1937
|
13
|
-
diracx/client/aio/operations/__init__.py,sha256=NpQ6cr321ysggDkN62imu0BAD6VXTF2GZNG0Zs6hqj4,869
|
14
|
-
diracx/client/aio/operations/_operations.py,sha256=mM1UgFGr3e5KeE591Bb0drPjz1VNdzLZ1-_SKtcHQ18,99720
|
15
|
-
diracx/client/aio/operations/_patch.py,sha256=3oHjHqBF7DXruMSVUTRxW0Xpv_mY1WaB8iyo47YBTec,4229
|
16
|
-
diracx/client/models/__init__.py,sha256=cidagrv48gYiRwqXgAtkiAG2CBHoEF5aMuKt8gqOOjE,3043
|
17
|
-
diracx/client/models/_enums.py,sha256=Cn1A9abUE1EK7Z5saAFj5Ea6sk_QdcvDsdMbZiyGFlo,2395
|
18
|
-
diracx/client/models/_models.py,sha256=jzLNS8kQO8U0x_CAAjtuK--K5rZrUkLXaLRdFiNV13s,38145
|
19
|
-
diracx/client/models/_patch.py,sha256=uvLwKzjWO_t-VZ4aSuLhuJ05RVxAP9UJxZV3XDeGMnU,1497
|
20
|
-
diracx/client/operations/__init__.py,sha256=NpQ6cr321ysggDkN62imu0BAD6VXTF2GZNG0Zs6hqj4,869
|
21
|
-
diracx/client/operations/_operations.py,sha256=Favj5uZ_UeRbA0UT2FYJSENNpH6qz2IkcQu0TNAjGiI,124423
|
22
|
-
diracx/client/operations/_patch.py,sha256=FvemlcswH_zZkdyoGObyTwRnwTsYIZJa3seO66C2BQI,4202
|
23
|
-
diracx_client-0.0.1a17.dist-info/METADATA,sha256=4j7me5xo62UKHy4tvS7EgJ6gcffP_Cbjg6QWoyhRH9A,679
|
24
|
-
diracx_client-0.0.1a17.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
25
|
-
diracx_client-0.0.1a17.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
|
26
|
-
diracx_client-0.0.1a17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|