diracx-client 0.0.1a18__py3-none-any.whl → 0.0.1a20__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. diracx/client/__init__.py +4 -18
  2. diracx/client/aio.py +1 -0
  3. diracx/client/extensions.py +90 -0
  4. diracx/client/{aio → generated}/__init__.py +2 -2
  5. diracx/client/{_client.py → generated/_client.py} +7 -6
  6. diracx/client/{_configuration.py → generated/_configuration.py} +1 -1
  7. diracx/client/generated/_patch.py +47 -0
  8. diracx/client/{_serialization.py → generated/_serialization.py} +303 -154
  9. diracx/client/{_vendor.py → generated/_vendor.py} +1 -1
  10. diracx/client/generated/aio/__init__.py +21 -0
  11. diracx/client/{aio → generated/aio}/_client.py +7 -6
  12. diracx/client/{aio → generated/aio}/_configuration.py +1 -1
  13. diracx/client/generated/aio/_patch.py +23 -0
  14. diracx/client/{aio → generated/aio}/_vendor.py +1 -1
  15. diracx/client/{aio → generated/aio}/operations/__init__.py +2 -2
  16. diracx/client/{aio → generated/aio}/operations/_operations.py +139 -209
  17. diracx/client/{models → generated/models}/__init__.py +4 -2
  18. diracx/client/{models → generated/models}/_enums.py +2 -2
  19. diracx/client/{models → generated/models}/_models.py +86 -46
  20. diracx/client/{operations → generated/operations}/__init__.py +2 -2
  21. diracx/client/{operations → generated/operations}/_operations.py +139 -209
  22. diracx/client/generated/py.typed +1 -0
  23. diracx/client/models.py +5 -0
  24. diracx/client/patches/__init__.py +19 -0
  25. diracx/client/patches/aio/__init__.py +18 -0
  26. diracx/client/{aio/_patch.py → patches/aio/utils.py} +25 -19
  27. diracx/client/{_patch.py → patches/utils.py} +115 -122
  28. {diracx_client-0.0.1a18.dist-info → diracx_client-0.0.1a20.dist-info}/METADATA +1 -2
  29. diracx_client-0.0.1a20.dist-info/RECORD +36 -0
  30. {diracx_client-0.0.1a18.dist-info → diracx_client-0.0.1a20.dist-info}/WHEEL +1 -1
  31. diracx_client-0.0.1a20.dist-info/entry_points.txt +3 -0
  32. diracx_client-0.0.1a18.dist-info/RECORD +0 -26
  33. /diracx/client/{aio → generated/aio}/operations/_patch.py +0 -0
  34. /diracx/client/{models → generated/models}/_patch.py +0 -0
  35. /diracx/client/{operations → generated/operations}/_patch.py +0 -0
  36. {diracx_client-0.0.1a18.dist-info → diracx_client-0.0.1a20.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ # Marker file for PEP 561.
@@ -0,0 +1,5 @@
1
+ from .generated.models import * # pylint: disable=unused-wildcard-import
2
+
3
+
4
+ # TODO: replace with postprocess
5
+ from .generated.models import DeviceFlowErrorResponse
@@ -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,14 @@
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
13
+ from importlib.metadata import PackageNotFoundError, distribution
10
14
  from types import TracebackType
11
15
  from pathlib import Path
12
- from typing import Any, List, Optional
16
+ from typing import Any, List, Optional, Self
13
17
  from azure.core.credentials import AccessToken
14
18
  from azure.core.credentials_async import AsyncTokenCredential
15
19
  from azure.core.pipeline import PipelineRequest
@@ -17,8 +21,7 @@ from azure.core.pipeline.policies import AsyncBearerTokenCredentialPolicy
17
21
 
18
22
  from diracx.core.preferences import get_diracx_preferences, DiracxPreferences
19
23
 
20
- from ._client import Dirac as DiracGenerated
21
- from .._patch import (
24
+ from ..utils import (
22
25
  get_openid_configuration,
23
26
  get_token,
24
27
  refresh_token,
@@ -30,15 +33,6 @@ __all__: List[str] = [
30
33
  ] # Add all objects you want publicly available to users at this package level
31
34
 
32
35
 
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
36
  class DiracTokenCredential(AsyncTokenCredential):
43
37
  """Tailor get_token() for our context"""
44
38
 
@@ -140,7 +134,7 @@ class DiracBearerTokenCredentialPolicy(AsyncBearerTokenCredentialPolicy):
140
134
  request.http_request.headers["Authorization"] = f"Bearer {self._token.token}"
141
135
 
142
136
 
143
- class DiracClient(DiracGenerated):
137
+ class DiracClientMixin(metaclass=abc.ABCMeta):
144
138
  """This class inherits from the generated Dirac client and adds support for tokens,
145
139
  so that the caller does not need to configure it by itself.
146
140
  """
@@ -163,8 +157,25 @@ class DiracClient(DiracGenerated):
163
157
  # Get .well-known configuration
164
158
  openid_configuration = get_openid_configuration(self._endpoint, verify=verify)
165
159
 
160
+ try:
161
+ self.client_version = distribution("diracx").version
162
+ except PackageNotFoundError:
163
+ try:
164
+ self.client_version = distribution("diracx-client").version
165
+ except PackageNotFoundError:
166
+ print("Error while getting client version")
167
+ self.client_version = "Unknown"
168
+
169
+ # Setting default headers
170
+ kwargs.setdefault("base_headers", {})[
171
+ "DiracX-Client-Version"
172
+ ] = self.client_version
173
+
166
174
  # Initialize Dirac with a Dirac-specific token credential policy
167
- super().__init__(
175
+ # We need to ignore types here because mypy complains that we give
176
+ # too many arguments to "object" constructor as this is a mixin
177
+
178
+ super().__init__( # type: ignore
168
179
  endpoint=self._endpoint,
169
180
  authentication_policy=DiracBearerTokenCredentialPolicy(
170
181
  DiracTokenCredential(
@@ -180,8 +191,3 @@ class DiracClient(DiracGenerated):
180
191
  @property
181
192
  def client_id(self):
182
193
  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,45 +1,120 @@
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
- from datetime import datetime, timezone
3
+
12
4
  import json
13
5
  import jwt
14
6
  import requests
15
7
 
8
+ from datetime import datetime, timezone
9
+ from importlib.metadata import PackageNotFoundError, distribution
10
+
16
11
  from pathlib import Path
17
- from typing import Any, Dict, List, Optional, cast
12
+ from typing import Any, Dict, List, Optional, cast, Self
18
13
  from urllib import parse
19
14
  from azure.core.credentials import AccessToken
20
15
  from azure.core.credentials import TokenCredential
21
16
  from azure.core.pipeline import PipelineRequest
22
17
  from azure.core.pipeline.policies import BearerTokenCredentialPolicy
23
18
 
24
- from diracx.client.models import TokenResponse
19
+ from ..generated.models import TokenResponse
25
20
  from diracx.core.models import TokenResponse as CoreTokenResponse
26
21
  from diracx.core.preferences import DiracxPreferences, get_diracx_preferences
27
22
 
28
- from ._client import Dirac as DiracGenerated
23
+ import sys
24
+
25
+
26
+ def refresh_token(
27
+ location: Path,
28
+ token_endpoint: str,
29
+ client_id: str,
30
+ refresh_token: str,
31
+ *,
32
+ verify: bool | str = True,
33
+ ) -> AccessToken:
34
+ """Refresh the access token using the refresh_token flow."""
35
+ from diracx.core.utils import write_credentials
36
+
37
+ response = requests.post(
38
+ url=token_endpoint,
39
+ data={
40
+ "client_id": client_id,
41
+ "grant_type": "refresh_token",
42
+ "refresh_token": refresh_token,
43
+ },
44
+ verify=verify,
45
+ )
29
46
 
47
+ if response.status_code != 200:
48
+ raise RuntimeError(
49
+ f"An issue occured while refreshing your access token: {response.json()['detail']}"
50
+ )
30
51
 
31
- __all__: List[str] = [
32
- "DiracClient",
33
- ] # Add all objects you want publicly available to users at this package level
52
+ res = response.json()
53
+ token_response = TokenResponse(
54
+ access_token=res["access_token"],
55
+ expires_in=res["expires_in"],
56
+ token_type=res.get("token_type"),
57
+ refresh_token=res.get("refresh_token"),
58
+ )
34
59
 
60
+ write_credentials(cast(CoreTokenResponse, token_response), location=location)
61
+ credentials = json.loads(location.read_text())
62
+ return AccessToken(credentials.get("access_token"), credentials.get("expires_on"))
35
63
 
36
- def patch_sdk():
37
- """Do not remove from this file.
38
64
 
39
- `patch_sdk` is a last resort escape hatch that allows you to do customizations
40
- you can't accomplish using the techniques described in
41
- https://aka.ms/azsdk/python/dpcodegen/python/customize
42
- """
65
+ def get_openid_configuration(
66
+ endpoint: str, *, verify: bool | str = True
67
+ ) -> Dict[str, str]:
68
+ """Get the openid configuration from the .well-known endpoint"""
69
+ response = requests.get(
70
+ url=parse.urljoin(endpoint, ".well-known/openid-configuration"),
71
+ verify=verify,
72
+ )
73
+ if not response.ok:
74
+ raise RuntimeError("Cannot fetch any information from the .well-known endpoint")
75
+ return response.json()
76
+
77
+
78
+ def get_token(location: Path, token: AccessToken | None) -> AccessToken | None:
79
+ """Get token if available and still valid."""
80
+ # If the credentials path does not exist, raise an error
81
+ if not location.exists():
82
+ raise RuntimeError("credentials are not set")
83
+
84
+ # Load the existing credentials
85
+ if not token:
86
+ credentials = json.loads(location.read_text())
87
+ token = AccessToken(
88
+ cast(str, credentials.get("access_token")),
89
+ cast(int, credentials.get("expires_on")),
90
+ )
91
+
92
+ # We check the validity of the token
93
+ # If not valid, then return None to inform the caller that a new token
94
+ # is needed
95
+ if not is_token_valid(token):
96
+ return None
97
+
98
+ return token
99
+
100
+
101
+ def is_refresh_token_valid(refresh_token: str) -> bool:
102
+ """Check if the refresh token is still valid."""
103
+ # Decode the refresh token
104
+ refresh_payload = jwt.decode(refresh_token, options={"verify_signature": False})
105
+ if not refresh_payload or "exp" not in refresh_payload:
106
+ return False
107
+
108
+ # Check the expiration time
109
+ return refresh_payload["exp"] > datetime.now(tz=timezone.utc).timestamp()
110
+
111
+
112
+ def is_token_valid(token: AccessToken) -> bool:
113
+ """Condition to get a new token"""
114
+ return (
115
+ datetime.fromtimestamp(token.expires_on, tz=timezone.utc)
116
+ - datetime.now(tz=timezone.utc)
117
+ ).total_seconds() > 300
43
118
 
44
119
 
45
120
  class DiracTokenCredential(TokenCredential):
@@ -125,7 +200,7 @@ class DiracBearerTokenCredentialPolicy(BearerTokenCredentialPolicy):
125
200
  request.http_request.headers["Authorization"] = f"Bearer {self._token.token}"
126
201
 
127
202
 
128
- class DiracClient(DiracGenerated):
203
+ class DiracClientMixin:
129
204
  """This class inherits from the generated Dirac client and adds support for tokens,
130
205
  so that the caller does not need to configure it by itself.
131
206
  """
@@ -148,8 +223,25 @@ class DiracClient(DiracGenerated):
148
223
  # Get .well-known configuration
149
224
  openid_configuration = get_openid_configuration(self._endpoint, verify=verify)
150
225
 
226
+ try:
227
+ self.client_version = distribution("diracx").version
228
+ except PackageNotFoundError:
229
+ try:
230
+ self.client_version = distribution("diracx-client").version
231
+ except PackageNotFoundError:
232
+ print("Error while getting client version")
233
+ self.client_version = "Unknown"
234
+
235
+ # Setting default headers
236
+ kwargs.setdefault("base_headers", {})[
237
+ "DiracX-Client-Version"
238
+ ] = self.client_version
239
+
151
240
  # Initialize Dirac with a Dirac-specific token credential policy
152
- super().__init__(
241
+ # We need to ignore types here because mypy complains that we give
242
+ # too many arguments to "object" constructor as this is a mixin
243
+
244
+ super().__init__( # type: ignore
153
245
  endpoint=self._endpoint,
154
246
  authentication_policy=DiracBearerTokenCredentialPolicy(
155
247
  DiracTokenCredential(
@@ -165,102 +257,3 @@ class DiracClient(DiracGenerated):
165
257
  @property
166
258
  def client_id(self):
167
259
  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.1a18
3
+ Version: 0.0.1a20
4
4
  Summary: TODO
5
5
  License: GPL-3.0-only
6
6
  Classifier: Intended Audience :: Science/Research
@@ -18,4 +18,3 @@ Provides-Extra: testing
18
18
  Requires-Dist: diracx-testing; extra == "testing"
19
19
  Provides-Extra: types
20
20
  Requires-Dist: types-requests; extra == "types"
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=vJe8ZP3hLFwRK36KPA2n6P4ti0nOXJgrOAhxN6bRuzU,719
7
+ diracx/client/generated/_client.py,sha256=e_LERq7nLIMtOUL84foK5S4kZAOF9mJlFOdAcdGCwDs,4831
8
+ diracx/client/generated/_configuration.py,sha256=qzFZ089UDtXIYEClN5w6iJj0Hm72qy_FL0pJsXathfM,1936
9
+ diracx/client/generated/_patch.py,sha256=ZsuUeieEbKp0OjXJz2qAW-z6W0Xt8wwb38J-RvQxfNE,1328
10
+ diracx/client/generated/_serialization.py,sha256=4C5vtTgquShn3QH7J2QaSEukQIMLW67tfNoEdGvWn5k,86948
11
+ diracx/client/generated/_vendor.py,sha256=M1s4hEh-jejSih4eDGzFu1MQkNyWQM5pmzMxyp0eBCE,1936
12
+ diracx/client/generated/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
13
+ diracx/client/generated/aio/__init__.py,sha256=vJe8ZP3hLFwRK36KPA2n6P4ti0nOXJgrOAhxN6bRuzU,719
14
+ diracx/client/generated/aio/_client.py,sha256=ctZbEdAhSPJtDYWsbh8nfvbXI_C932xd58T0Mw0q-dk,4952
15
+ diracx/client/generated/aio/_configuration.py,sha256=6V0bK2A8i_0Au-ojhZOSqYIgYTe3QkVyFADKygWWHDQ,1968
16
+ diracx/client/generated/aio/_patch.py,sha256=6FYNV6Yt0ttTc7A5EQui764Ujuzypkjpv47LVdccmD8,697
17
+ diracx/client/generated/aio/_vendor.py,sha256=M1s4hEh-jejSih4eDGzFu1MQkNyWQM5pmzMxyp0eBCE,1936
18
+ diracx/client/generated/aio/operations/__init__.py,sha256=FcU_imELohqiaOtPzeopEEPTAXgsvrIqgXjFK6VmltU,887
19
+ diracx/client/generated/aio/operations/_operations.py,sha256=JelQdNzyG5bBISE42vtbt0PL4E2iJLBXKONNMdxVhgM,95035
20
+ diracx/client/generated/aio/operations/_patch.py,sha256=3oHjHqBF7DXruMSVUTRxW0Xpv_mY1WaB8iyo47YBTec,4229
21
+ diracx/client/generated/models/__init__.py,sha256=dWjCnKAE_-4-biZ5yX9TTRZnKgtqh4psNmGOL5tFwwU,3129
22
+ diracx/client/generated/models/_enums.py,sha256=5JfOHTo7OQXAHqaoRDwiyKI3LyS0sTgxetEJ0Wjk2_I,2389
23
+ diracx/client/generated/models/_models.py,sha256=k-YMiEs8SO3ArL6Q5dcRWoW8faM_4I17MBQsdssSwa8,39708
24
+ diracx/client/generated/models/_patch.py,sha256=uvLwKzjWO_t-VZ4aSuLhuJ05RVxAP9UJxZV3XDeGMnU,1497
25
+ diracx/client/generated/operations/__init__.py,sha256=FcU_imELohqiaOtPzeopEEPTAXgsvrIqgXjFK6VmltU,887
26
+ diracx/client/generated/operations/_operations.py,sha256=iXr64Yr519jJtLjjoWVM4FNtiaqqg9cAS2GSIlfS8Nw,119966
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=3HSRDgdv0Ssxe53lVRFp-qlXU0Gz5mse2EqXcVmL9a0,8978
30
+ diracx/client/patches/aio/__init__.py,sha256=qIy1qj8HzaZDEU2PCjEHjFbylwfYRAM0i90WEDs2WuQ,471
31
+ diracx/client/patches/aio/utils.py,sha256=smZhoXpqZaWh1GV34oJdNcLRgogZtkWPmflHPq49O3A,6986
32
+ diracx_client-0.0.1a20.dist-info/METADATA,sha256=R20omnd-mfFWp-xo45anxzMM72tqbb9-boSqyA5yYzA,676
33
+ diracx_client-0.0.1a20.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
34
+ diracx_client-0.0.1a20.dist-info/entry_points.txt,sha256=NP67B7z-VIy8vEG3ZYtOAyxZqLtrOAD5hh2pA2AFBKI,123
35
+ diracx_client-0.0.1a20.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
36
+ diracx_client-0.0.1a20.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,3 @@
1
+ [diracx]
2
+ aio_client_class = diracx.client.generated.aio._client:Dirac
3
+ client_class = diracx.client.generated._client:Dirac
@@ -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.1a18.dist-info/METADATA,sha256=y-d6UJ0EVqhFlyzIO78WRBUmDcuLik88svsNSAQ0C7U,677
24
- diracx_client-0.0.1a18.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
25
- diracx_client-0.0.1a18.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
26
- diracx_client-0.0.1a18.dist-info/RECORD,,
File without changes