qwak-core 0.4.254__py3-none-any.whl → 0.4.256__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.
- _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py +6 -6
- _qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi +4 -1
- qwak/__init__.py +1 -1
- qwak/inner/tool/auth.py +43 -26
- {qwak_core-0.4.254.dist-info → qwak_core-0.4.256.dist-info}/METADATA +1 -1
- {qwak_core-0.4.254.dist-info → qwak_core-0.4.256.dist-info}/RECORD +7 -7
- {qwak_core-0.4.254.dist-info → qwak_core-0.4.256.dist-info}/WHEEL +0 -0
@@ -20,7 +20,7 @@ from _qwak_proto.qwak.administration.v0.environments import configuration_pb2 as
|
|
20
20
|
from _qwak_proto.qwak.administration.v0.users import user_pb2 as qwak_dot_administration_dot_v0_dot_users_dot_user__pb2
|
21
21
|
|
22
22
|
|
23
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!qwak/ecosystem/v0/ecosystem.proto\x12\x11qwak.ecosystem.v0\x1a\x30qwak/administration/account/v1/preferences.proto\x1a*qwak/administration/account/v1/terms.proto\x1a,qwak/administration/account/v1/account.proto\x1a\x39qwak/administration/account/v1/jfrog_tenant_details.proto\x1a\x37qwak/administration/v0/environments/configuration.proto\x1a\'qwak/administration/v0/users/user.proto\"<\n\x16UsernamePasswordMethod\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"(\n\x10QwakApiKeyMethod\x12\x14\n\x0cqwak_api_key\x18\x01 \x01(\t\"\\\n\x18\x41uthenticatedUserContext\x12@\n\x04user\x18\x01 \x01(\x0b\x32\x32.qwak.ecosystem.v0.AuthenticatedUnifiedUserContext\"\xfe\x01\n\x1f\x41uthenticatedUnifiedUserContext\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x45\n\x0f\x61\x63\x63ount_details\x18\x05 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails\x12?\n\x0c\x61\x63\x63ount_role\x18\x01 \x01(\x0e\x32).qwak.administration.user.QwakAccountRole\x12\x42\n\x13\x65nvironment_details\x18\x06 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails\"\xd6\x06\n\x19UserContextAccountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x03 \x01(\t\x12\x44\n\x0bpreferences\x18\x05 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\\\n\x11\x65nvironment_by_id\x18\x04 \x03(\x0b\x32\x41.qwak.ecosystem.v0.UserContextAccountDetails.EnvironmentByIdEntry\x12t\n\x1euser_context_environment_by_id\x18\x06 \x03(\x0b\x32L.qwak.ecosystem.v0.UserContextAccountDetails.UserContextEnvironmentByIdEntry\x12\x39\n\x04type\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x08 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\t \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\n \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a]\n\x14\x45nvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\x1as\n\x1fUserContextEnvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.qwak.ecosystem.v0.UserContextEnvironmentDetails:\x02\x38\x01\"\x1f\n\x1dUserContextEnvironmentDetails\"\xd8\x04\n\x0e\x41\x63\x63ountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0bpreferences\x18\x03 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x05 \x01(\t\x12S\n\x12\x65nvironments_by_id\x18\x04 \x03(\x0b\x32\x37.qwak.ecosystem.v0.AccountDetails.EnvironmentsByIdEntry\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\x08 \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\t \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a^\n\x15\x45nvironmentsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\"\
|
23
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!qwak/ecosystem/v0/ecosystem.proto\x12\x11qwak.ecosystem.v0\x1a\x30qwak/administration/account/v1/preferences.proto\x1a*qwak/administration/account/v1/terms.proto\x1a,qwak/administration/account/v1/account.proto\x1a\x39qwak/administration/account/v1/jfrog_tenant_details.proto\x1a\x37qwak/administration/v0/environments/configuration.proto\x1a\'qwak/administration/v0/users/user.proto\"<\n\x16UsernamePasswordMethod\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"(\n\x10QwakApiKeyMethod\x12\x14\n\x0cqwak_api_key\x18\x01 \x01(\t\"\\\n\x18\x41uthenticatedUserContext\x12@\n\x04user\x18\x01 \x01(\x0b\x32\x32.qwak.ecosystem.v0.AuthenticatedUnifiedUserContext\"\xfe\x01\n\x1f\x41uthenticatedUnifiedUserContext\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x45\n\x0f\x61\x63\x63ount_details\x18\x05 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails\x12?\n\x0c\x61\x63\x63ount_role\x18\x01 \x01(\x0e\x32).qwak.administration.user.QwakAccountRole\x12\x42\n\x13\x65nvironment_details\x18\x06 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails\"\xd6\x06\n\x19UserContextAccountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x03 \x01(\t\x12\x44\n\x0bpreferences\x18\x05 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\\\n\x11\x65nvironment_by_id\x18\x04 \x03(\x0b\x32\x41.qwak.ecosystem.v0.UserContextAccountDetails.EnvironmentByIdEntry\x12t\n\x1euser_context_environment_by_id\x18\x06 \x03(\x0b\x32L.qwak.ecosystem.v0.UserContextAccountDetails.UserContextEnvironmentByIdEntry\x12\x39\n\x04type\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x08 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\t \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\n \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a]\n\x14\x45nvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\x1as\n\x1fUserContextEnvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.qwak.ecosystem.v0.UserContextEnvironmentDetails:\x02\x38\x01\"\x1f\n\x1dUserContextEnvironmentDetails\"\xd8\x04\n\x0e\x41\x63\x63ountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0bpreferences\x18\x03 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x05 \x01(\t\x12S\n\x12\x65nvironments_by_id\x18\x04 \x03(\x0b\x32\x37.qwak.ecosystem.v0.AccountDetails.EnvironmentsByIdEntry\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\x08 \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\t \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a^\n\x15\x45nvironmentsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\"\x98\x01\n\x12\x45nvironmentDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12T\n\rconfiguration\x18\x03 \x01(\x0b\x32=.qwak.administration.environment.QwakEnvironmentConfiguration\x12\x12\n\ncluster_id\x18\x04 \x01(\t\"\xde\x01\n\x0fUserAccountList\x12\x1a\n\x12\x64\x65\x66\x61ult_account_id\x18\x01 \x01(\t\x12L\n\x0e\x61\x63\x63ounts_by_id\x18\x02 \x03(\x0b\x32\x34.qwak.ecosystem.v0.UserAccountList.AccountsByIdEntry\x1a\x61\n\x11\x41\x63\x63ountsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12;\n\x05value\x18\x02 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails:\x02\x38\x01\x42\xb7\x01\n\x1c\x63om.qwak.ai.common.ecosystemP\x01Z\x94\x01github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/v0;ecosystem_v0b\x06proto3')
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -165,9 +165,9 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
165
165
|
_ACCOUNTDETAILS_ENVIRONMENTSBYIDENTRY._serialized_start=2205
|
166
166
|
_ACCOUNTDETAILS_ENVIRONMENTSBYIDENTRY._serialized_end=2299
|
167
167
|
_ENVIRONMENTDETAILS._serialized_start=2302
|
168
|
-
_ENVIRONMENTDETAILS._serialized_end=
|
169
|
-
_USERACCOUNTLIST._serialized_start=
|
170
|
-
_USERACCOUNTLIST._serialized_end=
|
171
|
-
_USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_start=
|
172
|
-
_USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_end=
|
168
|
+
_ENVIRONMENTDETAILS._serialized_end=2454
|
169
|
+
_USERACCOUNTLIST._serialized_start=2457
|
170
|
+
_USERACCOUNTLIST._serialized_end=2679
|
171
|
+
_USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_start=2582
|
172
|
+
_USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_end=2679
|
173
173
|
# @@protoc_insertion_point(module_scope)
|
@@ -280,6 +280,7 @@ class EnvironmentDetails(google.protobuf.message.Message):
|
|
280
280
|
ID_FIELD_NUMBER: builtins.int
|
281
281
|
NAME_FIELD_NUMBER: builtins.int
|
282
282
|
CONFIGURATION_FIELD_NUMBER: builtins.int
|
283
|
+
CLUSTER_ID_FIELD_NUMBER: builtins.int
|
283
284
|
id: builtins.str
|
284
285
|
"""Environment id"""
|
285
286
|
name: builtins.str
|
@@ -287,15 +288,17 @@ class EnvironmentDetails(google.protobuf.message.Message):
|
|
287
288
|
@property
|
288
289
|
def configuration(self) -> qwak.administration.v0.environments.configuration_pb2.QwakEnvironmentConfiguration:
|
289
290
|
"""Environment configuration"""
|
291
|
+
cluster_id: builtins.str
|
290
292
|
def __init__(
|
291
293
|
self,
|
292
294
|
*,
|
293
295
|
id: builtins.str = ...,
|
294
296
|
name: builtins.str = ...,
|
295
297
|
configuration: qwak.administration.v0.environments.configuration_pb2.QwakEnvironmentConfiguration | None = ...,
|
298
|
+
cluster_id: builtins.str = ...,
|
296
299
|
) -> None: ...
|
297
300
|
def HasField(self, field_name: typing_extensions.Literal["configuration", b"configuration"]) -> builtins.bool: ...
|
298
|
-
def ClearField(self, field_name: typing_extensions.Literal["configuration", b"configuration", "id", b"id", "name", b"name"]) -> None: ...
|
301
|
+
def ClearField(self, field_name: typing_extensions.Literal["cluster_id", b"cluster_id", "configuration", b"configuration", "id", b"id", "name", b"name"]) -> None: ...
|
299
302
|
|
300
303
|
global___EnvironmentDetails = EnvironmentDetails
|
301
304
|
|
qwak/__init__.py
CHANGED
qwak/inner/tool/auth.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import warnings
|
2
2
|
from filelock import FileLock
|
3
|
+
from typing_extensions import Self
|
4
|
+
|
3
5
|
from qwak.inner.di_configuration.session import Session
|
4
6
|
from abc import ABC, abstractmethod
|
5
7
|
from typing import Optional
|
@@ -131,6 +133,8 @@ class Auth0ClientBase(BaseAuthClient):
|
|
131
133
|
|
132
134
|
|
133
135
|
class FrogMLAuthClient(BaseAuthClient):
|
136
|
+
__MIN_TOKEN_LENGTH: int = 64
|
137
|
+
|
134
138
|
def __init__(self, auth_config: Optional[AuthConfig] = None):
|
135
139
|
self.auth_config = auth_config
|
136
140
|
self._token = None
|
@@ -148,32 +152,45 @@ class FrogMLAuthClient(BaseAuthClient):
|
|
148
152
|
|
149
153
|
def login(self) -> None:
|
150
154
|
artifactory_url, auth = get_credentials(self.auth_config)
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
"Failed to authenticate with JFrog. Please check your credentials"
|
175
|
-
)
|
176
|
-
except ValueError: # This catches JSON decode errors
|
155
|
+
# For now, we only support Bearer token authentication
|
156
|
+
if not hasattr(auth, "token"):
|
157
|
+
return
|
158
|
+
|
159
|
+
# noinspection PyUnresolvedReferences
|
160
|
+
self._token = auth.token
|
161
|
+
self.__validate_token()
|
162
|
+
|
163
|
+
# Remove '/artifactory/' from the URL
|
164
|
+
if "/artifactory" in artifactory_url:
|
165
|
+
base_url = artifactory_url.replace("/artifactory", "/ui")
|
166
|
+
else:
|
167
|
+
# Remove trailing slash if it exists and append /ui
|
168
|
+
base_url = artifactory_url.rstrip("/") + "/ui"
|
169
|
+
try:
|
170
|
+
response = requests.get(
|
171
|
+
f"{base_url}/api/v1/system/auth/screen/footer",
|
172
|
+
headers={"Authorization": f"Bearer {self._token}"},
|
173
|
+
timeout=60,
|
174
|
+
)
|
175
|
+
response.raise_for_status() # Raises an HTTPError for bad responses
|
176
|
+
response_data = response.json()
|
177
|
+
if "serverId" not in response_data:
|
177
178
|
raise QwakLoginException(
|
178
179
|
"Failed to authenticate with JFrog. Please check your credentials"
|
179
180
|
)
|
181
|
+
self._tenant_id = response_data["serverId"]
|
182
|
+
except requests.exceptions.RequestException:
|
183
|
+
raise QwakLoginException(
|
184
|
+
"Failed to authenticate with JFrog. Please check your credentials"
|
185
|
+
)
|
186
|
+
except ValueError: # This catches JSON decode errors
|
187
|
+
raise QwakLoginException(
|
188
|
+
"Failed to authenticate with JFrog. Please check your credentials"
|
189
|
+
)
|
190
|
+
|
191
|
+
def __validate_token(self: Self):
|
192
|
+
if self._token is None or len(self._token) <= self.__MIN_TOKEN_LENGTH:
|
193
|
+
raise QwakLoginException(
|
194
|
+
"Authentication with JFrog failed: Only JWT Access Tokens are supported. "
|
195
|
+
"Please ensure you are using a valid JWT Access Token."
|
196
|
+
)
|
@@ -228,8 +228,8 @@ _qwak_proto/qwak/ecosystem/jfrog/v0/token_service_pb2_grpc.py,sha256=kuXr3zLXMZE
|
|
228
228
|
_qwak_proto/qwak/ecosystem/v0/credentials_pb2.py,sha256=4oqDkkwkbrxJtRhJ4wYSrRF_YOThbGgCm_ax8wu0GYg,3628
|
229
229
|
_qwak_proto/qwak/ecosystem/v0/credentials_pb2.pyi,sha256=7sxOny-BUipUxrEpBxKVNuJF3-N77Z6Ov1eWI-87Uoo,4098
|
230
230
|
_qwak_proto/qwak/ecosystem/v0/credentials_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
231
|
-
_qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py,sha256=
|
232
|
-
_qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi,sha256=
|
231
|
+
_qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.py,sha256=r8mRlTSj4KPEPdlYwrsNDihqEs1fWbZyGMu8CgEmsQE,13853
|
232
|
+
_qwak_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi,sha256=xRANthZMq3TQzVjkEOIOGIFj9bAPtFnqzDjvdY3YdUA,15677
|
233
233
|
_qwak_proto/qwak/ecosystem/v0/ecosystem_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
234
234
|
_qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py,sha256=pfL0pvHRf1kSFURfcP3pZFKIfMezZdI12a3sMiZf220,18876
|
235
235
|
_qwak_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.pyi,sha256=o76SJT3pLpScJZuTB2mOgbt0c7bnScrYsRxlAiygMNk,19362
|
@@ -591,7 +591,7 @@ _qwak_proto/qwak/workspace/workspace_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXH
|
|
591
591
|
_qwak_proto/qwak/workspace/workspace_service_pb2.py,sha256=AB3C9S_AbOD7Nx1Ni4j1rW6PNtYTV1zjiqFQk-goQ74,21429
|
592
592
|
_qwak_proto/qwak/workspace/workspace_service_pb2.pyi,sha256=nKKCHwnovZhsy8TSVmdz-Vtl0nviOOoX56HD-41Xo08,13726
|
593
593
|
_qwak_proto/qwak/workspace/workspace_service_pb2_grpc.py,sha256=yKGuexxTBza99Ihe0DSTniV2ZSd_AG47inHenqfi890,27193
|
594
|
-
qwak/__init__.py,sha256=
|
594
|
+
qwak/__init__.py,sha256=UcJax5rs9mVTBW5Wlf37bYqxiGdRgXLVpTytmIsyxh0,587
|
595
595
|
qwak/automations/__init__.py,sha256=qFZRvCxUUn8gcxkJR0v19ulHW2oJ0x6-Rif7HiheDP4,1522
|
596
596
|
qwak/automations/automation_executions.py,sha256=5MeH_epYYWb8NKXgAozwT_jPyyUDednBHG7izloi7RY,3228
|
597
597
|
qwak/automations/automations.py,sha256=3yx8e2v0uSKDnXbqyknasyEoQ5vxGni6K40Hbi1_zkk,12599
|
@@ -846,7 +846,7 @@ qwak/inner/runtime_di/__init__.py,sha256=ylaHwo2Hlq3pmeziA0Ip87DMnkcuBffKKi0tTH7
|
|
846
846
|
qwak/inner/runtime_di/containers.py,sha256=-AREM-IUAd9JhrhQablqixxpj4L9Tk1iQkK1fA5YbrA,545
|
847
847
|
qwak/inner/singleton_meta.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
|
848
848
|
qwak/inner/tool/__init__.py,sha256=DDoMZk7LIZNfu63Ft0mLE5wflwlQoghAJ1ZmMAcAeVE,74
|
849
|
-
qwak/inner/tool/auth.py,sha256=
|
849
|
+
qwak/inner/tool/auth.py,sha256=nCDtphlFkwgIrVewSrI9p1vh-63rB-cARXFtVl8XHcY,6878
|
850
850
|
qwak/inner/tool/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
851
851
|
qwak/inner/tool/grpc/grpc_auth.py,sha256=nHfIk2R5ljCvU8hsgk_X6grfNhVrbTvQe6uJffe5W5o,2291
|
852
852
|
qwak/inner/tool/grpc/grpc_tools.py,sha256=ArtsEZz5V-YxOVE6vH_UHJwOn6gAJVIolda8hF6qwMs,7256
|
@@ -1065,6 +1065,6 @@ qwak_services_mock/mocks/workspace_manager_service_mock.py,sha256=O9ZSwln4T4kHVk
|
|
1065
1065
|
qwak_services_mock/services_mock.py,sha256=zXtHcX8a_acz7ynxuCBxxVpHpde7aAGjIn6Uw52LY1s,19593
|
1066
1066
|
qwak_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1067
1067
|
qwak_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
|
1068
|
-
qwak_core-0.4.
|
1069
|
-
qwak_core-0.4.
|
1070
|
-
qwak_core-0.4.
|
1068
|
+
qwak_core-0.4.256.dist-info/METADATA,sha256=F7eU1nqnmqO5PHnfV39Zt_P6tCoZKhxzoNY881QbiQg,2549
|
1069
|
+
qwak_core-0.4.256.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
1070
|
+
qwak_core-0.4.256.dist-info/RECORD,,
|
File without changes
|