cmem-cmemc 24.1.3rc1__py3-none-any.whl → 24.1.5__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 CHANGED
@@ -27,7 +27,7 @@ from cmem_cmemc.exceptions import InvalidConfigurationError
27
27
  from cmem_cmemc.manual_helper.graph import print_manual_graph
28
28
  from cmem_cmemc.manual_helper.multi_page import create_multi_page_documentation
29
29
  from cmem_cmemc.manual_helper.single_page import print_manual
30
- from cmem_cmemc.utils import extract_error_message, get_version
30
+ from cmem_cmemc.utils import check_python_version, extract_error_message, get_version
31
31
 
32
32
  CMEMC_VERSION = get_version()
33
33
 
@@ -39,16 +39,10 @@ if os.environ.get("_CMEMC_COMPLETE", "") == "zsh_source":
39
39
 
40
40
  version = sys.version_info
41
41
  PYTHON_VERSION = f"{version.major}.{version.minor}.{version.micro}"
42
- PYTHON_EXPECTED = "3.11"
43
- PYTHON_GOT = f"{version.major}.{version.minor}"
44
- if PYTHON_EXPECTED != PYTHON_GOT and not CONTEXT.is_completing():
45
- CONTEXT.echo_warning(
46
- "Warning: You are running cmemc under a non-tested python "
47
- f"environment (expected {PYTHON_EXPECTED}, got {PYTHON_GOT})"
48
- )
42
+ check_python_version(ctx=CONTEXT)
49
43
 
50
44
  # set the user-agent environment for the http request headers
51
- os.environ["CMEM_USER_AGENT"] = f"cmemc/{CMEMC_VERSION} " f"(Python {PYTHON_VERSION})"
45
+ os.environ["CMEM_USER_AGENT"] = f"cmemc/{CMEMC_VERSION} (Python {PYTHON_VERSION})"
52
46
 
53
47
  # https://github.com/pallets/click/blob/master/examples/complex/complex/cli.py
54
48
  CONTEXT_SETTINGS = {"auto_envvar_prefix": "CMEMC", "help_option_names": ["-h", "--help"]}
cmem_cmemc/utils.py CHANGED
@@ -3,9 +3,10 @@
3
3
  import json
4
4
  import os
5
5
  import re
6
+ import sys
6
7
  import unicodedata
7
8
  from dataclasses import dataclass
8
- from importlib.metadata import version
9
+ from importlib.metadata import version as cmemc_version
9
10
  from pathlib import Path
10
11
 
11
12
  import requests
@@ -22,7 +23,22 @@ from cmem_cmemc.context import ApplicationContext
22
23
 
23
24
  def get_version() -> str:
24
25
  """Get the current version or SNAPSHOT."""
25
- return version("cmem-cmemc")
26
+ return cmemc_version("cmem-cmemc")
27
+
28
+
29
+ def check_python_version(ctx: ApplicationContext) -> None:
30
+ """Check the runtime python version and warn or error."""
31
+ version = sys.version_info
32
+ major_expected = [3]
33
+ minor_expected = [10, 11, 12]
34
+ if version.major not in major_expected:
35
+ ctx.echo_error(f"Error: cmemc can not be executed with Python {version.major}.")
36
+ sys.exit(1)
37
+ if version.minor not in minor_expected and not ctx.is_completing():
38
+ ctx.echo_warning(
39
+ "Warning: You are running cmemc under a non-tested python "
40
+ f"environment ({version.major}.{version.minor})."
41
+ )
26
42
 
27
43
 
28
44
  def extract_error_message(error: Exception) -> str:
@@ -288,24 +304,30 @@ class PublishedPackage:
288
304
 
289
305
  def get_published_packages() -> list[PublishedPackage]:
290
306
  """Get a scraped list of plugin packages scraped from pypi.org."""
291
- url = "https://pypi.org/search/?q=%22cmem-plugin-%22"
292
- soup = BeautifulSoup(requests.get(url, timeout=5).content, "html.parser")
307
+ url_pattern = "https://pypi.org/search/?q=%22cmem-plugin-%22&page={}"
293
308
  packages = []
294
- snippets = soup.find_all("a", class_="package-snippet")
295
- for _ in snippets:
296
- name = _.findChildren(class_="package-snippet__name")[0].getText()
297
- if name == "cmem-plugin-base":
298
- continue
299
- if not name.startswith("cmem-plugin-"):
300
- continue
301
- description = _.findChildren(class_="package-snippet__description")[0].getText()
302
- package_version = _.findChildren(class_="package-snippet__version")[0].getText()
303
- published = _.findChildren(name="time")[0].attrs["datetime"]
304
- packages.append(
305
- PublishedPackage(
306
- name=name, description=description, version=package_version, published=published
309
+ page = 0
310
+ while True:
311
+ page += 1
312
+ url = url_pattern.format(page)
313
+ soup = BeautifulSoup(requests.get(url, timeout=5).content, "html.parser")
314
+ snippets = soup.find_all("a", class_="package-snippet")
315
+ if len(snippets) == 0:
316
+ break
317
+ for _ in snippets:
318
+ name = _.findChildren(class_="package-snippet__name")[0].getText()
319
+ if name == "cmem-plugin-base":
320
+ continue
321
+ if not name.startswith("cmem-plugin-"):
322
+ continue
323
+ description = _.findChildren(class_="package-snippet__description")[0].getText()
324
+ package_version = _.findChildren(class_="package-snippet__version")[0].getText()
325
+ published = _.findChildren(name="time")[0].attrs["datetime"]
326
+ packages.append(
327
+ PublishedPackage(
328
+ name=name, description=description, version=package_version, published=published
329
+ )
307
330
  )
308
- )
309
331
  return packages
310
332
 
311
333
 
@@ -199,4 +199,4 @@
199
199
  distributed under the License is distributed on an "AS IS" BASIS,
200
200
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
201
  See the License for the specific language governing permissions and
202
- limitations under the License.
202
+ limitations under the License.
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.1
2
+ Name: cmem-cmemc
3
+ Version: 24.1.5
4
+ Summary: Command line client for eccenca Corporate Memory
5
+ Home-page: https://eccenca.com/go/cmemc
6
+ License: Apache-2.0
7
+ Author: eccenca
8
+ Author-email: cmempy-developer@eccenca.com
9
+ Requires-Python: >=3.10,<4.0
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Customer Service
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Information Technology
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Intended Audience :: System Administrators
17
+ Classifier: License :: OSI Approved :: Apache Software License
18
+ Classifier: Natural Language :: English
19
+ Classifier: Operating System :: OS Independent
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
+ Classifier: Programming Language :: Python :: 3 :: Only
25
+ Classifier: Topic :: Database
26
+ Classifier: Topic :: Software Development :: Testing
27
+ Classifier: Topic :: Utilities
28
+ Requires-Dist: beautifulsoup4 (>=4.12.2,<5.0.0)
29
+ Requires-Dist: certifi (>=2023.5.7)
30
+ Requires-Dist: click (>=8.1.7,<9.0.0)
31
+ Requires-Dist: click-didyoumean (>=0.3.0,<0.4.0)
32
+ Requires-Dist: click-help-colors (>=0.9.1,<0.10.0)
33
+ Requires-Dist: cmem-cmempy (==24.1.1)
34
+ Requires-Dist: configparser (>=5.3.0,<6.0.0)
35
+ Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
36
+ Requires-Dist: natsort (>=8.3.1,<9.0.0)
37
+ Requires-Dist: prometheus-client (>=0.16.0,<0.17.0)
38
+ Requires-Dist: pygments (>=2.15.1,<3.0.0)
39
+ Requires-Dist: pyjwt (>=2.7.0,<3.0.0)
40
+ Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
41
+ Requires-Dist: requests (>=2.31.0,<3.0.0)
42
+ Requires-Dist: rich (>=13.7.0,<14.0.0)
43
+ Requires-Dist: six (>=1.16.0,<2.0.0)
44
+ Requires-Dist: timeago (>=1.0.16,<2.0.0)
45
+ Requires-Dist: treelib (>=1.6.4,<2.0.0)
46
+ Requires-Dist: urllib3 (>=2,<3)
47
+ Description-Content-Type: text/markdown
48
+
49
+ # cmemc
50
+
51
+ cmemc is the official command line client for [eccenca Corporate Memory](https://documentation.eccenca.com/).
52
+
53
+ [![version][version-shield]][changelog] [![Python Versions][python-shield]][pypi] [![eccenca Corporate Memory][cmem-shield]][cmem]
54
+
55
+ [![teaser][teaser-image]][cmemc-docu]
56
+
57
+ ## Installation
58
+
59
+ In order to install the cmemc, run:
60
+
61
+ pipx install cmem-cmemc
62
+
63
+ Of course you can install cmemc also with pip, but we recommend [pipx](https://pypa.github.io/pipx/) for normal desktop usage.
64
+
65
+ ## Configuration and Usage
66
+
67
+ cmemc is intended for System Administrators and Linked Data Expert, who wants to automate and remote control activities on eccenca Corporate Memory.
68
+
69
+ The cmemc manual including basic usage pattern, configuration as well as a command reference is available at:
70
+
71
+ [https://eccenca.com/go/cmemc](https://eccenca.com/go/cmemc)
72
+
73
+ cmemc only works with Python 3 and refuses to work with Python 2.x.
74
+ In addition to that, cmemc will warn you in case an untested Python environment is used.
75
+
76
+
77
+ [version-shield]: https://badge.fury.io/py/cmem-cmemc.svg
78
+ [changelog]: https://pypi.org/project/cmem-cmemc/#history
79
+ [python-shield]: https://img.shields.io/pypi/pyversions/cmem-cmemc.svg
80
+ [pypi]: https://pypi.org/project/cmem-cmemc/
81
+ [cmem]: https://documentation.eccenca.com
82
+ [cmem-shield]: https://img.shields.io/badge/made%20for-eccenca%20Corporate%20Memory-blue?logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9IkxheWVyXzEiCiAgIGRhdGEtbmFtZT0iTGF5ZXIgMSIKICAgdmlld0JveD0iMCAwIDgxLjI5MDAwMSA4Mi4yODk4NiIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iODEuMjkwMDAxIgogICBoZWlnaHQ9IjgyLjI4OTg2NCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODI2Ij4KICAgIDxzdHlsZQogICAgICAgaWQ9InN0eWxlODI0Ij4KICAgICAgLmNscy0xIHsKICAgICAgICBmaWxsOiAjZjM5MjAwOwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjZjM5MjAwOwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnCiAgICAgaWQ9Imc4NDAiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMwLjc2LC0zMS4xNDAxMzkpIj4KICAgIDxwYXRoCiAgICAgICBjbGFzcz0iY2xzLTEiCiAgICAgICBkPSJNIDU1LjksODUuMTkgQSAyMC4xNCwyMC4xNCAwIDEgMCAzNS43Niw2NS4wNSAyMC4xNCwyMC4xNCAwIDAgMCA1NS45LDg1LjE5IFoiCiAgICAgICBpZD0icGF0aDgyOCIgLz4KICAgIDxwYXRoCiAgICAgICBjbGFzcz0iY2xzLTEiCiAgICAgICBkPSJtIDk4LDU0LjE0IGEgOSw5IDAgMSAwIC04Ljk1LC05IDguOTUsOC45NSAwIDAgMCA4Ljk1LDkgeiIKICAgICAgIGlkPSJwYXRoODMwIiAvPgogICAgPHBhdGgKICAgICAgIGNsYXNzPSJjbHMtMSIKICAgICAgIGQ9Ik0gODguMzUsMTA4LjQzIEEgMTIuMzEsMTIuMzEgMCAxIDAgNzYsOTYuMTIgMTIuMzEsMTIuMzEgMCAwIDAgODguMzEsMTA4LjQzIFoiCiAgICAgICBpZD0icGF0aDgzMiIgLz4KICAgIDxsaW5lCiAgICAgICBjbGFzcz0iY2xzLTIiCiAgICAgICB4MT0iODYuOTcwMDAxIgogICAgICAgeTE9IjkyLjA1OTk5OCIKICAgICAgIHgyPSI1OC43Nzk5OTkiCiAgICAgICB5Mj0iNjcuMzYwMDAxIgogICAgICAgaWQ9ImxpbmU4MzQiIC8+CiAgICA8bGluZQogICAgICAgY2xhc3M9ImNscy0yIgogICAgICAgeDE9Ijk5LjE4IgogICAgICAgeTE9IjQ1Ljg0IgogICAgICAgeDI9IjU1LjQ4IgogICAgICAgeTI9IjY2LjEyMDAwMyIKICAgICAgIGlkPSJsaW5lODM2IiAvPgogICAgPGxpbmUKICAgICAgIGNsYXNzPSJjbHMtMiIKICAgICAgIHgxPSI5Ny45ODk5OTgiCiAgICAgICB5MT0iNDQuNjUwMDAyIgogICAgICAgeDI9Ijg4LjM0OTk5OCIKICAgICAgIHkyPSI5Mi44Mzk5OTYiCiAgICAgICBpZD0ibGluZTgzOCIgLz4KICA8L2c+Cjwvc3ZnPgo=
83
+ [teaser-image]: https://documentation.eccenca.com/24.1/automate/cmemc-command-line-interface/configuration/completion-setup/22.1-cmemc-create-dataset.gif
84
+ [cmemc-docu]: https://eccenca.com/go/cmemc
85
+
@@ -1,4 +1,4 @@
1
- cmem_cmemc/__init__.py,sha256=WOoZ0R_OAd5p6NAtcQGFdvDv5OLBeQOUYWHY-f3CNzc,5789
1
+ cmem_cmemc/__init__.py,sha256=z7zjBQWM1c2nW9ylGUelIPiKBtXhIO38qILBJXzuEWs,5532
2
2
  cmem_cmemc/_cmemc.zsh,sha256=fmkrBHIQxus8cp2AgO1tzZ5mNZdGL_83cYz3a9uAdsg,1326
3
3
  cmem_cmemc/commands/__init__.py,sha256=_PsHWhMFwyfRAYInt0AOs3dA3Cuqhsnf_enFLjxVCGQ,3626
4
4
  cmem_cmemc/commands/acl.py,sha256=cA76UvQquhZc9MdS3e94kcfSn9V_RzTQ5XM0Ko6w6hM,13769
@@ -29,9 +29,9 @@ cmem_cmemc/manual_helper/graph.py,sha256=qDchHdjRRDW2oZ66by81NxhoDgNxXaAUxq2keew
29
29
  cmem_cmemc/manual_helper/multi_page.py,sha256=K-S2_NubrHGynO5I_IMAanO2pZN2KETUV00wpjMqvjI,12171
30
30
  cmem_cmemc/manual_helper/single_page.py,sha256=sVSeaZmPa-Cs6dtp27MqyiO6rIrskY9BtDyeAZhBWXM,1477
31
31
  cmem_cmemc/object_list.py,sha256=QU-8JE5jvFcrUelEC4l5z7A9SInNnCRzRTS1bMw5FZc,13256
32
- cmem_cmemc/utils.py,sha256=AiZMholCLF744TaNH-k86WNQavtCQstNfiwKQ2lJ5B4,10720
33
- cmem_cmemc-24.1.3rc1.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
34
- cmem_cmemc-24.1.3rc1.dist-info/METADATA,sha256=kiQOCi6CRbUsmyBuKRK8QGJBFc6lCoHP5aStmIsUo0g,2622
35
- cmem_cmemc-24.1.3rc1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
36
- cmem_cmemc-24.1.3rc1.dist-info/entry_points.txt,sha256=znWUTG-zgDITu6Frsd-OtNxBxj6Uo8Fa7bz6gaZYMrA,41
37
- cmem_cmemc-24.1.3rc1.dist-info/RECORD,,
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,,
@@ -1,68 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: cmem-cmemc
3
- Version: 24.1.3rc1
4
- Summary: Command line client for eccenca Corporate Memory
5
- Home-page: https://eccenca.com/go/cmemc
6
- License: Apache 2.0
7
- Author: eccenca
8
- Author-email: cmempy-developer@eccenca.com
9
- Requires-Python: >=3.9,<4.0
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Intended Audience :: Science/Research
13
- Classifier: Intended Audience :: System Administrators
14
- Classifier: License :: OSI Approved :: Apache Software License
15
- Classifier: License :: Other/Proprietary License
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.9
18
- Classifier: Programming Language :: Python :: 3.10
19
- Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Topic :: Database
22
- Classifier: Topic :: Software Development :: Testing
23
- Classifier: Topic :: Utilities
24
- Requires-Dist: beautifulsoup4 (>=4.12.2,<5.0.0)
25
- Requires-Dist: certifi (>=2023.5.7)
26
- Requires-Dist: click (>=8.1.7,<9.0.0)
27
- Requires-Dist: click-didyoumean (>=0.3.0,<0.4.0)
28
- Requires-Dist: click-help-colors (>=0.9.1,<0.10.0)
29
- Requires-Dist: cmem-cmempy (==24.1.1)
30
- Requires-Dist: configparser (>=5.3.0,<6.0.0)
31
- Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
32
- Requires-Dist: natsort (>=8.3.1,<9.0.0)
33
- Requires-Dist: prometheus-client (>=0.16.0,<0.17.0)
34
- Requires-Dist: pygments (>=2.15.1,<3.0.0)
35
- Requires-Dist: pyjwt (>=2.7.0,<3.0.0)
36
- Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
37
- Requires-Dist: requests (>=2.31.0,<3.0.0)
38
- Requires-Dist: rich (>=13.7.0,<14.0.0)
39
- Requires-Dist: six (>=1.16.0,<2.0.0)
40
- Requires-Dist: timeago (>=1.0.16,<2.0.0)
41
- Requires-Dist: treelib (>=1.6.4,<2.0.0)
42
- Requires-Dist: urllib3 (>=2,<3)
43
- Description-Content-Type: text/markdown
44
-
45
- # cmemc
46
-
47
- cmemc is the official command line client for [eccenca Corporate Memory](https://documentation.eccenca.com/).
48
-
49
- ## Installation
50
-
51
- In order to install the cmemc, run:
52
-
53
- pipx install cmem-cmemc
54
-
55
- Of course you can install cmemc also with pip, but we recommend [pipx](https://pypa.github.io/pipx/) for normal desktop usage.
56
-
57
- ## Configuration and Usage
58
-
59
- cmemc is intended for System Administrators and Linked Data Expert, who wants to automate and remote control activities on eccenca Corporate Memory.
60
-
61
- The cmemc manual including basic usage pattern, configuration as well as a command reference is available at:
62
-
63
- [https://eccenca.com/go/cmemc](https://eccenca.com/go/cmemc)
64
-
65
- cmemc only works with Python 3 and refuses to work with Python 2.x.
66
- In addition to that, cmemc will warn you in case an untested Python environment is used.
67
-
68
-