diracx-client 0.0.1a17__py3-none-any.whl → 0.0.1a19__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|