shellfoundry 1.2.27__tar.gz → 1.2.29__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.
Files changed (86) hide show
  1. {shellfoundry-1.2.27/shellfoundry.egg-info → shellfoundry-1.2.29}/PKG-INFO +21 -6
  2. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/requirements.txt +1 -1
  3. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/setup.py +6 -3
  4. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/bootstrap.py +3 -4
  5. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/new_command.py +1 -1
  6. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/__init__.py +6 -6
  7. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/shell_package_installer.py +16 -3
  8. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/standards/standards_versions.py +1 -1
  9. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/template_retriever.py +2 -6
  10. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/template_versions.py +2 -2
  11. {shellfoundry-1.2.27 → shellfoundry-1.2.29/shellfoundry.egg-info}/PKG-INFO +21 -6
  12. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/requires.txt +1 -3
  13. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/tests/test_bootstrap.py +4 -6
  14. shellfoundry-1.2.29/version.txt +1 -0
  15. shellfoundry-1.2.27/version.txt +0 -1
  16. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/HISTORY.rst +0 -0
  17. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/LICENSE +0 -0
  18. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/MANIFEST.in +0 -0
  19. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/README.rst +0 -0
  20. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/dev_requirements.txt +0 -0
  21. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/setup.cfg +0 -0
  22. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/__init__.py +0 -0
  23. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/__main__.py +0 -0
  24. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/__init__.py +0 -0
  25. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/config_command.py +0 -0
  26. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/delete_command.py +0 -0
  27. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/dist_command.py +0 -0
  28. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/extend_command.py +0 -0
  29. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/generate_command.py +0 -0
  30. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/get_templates_command.py +0 -0
  31. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/install_command.py +0 -0
  32. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/list_command.py +0 -0
  33. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/pack_command.py +0 -0
  34. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/commands/show_command.py +0 -0
  35. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/data/standards.json +0 -0
  36. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/data/templates.yml +0 -0
  37. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/decorators/__init__.py +0 -0
  38. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/decorators/standards.py +0 -0
  39. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/decorators/version_check.py +0 -0
  40. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/exceptions.py +0 -0
  41. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/models/__init__.py +0 -0
  42. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/models/install_config.py +0 -0
  43. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/models/shell_template.py +0 -0
  44. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/models/shellfoundry_settings.py +0 -0
  45. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/archive_creator.py +0 -0
  46. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/cloudshell_api/__init__.py +0 -0
  47. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/cloudshell_api/client_wrapper.py +0 -0
  48. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config/__init__.py +0 -0
  49. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config/config_context.py +0 -0
  50. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config/config_file_creation.py +0 -0
  51. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config/config_providers.py +0 -0
  52. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config/config_record.py +0 -0
  53. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/config_reader.py +0 -0
  54. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/constants.py +0 -0
  55. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/cookiecutter_integration.py +0 -0
  56. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/driver_generator.py +0 -0
  57. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/filters.py +0 -0
  58. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/installer.py +0 -0
  59. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/__init__.py +0 -0
  60. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/configuration/__init__.py +0 -0
  61. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/configuration/aggregated_modifiers.py +0 -0
  62. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/configuration/password_modification.py +0 -0
  63. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/definition/__init__.py +0 -0
  64. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/modifiers/definition/definition_modification.py +0 -0
  65. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/package_builder.py +0 -0
  66. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/python_dependencies_packager.py +0 -0
  67. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/repository_downloader.py +0 -0
  68. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/shell_config_reader.py +0 -0
  69. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/shell_datamodel_merger.py +0 -0
  70. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/shell_package.py +0 -0
  71. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/shell_package_builder.py +0 -0
  72. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/standards/__init__.py +0 -0
  73. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/standards/consts.py +0 -0
  74. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/standards/standards_retriever.py +0 -0
  75. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/temp_dir_context.py +0 -0
  76. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/template_url.py +0 -0
  77. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/validations/__init__.py +0 -0
  78. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/validations/shell_generation_validation.py +0 -0
  79. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/validations/shell_name_validations.py +0 -0
  80. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry/utilities/version_utilities.py +0 -0
  81. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/SOURCES.txt +0 -0
  82. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/dependency_links.txt +0 -0
  83. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/entry_points.txt +0 -0
  84. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/not-zip-safe +0 -0
  85. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/shellfoundry.egg-info/top_level.txt +0 -0
  86. {shellfoundry-1.2.27 → shellfoundry-1.2.29}/test_requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: shellfoundry
3
- Version: 1.2.27
3
+ Version: 1.2.29
4
4
  Summary: shellfoundry - Quali tool for creating, building and installing CloudShell shells
5
5
  Home-page: https://github.com/QualiSystems/shellfoundry
6
6
  Author: Quali
@@ -8,11 +8,14 @@ Author-email: info@quali.com
8
8
  License: Apache Software License 2.0
9
9
  Keywords: shellfoundry sandbox cloud virtualization vcenter cmp cloudshell quali command-line cli
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: Programming Language :: Python :: 2.7
12
- Classifier: Programming Language :: Python :: 3.7
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
13
16
  Classifier: Topic :: Software Development :: Libraries
14
17
  Classifier: License :: OSI Approved :: Apache Software License
15
- Requires-Python: >=2.7
18
+ Requires-Python: >=3.8
16
19
  Description-Content-Type: text/markdown
17
20
  License-File: LICENSE
18
21
  Requires-Dist: requests
@@ -25,7 +28,19 @@ Requires-Dist: colorama
25
28
  Requires-Dist: giturlparse.py
26
29
  Requires-Dist: ruamel.yaml
27
30
  Requires-Dist: cryptography
28
- Requires-Dist: setuptools; python_version >= "3.12"
31
+ Requires-Dist: packaging
32
+ Dynamic: author
33
+ Dynamic: author-email
34
+ Dynamic: classifier
35
+ Dynamic: description
36
+ Dynamic: description-content-type
37
+ Dynamic: home-page
38
+ Dynamic: keywords
39
+ Dynamic: license
40
+ Dynamic: license-file
41
+ Dynamic: requires-dist
42
+ Dynamic: requires-python
43
+ Dynamic: summary
29
44
 
30
45
  shellfoundry
31
46
  ============
@@ -8,4 +8,4 @@ colorama
8
8
  giturlparse.py
9
9
  ruamel.yaml
10
10
  cryptography
11
- setuptools; python_version >= '3.12'
11
+ packaging
@@ -41,11 +41,14 @@ setup(
41
41
  "vcenter cmp cloudshell quali command-line cli",
42
42
  classifiers=[
43
43
  "Development Status :: 5 - Production/Stable",
44
- "Programming Language :: Python :: 2.7",
45
- "Programming Language :: Python :: 3.7",
44
+ "Programming Language :: Python :: 3.9",
45
+ "Programming Language :: Python :: 3.10",
46
+ "Programming Language :: Python :: 3.11",
47
+ "Programming Language :: Python :: 3.12",
48
+ "Programming Language :: Python :: 3.13",
46
49
  "Topic :: Software Development :: Libraries",
47
50
  "License :: OSI Approved :: Apache Software License",
48
51
  ],
49
- python_requires=">=2.7",
52
+ python_requires=">=3.8",
50
53
  test_suite="tests",
51
54
  )
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
+ import importlib.metadata
5
+
4
6
  import click
5
- import pkg_resources
6
7
 
7
8
  from shellfoundry.commands.config_command import ConfigCommandExecutor
8
9
  from shellfoundry.commands.delete_command import DeleteCommandExecutor
@@ -27,9 +28,7 @@ def cli():
27
28
  @cli.command()
28
29
  def version():
29
30
  """Displays the shellfoundry version."""
30
- click.echo(
31
- "shellfoundry version " + pkg_resources.get_distribution("shellfoundry").version
32
- )
31
+ click.echo("shellfoundry version " + importlib.metadata.version("shellfoundry"))
33
32
 
34
33
 
35
34
  @cli.command() # noqa: A001
@@ -8,7 +8,7 @@ from io import open
8
8
 
9
9
  import click
10
10
  from cloudshell.rest.exceptions import FeatureUnavailable
11
- from pkg_resources import parse_version
11
+ from packaging.version import parse as parse_version
12
12
  from requests.exceptions import SSLError
13
13
 
14
14
  from ..exceptions import FatalError
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
+ import importlib.metadata
4
5
  import json
5
6
 
6
- import pkg_resources
7
7
  import requests
8
8
 
9
9
  try:
@@ -16,7 +16,7 @@ try:
16
16
  except ImportError:
17
17
  from urllib2 import HTTPError, URLError
18
18
 
19
- from distutils.version import StrictVersion
19
+ from packaging.version import Version
20
20
 
21
21
  from shellfoundry import PACKAGE_NAME
22
22
  from shellfoundry.exceptions import ShellFoundryVersionException
@@ -37,15 +37,15 @@ class Index(object):
37
37
 
38
38
 
39
39
  def get_installed_version(package_name):
40
- return pkg_resources.get_distribution(package_name).version
40
+ return importlib.metadata.version(package_name)
41
41
 
42
42
 
43
43
  def is_index_version_greater_than_current():
44
44
  MAJOR_INDEX = 0
45
45
 
46
46
  installed, index = (
47
- StrictVersion(get_installed_version(PACKAGE_NAME)),
48
- StrictVersion(max_version_from_index()),
47
+ Version(get_installed_version(PACKAGE_NAME)),
48
+ Version(max_version_from_index()),
49
49
  )
50
50
  is_major_release = False
51
51
 
@@ -53,7 +53,7 @@ def is_index_version_greater_than_current():
53
53
  if (
54
54
  is_greater_version
55
55
  and get_index_of_biggest_component_between_two_versions(
56
- index.version, installed.version
56
+ index.release, installed.release
57
57
  )
58
58
  == MAJOR_INDEX
59
59
  ):
@@ -216,10 +216,23 @@ class ShellPackageInstaller(object):
216
216
  )
217
217
 
218
218
  def _parse_installation_error(self, base_message, error):
219
+ error_str = str(error)
220
+ cs_message = error_str # Default to full error string
221
+
219
222
  try:
220
- cs_message = json.loads(str(error))["Message"]
221
- except Exception:
222
- cs_message = ""
223
+ # Check if it's a PackagingRestApiError with embedded JSON response
224
+ if "response:" in error_str:
225
+ # Extract JSON part after "response: "
226
+ json_start = error_str.find("response:") + len("response:")
227
+ json_str = error_str[json_start:].strip().rstrip("')")
228
+ cs_message = json.loads(json_str)["Message"]
229
+ else:
230
+ # Try to parse the error string directly as JSON
231
+ cs_message = json.loads(error_str)["Message"]
232
+ except (json.JSONDecodeError, KeyError, ValueError):
233
+ # If JSON parsing fails, keep the full error string
234
+ pass
235
+
223
236
  return "{}. CloudShell responded with: '{}'".format(base_message, cs_message)
224
237
 
225
238
  def _increase_pbar(self, pbar, time_wait):
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- from pkg_resources import parse_version
4
+ from packaging.version import parse as parse_version
5
5
 
6
6
 
7
7
  class StandardVersionsFactory(object):
@@ -10,12 +10,8 @@ from threading import RLock, Thread
10
10
  import click
11
11
  import requests
12
12
  import yaml
13
- from pkg_resources import parse_version
14
-
15
- try:
16
- from pkg_resources._vendor.packaging.version import Version
17
- except ImportError:
18
- from packaging.version import Version
13
+ from packaging.version import Version
14
+ from packaging.version import parse as parse_version
19
15
 
20
16
  from .filters import CompositeFilter
21
17
 
@@ -10,10 +10,10 @@ NAME_PLACEHOLDER = "name"
10
10
 
11
11
 
12
12
  def is_version(vstr):
13
- from distutils.version import StrictVersion
13
+ from packaging.version import Version
14
14
 
15
15
  try:
16
- StrictVersion(vstr)
16
+ Version(vstr)
17
17
  return True
18
18
  except Exception:
19
19
  return False
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: shellfoundry
3
- Version: 1.2.27
3
+ Version: 1.2.29
4
4
  Summary: shellfoundry - Quali tool for creating, building and installing CloudShell shells
5
5
  Home-page: https://github.com/QualiSystems/shellfoundry
6
6
  Author: Quali
@@ -8,11 +8,14 @@ Author-email: info@quali.com
8
8
  License: Apache Software License 2.0
9
9
  Keywords: shellfoundry sandbox cloud virtualization vcenter cmp cloudshell quali command-line cli
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: Programming Language :: Python :: 2.7
12
- Classifier: Programming Language :: Python :: 3.7
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
13
16
  Classifier: Topic :: Software Development :: Libraries
14
17
  Classifier: License :: OSI Approved :: Apache Software License
15
- Requires-Python: >=2.7
18
+ Requires-Python: >=3.8
16
19
  Description-Content-Type: text/markdown
17
20
  License-File: LICENSE
18
21
  Requires-Dist: requests
@@ -25,7 +28,19 @@ Requires-Dist: colorama
25
28
  Requires-Dist: giturlparse.py
26
29
  Requires-Dist: ruamel.yaml
27
30
  Requires-Dist: cryptography
28
- Requires-Dist: setuptools; python_version >= "3.12"
31
+ Requires-Dist: packaging
32
+ Dynamic: author
33
+ Dynamic: author-email
34
+ Dynamic: classifier
35
+ Dynamic: description
36
+ Dynamic: description-content-type
37
+ Dynamic: home-page
38
+ Dynamic: keywords
39
+ Dynamic: license
40
+ Dynamic: license-file
41
+ Dynamic: requires-dist
42
+ Dynamic: requires-python
43
+ Dynamic: summary
29
44
 
30
45
  shellfoundry
31
46
  ============
@@ -8,6 +8,4 @@ colorama
8
8
  giturlparse.py
9
9
  ruamel.yaml
10
10
  cryptography
11
-
12
- [:python_version >= "3.12"]
13
- setuptools
11
+ packaging
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/python
2
2
  import traceback
3
3
  import unittest
4
- from unittest.mock import MagicMock, patch
4
+ from unittest.mock import patch
5
5
 
6
6
  from click.testing import CliRunner
7
7
 
@@ -29,11 +29,9 @@ class TestBootstrap(unittest.TestCase):
29
29
  def tearDown(self):
30
30
  pass
31
31
 
32
- @patch("shellfoundry.bootstrap.pkg_resources")
33
- def test_version(self, test_dist):
34
- obj = MagicMock()
35
- obj.version = "shellfoundry_version"
36
- test_dist.get_distribution = MagicMock(return_value=obj)
32
+ @patch("importlib.metadata.version")
33
+ def test_version(self, version_mock):
34
+ version_mock.return_value = "shellfoundry_version"
37
35
  result = self.runner.invoke(version)
38
36
 
39
37
  assert result.exit_code == 0
@@ -0,0 +1 @@
1
+ 1.2.29
@@ -1 +0,0 @@
1
- 1.2.27
File without changes
File without changes
File without changes
File without changes
File without changes