cmem-cmemc 25.5.0rc1__tar.gz → 26.1.0rc1__tar.gz
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-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/PKG-INFO +7 -6
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/cli.py +11 -6
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/command.py +1 -1
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/command_group.py +59 -31
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/acl.py +403 -26
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/admin.py +10 -10
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/client.py +12 -5
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/config.py +106 -12
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/dataset.py +163 -172
- cmem_cmemc-26.1.0rc1/cmem_cmemc/commands/file.py +509 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/graph.py +200 -72
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/graph_imports.py +12 -5
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/graph_insights.py +157 -53
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/metrics.py +15 -9
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/migration.py +12 -4
- cmem_cmemc-26.1.0rc1/cmem_cmemc/commands/package.py +548 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/project.py +157 -22
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/python.py +9 -5
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/query.py +119 -25
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/scheduler.py +6 -4
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/store.py +2 -1
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/user.py +124 -24
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/validation.py +15 -10
- cmem_cmemc-26.1.0rc1/cmem_cmemc/commands/variable.py +521 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/vocabulary.py +31 -17
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/workflow.py +21 -11
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/completion.py +126 -109
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/context.py +40 -10
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/exceptions.py +8 -2
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/manual_helper/graph.py +2 -2
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/manual_helper/multi_page.py +5 -7
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/object_list.py +234 -7
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/placeholder.py +2 -2
- cmem_cmemc-26.1.0rc1/cmem_cmemc/string_processor.py +237 -0
- cmem_cmemc-26.1.0rc1/cmem_cmemc/title_helper.py +91 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/utils.py +9 -8
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/pyproject.toml +11 -5
- cmem_cmemc-25.5.0rc1/cmem_cmemc/commands/resource.py +0 -220
- cmem_cmemc-25.5.0rc1/cmem_cmemc/commands/variable.py +0 -318
- cmem_cmemc-25.5.0rc1/cmem_cmemc/string_processor.py +0 -88
- cmem_cmemc-25.5.0rc1/cmem_cmemc/title_helper.py +0 -41
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/LICENSE +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/README-public.md +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/_cmemc.zsh +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/manual.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/commands/workspace.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/config_parser.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/constants.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/manual_helper/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/manual_helper/single_page.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/abc.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/access_conditions_243.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/bootstrap_data.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/remove_noop_triple_251.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/shapes_widget_integrations_243.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/sparql_query_texts_242.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/migrations/workspace_configurations.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/parameter_types/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/parameter_types/path.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/smart_path/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/smart_path/clients/__init__.py +0 -0
- {cmem_cmemc-25.5.0rc1 → cmem_cmemc-26.1.0rc1}/cmem_cmemc/smart_path/clients/http.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cmem-cmemc
|
|
3
|
-
Version:
|
|
3
|
+
Version: 26.1.0rc1
|
|
4
4
|
Summary: Command line client for eccenca Corporate Memory
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Author: eccenca
|
|
8
8
|
Author-email: cmempy-developer@eccenca.com
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.13,<4
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: Environment :: Console
|
|
12
12
|
Classifier: Intended Audience :: Customer Service
|
|
@@ -18,12 +18,12 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
18
18
|
Classifier: Natural Language :: English
|
|
19
19
|
Classifier: Operating System :: OS Independent
|
|
20
20
|
Classifier: Programming Language :: Python :: 3
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
24
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
22
|
Classifier: Programming Language :: Python :: 3.14
|
|
26
23
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
27
27
|
Classifier: Topic :: Database
|
|
28
28
|
Classifier: Topic :: Software Development :: Testing
|
|
29
29
|
Classifier: Topic :: Utilities
|
|
@@ -32,8 +32,10 @@ Requires-Dist: certifi (>=2024.2.2)
|
|
|
32
32
|
Requires-Dist: click (>=8.3.0,<9.0.0)
|
|
33
33
|
Requires-Dist: click-didyoumean (>=0.3.1,<0.4.0)
|
|
34
34
|
Requires-Dist: click-help-colors (>=0.9.4,<0.10.0)
|
|
35
|
+
Requires-Dist: cmem-client (>=0.5.0,<0.6.0)
|
|
35
36
|
Requires-Dist: cmem-cmempy (==25.4.0)
|
|
36
37
|
Requires-Dist: configparser (>=7.2.0,<8.0.0)
|
|
38
|
+
Requires-Dist: humanize (>=4.14.0,<5.0.0)
|
|
37
39
|
Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
|
|
38
40
|
Requires-Dist: junit-xml (>=1.9,<2.0)
|
|
39
41
|
Requires-Dist: natsort (>=8.4.0,<9.0.0)
|
|
@@ -46,7 +48,6 @@ Requires-Dist: requests (>=2.32.3,<3.0.0)
|
|
|
46
48
|
Requires-Dist: rich (>=14.0.0,<15.0.0)
|
|
47
49
|
Requires-Dist: six (>=1.17.0,<2.0.0)
|
|
48
50
|
Requires-Dist: smart-open (>=7.1.0,<8.0.0)
|
|
49
|
-
Requires-Dist: timeago (>=1.0.16,<2.0.0)
|
|
50
51
|
Requires-Dist: treelib (>=1.7.1,<2.0.0)
|
|
51
52
|
Requires-Dist: urllib3 (>=2.3.0,<3.0.0)
|
|
52
53
|
Project-URL: Homepage, https://eccenca.com/go/cmemc
|
|
@@ -7,6 +7,8 @@ from importlib.resources import open_text
|
|
|
7
7
|
from os import environ as env
|
|
8
8
|
|
|
9
9
|
import click
|
|
10
|
+
from cmem_client.exceptions import BaseError as ClientBaseError
|
|
11
|
+
from eccenca_marketplace_client.exceptions import BaseError as MarketplaceClientBaseError
|
|
10
12
|
|
|
11
13
|
from cmem_cmemc import completion
|
|
12
14
|
from cmem_cmemc.command_group import CmemcGroup
|
|
@@ -16,6 +18,7 @@ from cmem_cmemc.commands import (
|
|
|
16
18
|
dataset,
|
|
17
19
|
graph,
|
|
18
20
|
manual,
|
|
21
|
+
package,
|
|
19
22
|
project,
|
|
20
23
|
query,
|
|
21
24
|
vocabulary,
|
|
@@ -106,7 +109,7 @@ def cli( # noqa: PLR0913
|
|
|
106
109
|
|
|
107
110
|
https://eccenca.com/go/cmemc
|
|
108
111
|
|
|
109
|
-
cmemc is ©
|
|
112
|
+
cmemc is © 2026 eccenca GmbH, licensed under the Apache License 2.0.
|
|
110
113
|
"""
|
|
111
114
|
_ = connection, debug, quiet, config_file, external_http_timeout
|
|
112
115
|
if " ".join(sys.argv).find("config edit") != -1:
|
|
@@ -120,6 +123,7 @@ cli.add_command(admin.admin)
|
|
|
120
123
|
cli.add_command(config.config)
|
|
121
124
|
cli.add_command(dataset.dataset)
|
|
122
125
|
cli.add_command(graph.graph)
|
|
126
|
+
cli.add_command(package.package_group)
|
|
123
127
|
cli.add_command(project.project)
|
|
124
128
|
cli.add_command(query.query)
|
|
125
129
|
cli.add_command(vocabulary.vocabulary)
|
|
@@ -130,9 +134,10 @@ cli.add_command(manual.manual_command)
|
|
|
130
134
|
def main() -> None:
|
|
131
135
|
"""Start the command line interface."""
|
|
132
136
|
try:
|
|
133
|
-
cli()
|
|
134
|
-
except CmemcError as error:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
cli()
|
|
138
|
+
except (CmemcError, ClientBaseError, MarketplaceClientBaseError) as error:
|
|
139
|
+
if "--debug" in sys.argv or "-d" in sys.argv:
|
|
140
|
+
ApplicationContext.echo_debug_string(traceback.format_exc())
|
|
141
|
+
message = extract_error_message(error).removeprefix("CmemcError: ")
|
|
142
|
+
ApplicationContext.echo_error(message)
|
|
138
143
|
sys.exit(1)
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"""cmemc Click Command Group"""
|
|
2
2
|
|
|
3
|
+
import shutil
|
|
4
|
+
|
|
5
|
+
from click import Command, Context
|
|
6
|
+
from click.core import _complete_visible_commands
|
|
7
|
+
from click.shell_completion import CompletionItem
|
|
3
8
|
from click_didyoumean import DYMGroup
|
|
4
9
|
from click_help_colors import HelpColorsGroup
|
|
5
10
|
|
|
@@ -24,49 +29,72 @@ class CmemcGroup(HelpColorsGroup, DYMGroup):
|
|
|
24
29
|
kwargs.setdefault(
|
|
25
30
|
"help_options_custom_colors",
|
|
26
31
|
{
|
|
32
|
+
"acl": self.color_for_command_groups,
|
|
33
|
+
"admin": self.color_for_command_groups,
|
|
27
34
|
"bootstrap": self.color_for_writing_commands,
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"upload": self.color_for_writing_commands,
|
|
33
|
-
"import": self.color_for_writing_commands,
|
|
35
|
+
"cache": self.color_for_command_groups,
|
|
36
|
+
"cancel": self.color_for_writing_commands,
|
|
37
|
+
"client": self.color_for_command_groups,
|
|
38
|
+
"config": self.color_for_command_groups,
|
|
34
39
|
"create": self.color_for_writing_commands,
|
|
35
|
-
"
|
|
40
|
+
"dataset": self.color_for_command_groups,
|
|
41
|
+
"delete": self.color_for_writing_commands,
|
|
36
42
|
"disable": self.color_for_writing_commands,
|
|
43
|
+
"enable": self.color_for_writing_commands,
|
|
44
|
+
"eval": self.color_for_writing_commands,
|
|
37
45
|
"execute": self.color_for_writing_commands,
|
|
38
|
-
"
|
|
39
|
-
"
|
|
46
|
+
"file": self.color_for_command_groups,
|
|
47
|
+
"graph": self.color_for_command_groups,
|
|
48
|
+
"import": self.color_for_writing_commands,
|
|
49
|
+
"imports": self.color_for_command_groups,
|
|
50
|
+
"insights": self.color_for_command_groups,
|
|
40
51
|
"install": self.color_for_writing_commands,
|
|
41
|
-
"
|
|
42
|
-
"reload": self.color_for_writing_commands,
|
|
43
|
-
"update": self.color_for_writing_commands,
|
|
44
|
-
"eval": self.color_for_writing_commands,
|
|
45
|
-
"cancel": self.color_for_writing_commands,
|
|
46
|
-
"admin": self.color_for_command_groups,
|
|
47
|
-
"user": self.color_for_command_groups,
|
|
48
|
-
"store": self.color_for_command_groups,
|
|
52
|
+
"io": self.color_for_writing_commands,
|
|
49
53
|
"metrics": self.color_for_command_groups,
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
54
|
+
"migrate": self.color_for_writing_commands,
|
|
55
|
+
"migrations": self.color_for_command_groups,
|
|
56
|
+
"password": self.color_for_writing_commands,
|
|
57
|
+
"package": self.color_for_command_groups,
|
|
53
58
|
"project": self.color_for_command_groups,
|
|
59
|
+
"python": self.color_for_command_groups,
|
|
54
60
|
"query": self.color_for_command_groups,
|
|
61
|
+
"reload": self.color_for_writing_commands,
|
|
62
|
+
"replay": self.color_for_writing_commands,
|
|
63
|
+
"resource": self.color_for_command_groups,
|
|
55
64
|
"scheduler": self.color_for_command_groups,
|
|
65
|
+
"secret": self.color_for_writing_commands,
|
|
66
|
+
"showcase": self.color_for_writing_commands,
|
|
67
|
+
"store": self.color_for_command_groups,
|
|
68
|
+
"uninstall": self.color_for_writing_commands,
|
|
69
|
+
"update": self.color_for_writing_commands,
|
|
70
|
+
"upload": self.color_for_writing_commands,
|
|
71
|
+
"user": self.color_for_command_groups,
|
|
72
|
+
"validation": self.color_for_command_groups,
|
|
73
|
+
"variable": self.color_for_command_groups,
|
|
56
74
|
"vocabulary": self.color_for_command_groups,
|
|
57
75
|
"workflow": self.color_for_command_groups,
|
|
58
76
|
"workspace": self.color_for_command_groups,
|
|
59
|
-
"python": self.color_for_command_groups,
|
|
60
|
-
"cache": self.color_for_command_groups,
|
|
61
|
-
"resource": self.color_for_command_groups,
|
|
62
|
-
"acl": self.color_for_command_groups,
|
|
63
|
-
"client": self.color_for_command_groups,
|
|
64
|
-
"variable": self.color_for_command_groups,
|
|
65
|
-
"validation": self.color_for_command_groups,
|
|
66
|
-
"migrate": self.color_for_writing_commands,
|
|
67
|
-
"migrations": self.color_for_command_groups,
|
|
68
|
-
"imports": self.color_for_command_groups,
|
|
69
|
-
"insights": self.color_for_command_groups,
|
|
70
77
|
},
|
|
71
78
|
)
|
|
72
79
|
super().__init__(*args, **kwargs)
|
|
80
|
+
|
|
81
|
+
def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]:
|
|
82
|
+
"""Override shell completion to use full terminal width for help text.
|
|
83
|
+
|
|
84
|
+
This method extends the default Click Group shell completion by using
|
|
85
|
+
the full terminal width for command descriptions instead of the default
|
|
86
|
+
45-character limit.
|
|
87
|
+
"""
|
|
88
|
+
# Get terminal width, default to a large number if not available
|
|
89
|
+
terminal_width = shutil.get_terminal_size(fallback=(200, 24)).columns
|
|
90
|
+
|
|
91
|
+
# Get completions for subcommands with full-width help text
|
|
92
|
+
results = [
|
|
93
|
+
CompletionItem(name, help=command.get_short_help_str(limit=terminal_width))
|
|
94
|
+
for name, command in _complete_visible_commands(ctx, incomplete)
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
# Call Command.shell_complete (not Group.shell_complete) to get options, etc.
|
|
98
|
+
# This avoids duplicate subcommand completions from the parent Group class
|
|
99
|
+
results.extend(Command.shell_complete(self, ctx, incomplete))
|
|
100
|
+
return results
|