cmem-cmemc 24.1.5__py3-none-any.whl → 24.2.0__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.
- cmem_cmemc/__init__.py +2 -2
- cmem_cmemc/commands/__init__.py +1 -0
- cmem_cmemc/commands/acl.py +101 -51
- cmem_cmemc/commands/admin.py +18 -6
- cmem_cmemc/commands/dataset.py +11 -9
- cmem_cmemc/commands/graph.py +17 -5
- cmem_cmemc/commands/project.py +19 -7
- cmem_cmemc/commands/python.py +31 -21
- cmem_cmemc/commands/query.py +20 -13
- cmem_cmemc/commands/store.py +74 -4
- cmem_cmemc/commands/validation.py +217 -11
- cmem_cmemc/commands/vocabulary.py +21 -16
- cmem_cmemc/commands/workflow.py +71 -52
- cmem_cmemc/commands/workspace.py +4 -3
- cmem_cmemc/completion.py +35 -16
- cmem_cmemc/context.py +35 -13
- cmem_cmemc/object_list.py +4 -12
- cmem_cmemc/parameter_types/__init__.py +1 -0
- cmem_cmemc/parameter_types/path.py +63 -0
- cmem_cmemc/smart_path/__init__.py +94 -0
- cmem_cmemc/smart_path/clients/__init__.py +63 -0
- cmem_cmemc/smart_path/clients/http.py +65 -0
- cmem_cmemc/utils.py +53 -3
- {cmem_cmemc-24.1.5.dist-info → cmem_cmemc-24.2.0.dist-info}/METADATA +19 -16
- cmem_cmemc-24.2.0.dist-info/RECORD +42 -0
- cmem_cmemc-24.1.5.dist-info/RECORD +0 -37
- {cmem_cmemc-24.1.5.dist-info → cmem_cmemc-24.2.0.dist-info}/LICENSE +0 -0
- {cmem_cmemc-24.1.5.dist-info → cmem_cmemc-24.2.0.dist-info}/WHEEL +0 -0
- {cmem_cmemc-24.1.5.dist-info → cmem_cmemc-24.2.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Client module to handle Path API calls."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from collections.abc import Generator
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class StoragePath(ABC):
|
|
13
|
+
"""Storage path interface."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, path: str):
|
|
16
|
+
self.path = path
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
@abstractmethod
|
|
20
|
+
def suffix(self) -> str:
|
|
21
|
+
"""Return the suffix of the path."""
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
@abstractmethod
|
|
25
|
+
def name(self) -> str:
|
|
26
|
+
"""Return the file name."""
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
@abstractmethod
|
|
30
|
+
def parent(self) -> StoragePath:
|
|
31
|
+
"""The logical parent of the path."""
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
def is_dir(self) -> bool:
|
|
35
|
+
"""Check if the path is a directory."""
|
|
36
|
+
|
|
37
|
+
@abstractmethod
|
|
38
|
+
def is_file(self) -> bool:
|
|
39
|
+
"""Check if the path is a file."""
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
def exists(self) -> bool:
|
|
43
|
+
"""Check if the path exists."""
|
|
44
|
+
|
|
45
|
+
@abstractmethod
|
|
46
|
+
def mkdir(self, parents: bool = False, exist_ok: bool = False) -> None:
|
|
47
|
+
"""Create a directory."""
|
|
48
|
+
|
|
49
|
+
@abstractmethod
|
|
50
|
+
def absolute(self) -> StoragePath:
|
|
51
|
+
"""Return an absolute version of this path"""
|
|
52
|
+
|
|
53
|
+
def resolve(self) -> StoragePath:
|
|
54
|
+
"""Resolve the resolved path of the path."""
|
|
55
|
+
raise NotImplementedError(f"resolve in {self.__class__} is not implemented yet.")
|
|
56
|
+
|
|
57
|
+
@abstractmethod
|
|
58
|
+
def glob(self, pattern: str) -> Generator[StoragePath, StoragePath, StoragePath]:
|
|
59
|
+
"""Iterate over this subtree and yield all existing files"""
|
|
60
|
+
|
|
61
|
+
@abstractmethod
|
|
62
|
+
def __truediv__(self, key: str) -> StoragePath:
|
|
63
|
+
"""Return StoragePath with appending the key to the exising path"""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Provides functionality for interacting with http/https paths"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from cmem_cmemc.smart_path.clients import StoragePath
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from collections.abc import Generator
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class HttpPath(StoragePath):
|
|
14
|
+
"""Client class for interacting with Amazon S3 storage.
|
|
15
|
+
|
|
16
|
+
This class provides methods for working with http paths within the context
|
|
17
|
+
of the `Path` application.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def suffix(self) -> str:
|
|
22
|
+
"""Return the suffix of the path."""
|
|
23
|
+
raise NotImplementedError(f"suffix in {self.__class__} is not implemented yet.")
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def name(self) -> str:
|
|
27
|
+
"""Determine the name of the path."""
|
|
28
|
+
return self.path.split("/")[-1]
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def parent(self) -> HttpPath:
|
|
32
|
+
"""The logical parent of the path."""
|
|
33
|
+
raise NotImplementedError(f"parent in {self.__class__} is not implemented yet.")
|
|
34
|
+
|
|
35
|
+
def is_dir(self) -> bool:
|
|
36
|
+
"""Determine if path is a directory or not."""
|
|
37
|
+
return False
|
|
38
|
+
|
|
39
|
+
def is_file(self) -> bool:
|
|
40
|
+
"""Determine if path is a file or not."""
|
|
41
|
+
return not self.is_dir()
|
|
42
|
+
|
|
43
|
+
def exists(self) -> bool:
|
|
44
|
+
"""Return the suffix of the path."""
|
|
45
|
+
raise NotImplementedError(f"exists in {self.__class__} is not implemented yet.")
|
|
46
|
+
|
|
47
|
+
def mkdir(self, parents: bool = False, exist_ok: bool = False) -> None:
|
|
48
|
+
"""Return the suffix of the path."""
|
|
49
|
+
raise NotImplementedError(f"mkdir in {self.__class__} is not implemented yet.")
|
|
50
|
+
|
|
51
|
+
def absolute(self) -> HttpPath:
|
|
52
|
+
"""Return an absolute version of this path"""
|
|
53
|
+
raise NotImplementedError(f"absolute in {self.__class__} is not implemented yet.")
|
|
54
|
+
|
|
55
|
+
def resolve(self) -> HttpPath:
|
|
56
|
+
"""Resolve the resolved path of the path."""
|
|
57
|
+
raise NotImplementedError(f"resolve in {self.__class__} is not implemented yet.")
|
|
58
|
+
|
|
59
|
+
def glob(self, pattern: str) -> Generator[StoragePath, StoragePath, StoragePath]:
|
|
60
|
+
"""Iterate over this subtree and yield all existing files"""
|
|
61
|
+
raise NotImplementedError(f"glob in {self.__class__} is not implemented yet.")
|
|
62
|
+
|
|
63
|
+
def __truediv__(self, key: str) -> HttpPath:
|
|
64
|
+
"""Return path with appending the key"""
|
|
65
|
+
raise NotImplementedError(f"__truediv__ in {self.__class__} is not implemented yet.")
|
cmem_cmemc/utils.py
CHANGED
|
@@ -2,23 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
|
+
import pathlib
|
|
5
6
|
import re
|
|
6
7
|
import sys
|
|
7
8
|
import unicodedata
|
|
8
9
|
from dataclasses import dataclass
|
|
9
10
|
from importlib.metadata import version as cmemc_version
|
|
10
|
-
from
|
|
11
|
+
from zipfile import BadZipFile, ZipFile
|
|
11
12
|
|
|
12
13
|
import requests
|
|
13
14
|
from bs4 import BeautifulSoup
|
|
14
15
|
from cmem.cmempy.dp.admin import get_prometheus_data
|
|
15
16
|
from cmem.cmempy.dp.proxy.graph import get_graphs_list
|
|
17
|
+
from cmem.cmempy.queries import QueryCatalog
|
|
16
18
|
from cmem.cmempy.workspace.projects.project import get_projects
|
|
17
19
|
from prometheus_client import Metric
|
|
18
20
|
from prometheus_client.parser import text_string_to_metric_families
|
|
19
21
|
|
|
20
22
|
from cmem_cmemc.constants import NAMESPACES
|
|
21
23
|
from cmem_cmemc.context import ApplicationContext
|
|
24
|
+
from cmem_cmemc.smart_path import SmartPath as Path
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
def get_version() -> str:
|
|
@@ -88,7 +91,7 @@ def read_rdf_graph_files(directory_path: str) -> list[tuple[str, str]]:
|
|
|
88
91
|
full_file_path = Path(root) / _file
|
|
89
92
|
graph_file_name = _file + ".graph"
|
|
90
93
|
full_graph_file_name_path = Path(root) / graph_file_name
|
|
91
|
-
if not _file.endswith(".graph") and
|
|
94
|
+
if not _file.endswith(".graph") and full_graph_file_name_path.exists():
|
|
92
95
|
graph_name = read_file_to_string(str(full_graph_file_name_path)).strip()
|
|
93
96
|
rdf_graphs.append((str(full_file_path.resolve()), graph_name))
|
|
94
97
|
return rdf_graphs
|
|
@@ -97,7 +100,7 @@ def read_rdf_graph_files(directory_path: str) -> list[tuple[str, str]]:
|
|
|
97
100
|
def read_file_to_string(file_path: str) -> str:
|
|
98
101
|
"""Read file to string."""
|
|
99
102
|
with Path(file_path).open(mode="rb") as _file:
|
|
100
|
-
return _file.read().decode("utf-8")
|
|
103
|
+
return str(_file.read().decode("utf-8"))
|
|
101
104
|
|
|
102
105
|
|
|
103
106
|
def get_graphs(writeable: bool = True, readonly: bool = True) -> list:
|
|
@@ -350,3 +353,50 @@ def convert_qname_to_iri(qname: str, default_ns: str) -> str:
|
|
|
350
353
|
return default_ns + qname[1:]
|
|
351
354
|
|
|
352
355
|
return qname
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def get_query_text(file_or_uri: str, required_projections: set) -> str:
|
|
359
|
+
"""Get query text for a file or graph catalog URI.
|
|
360
|
+
|
|
361
|
+
Args:
|
|
362
|
+
----
|
|
363
|
+
file_or_uri (str): The file path or URI to fetch the query from.
|
|
364
|
+
required_projections (set): A set of required projections.
|
|
365
|
+
|
|
366
|
+
Returns:
|
|
367
|
+
-------
|
|
368
|
+
str: The query text.
|
|
369
|
+
|
|
370
|
+
Raises:
|
|
371
|
+
------
|
|
372
|
+
ValueError: If the input is not a readable file or a query URI,
|
|
373
|
+
or if the query contains placeholders,
|
|
374
|
+
or if the query does not include the required projections.
|
|
375
|
+
|
|
376
|
+
"""
|
|
377
|
+
sparql_query = QueryCatalog().get_query(file_or_uri)
|
|
378
|
+
if sparql_query is None:
|
|
379
|
+
raise ValueError(f"{file_or_uri} is neither a readable file nor a query URI.")
|
|
380
|
+
|
|
381
|
+
if sparql_query.get_placeholder_keys():
|
|
382
|
+
raise ValueError("Placeholder queries are not supported.")
|
|
383
|
+
|
|
384
|
+
result = sparql_query.get_json_results()
|
|
385
|
+
projected_vars = set(result["head"]["vars"])
|
|
386
|
+
|
|
387
|
+
missing_projections = required_projections - projected_vars
|
|
388
|
+
if missing_projections:
|
|
389
|
+
missing = ", ".join(missing_projections)
|
|
390
|
+
raise ValueError(f"Select query must include projections for: {missing}")
|
|
391
|
+
txt: str = sparql_query.text
|
|
392
|
+
return txt
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
def validate_zipfile(zipfile: str | pathlib.Path) -> bool:
|
|
396
|
+
"""Validate a zipfile."""
|
|
397
|
+
zipfile = pathlib.Path(zipfile)
|
|
398
|
+
try:
|
|
399
|
+
ZipFile(zipfile).testzip()
|
|
400
|
+
except BadZipFile:
|
|
401
|
+
return False
|
|
402
|
+
return True
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cmem-cmemc
|
|
3
|
-
Version: 24.
|
|
3
|
+
Version: 24.2.0
|
|
4
4
|
Summary: Command line client for eccenca Corporate Memory
|
|
5
5
|
Home-page: https://eccenca.com/go/cmemc
|
|
6
6
|
License: Apache-2.0
|
|
@@ -25,25 +25,28 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
25
25
|
Classifier: Topic :: Database
|
|
26
26
|
Classifier: Topic :: Software Development :: Testing
|
|
27
27
|
Classifier: Topic :: Utilities
|
|
28
|
-
Requires-Dist: beautifulsoup4 (>=4.12.
|
|
29
|
-
Requires-Dist: certifi (>=
|
|
28
|
+
Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
|
|
29
|
+
Requires-Dist: certifi (>=2024.2.2)
|
|
30
30
|
Requires-Dist: click (>=8.1.7,<9.0.0)
|
|
31
|
-
Requires-Dist: click-didyoumean (>=0.3.
|
|
32
|
-
Requires-Dist: click-help-colors (>=0.9.
|
|
33
|
-
Requires-Dist: cmem-cmempy (==24.
|
|
34
|
-
Requires-Dist: configparser (>=
|
|
35
|
-
Requires-Dist: jinja2 (>=3.1.
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
31
|
+
Requires-Dist: click-didyoumean (>=0.3.1,<0.4.0)
|
|
32
|
+
Requires-Dist: click-help-colors (>=0.9.4,<0.10.0)
|
|
33
|
+
Requires-Dist: cmem-cmempy (==24.2.0)
|
|
34
|
+
Requires-Dist: configparser (>=6.0.1,<7.0.0)
|
|
35
|
+
Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
|
|
36
|
+
Requires-Dist: junit-xml (>=1.9,<2.0)
|
|
37
|
+
Requires-Dist: natsort (>=8.4.0,<9.0.0)
|
|
38
|
+
Requires-Dist: pip (>=24.2,<25.0)
|
|
39
|
+
Requires-Dist: prometheus-client (>=0.20.0,<0.21.0)
|
|
40
|
+
Requires-Dist: pygments (>=2.17.2,<3.0.0)
|
|
41
|
+
Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
|
|
42
|
+
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
|
|
41
43
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
42
|
-
Requires-Dist: rich (>=13.7.
|
|
44
|
+
Requires-Dist: rich (>=13.7.1,<14.0.0)
|
|
43
45
|
Requires-Dist: six (>=1.16.0,<2.0.0)
|
|
46
|
+
Requires-Dist: smart-open (>=7.0.4,<8.0.0)
|
|
44
47
|
Requires-Dist: timeago (>=1.0.16,<2.0.0)
|
|
45
|
-
Requires-Dist: treelib (>=1.
|
|
46
|
-
Requires-Dist: urllib3 (>=2,<3)
|
|
48
|
+
Requires-Dist: treelib (>=1.7.0,<2.0.0)
|
|
49
|
+
Requires-Dist: urllib3 (>=2.2.1,<3.0.0)
|
|
47
50
|
Description-Content-Type: text/markdown
|
|
48
51
|
|
|
49
52
|
# cmemc
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
cmem_cmemc/__init__.py,sha256=Uwm6QW_Bou1VtRWVRcnMs1ilHVCi9moddXgcEqs6c3E,5484
|
|
2
|
+
cmem_cmemc/_cmemc.zsh,sha256=fmkrBHIQxus8cp2AgO1tzZ5mNZdGL_83cYz3a9uAdsg,1326
|
|
3
|
+
cmem_cmemc/commands/__init__.py,sha256=sFzT-3i01sLlxL8_nSTXaYerDfTo3fTEvvcL3jx3Y50,3681
|
|
4
|
+
cmem_cmemc/commands/acl.py,sha256=8Xvd98-aR-tDY9y8QB8varZgOOCOI4DpKnhDqKDNfIo,15597
|
|
5
|
+
cmem_cmemc/commands/admin.py,sha256=YYl8sHUS9gewgEfVALJYwbc1xpUK7mX-RoJpiXlAqr0,9159
|
|
6
|
+
cmem_cmemc/commands/client.py,sha256=23Sc3h64eAMaB4bJVfiamR470DMpDj1hsPWKsxUSMLg,5039
|
|
7
|
+
cmem_cmemc/commands/config.py,sha256=9-xEtHoJyaqU9J7C8a3Q7SpPvJQHLufMXxZYuXYQ5Pk,5699
|
|
8
|
+
cmem_cmemc/commands/dataset.py,sha256=_6pZyYOpIpv6EU2Cg1GJnCVLEVWcGaV9AUyCskhcT8U,30282
|
|
9
|
+
cmem_cmemc/commands/graph.py,sha256=eVJ6SJiDD_xIkE-Ua0PNiI_K4pAQLkP-Puk_ZCDsXBM,27935
|
|
10
|
+
cmem_cmemc/commands/metrics.py,sha256=BlZvYvp1RWLl9rEknxxcOnOh2_zQgGqMEEXFwtJa58E,7832
|
|
11
|
+
cmem_cmemc/commands/project.py,sha256=Dgnd5MxBtJ8zS-wN-1HFraim2PoL4s8LBw6SUeh94b8,19734
|
|
12
|
+
cmem_cmemc/commands/python.py,sha256=Mwt2wZyXOlrnc3nzbnt2wM441IKvxFBE2a3P54uYhk8,10285
|
|
13
|
+
cmem_cmemc/commands/query.py,sha256=r9eTjoB_PR_gsb3R0jIU0oVGThDbs2LmFwRoycBTvYg,26938
|
|
14
|
+
cmem_cmemc/commands/resource.py,sha256=n6ri6Tu2sNUNZuNfNGpRnMQxOx9VeTFGL1OWXUKKpjE,7534
|
|
15
|
+
cmem_cmemc/commands/scheduler.py,sha256=L9Cl7u3Nq3UjfgRzayivxxCHq2U6ZtpqtTCsXsndnFg,8512
|
|
16
|
+
cmem_cmemc/commands/store.py,sha256=esFPX4b8TnN64F4XMCrT44JS5DSoCGjWxlncGYyiW1s,9254
|
|
17
|
+
cmem_cmemc/commands/user.py,sha256=0BbPoPhguSeMjLUn29Qh3kRcMbpQ75bAwDHgYWrZMyQ,12288
|
|
18
|
+
cmem_cmemc/commands/validation.py,sha256=hGCXKdZ3q8VkhiFuzsz1IIKYerGggxrW7JXgdlo92Qc,27963
|
|
19
|
+
cmem_cmemc/commands/variable.py,sha256=IvQ-Yzg2z8Hb-ZstEuOCTMBDg0N931z_73K9xZPbdoM,11356
|
|
20
|
+
cmem_cmemc/commands/vocabulary.py,sha256=mDJ6eWKtN-ChPjnST6Xy8gmPNlO1pE7vzz_tkgGvUlQ,17342
|
|
21
|
+
cmem_cmemc/commands/workflow.py,sha256=nBI7pr54FqBJMhYc__CQW7BxI9DdVUYsvXZLsskdwoU,25315
|
|
22
|
+
cmem_cmemc/commands/workspace.py,sha256=pRx4hesL-z34m2V-FyTk4FfXErJugLDD6ufbqL6KJd8,4191
|
|
23
|
+
cmem_cmemc/completion.py,sha256=oP8I-hVe3KvzQ2cjyaCzSsMpoaKw9A06pVLiA5Owlaw,43135
|
|
24
|
+
cmem_cmemc/constants.py,sha256=s16jrvmIt42a1SrahwjON5prk8ry6MuAXHeBnuMDZyY,422
|
|
25
|
+
cmem_cmemc/context.py,sha256=fiMciWYlnBi0vuyBzIW2KIODxjm7XjzCMtoMYMuqRDI,18538
|
|
26
|
+
cmem_cmemc/exceptions.py,sha256=SpUHdmVM8cZpSjBv6ICgr9NLr3OJ5XO42DlvjohprVo,232
|
|
27
|
+
cmem_cmemc/manual_helper/__init__.py,sha256=G3Lqw2aPxo8x63Tg7L0aa5VD9BMaRzZDmhrog7IuEPg,43
|
|
28
|
+
cmem_cmemc/manual_helper/graph.py,sha256=qDchHdjRRDW2oZ66by81NxhoDgNxXaAUxq2keewEiVU,3598
|
|
29
|
+
cmem_cmemc/manual_helper/multi_page.py,sha256=K-S2_NubrHGynO5I_IMAanO2pZN2KETUV00wpjMqvjI,12171
|
|
30
|
+
cmem_cmemc/manual_helper/single_page.py,sha256=sVSeaZmPa-Cs6dtp27MqyiO6rIrskY9BtDyeAZhBWXM,1477
|
|
31
|
+
cmem_cmemc/object_list.py,sha256=Iyl5cu8CmeT_2RNKDsjhhSsoWoQ6AUh0rKzKwHV_Ruc,13106
|
|
32
|
+
cmem_cmemc/parameter_types/__init__.py,sha256=Jqhwnw5a2oPNMClzUyovWiieK60RCl3rvSNr-t3wP84,36
|
|
33
|
+
cmem_cmemc/parameter_types/path.py,sha256=ATwvdXHqI5GjPw9p2jCoN2pLoXlRrxPTvI0Q9Z2k_FI,1868
|
|
34
|
+
cmem_cmemc/smart_path/__init__.py,sha256=zDgm1kDrzLyCuIcNb8VXSdnb_CcVNjGkjgiIDVlsh74,3023
|
|
35
|
+
cmem_cmemc/smart_path/clients/__init__.py,sha256=YFOm69BfTCRvAcJjN_CoUmCv3kzEciyYOPUG337p_pA,1696
|
|
36
|
+
cmem_cmemc/smart_path/clients/http.py,sha256=3clZu2v4uuOvPY4MY_8SVSy7hIXJDNooahFRBRpy0ok,2347
|
|
37
|
+
cmem_cmemc/utils.py,sha256=eKXo0bVbEyaW-bARbodxv0gggnnbB6FE5pfI8MWR0cI,13173
|
|
38
|
+
cmem_cmemc-24.2.0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
39
|
+
cmem_cmemc-24.2.0.dist-info/METADATA,sha256=NP18u40La3sRgvUlMnmdgtd5sb8Dq1xV8O-cN-Dx5Sc,5572
|
|
40
|
+
cmem_cmemc-24.2.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
41
|
+
cmem_cmemc-24.2.0.dist-info/entry_points.txt,sha256=znWUTG-zgDITu6Frsd-OtNxBxj6Uo8Fa7bz6gaZYMrA,41
|
|
42
|
+
cmem_cmemc-24.2.0.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
cmem_cmemc/__init__.py,sha256=z7zjBQWM1c2nW9ylGUelIPiKBtXhIO38qILBJXzuEWs,5532
|
|
2
|
-
cmem_cmemc/_cmemc.zsh,sha256=fmkrBHIQxus8cp2AgO1tzZ5mNZdGL_83cYz3a9uAdsg,1326
|
|
3
|
-
cmem_cmemc/commands/__init__.py,sha256=_PsHWhMFwyfRAYInt0AOs3dA3Cuqhsnf_enFLjxVCGQ,3626
|
|
4
|
-
cmem_cmemc/commands/acl.py,sha256=cA76UvQquhZc9MdS3e94kcfSn9V_RzTQ5XM0Ko6w6hM,13769
|
|
5
|
-
cmem_cmemc/commands/admin.py,sha256=pv9N9laUWV7xevOw0toLBezRz2_B5spcgwU2B-pqaAY,8681
|
|
6
|
-
cmem_cmemc/commands/client.py,sha256=23Sc3h64eAMaB4bJVfiamR470DMpDj1hsPWKsxUSMLg,5039
|
|
7
|
-
cmem_cmemc/commands/config.py,sha256=9-xEtHoJyaqU9J7C8a3Q7SpPvJQHLufMXxZYuXYQ5Pk,5699
|
|
8
|
-
cmem_cmemc/commands/dataset.py,sha256=hn3449Aby_lMgBHumSHqFn6SZS9q3cmh3ZMoUOG85RE,30198
|
|
9
|
-
cmem_cmemc/commands/graph.py,sha256=_VtYwOU3SmNbKAQaSKHrVSTOSP3FCrs-W4jmzTQzx7M,27329
|
|
10
|
-
cmem_cmemc/commands/metrics.py,sha256=BlZvYvp1RWLl9rEknxxcOnOh2_zQgGqMEEXFwtJa58E,7832
|
|
11
|
-
cmem_cmemc/commands/project.py,sha256=XP4vovTTgMzvO-218SpWYnFejayWoNN4DLTp448zVuU,19268
|
|
12
|
-
cmem_cmemc/commands/python.py,sha256=4fYWztPZjLVuz12vuApHE8el9zQvbnwGDiLh1fo7vqA,9666
|
|
13
|
-
cmem_cmemc/commands/query.py,sha256=mx_pZB9ovD8j_svpdDTE82R1pUrwL41OICwcExpXA4s,26792
|
|
14
|
-
cmem_cmemc/commands/resource.py,sha256=n6ri6Tu2sNUNZuNfNGpRnMQxOx9VeTFGL1OWXUKKpjE,7534
|
|
15
|
-
cmem_cmemc/commands/scheduler.py,sha256=L9Cl7u3Nq3UjfgRzayivxxCHq2U6ZtpqtTCsXsndnFg,8512
|
|
16
|
-
cmem_cmemc/commands/store.py,sha256=PybRXCO6R84lEWR8fsTB1jZrc8CMGrWejpruPuM9lIM,6741
|
|
17
|
-
cmem_cmemc/commands/user.py,sha256=0BbPoPhguSeMjLUn29Qh3kRcMbpQ75bAwDHgYWrZMyQ,12288
|
|
18
|
-
cmem_cmemc/commands/validation.py,sha256=Kr5zk_9_LPoRz11LVJ_vkEhP2KrVg8Ns2aiMfiCt-cI,19984
|
|
19
|
-
cmem_cmemc/commands/variable.py,sha256=IvQ-Yzg2z8Hb-ZstEuOCTMBDg0N931z_73K9xZPbdoM,11356
|
|
20
|
-
cmem_cmemc/commands/vocabulary.py,sha256=9bD_Ah6uVd4GwywIRAahSLfcqxE8yrawXIUmSMW-dMA,16693
|
|
21
|
-
cmem_cmemc/commands/workflow.py,sha256=msBdaNClFuSdPD8KIC9sjno8C4gunyAI7n_hev4yq2w,24632
|
|
22
|
-
cmem_cmemc/commands/workspace.py,sha256=4kMstZejLdP8KIrt9p3BMw8mrrNUrdX7E8_fSI78nc4,4097
|
|
23
|
-
cmem_cmemc/completion.py,sha256=amF9lWdxrWvS1CAQkEOQH1S7FpbmMniw6xjKlFOw4kY,42011
|
|
24
|
-
cmem_cmemc/constants.py,sha256=s16jrvmIt42a1SrahwjON5prk8ry6MuAXHeBnuMDZyY,422
|
|
25
|
-
cmem_cmemc/context.py,sha256=tLyVsma3oCLUEwpywUwX-ZLtp1XqEYLnC_bVK4Ro0ps,17730
|
|
26
|
-
cmem_cmemc/exceptions.py,sha256=SpUHdmVM8cZpSjBv6ICgr9NLr3OJ5XO42DlvjohprVo,232
|
|
27
|
-
cmem_cmemc/manual_helper/__init__.py,sha256=G3Lqw2aPxo8x63Tg7L0aa5VD9BMaRzZDmhrog7IuEPg,43
|
|
28
|
-
cmem_cmemc/manual_helper/graph.py,sha256=qDchHdjRRDW2oZ66by81NxhoDgNxXaAUxq2keewEiVU,3598
|
|
29
|
-
cmem_cmemc/manual_helper/multi_page.py,sha256=K-S2_NubrHGynO5I_IMAanO2pZN2KETUV00wpjMqvjI,12171
|
|
30
|
-
cmem_cmemc/manual_helper/single_page.py,sha256=sVSeaZmPa-Cs6dtp27MqyiO6rIrskY9BtDyeAZhBWXM,1477
|
|
31
|
-
cmem_cmemc/object_list.py,sha256=QU-8JE5jvFcrUelEC4l5z7A9SInNnCRzRTS1bMw5FZc,13256
|
|
32
|
-
cmem_cmemc/utils.py,sha256=wGqdltti4GDZdzikCcBMKLrwDObjRbPl3_7-TGh_Eqk,11577
|
|
33
|
-
cmem_cmemc-24.1.5.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
34
|
-
cmem_cmemc-24.1.5.dist-info/METADATA,sha256=lQAYElKhpxomsAwLHhW3nQxcYGi3yTXAg1QJlMIthLs,5443
|
|
35
|
-
cmem_cmemc-24.1.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
36
|
-
cmem_cmemc-24.1.5.dist-info/entry_points.txt,sha256=znWUTG-zgDITu6Frsd-OtNxBxj6Uo8Fa7bz6gaZYMrA,41
|
|
37
|
-
cmem_cmemc-24.1.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|