malevich-coretools 0.3.6__py3-none-any.whl → 0.3.8__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.

Potentially problematic release.


This version of malevich-coretools might be problematic. Click here for more details.

@@ -1,3 +1,4 @@
1
+ import urllib
1
2
  from typing import Dict, Optional
2
3
 
3
4
  import aiohttp
@@ -24,6 +25,8 @@ def with_key_values(url: str, key_values: Dict[str, Optional[str]]) -> str:
24
25
  sep = "?"
25
26
  for key, value in key_values.items():
26
27
  if value is not None:
28
+ if isinstance(value, str):
29
+ value = urllib.parse.quote(value, safe='')
27
30
  url = f"{url}{sep}{key}={value}"
28
31
  if sep == "?":
29
32
  sep = "&"
@@ -37,21 +40,21 @@ DOCS_ID = lambda id, wait: with_wait(f"{DOCS_MAIN}{id}", wait)
37
40
  ## CollectionsController
38
41
  COLLECTIONS_MAIN = f"{API_VERSION}/collections"
39
42
  COLLECTIONS = lambda wait: with_wait(f"{COLLECTIONS_MAIN}/", wait)
40
- COLLECTIONS_IDS_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/ids/name/{name}", {"operationId": operation_id, "runId": run_id})
41
- COLLECTIONS_NAME = lambda name, operation_id, run_id, offset, limit: with_key_values(f"{COLLECTIONS_MAIN}/name/{name}", {"operationId": operation_id, "runId": run_id, "offset": offset, "limit": limit})
42
- COLLECTIONS_IDS_GROUP_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/ids/groupName/{name}", {"operationId": operation_id, "runId": run_id})
43
- COLLECTIONS_GROUP_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/groupName/{name}", {"operationId": operation_id, "runId": run_id})
44
- COLLECTIONS_ID = lambda id, offset, limit: with_key_values(f"{COLLECTIONS_MAIN}/{id}", {"offset": offset, "limit": limit})
45
- COLLECTIONS_ID_MODIFY = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}", wait)
46
- COLLECTIONS_ID_S3 = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/s3/{id}", wait)
47
- COLLECTIONS_ID_ADD = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/add", wait)
48
- COLLECTIONS_ID_COPY = lambda id, full_copy, wait: with_key_values(f"{COLLECTIONS_MAIN}/{id}/copy", {"wait": None if wait is None else bool_to_str(wait), "fullCopy": None if full_copy is None else bool_to_str(full_copy)})
49
- COLLECTIONS_ID_DEL = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/del", wait)
43
+ COLLECTIONS_IDS_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/ids/name/{urllib.parse.quote(name, safe='')}", {"operationId": operation_id, "runId": run_id})
44
+ COLLECTIONS_NAME = lambda name, operation_id, run_id, offset, limit: with_key_values(f"{COLLECTIONS_MAIN}/name/{urllib.parse.quote(name, safe='')}", {"operationId": operation_id, "runId": run_id, "offset": offset, "limit": limit})
45
+ COLLECTIONS_IDS_GROUP_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/ids/groupName/{urllib.parse.quote(name, safe='')}", {"operationId": operation_id, "runId": run_id})
46
+ COLLECTIONS_GROUP_NAME = lambda name, operation_id, run_id: with_key_values(f"{COLLECTIONS_MAIN}/groupName/{urllib.parse.quote(name, safe='')}", {"operationId": operation_id, "runId": run_id})
47
+ COLLECTIONS_ID = lambda id, offset, limit: with_key_values(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}", {"offset": offset, "limit": limit})
48
+ COLLECTIONS_ID_MODIFY = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
49
+ COLLECTIONS_ID_S3 = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/s3/{urllib.parse.quote(id, safe='')}", wait)
50
+ COLLECTIONS_ID_ADD = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/add", wait)
51
+ COLLECTIONS_ID_COPY = lambda id, full_copy, wait: with_key_values(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/copy", {"wait": None if wait is None else bool_to_str(wait), "fullCopy": None if full_copy is None else bool_to_str(full_copy)})
52
+ COLLECTIONS_ID_DEL = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/del", wait)
50
53
  COLLECTIONS_DATA = lambda wait: with_wait(f"{COLLECTIONS_MAIN}/data", wait)
51
- COLLECTIONS_APPLY_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/applyScheme", wait)
52
- COLLECTIONS_FIX_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/fixScheme", wait)
53
- COLLECTIONS_UNFIX_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/unfixScheme", wait)
54
- COLLECTIONS_METADATA = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{id}/metadata", wait)
54
+ COLLECTIONS_APPLY_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/applyScheme", wait)
55
+ COLLECTIONS_FIX_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/fixScheme", wait)
56
+ COLLECTIONS_UNFIX_SCHEME = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/unfixScheme", wait)
57
+ COLLECTIONS_METADATA = lambda id, wait: with_wait(f"{COLLECTIONS_MAIN}/{urllib.parse.quote(id, safe='')}/metadata", wait)
55
58
 
56
59
  ## CollectionObjectsController
57
60
  COLLECTION_OBJECTS_MAIN = f"{API_VERSION}/collectionObjects"
@@ -64,43 +67,43 @@ COLLECTION_OBJECTS_PRESIGN = lambda signature, zip: with_key_values(f"{COLLECTIO
64
67
 
65
68
  ## EndpointController
66
69
  ENDPOINTS_MAIN = f"{API_VERSION}/endpoints"
67
- ENDPOINTS = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/{hash}", wait)
70
+ ENDPOINTS = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/{urllib.parse.quote(hash, safe='')}", wait)
68
71
  ENDPOINTS_ALL = lambda wait: with_wait(f"{ENDPOINTS_MAIN}/all", wait)
69
- ENDPOINTS_RUN = lambda hash: f"{ENDPOINTS_MAIN}/run/{hash}"
72
+ ENDPOINTS_RUN = lambda hash: f"{ENDPOINTS_MAIN}/run/{urllib.parse.quote(hash, safe='')}"
70
73
  ENDPOINTS_CREATE = lambda wait: with_wait(f"{ENDPOINTS_MAIN}/create", wait)
71
74
  ENDPOINTS_UPDATE = lambda wait: with_wait(f"{ENDPOINTS_MAIN}/update", wait)
72
- ENDPOINTS_PAUSE = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/pause/{hash}", wait)
73
- ENDPOINTS_RESUME = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/resume/{hash}", wait)
75
+ ENDPOINTS_PAUSE = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/pause/{urllib.parse.quote(hash, safe='')}", wait)
76
+ ENDPOINTS_RESUME = lambda hash, wait: with_wait(f"{ENDPOINTS_MAIN}/resume/{urllib.parse.quote(hash, safe='')}", wait)
74
77
 
75
78
  ## SchemeController
76
79
  SCHEMES_MAIN = f"{API_VERSION}/schemes"
77
80
  SCHEMES = lambda wait: with_wait(f"{SCHEMES_MAIN}/", wait)
78
- SCHEMES_ID = lambda id, wait: with_wait(f"{SCHEMES_MAIN}/{id}", wait)
79
- SCHEMES_ID_RAW = lambda id: f"{SCHEMES_MAIN}/{id}/raw"
81
+ SCHEMES_ID = lambda id, wait: with_wait(f"{SCHEMES_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
82
+ SCHEMES_ID_RAW = lambda id: f"{SCHEMES_MAIN}/{urllib.parse.quote(id, safe='')}/raw"
80
83
  SCHEMES_MAPPING = lambda wait: with_wait(f"{SCHEMES_MAIN}/mapping", wait)
81
- SCHEMES_MAPPING_IDS = lambda from_id, to_id: f"{SCHEMES_MAIN}/mapping/{from_id}/{to_id}"
84
+ SCHEMES_MAPPING_IDS = lambda from_id, to_id: f"{SCHEMES_MAIN}/mapping/{urllib.parse.quote(from_id, safe='')}/{urllib.parse.quote(to_id, safe='')}"
82
85
 
83
86
  ## CommonController
84
87
  CHECK = ""
85
88
  PING = "ping"
86
89
  # COMMON_MAIN = f"{API_VERSION}/common"
87
90
  # MAPPING = lambda wait: with_wait(f"{COMMON_MAIN}/mapping", wait)
88
- # MAPPING_ID = lambda id, wait: with_wait(f"{COMMON_MAIN}/mapping/{id}", wait)
91
+ # MAPPING_ID = lambda id, wait: with_wait(f"{COMMON_MAIN}/mapping/{urllib.parse.quote(id, safe='')}", wait)
89
92
  # COMMON_ALL = lambda wait: with_wait(f"{COMMON_MAIN}/all", wait)
90
93
 
91
94
  ## UserShareController
92
95
  SHARE_MAIN = f"{API_VERSION}/share"
93
96
  SHARE = lambda wait: with_wait(f"{SHARE_MAIN}/", wait)
94
- SHARE_COLLECTION_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/collection/{id}", wait)
95
- SHARE_SCHEME_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/scheme/{id}", wait)
96
- SHARE_USER_APP_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/userApp/{id}", wait)
97
- SHARE_LOGIN = lambda login: f"{SHARE_MAIN}/login/{login}"
97
+ SHARE_COLLECTION_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/collection/{urllib.parse.quote(id, safe='')}", wait)
98
+ SHARE_SCHEME_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/scheme/{urllib.parse.quote(id, safe='')}", wait)
99
+ SHARE_USER_APP_ID = lambda id, wait: with_wait(f"{SHARE_MAIN}/userApp/{urllib.parse.quote(id, safe='')}", wait)
100
+ SHARE_LOGIN = lambda login: f"{SHARE_MAIN}/login/{urllib.parse.quote(login, safe='')}"
98
101
  SHARE_ALL = lambda wait: with_wait(f"{SHARE_MAIN}/all", wait)
99
102
 
100
103
  ## RegistrationController
101
104
  REGISTER_MAIN = f"{API_VERSION}/register"
102
105
  REGISTER = f"{REGISTER_MAIN}/"
103
- REGISTER_LOGIN = lambda login, wait: with_wait(f"{REGISTER_MAIN}/login/{login}", wait)
106
+ REGISTER_LOGIN = lambda login, wait: with_wait(f"{REGISTER_MAIN}/login/{urllib.parse.quote(login, safe='')}", wait)
104
107
  REGISTER_ALL = f"{REGISTER_MAIN}/all"
105
108
 
106
109
  ## UserAppsController
@@ -108,36 +111,36 @@ USER_APPS_MAIN = f"{API_VERSION}/userApps"
108
111
  USER_APPS = lambda wait: with_wait(f"{USER_APPS_MAIN}/", wait)
109
112
  USER_APPS_REAL_IDS = f"{USER_APPS_MAIN}/realIds"
110
113
  USER_APPS_MAP_IDS = f"{USER_APPS_MAIN}/mapIds"
111
- USER_APPS_ID = lambda id, wait: with_wait(f"{USER_APPS_MAIN}/{id}", wait)
112
- USER_APPS_REAL_ID = lambda id: f"{USER_APPS_MAIN}/realIds/{id}"
114
+ USER_APPS_ID = lambda id, wait: with_wait(f"{USER_APPS_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
115
+ USER_APPS_REAL_ID = lambda id: f"{USER_APPS_MAIN}/realIds/{urllib.parse.quote(id, safe='')}"
113
116
 
114
117
  ## UserTasksController
115
118
  USER_TASKS_MAIN = f"{API_VERSION}/userTasks"
116
119
  USER_TASKS = lambda wait: with_wait(f"{USER_TASKS_MAIN}/", wait)
117
120
  USER_TASKS_REAL_IDS = f"{USER_TASKS_MAIN}/realIds"
118
121
  USER_TASKS_MAP_IDS = f"{USER_TASKS_MAIN}/mapIds"
119
- USER_TASKS_ID = lambda id, wait: with_wait(f"{USER_TASKS_MAIN}/{id}", wait)
120
- USER_TASKS_REAL_ID = lambda id: f"{USER_TASKS_MAIN}/realIds/{id}"
122
+ USER_TASKS_ID = lambda id, wait: with_wait(f"{USER_TASKS_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
123
+ USER_TASKS_REAL_ID = lambda id: f"{USER_TASKS_MAIN}/realIds/{urllib.parse.quote(id, safe='')}"
121
124
 
122
125
  ## UserCfgsController
123
126
  USER_CFGS_MAIN = f"{API_VERSION}/userCfgs"
124
127
  USER_CFGS = lambda wait: with_wait(f"{USER_CFGS_MAIN}/", wait)
125
128
  USER_CFGS_REAL_IDS = f"{USER_CFGS_MAIN}/realIds"
126
129
  USER_CFGS_MAP_IDS = f"{USER_CFGS_MAIN}/mapIds"
127
- USER_CFGS_ID = lambda id, wait: with_wait(f"{USER_CFGS_MAIN}/{id}", wait)
128
- USER_CFGS_REAL_ID = lambda id: f"{USER_CFGS_MAIN}/realIds/{id}"
130
+ USER_CFGS_ID = lambda id, wait: with_wait(f"{USER_CFGS_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
131
+ USER_CFGS_REAL_ID = lambda id: f"{USER_CFGS_MAIN}/realIds/{urllib.parse.quote(id, safe='')}"
129
132
 
130
133
  ## OperationResultsController
131
134
  OPERATION_RESULTS_MAIN = f"{API_VERSION}/operationResults"
132
135
  OPERATION_RESULTS = lambda wait: with_wait(f"{OPERATION_RESULTS_MAIN}/", wait)
133
- OPERATION_RESULTS_ID = lambda id, wait: with_wait(f"{OPERATION_RESULTS_MAIN}/{id}", wait)
136
+ OPERATION_RESULTS_ID = lambda id, wait: with_wait(f"{OPERATION_RESULTS_MAIN}/{urllib.parse.quote(id, safe='')}", wait)
134
137
 
135
138
  ## TempRunController
136
139
  TEMP_RUN_MAIN = f"{API_VERSION}/run"
137
- TEMP_RUN_CONDITION = lambda operationId: f"{TEMP_RUN_MAIN}/condition/{operationId}"
140
+ TEMP_RUN_CONDITION = lambda operationId: f"{TEMP_RUN_MAIN}/condition/{urllib.parse.quote(operationId, safe='')}"
138
141
  TEMP_RUN_ACTIVE_RUNS = f"{TEMP_RUN_MAIN}/activeRuns"
139
- TEMP_RUN_MAIN_TASK_CFG = lambda operationId: f"{TEMP_RUN_MAIN}/mainTaskCfg/{operationId}"
140
- TEMP_RUN_OPERATIONS_IDS = lambda taskId, cfgId: f"{TEMP_RUN_MAIN}/operationsIds/{taskId}" if cfgId is None else f"{TEMP_RUN_MAIN}/operationsIds/{taskId}/{cfgId}"
142
+ TEMP_RUN_MAIN_TASK_CFG = lambda operationId: f"{TEMP_RUN_MAIN}/mainTaskCfg/{urllib.parse.quote(operationId, safe='')}"
143
+ TEMP_RUN_OPERATIONS_IDS = lambda taskId, cfgId: f"{TEMP_RUN_MAIN}/operationsIds/{urllib.parse.quote(taskId, safe='')}" if cfgId is None else f"{TEMP_RUN_MAIN}/operationsIds/{urllib.parse.quote(taskId, safe='')}/{urllib.parse.quote(cfgId, safe='')}"
141
144
 
142
145
  ## AdminController
143
146
  ADMIN_MAIN = f"{API_VERSION}/admin"
@@ -149,11 +152,11 @@ ADMIN_SUPERUSER = f"{ADMIN_MAIN}/superuser"
149
152
  MANAGER_MAIN = f"{API_VERSION}/manager"
150
153
  MANAGER_LOGS = f"{MANAGER_MAIN}/logs"
151
154
  MANAGER_CLICKHOUSE_ALL = f"{MANAGER_MAIN}/clickhouse"
152
- MANAGER_CLICKHOUSE_ID = lambda operationId: f"{MANAGER_MAIN}/clickhouse/{operationId}"
155
+ MANAGER_CLICKHOUSE_ID = lambda operationId: f"{MANAGER_MAIN}/clickhouse/{urllib.parse.quote(operationId, safe='')}"
153
156
  MANAGER_DAG_KEY_VALUE = lambda wait: with_wait(f"{MANAGER_MAIN}/dagKeyValue", wait)
154
- MANAGER_DAG_KEY_VALUE_OPERATION_ID = lambda operationId: f"{MANAGER_MAIN}/dagKeyValue/{operationId}"
155
- MANAGER_APP_INFO = lambda appId: f"{MANAGER_MAIN}/appInfo/{appId}"
156
- MANAGER_APP_INFO_REAL_ID = lambda appId: f"{MANAGER_MAIN}/appInfo/realId/{appId}"
157
+ MANAGER_DAG_KEY_VALUE_OPERATION_ID = lambda operationId: f"{MANAGER_MAIN}/dagKeyValue/{urllib.parse.quote(operationId, safe='')}"
158
+ MANAGER_APP_INFO = lambda appId: f"{MANAGER_MAIN}/appInfo/{urllib.parse.quote(appId, safe='')}"
159
+ MANAGER_APP_INFO_REAL_ID = lambda appId: f"{MANAGER_MAIN}/appInfo/realId/{urllib.parse.quote(appId, safe='')}"
157
160
  MANAGER_IMAGE_INFO = f"{MANAGER_MAIN}/imageInfo"
158
161
  MANAGER_TASK_SCHEDULES = f"{MANAGER_MAIN}/task/schedules"
159
162
  MANAGER_TASK = lambda wait: with_wait(f"{MANAGER_MAIN}/task", wait)
@@ -333,7 +333,7 @@ def parse(
333
333
 
334
334
 
335
335
  def vast_settings(
336
- id: Optional[int] = None, query: Optional[Union[str, Dict[str, Any]]] = None, api_key: Optional[str] = None
336
+ id: Optional[int] = None, query: Optional[Union[str, Dict[str, Any]]] = None, api_key: Optional[str] = None, disk: Optional[int] = None
337
337
  ) -> str:
338
338
  """
339
339
  Platform settings for create app:\n
@@ -359,6 +359,9 @@ def vast_settings(
359
359
  assert isinstance(query, dict), "wrong query type: it should be str or dict"
360
360
  res["query"] = query
361
361
  if api_key is not None:
362
- assert isinstance(id, str), "wrong api_key type"
362
+ assert isinstance(api_key, str), "wrong api_key type"
363
363
  res["apiKey"] = api_key
364
+ if disk is not None:
365
+ assert isinstance(disk, int), "wrong disk type"
366
+ res["disk"] = disk
364
367
  return json.dumps(res)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: malevich-coretools
3
- Version: 0.3.6
3
+ Version: 0.3.8
4
4
  Author: Andrew Pogrebnoj
5
5
  Author-email: andrew@onjulius.co
6
6
  License-File: LICENSE
@@ -13,13 +13,13 @@ malevich_coretools/funcs/funcs.py,sha256=NM8TqdcnZ1bQrDejxEf-4aeL56JuG7oZ-I_DF-K
13
13
  malevich_coretools/funcs/helpers.py,sha256=4Rin3TMfbZ6t0LUs7iltmdccmNTRoNOJlVkrurSFIH4,9202
14
14
  malevich_coretools/secondary/__init__.py,sha256=048HqvG36_1WdDVZK_RuECmaf14Iq2fviUysG1inlaE,78
15
15
  malevich_coretools/secondary/config.py,sha256=hRlSJuPQnhKyt1wmOAJX_XmcliaO0fPGbW94AE_Mazs,463
16
- malevich_coretools/secondary/const.py,sha256=gQaPj_H2QHjc2BP_g6VGBgDF7pcAxGl33GYWE_A1sVQ,10047
16
+ malevich_coretools/secondary/const.py,sha256=TAbJxCQSFhe5zokGh8137mN33tGRFapFcldoynD94Jo,11435
17
17
  malevich_coretools/secondary/helpers.py,sha256=t-W9g9t0O1EaAX8UOb1wxXFAMawbtDotDH47t0GdjG4,6142
18
18
  malevich_coretools/secondary/kafka_utils.py,sha256=SIUnBFyfwsquN6MAUrEkKCw-1l7979Znl7OTQSX2UKo,989
19
19
  malevich_coretools/tools/__init__.py,sha256=jDxlCa5Dr6Y43qlI7JwsRAlBkKmFeTHTEnjNUvu-0iw,46
20
- malevich_coretools/tools/vast.py,sha256=5DtpQwWOA-bolTeuLoqlPQdSMR8vjPkCpc-DvA924Wk,12652
21
- malevich_coretools-0.3.6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
22
- malevich_coretools-0.3.6.dist-info/METADATA,sha256=SzPUzmsYmegAFS4YERcR9vmMwlWe_uiQgIdKZtn7FoU,264
23
- malevich_coretools-0.3.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
24
- malevich_coretools-0.3.6.dist-info/top_level.txt,sha256=wDX3s1Tso0otBPNrFRfXqyNpm48W4Bp5v6JfbITO2Z8,19
25
- malevich_coretools-0.3.6.dist-info/RECORD,,
20
+ malevich_coretools/tools/vast.py,sha256=dGiilVBx2Z3srq_Y9kku4lqCnjByQDBVFFs_58Waj8s,12793
21
+ malevich_coretools-0.3.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
22
+ malevich_coretools-0.3.8.dist-info/METADATA,sha256=5AmeL_pOWcRr4OSOvFRTVVeXv6YE-mdgd9HFpVppqTc,264
23
+ malevich_coretools-0.3.8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
24
+ malevich_coretools-0.3.8.dist-info/top_level.txt,sha256=wDX3s1Tso0otBPNrFRfXqyNpm48W4Bp5v6JfbITO2Z8,19
25
+ malevich_coretools-0.3.8.dist-info/RECORD,,