cmem-cmemc 25.3.0__py3-none-any.whl → 25.5.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/command_group.py +31 -30
- cmem_cmemc/commands/acl.py +95 -8
- cmem_cmemc/commands/admin.py +31 -4
- cmem_cmemc/commands/graph.py +12 -5
- cmem_cmemc/commands/graph_imports.py +3 -6
- cmem_cmemc/commands/graph_insights.py +382 -0
- cmem_cmemc/commands/project.py +1 -1
- cmem_cmemc/commands/query.py +54 -19
- cmem_cmemc/commands/store.py +6 -2
- cmem_cmemc/commands/validation.py +5 -3
- cmem_cmemc/commands/vocabulary.py +13 -4
- cmem_cmemc/commands/workflow.py +1 -0
- cmem_cmemc/completion.py +19 -22
- cmem_cmemc/context.py +2 -2
- cmem_cmemc/manual_helper/multi_page.py +5 -4
- cmem_cmemc/string_processor.py +8 -3
- cmem_cmemc/utils.py +1 -1
- {cmem_cmemc-25.3.0.dist-info → cmem_cmemc-25.5.0.dist-info}/METADATA +6 -4
- {cmem_cmemc-25.3.0.dist-info → cmem_cmemc-25.5.0.dist-info}/RECORD +22 -21
- {cmem_cmemc-25.3.0.dist-info → cmem_cmemc-25.5.0.dist-info}/WHEEL +1 -1
- {cmem_cmemc-25.3.0.dist-info → cmem_cmemc-25.5.0.dist-info}/entry_points.txt +0 -0
- {cmem_cmemc-25.3.0.dist-info → cmem_cmemc-25.5.0.dist-info/licenses}/LICENSE +0 -0
cmem_cmemc/commands/workflow.py
CHANGED
cmem_cmemc/completion.py
CHANGED
|
@@ -53,11 +53,6 @@ SORT_BY_KEY = 0
|
|
|
53
53
|
SORT_BY_DESC = 1
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
def escape_colon(value: str) -> str:
|
|
57
|
-
"""Escape colons in the input string by prefixing them with a backslash."""
|
|
58
|
-
return value.replace(":", r"\:")
|
|
59
|
-
|
|
60
|
-
|
|
61
56
|
def finalize_completion(
|
|
62
57
|
candidates: list,
|
|
63
58
|
incomplete: str = "",
|
|
@@ -130,10 +125,7 @@ def finalize_completion(
|
|
|
130
125
|
key=lambda x: (str(x[sort_by]).casefold(), str(x[sort_by])),
|
|
131
126
|
reverse=reverse,
|
|
132
127
|
)
|
|
133
|
-
return [
|
|
134
|
-
CompletionItem(value=escape_colon(element[0]), help=element[1])
|
|
135
|
-
for element in sorted_list
|
|
136
|
-
]
|
|
128
|
+
return [CompletionItem(value=element[0], help=element[1]) for element in sorted_list]
|
|
137
129
|
|
|
138
130
|
raise ClickException(
|
|
139
131
|
"Candidates should be a list of strings or a list of tuples." f" Got {candidates}"
|
|
@@ -199,7 +191,10 @@ def acl_actions(ctx: Context, param: Argument, incomplete: str) -> list[Completi
|
|
|
199
191
|
if check_option_in_params(iri, ctx.params.get(str(param.name))):
|
|
200
192
|
continue
|
|
201
193
|
options.append((qname, name))
|
|
202
|
-
|
|
194
|
+
if not check_option_in_params("urn:elds-backend-all-actions", ctx.params.get(str(param.name))):
|
|
195
|
+
options.append(
|
|
196
|
+
("urn:elds-backend-all-actions", "All Actions (until 24.2.x, now deprecated)")
|
|
197
|
+
)
|
|
203
198
|
return finalize_completion(candidates=options, incomplete=incomplete, sort_by=SORT_BY_DESC)
|
|
204
199
|
|
|
205
200
|
|
|
@@ -359,10 +354,10 @@ def dataset_list_filter(ctx: Context, param: Argument, incomplete: str) -> list[
|
|
|
359
354
|
("type", "Filter by dataset type."),
|
|
360
355
|
]
|
|
361
356
|
filter_regex = [
|
|
362
|
-
(
|
|
357
|
+
("^Final:", "Example: Dataset label starts with 'Final:'."),
|
|
363
358
|
(
|
|
364
359
|
r"[12][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]",
|
|
365
|
-
"Example: Dataset label contains a
|
|
360
|
+
"Example: Dataset label contains a date-like string.",
|
|
366
361
|
),
|
|
367
362
|
]
|
|
368
363
|
options = []
|
|
@@ -526,6 +521,7 @@ def get_dataset_file_mapping() -> dict[str, dict[str, str]]:
|
|
|
526
521
|
return {
|
|
527
522
|
".csv": {"description": "CSV Dataset resource", "type": "csv"},
|
|
528
523
|
".csv.zip": {"description": "CSV Dataset resource (zipped)", "type": "csv"},
|
|
524
|
+
".xls": {"description": "Excel Dataset resource", "type": "excel"},
|
|
529
525
|
".xlsx": {"description": "Excel Dataset resource", "type": "excel"},
|
|
530
526
|
".xml": {"description": "XML Dataset resource", "type": "xml"},
|
|
531
527
|
".xml.zip": {"description": "XML Dataset resource (zipped)", "type": "xml"},
|
|
@@ -643,10 +639,11 @@ def placeholder(ctx: Context, param: Argument, incomplete: str) -> list[Completi
|
|
|
643
639
|
args = get_completion_args(incomplete)
|
|
644
640
|
# setup configuration
|
|
645
641
|
ApplicationContext.set_connection_from_params(ctx.find_root().params)
|
|
642
|
+
catalog_graph = ctx.params.get("catalog_graph")
|
|
646
643
|
# extract placeholder from given queries in the command line
|
|
647
644
|
options = []
|
|
648
645
|
placeholders: dict[str, QueryPlaceholder] = {}
|
|
649
|
-
catalog = QueryCatalog()
|
|
646
|
+
catalog = QueryCatalog(graph=catalog_graph) if catalog_graph else QueryCatalog()
|
|
650
647
|
for _, arg in enumerate(args):
|
|
651
648
|
query = catalog.get_query(arg)
|
|
652
649
|
if query is not None:
|
|
@@ -654,7 +651,7 @@ def placeholder(ctx: Context, param: Argument, incomplete: str) -> list[Completi
|
|
|
654
651
|
placeholders = placeholders | get_placeholders_for_query(iri=query.url)
|
|
655
652
|
# collect all placeholder keys
|
|
656
653
|
options.extend(list(query.get_placeholder_keys()))
|
|
657
|
-
# look if cursor is in value position of the -p option and
|
|
654
|
+
# look if the cursor is in value position of the -p option and
|
|
658
655
|
# use placeholder value completion, in case it is
|
|
659
656
|
if args[len(args) - 2] in ("-p", "--parameter"):
|
|
660
657
|
key = args[len(args) - 1]
|
|
@@ -676,8 +673,10 @@ def placeholder(ctx: Context, param: Argument, incomplete: str) -> list[Completi
|
|
|
676
673
|
def remote_queries(ctx: Context, param: Argument, incomplete: str) -> list[CompletionItem]:
|
|
677
674
|
"""Prepare a list of query URIs."""
|
|
678
675
|
ApplicationContext.set_connection_from_params(ctx.find_root().params)
|
|
676
|
+
catalog_graph = ctx.params.get("catalog_graph")
|
|
677
|
+
catalog = QueryCatalog(graph=catalog_graph) if catalog_graph else QueryCatalog()
|
|
679
678
|
options = []
|
|
680
|
-
for query in
|
|
679
|
+
for query in catalog.get_queries().values():
|
|
681
680
|
url = query.short_url
|
|
682
681
|
label = query.label
|
|
683
682
|
options.append((url, label))
|
|
@@ -729,7 +728,7 @@ def project_ids(ctx: Context, param: Argument, incomplete: str) -> list[Completi
|
|
|
729
728
|
options = []
|
|
730
729
|
for _ in projects:
|
|
731
730
|
project_id = _["name"]
|
|
732
|
-
label = _["metaData"]
|
|
731
|
+
label = _["metaData"].get("label", "")
|
|
733
732
|
# do not add project if already in the command line
|
|
734
733
|
if check_option_in_params(project_id, ctx.params.get(str(param.name))):
|
|
735
734
|
continue
|
|
@@ -798,11 +797,11 @@ def graph_uris_with_all_graph_uri(
|
|
|
798
797
|
options = graph_uris(ctx, param, incomplete, writeable=True, readonly=True)
|
|
799
798
|
options.append(
|
|
800
799
|
CompletionItem(
|
|
801
|
-
value=r"urn
|
|
800
|
+
value=r"urn:elds-backend-all-graphs", help="All Graphs (until 24.2.x, now deprecated)"
|
|
802
801
|
)
|
|
803
802
|
)
|
|
804
803
|
options.append(
|
|
805
|
-
CompletionItem(value=r"https
|
|
804
|
+
CompletionItem(value=r"https://vocab.eccenca.com/auth/AllGraphs", help="All Graphs")
|
|
806
805
|
)
|
|
807
806
|
return options
|
|
808
807
|
|
|
@@ -935,9 +934,7 @@ def resource_list_filter(ctx: Context, param: Argument, incomplete: str) -> list
|
|
|
935
934
|
if args[len(args) - 1] == "--filter":
|
|
936
935
|
return [CompletionItem(value=f[0], help=f[1]) for f in filter_names]
|
|
937
936
|
if args[len(args) - 1] == "project":
|
|
938
|
-
return
|
|
939
|
-
candidates=project_ids(ctx, param, incomplete), incomplete=incomplete
|
|
940
|
-
)
|
|
937
|
+
return project_ids(ctx, param, incomplete)
|
|
941
938
|
if args[len(args) - 1] == "regex":
|
|
942
939
|
return finalize_completion(candidates=filter_values_regex, incomplete=incomplete)
|
|
943
940
|
return []
|
|
@@ -958,7 +955,7 @@ def workflow_list_filter(ctx: Context, param: Argument, incomplete: str) -> list
|
|
|
958
955
|
("input-output", "List only workflows with a variable input and output dataset."),
|
|
959
956
|
]
|
|
960
957
|
filter_regex = [
|
|
961
|
-
(r"^Final
|
|
958
|
+
(r"^Final:", "Example: Workflow label starts with 'Final:'."),
|
|
962
959
|
(
|
|
963
960
|
r"[12][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]",
|
|
964
961
|
"Example: Workflow label contains a data-like string.",
|
cmem_cmemc/context.py
CHANGED
|
@@ -29,9 +29,9 @@ from cmem_cmemc.exceptions import InvalidConfigurationError
|
|
|
29
29
|
from cmem_cmemc.string_processor import StringProcessor, process_row
|
|
30
30
|
from cmem_cmemc.utils import is_enabled, str_to_bool
|
|
31
31
|
|
|
32
|
-
DI_TARGET_VERSION = "v25.
|
|
32
|
+
DI_TARGET_VERSION = "v25.3.0"
|
|
33
33
|
|
|
34
|
-
EXPLORE_TARGET_VERSION = "v25.
|
|
34
|
+
EXPLORE_TARGET_VERSION = "v25.3.0"
|
|
35
35
|
|
|
36
36
|
KNOWN_CONFIG_KEYS = {
|
|
37
37
|
"CMEM_BASE_URI": cmempy_config.get_cmem_base_uri,
|
|
@@ -31,6 +31,8 @@ def get_icon_for_command_group(full_name: str) -> str:
|
|
|
31
31
|
"project variable": "material/variable-box",
|
|
32
32
|
"query": "eccenca/application-queries",
|
|
33
33
|
"graph": "eccenca/artefact-dataset-eccencadataplatform",
|
|
34
|
+
"graph imports": "material/family-tree",
|
|
35
|
+
"graph insights": "eccenca/graph-insights",
|
|
34
36
|
"graph validation": "octicons/verified-16",
|
|
35
37
|
"vocabulary": "eccenca/application-vocabularies",
|
|
36
38
|
"vocabulary cache": "eccenca/application-vocabularies",
|
|
@@ -58,6 +60,7 @@ def get_tags_for_command_group(full_name: str) -> str:
|
|
|
58
60
|
"project variable": ["Variables", "cmemc"],
|
|
59
61
|
"query": ["SPARQL", "cmemc"],
|
|
60
62
|
"graph": ["KnowledgeGraph", "cmemc"],
|
|
63
|
+
"graph imports": ["KnowledgeGraph", "cmemc"],
|
|
61
64
|
"graph validation": ["KnowledgeGraph", "Validation", "cmemc"],
|
|
62
65
|
"vocabulary": ["Vocabulary", "cmemc"],
|
|
63
66
|
"vocabulary cache": ["Vocabulary", "cmemc"],
|
|
@@ -143,12 +146,10 @@ def get_commands_for_table_recursive(
|
|
|
143
146
|
if isinstance(item, Command):
|
|
144
147
|
command_name = item.name
|
|
145
148
|
group_link = f"{prefix}/{group_name}/index.md".replace(" ", "/")
|
|
146
|
-
|
|
147
|
-
group_link = group_link[1:]
|
|
149
|
+
group_link = group_link.removeprefix("/")
|
|
148
150
|
command_anchor = f"{prefix}-{group_name}".replace(" ", "-")
|
|
149
151
|
command_anchor += f"-{command_name}"
|
|
150
|
-
|
|
151
|
-
command_anchor = command_anchor[1:]
|
|
152
|
+
command_anchor = command_anchor.removeprefix("-")
|
|
152
153
|
command_link = f"{group_link}#{command_anchor}"
|
|
153
154
|
new_command = {
|
|
154
155
|
"command_name": command_name,
|
cmem_cmemc/string_processor.py
CHANGED
|
@@ -20,18 +20,23 @@ class StringProcessor(ABC):
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class TimeAgo(StringProcessor):
|
|
23
|
-
"""Create a string similar to 'x minutes ago' from a timestamp"""
|
|
23
|
+
"""Create a string similar to 'x minutes ago' from a timestamp or iso-formated string."""
|
|
24
24
|
|
|
25
25
|
def process(self, text: str) -> str:
|
|
26
26
|
"""Process a single string content and output the processed string."""
|
|
27
27
|
if text is None:
|
|
28
28
|
return ""
|
|
29
|
+
try:
|
|
30
|
+
stamp = datetime.fromisoformat(str(text))
|
|
31
|
+
return str(timeago.format(stamp, datetime.now(tz=timezone.utc)))
|
|
32
|
+
except (ValueError, TypeError):
|
|
33
|
+
pass
|
|
29
34
|
try:
|
|
30
35
|
text_as_int = int(text)
|
|
36
|
+
stamp = datetime.fromtimestamp(text_as_int / 1000, tz=timezone.utc)
|
|
37
|
+
return str(timeago.format(stamp, datetime.now(tz=timezone.utc)))
|
|
31
38
|
except ValueError:
|
|
32
39
|
return text
|
|
33
|
-
stamp = datetime.fromtimestamp(text_as_int / 1000, tz=timezone.utc)
|
|
34
|
-
return str(timeago.format(stamp, datetime.now(tz=timezone.utc)))
|
|
35
40
|
|
|
36
41
|
|
|
37
42
|
class GraphLink(StringProcessor):
|
cmem_cmemc/utils.py
CHANGED
|
@@ -35,7 +35,7 @@ def check_python_version(ctx: type["ApplicationContext"]) -> None:
|
|
|
35
35
|
"""Check the runtime python version and warn or error."""
|
|
36
36
|
version = sys.version_info
|
|
37
37
|
major_expected = [3]
|
|
38
|
-
minor_expected = [
|
|
38
|
+
minor_expected = [13]
|
|
39
39
|
if version.major not in major_expected:
|
|
40
40
|
ctx.echo_error(f"Error: cmemc can not be executed with Python {version.major}.")
|
|
41
41
|
sys.exit(1)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: cmem-cmemc
|
|
3
|
-
Version: 25.
|
|
3
|
+
Version: 25.5.0
|
|
4
4
|
Summary: Command line client for eccenca Corporate Memory
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: eccenca
|
|
7
8
|
Author-email: cmempy-developer@eccenca.com
|
|
8
9
|
Requires-Python: >=3.10,<4.0
|
|
@@ -21,16 +22,17 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
23
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
24
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
26
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
25
27
|
Classifier: Topic :: Database
|
|
26
28
|
Classifier: Topic :: Software Development :: Testing
|
|
27
29
|
Classifier: Topic :: Utilities
|
|
28
30
|
Requires-Dist: beautifulsoup4 (>=4.13.3,<5.0.0)
|
|
29
31
|
Requires-Dist: certifi (>=2024.2.2)
|
|
30
|
-
Requires-Dist: click (>=8.
|
|
32
|
+
Requires-Dist: click (>=8.3.0,<9.0.0)
|
|
31
33
|
Requires-Dist: click-didyoumean (>=0.3.1,<0.4.0)
|
|
32
34
|
Requires-Dist: click-help-colors (>=0.9.4,<0.10.0)
|
|
33
|
-
Requires-Dist: cmem-cmempy (==25.
|
|
35
|
+
Requires-Dist: cmem-cmempy (==25.4.0)
|
|
34
36
|
Requires-Dist: configparser (>=7.2.0,<8.0.0)
|
|
35
37
|
Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
|
|
36
38
|
Requires-Dist: junit-xml (>=1.9,<2.0)
|
|
@@ -2,38 +2,39 @@ cmem_cmemc/__init__.py,sha256=-RPEVweA-fcmEAynszDDMKwArJgxZpGW61UBiV7O4Og,24
|
|
|
2
2
|
cmem_cmemc/_cmemc.zsh,sha256=fmkrBHIQxus8cp2AgO1tzZ5mNZdGL_83cYz3a9uAdsg,1326
|
|
3
3
|
cmem_cmemc/cli.py,sha256=vDdSHFmXUstC3T7OlbPSd0hXxyigJE4VVgRMcsNz5cc,4538
|
|
4
4
|
cmem_cmemc/command.py,sha256=nBtrwPKFJLRpD3IPk5hKyn2LOMl-1ae7SV9iRhgky8k,1958
|
|
5
|
-
cmem_cmemc/command_group.py,sha256=
|
|
5
|
+
cmem_cmemc/command_group.py,sha256=LSCQfvRQm8R-HsBZfUs-5lzEGEf_LMaleFwZ1AKpZRE,3488
|
|
6
6
|
cmem_cmemc/commands/__init__.py,sha256=NaGM5jOzf0S_-4UIAwlVDOf2AZ3mliGPoRLXQJfTyZs,22
|
|
7
|
-
cmem_cmemc/commands/acl.py,sha256=
|
|
8
|
-
cmem_cmemc/commands/admin.py,sha256=
|
|
7
|
+
cmem_cmemc/commands/acl.py,sha256=vJ3H5eeWiVCtGk1ZpEF2OqXeHurZgPwakD8YT09lnVM,19030
|
|
8
|
+
cmem_cmemc/commands/admin.py,sha256=F-393oXTVYV7HxK5NxuhONlBIEg7wffxE7DAKDuasG4,10192
|
|
9
9
|
cmem_cmemc/commands/client.py,sha256=nBs7MoF2wF45AteTCeIQrXcOwKmHHCd8_lG_SM2mQSA,5127
|
|
10
10
|
cmem_cmemc/commands/config.py,sha256=VHiVkW6NFuz-tpKXRPl7dO1gIXQLOuEhlGVxb422qwA,5803
|
|
11
11
|
cmem_cmemc/commands/dataset.py,sha256=zylVsfBD92LzHgQ96edNKaQNsf0zKoPro0VQdX--Mu8,30488
|
|
12
|
-
cmem_cmemc/commands/graph.py,sha256=
|
|
13
|
-
cmem_cmemc/commands/graph_imports.py,sha256=
|
|
12
|
+
cmem_cmemc/commands/graph.py,sha256=uAI7dEDRjwLSGl6QsJ0PsAycJf2-EZNNn_lIFliDE9Q,32662
|
|
13
|
+
cmem_cmemc/commands/graph_imports.py,sha256=CYgTUSj8giHoWzz0Qjtup0H1V5GKZEI3xXdA_9w_btI,14046
|
|
14
|
+
cmem_cmemc/commands/graph_insights.py,sha256=ARgaYeKBH1b2OIKVjgOPwgAa8mVzo3CLCstcw4Z53z4,13193
|
|
14
15
|
cmem_cmemc/commands/manual.py,sha256=-sZWeFL92Kj8gL3VYsbpKh2ZaVTyM3LgKaUcpNn9u3A,2179
|
|
15
16
|
cmem_cmemc/commands/metrics.py,sha256=pIBRTq90f7MEI99HLdFLN3D1xQ2Z2u6VKUeTIz0X7DY,12205
|
|
16
17
|
cmem_cmemc/commands/migration.py,sha256=y9v4Be7WELGjDGDBZrfLBeqU_G_JH1fnP5UVG9qjB3g,9638
|
|
17
|
-
cmem_cmemc/commands/project.py,sha256=
|
|
18
|
+
cmem_cmemc/commands/project.py,sha256=0cnThtaRZOc04EXR31JFEUSONKbh3ANQG4vZANGwfWA,20601
|
|
18
19
|
cmem_cmemc/commands/python.py,sha256=7ExdKr7nTED5ZZGjeBk5UngNI3F_KNcavwUgwaxApV0,11965
|
|
19
|
-
cmem_cmemc/commands/query.py,sha256=
|
|
20
|
+
cmem_cmemc/commands/query.py,sha256=Dra4BHshfec1nvVJbDvLT9VTjfesWJGSQCbyNmnnMWI,28788
|
|
20
21
|
cmem_cmemc/commands/resource.py,sha256=74cn_yqMv3a6xOQAPpNCuluTWEH-_2PGENJnl7y8qz4,7778
|
|
21
22
|
cmem_cmemc/commands/scheduler.py,sha256=zYeO1-Hlxh9D-I9JIweQ-SEA0la0wv0EicY_UY7rNCg,8751
|
|
22
|
-
cmem_cmemc/commands/store.py,sha256=
|
|
23
|
+
cmem_cmemc/commands/store.py,sha256=W_6LXq98If50-X-XYZUQsYodVwUjOSm3_jyMp62pFuA,10599
|
|
23
24
|
cmem_cmemc/commands/user.py,sha256=ANZpeOBA46xiqOcNPrueComsCV0gEBbav-vOL9VgyX4,12535
|
|
24
|
-
cmem_cmemc/commands/validation.py,sha256=
|
|
25
|
+
cmem_cmemc/commands/validation.py,sha256=ebolVeKpTTQ-tNjsmGWnfIlvv77lDwiWZRtd-qLbrHM,29509
|
|
25
26
|
cmem_cmemc/commands/variable.py,sha256=aLRH_rFe0h7JBpKIqzcevbk26vczgUGokIDY8g6LPxA,11576
|
|
26
|
-
cmem_cmemc/commands/vocabulary.py,sha256=
|
|
27
|
-
cmem_cmemc/commands/workflow.py,sha256=
|
|
27
|
+
cmem_cmemc/commands/vocabulary.py,sha256=erf3zqSRqCVrN_OlCZj5Z5w4L6MRwSaUmC6V11v2vHc,18095
|
|
28
|
+
cmem_cmemc/commands/workflow.py,sha256=BINC-P5RsDvKTkHUbKZpzkfV5M12Cl7EPD4RLmygDOQ,25798
|
|
28
29
|
cmem_cmemc/commands/workspace.py,sha256=IcZgBsvtulLRFofS70qpln6oKQIZunrVLfSAUeiFhCA,4579
|
|
29
|
-
cmem_cmemc/completion.py,sha256=
|
|
30
|
+
cmem_cmemc/completion.py,sha256=JchfZKbgpOIxN8rPyu7ZBPerIzNKXLo0tOgz8xJa5uw,45237
|
|
30
31
|
cmem_cmemc/config_parser.py,sha256=NduwOT-BB_uAk3pz1Y-ex18RQJW-jjHzkQKCEUUK6Hc,1276
|
|
31
32
|
cmem_cmemc/constants.py,sha256=pzZYbSaTDUiWmE-VOAHB20oivHew5_FP9UTejySsVK4,550
|
|
32
|
-
cmem_cmemc/context.py,sha256=
|
|
33
|
+
cmem_cmemc/context.py,sha256=Axk5zTbhAMPBSMPnk9jIaOQr4GvS3Ih5Jb6ZZc-c5O0,22247
|
|
33
34
|
cmem_cmemc/exceptions.py,sha256=0lsGOfXhciNGJloJGERMbbPuBbs5IwIIJ_5YnY9qQ-8,546
|
|
34
35
|
cmem_cmemc/manual_helper/__init__.py,sha256=G3Lqw2aPxo8x63Tg7L0aa5VD9BMaRzZDmhrog7IuEPg,43
|
|
35
36
|
cmem_cmemc/manual_helper/graph.py,sha256=HU04NYWeJ6LmW4UC7qHr1v1qsm2Md61pJ-pgWUHFmHY,3647
|
|
36
|
-
cmem_cmemc/manual_helper/multi_page.py,sha256=
|
|
37
|
+
cmem_cmemc/manual_helper/multi_page.py,sha256=v24CZpirD-ThVYJI34axQhC-IB9APQ_VyjMrl6WNQQk,12320
|
|
37
38
|
cmem_cmemc/manual_helper/single_page.py,sha256=0mMn_IJwFCe-WPKAmxGEStb8IINLpQRxAx_F1pIxg1E,1526
|
|
38
39
|
cmem_cmemc/migrations/__init__.py,sha256=i6Ri7qN58ou_MwOzm2KibPkXOD7u-1ELky-nUE5LjAA,24
|
|
39
40
|
cmem_cmemc/migrations/abc.py,sha256=UGJzrvMzUFdp2-sosp49ObRI-SrUSzLJqLEhvB4QTzg,3564
|
|
@@ -50,11 +51,11 @@ cmem_cmemc/placeholder.py,sha256=PzZWpVBa7WPP5_5f-HlSoaZaOnto-1Dr9XuCTSpPnNM,238
|
|
|
50
51
|
cmem_cmemc/smart_path/__init__.py,sha256=zDgm1kDrzLyCuIcNb8VXSdnb_CcVNjGkjgiIDVlsh74,3023
|
|
51
52
|
cmem_cmemc/smart_path/clients/__init__.py,sha256=YFOm69BfTCRvAcJjN_CoUmCv3kzEciyYOPUG337p_pA,1696
|
|
52
53
|
cmem_cmemc/smart_path/clients/http.py,sha256=3clZu2v4uuOvPY4MY_8SVSy7hIXJDNooahFRBRpy0ok,2347
|
|
53
|
-
cmem_cmemc/string_processor.py,sha256=
|
|
54
|
+
cmem_cmemc/string_processor.py,sha256=0EZVl3UeVgV5EEYGLPvCGHrJDMd0Ezekkwg6mDQVBZI,3112
|
|
54
55
|
cmem_cmemc/title_helper.py,sha256=7frjAR54_Xc1gszOWXfzSmKFTawNJQ7kkXhZcHmQLyw,1250
|
|
55
|
-
cmem_cmemc/utils.py,sha256=
|
|
56
|
-
cmem_cmemc-25.
|
|
57
|
-
cmem_cmemc-25.
|
|
58
|
-
cmem_cmemc-25.
|
|
59
|
-
cmem_cmemc-25.
|
|
60
|
-
cmem_cmemc-25.
|
|
56
|
+
cmem_cmemc/utils.py,sha256=LlvAMHxciY9ge-REdwHQhRetJGrYghRqBZADxqE0yL4,14657
|
|
57
|
+
cmem_cmemc-25.5.0.dist-info/METADATA,sha256=F3j2Ueql34apDjUfI0IH2TgvOpRzq-Ki-QGvd37Kqq8,5715
|
|
58
|
+
cmem_cmemc-25.5.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
59
|
+
cmem_cmemc-25.5.0.dist-info/entry_points.txt,sha256=2G0AWAyz501EHpFTjIxccdlCTsHt80NT0pdUGP1QkPA,45
|
|
60
|
+
cmem_cmemc-25.5.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
61
|
+
cmem_cmemc-25.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|