xmipp3-installer 1.0.1__py3-none-any.whl → 1.1.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.
Files changed (60) hide show
  1. xmipp3_installer/__main__.py +1 -1
  2. xmipp3_installer/api_client/api_client.py +35 -34
  3. xmipp3_installer/api_client/assembler/installation_info_assembler.py +140 -145
  4. xmipp3_installer/application/cli/arguments/__init__.py +3 -2
  5. xmipp3_installer/application/cli/arguments/modes.py +112 -95
  6. xmipp3_installer/application/cli/arguments/params.py +63 -53
  7. xmipp3_installer/application/cli/cli.py +171 -190
  8. xmipp3_installer/application/cli/parsers/base_help_formatter.py +256 -235
  9. xmipp3_installer/application/cli/parsers/error_handler_parser.py +53 -53
  10. xmipp3_installer/application/cli/parsers/format.py +22 -22
  11. xmipp3_installer/application/cli/parsers/general_help_formatter.py +102 -84
  12. xmipp3_installer/application/cli/parsers/mode_help_formatter.py +144 -105
  13. xmipp3_installer/application/logger/__init__.py +5 -0
  14. xmipp3_installer/application/logger/errors.py +8 -8
  15. xmipp3_installer/application/logger/logger.py +218 -215
  16. xmipp3_installer/application/logger/predefined_messages.py +42 -35
  17. xmipp3_installer/application/user_interactions.py +6 -0
  18. xmipp3_installer/installer/constants/paths.py +6 -0
  19. xmipp3_installer/installer/handlers/cmake/cmake_handler.py +49 -53
  20. xmipp3_installer/installer/handlers/conda_handler.py +6 -6
  21. xmipp3_installer/installer/handlers/generic_package_handler.py +9 -9
  22. xmipp3_installer/installer/handlers/git_handler.py +152 -153
  23. xmipp3_installer/installer/handlers/shell_handler.py +87 -88
  24. xmipp3_installer/installer/handlers/versions_manager.py +20 -6
  25. xmipp3_installer/installer/installer_service.py +22 -8
  26. xmipp3_installer/installer/modes/mode_all_executor.py +61 -51
  27. xmipp3_installer/installer/modes/mode_clean/mode_clean_all_executor.py +44 -36
  28. xmipp3_installer/installer/modes/mode_clean/mode_clean_bin_executor.py +84 -74
  29. xmipp3_installer/installer/modes/mode_clean/mode_clean_executor.py +48 -34
  30. xmipp3_installer/installer/modes/mode_cmake/mode_cmake_executor.py +60 -47
  31. xmipp3_installer/installer/modes/mode_cmake/mode_compile_and_install_executor.py +52 -39
  32. xmipp3_installer/installer/modes/mode_cmake/mode_config_build_executor.py +68 -49
  33. xmipp3_installer/installer/modes/mode_config_executor.py +44 -33
  34. xmipp3_installer/installer/modes/mode_executor.py +14 -13
  35. xmipp3_installer/installer/modes/mode_get_sources_executor.py +121 -112
  36. xmipp3_installer/installer/modes/mode_git_executor.py +43 -31
  37. xmipp3_installer/installer/modes/mode_selector.py +6 -0
  38. xmipp3_installer/installer/modes/mode_sync/mode_add_model_executor.py +97 -83
  39. xmipp3_installer/installer/modes/mode_sync/mode_get_models_executor.py +53 -41
  40. xmipp3_installer/installer/modes/mode_sync/mode_sync_executor.py +41 -35
  41. xmipp3_installer/installer/modes/mode_sync/mode_test_executor.py +144 -77
  42. xmipp3_installer/installer/modes/mode_version_executor.py +161 -150
  43. xmipp3_installer/installer/orquestrator.py +24 -24
  44. xmipp3_installer/installer/urls.py +4 -3
  45. xmipp3_installer/repository/config.py +225 -227
  46. xmipp3_installer/repository/config_vars/__init__.py +5 -0
  47. xmipp3_installer/repository/config_vars/config_values_adapter.py +97 -91
  48. xmipp3_installer/repository/config_vars/default_values.py +24 -24
  49. xmipp3_installer/repository/config_vars/variables.py +9 -9
  50. xmipp3_installer/repository/invalid_config_line.py +17 -0
  51. xmipp3_installer/shared/file_operations.py +14 -12
  52. xmipp3_installer/shared/singleton.py +16 -17
  53. xmipp3_installer-1.1.0.dist-info/METADATA +86 -0
  54. xmipp3_installer-1.1.0.dist-info/RECORD +70 -0
  55. {xmipp3_installer-1.0.1.dist-info → xmipp3_installer-1.1.0.dist-info}/WHEEL +1 -1
  56. xmipp3_installer-1.0.1.dist-info/METADATA +0 -729
  57. xmipp3_installer-1.0.1.dist-info/RECORD +0 -70
  58. {xmipp3_installer-1.0.1.dist-info → xmipp3_installer-1.1.0.dist-info}/entry_points.txt +0 -0
  59. /xmipp3_installer-1.0.1.dist-info/LICENSE → /xmipp3_installer-1.1.0.dist-info/licenses/LICENSE.txt +0 -0
  60. {xmipp3_installer-1.0.1.dist-info → xmipp3_installer-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,107 +1,113 @@
1
+ """
2
+ ### Configuration Values Adapter Module.
3
+
4
+ This module contains functions to convert configuration values between file format and context format.
5
+ """
6
+
1
7
  from typing import Dict, Union
2
8
 
3
9
  from xmipp3_installer.application.logger.logger import logger
4
10
  from xmipp3_installer.repository.config_vars import variables, default_values
5
11
 
6
12
  def get_context_values_from_file_values(file_values: Dict[str, str], show_warnings: bool=True) -> Dict[str, Union[str, bool]]:
7
- """
8
- ### Converts configuration values from file format to context format.
9
-
10
- Processes a dictionary of configuration values read from file, converting toggle values
11
- from string ('ON'/'OFF') to boolean representation for use in the application context.
12
-
13
- #### Params:
14
- - file_values (dict(str, str)): Dictionary of configuration values as read from file.
15
- - show_warnings (bool): Optional. If True, warning messages are shown when applicable.
16
-
17
- #### Returns:
18
- - (dict(str, str | bool)): Dictionary with values converted to their context format.
19
- """
20
- context_values = {}
21
- for key, value in file_values.items():
22
- context_values[key] = __get_context_value_from_file_value(key, value, show_warnings)
23
- return context_values
13
+ """
14
+ ### Converts configuration values from file format to context format.
15
+
16
+ Processes a dictionary of configuration values read from file, converting toggle values
17
+ from string ('ON'/'OFF') to boolean representation for use in the application context.
18
+
19
+ #### Params:
20
+ - file_values (dict(str, str)): Dictionary of configuration values as read from file.
21
+ - show_warnings (bool): Optional. If True, warning messages are shown when applicable.
22
+
23
+ #### Returns:
24
+ - (dict(str, str | bool)): Dictionary with values converted to their context format.
25
+ """
26
+ context_values = {}
27
+ for key, value in file_values.items():
28
+ context_values[key] = __get_context_value_from_file_value(key, value, show_warnings)
29
+ return context_values
24
30
 
25
31
  def get_file_values_from_context_values(context_values: Dict[str, Union[str, bool]]) -> Dict[str, str]:
26
- """
27
- ### Converts configuration values from context format to file format.
28
-
29
- Processes a dictionary of configuration values from the application context, converting toggle values
30
- from boolean to string ('ON'/'OFF') representation for storage in configuration file.
31
-
32
- #### Params:
33
- - context_values (dict(str, str | bool)): Dictionary of configuration values from context.
34
-
35
- #### Returns:
36
- - (dict(str, str)): Dictionary with values converted to their file storage format.
37
- """
38
- file_values = {}
39
- for key, value in context_values.items():
40
- file_values[key] = __get_file_value_from_context_value(key, value)
41
- return file_values
32
+ """
33
+ ### Converts configuration values from context format to file format.
34
+
35
+ Processes a dictionary of configuration values from the application context, converting toggle values
36
+ from boolean to string ('ON'/'OFF') representation for storage in configuration file.
37
+
38
+ #### Params:
39
+ - context_values (dict(str, str | bool)): Dictionary of configuration values from context.
40
+
41
+ #### Returns:
42
+ - (dict(str, str)): Dictionary with values converted to their file storage format.
43
+ """
44
+ file_values = {}
45
+ for key, value in context_values.items():
46
+ file_values[key] = __get_file_value_from_context_value(key, value)
47
+ return file_values
42
48
 
43
49
  def __get_context_value_from_file_value(key: str, value: str, show_warnings: bool) -> Union[str, bool]:
44
- """
45
- ### Converts a single configuration value from file format to context format.
46
-
47
- #### Params:
48
- - key (str): Configuration variable key.
49
- - value (str): Value as read from file.
50
- - show_warnings (bool): Optional. If True, warning messages are shown when applicable.
51
-
52
- #### Returns:
53
- - (str | bool): Value converted to its context format.
54
- """
55
- if key in variables.CONFIG_VARIABLES[variables.TOGGLES]:
56
- return __get_boolean_value_from_string(key, value, show_warnings)
57
- return value
58
-
59
- def __get_file_value_from_context_value(key: str, value: str) -> Union[str, bool]:
60
- """
61
- ### Converts a single configuration value from context format to file format.
62
-
63
- #### Params:
64
- - key (str): Configuration variable key.
65
- - value (str | bool): Value from context.
66
-
67
- #### Returns:
68
- - (str): Value converted to its file storage format.
69
- """
70
- if key in variables.CONFIG_VARIABLES[variables.TOGGLES]:
71
- return __get_string_value_from_boolean(value)
72
- return value
50
+ """
51
+ ### Converts a single configuration value from file format to context format.
52
+
53
+ #### Params:
54
+ - key (str): Configuration variable key.
55
+ - value (str): Value as read from file.
56
+ - show_warnings (bool): Optional. If True, warning messages are shown when applicable.
57
+
58
+ #### Returns:
59
+ - (str | bool): Value converted to its context format.
60
+ """
61
+ if key in variables.CONFIG_VARIABLES[variables.TOGGLES]:
62
+ return __get_boolean_value_from_string(key, value, show_warnings)
63
+ return value
64
+
65
+ def __get_file_value_from_context_value(key: str, value: Union[str, bool]) -> Union[str, bool]:
66
+ """
67
+ ### Converts a single configuration value from context format to file format.
68
+
69
+ #### Params:
70
+ - key (str): Configuration variable key.
71
+ - value (str | bool): Value from context.
72
+
73
+ #### Returns:
74
+ - (str): Value converted to its file storage format.
75
+ """
76
+ if key in variables.CONFIG_VARIABLES[variables.TOGGLES]:
77
+ return __get_string_value_from_boolean(bool(value))
78
+ return value
73
79
 
74
80
  def __get_boolean_value_from_string(key: str, value: str, show_warning: bool) -> bool:
75
- """
76
- ### Converts a toggle value from string ('ON'/'OFF') to boolean.
77
-
78
- #### Params:
79
- - key (str): Configuration variable key.
80
- - value (str): String value to convert ('ON' or 'OFF').
81
- - show_warnings (bool): Optional. If True, warning message is shown when applicable.
82
-
83
- #### Returns:
84
- - (bool): Boolean representation of the toggle value.
85
- """
86
- if value != default_values.ON and value != default_values.OFF:
87
- default_value = default_values.CONFIG_DEFAULT_VALUES[key]
88
- if show_warning:
89
- logger(logger.yellow(
90
- f"WARNING: config variable '{key}' has unrecognized value '{value}'. "
91
- f"Toggle values must be either '{default_values.ON}' or '{default_values.OFF}'. "
92
- f"Default value '{default_value}' will be used instead."
93
- ))
94
- value = default_value
95
- return value == default_values.ON
81
+ """
82
+ ### Converts a toggle value from string ('ON'/'OFF') to boolean.
83
+
84
+ #### Params:
85
+ - key (str): Configuration variable key.
86
+ - value (str): String value to convert ('ON' or 'OFF').
87
+ - show_warnings (bool): Optional. If True, warning message is shown when applicable.
88
+
89
+ #### Returns:
90
+ - (bool): Boolean representation of the toggle value.
91
+ """
92
+ if value not in {default_values.ON, default_values.OFF}:
93
+ default_value = default_values.CONFIG_DEFAULT_VALUES[key]
94
+ if show_warning:
95
+ logger(logger.yellow(
96
+ f"WARNING: config variable '{key}' has unrecognized value '{value}'. "
97
+ f"Toggle values must be either '{default_values.ON}' or '{default_values.OFF}'. "
98
+ f"Default value '{default_value}' will be used instead."
99
+ ))
100
+ value = default_value
101
+ return value == default_values.ON
96
102
 
97
103
  def __get_string_value_from_boolean(value: bool) -> str:
98
- """
99
- ### Converts a toggle value from boolean to string ('ON'/'OFF').
104
+ """
105
+ ### Converts a toggle value from boolean to string ('ON'/'OFF').
100
106
 
101
- #### Params:
102
- - value (bool): Boolean value to convert.
107
+ #### Params:
108
+ - value (bool): Boolean value to convert.
103
109
 
104
- #### Returns:
105
- - (str): String representation of the toggle value ('ON' or 'OFF').
106
- """
107
- return default_values.ON if value else default_values.OFF
110
+ #### Returns:
111
+ - (str): String representation of the toggle value ('ON' or 'OFF').
112
+ """
113
+ return default_values.ON if value else default_values.OFF
@@ -9,28 +9,28 @@ __TUNE_FLAG = '-mtune=native'
9
9
  ON = 'ON'
10
10
  OFF = 'OFF'
11
11
  CONFIG_DEFAULT_VALUES = {
12
- variables.SEND_INSTALLATION_STATISTICS: ON,
13
- variables.CMAKE: None,
14
- variables.CUDA: ON,
15
- variables.MPI: ON,
16
- variables.CC: None,
17
- variables.CXX: None,
18
- variables.CMAKE_INSTALL_PREFIX: paths.INSTALL_PATH,
19
- variables.CC_FLAGS: __TUNE_FLAG,
20
- variables.CXX_FLAGS: __TUNE_FLAG,
21
- variables.CUDA_COMPILER: None,
22
- variables.PREFIX_PATH: conda_handler.get_conda_prefix_path(),
23
- variables.MPI_HOME: None,
24
- variables.PYTHON_HOME: None,
25
- variables.FFTW_HOME: None,
26
- variables.TIFF_HOME: None,
27
- variables.HDF5_HOME: None,
28
- variables.JPEG_HOME: None,
29
- variables.SQLITE_HOME: None,
30
- variables.CUDA_CXX: None,
31
- variables.MATLAB: ON,
32
- variables.LINK_SCIPION: ON,
33
- variables.BUILD_TESTING: ON,
34
- variables.SKIP_RPATH: ON,
35
- variables.BUILD_TYPE: "Release"
12
+ variables.SEND_INSTALLATION_STATISTICS: ON,
13
+ variables.CMAKE: None,
14
+ variables.CUDA: ON,
15
+ variables.MPI: ON,
16
+ variables.CC: None,
17
+ variables.CXX: None,
18
+ variables.CMAKE_INSTALL_PREFIX: paths.INSTALL_PATH,
19
+ variables.CC_FLAGS: __TUNE_FLAG,
20
+ variables.CXX_FLAGS: __TUNE_FLAG,
21
+ variables.CUDA_COMPILER: None,
22
+ variables.PREFIX_PATH: conda_handler.get_conda_prefix_path(),
23
+ variables.MPI_HOME: None,
24
+ variables.PYTHON_HOME: None,
25
+ variables.FFTW_HOME: None,
26
+ variables.TIFF_HOME: None,
27
+ variables.HDF5_HOME: None,
28
+ variables.JPEG_HOME: None,
29
+ variables.SQLITE_HOME: None,
30
+ variables.CUDA_CXX: None,
31
+ variables.MATLAB: ON,
32
+ variables.LINK_SCIPION: ON,
33
+ variables.BUILD_TESTING: OFF,
34
+ variables.SKIP_RPATH: ON,
35
+ variables.BUILD_TYPE: "Release"
36
36
  }
@@ -33,15 +33,15 @@ TOGGLES = 'toggles'
33
33
  LOCATIONS = 'locations'
34
34
  COMPILATION_FLAGS = 'flags'
35
35
  CONFIG_VARIABLES = {
36
- TOGGLES: [
37
- SEND_INSTALLATION_STATISTICS, CUDA, MPI, MATLAB, LINK_SCIPION, BUILD_TESTING, SKIP_RPATH
38
- ],
39
- LOCATIONS: [
40
- CMAKE, CC, CXX, CMAKE_INSTALL_PREFIX, PREFIX_PATH, MPI_HOME,
41
- CUDA_COMPILER, PYTHON_HOME, FFTW_HOME, TIFF_HOME,
42
- HDF5_HOME, JPEG_HOME, SQLITE_HOME, CUDA_CXX
43
- ],
44
- COMPILATION_FLAGS: [CC_FLAGS, CXX_FLAGS, BUILD_TYPE]
36
+ TOGGLES: [
37
+ SEND_INSTALLATION_STATISTICS, CUDA, MPI, MATLAB, LINK_SCIPION, BUILD_TESTING, SKIP_RPATH
38
+ ],
39
+ LOCATIONS: [
40
+ CMAKE, CC, CXX, CMAKE_INSTALL_PREFIX, PREFIX_PATH, MPI_HOME,
41
+ CUDA_COMPILER, PYTHON_HOME, FFTW_HOME, TIFF_HOME,
42
+ HDF5_HOME, JPEG_HOME, SQLITE_HOME, CUDA_CXX
43
+ ],
44
+ COMPILATION_FLAGS: [CC_FLAGS, CXX_FLAGS, BUILD_TYPE]
45
45
  }
46
46
 
47
47
  # Do not pass this variables to CMake, only for installer logic
@@ -3,8 +3,25 @@
3
3
  from xmipp3_installer.application.logger.logger import logger
4
4
 
5
5
  class InvalidConfigLineError(RuntimeError):
6
+ """
7
+ ### Custom exception for invalid configuration lines.
8
+
9
+ Raised when a line in the configuration file does not follow the expected format.
10
+ """
11
+
6
12
  @staticmethod
7
13
  def generate_error_message(config_file, line_number, line):
14
+ """
15
+ ### Generates an error message for an invalid configuration line.
16
+
17
+ #### Params:
18
+ - config_file (str): The name of the configuration file.
19
+ - line_number (int): The line number where the error occurred.
20
+ - line (str): The content of the invalid line.
21
+
22
+ #### Returns:
23
+ - (str): The generated error message.
24
+ """
8
25
  return '\n'.join([
9
26
  logger.yellow(f"WARNING: There was an error parsing {config_file} file: "),
10
27
  logger.red(f'Unable to parse line {line_number}: {line}'),
@@ -1,18 +1,20 @@
1
+ """# Module containing file-related functions."""
2
+
1
3
  import os
2
4
  import shutil
3
5
  from typing import List
4
6
 
5
7
  def delete_paths(paths: List[str]):
6
- """
7
- ### Deletes all the given paths (files or directories).
8
+ """
9
+ ### Deletes all the given paths (files or directories).
8
10
 
9
- #### Params:
10
- - path (list(str)): List of paths to delete.
11
- """
12
- for path in paths:
13
- if not os.path.exists(path):
14
- continue
15
- if os.path.isdir(path):
16
- shutil.rmtree(path, ignore_errors=True)
17
- else:
18
- os.remove(path)
11
+ #### Params:
12
+ - path (list(str)): List of paths to delete.
13
+ """
14
+ for path in paths:
15
+ if not os.path.exists(path):
16
+ continue
17
+ if os.path.isdir(path):
18
+ shutil.rmtree(path, ignore_errors=True)
19
+ else:
20
+ os.remove(path)
@@ -3,23 +3,22 @@
3
3
  from typing_extensions import Self
4
4
 
5
5
  class Singleton:
6
- """
7
- ### Generic singleton class.
8
- """
9
- __instance = None
6
+ """### Generic singleton class."""
10
7
 
11
- def __new__(cls, *args, **kwrgs) -> Self:
12
- """
13
- ### Singleton instancer.
8
+ __instance = None
14
9
 
15
- #### Params:
16
- - cls (self): Current class.
17
- - *args (any): Positional params.
18
- - **kwargs (any): Argument params.
10
+ def __new__(cls, *args, **kwrgs) -> Self:
11
+ """
12
+ ### Singleton instancer.
19
13
 
20
- #### Returns:
21
- - (self): Instance of current class.
22
- """
23
- if not cls.__instance:
24
- cls.__instance = super().__new__(cls)
25
- return cls.__instance
14
+ #### Params:
15
+ - cls (self): Current class.
16
+ - *args (any): Positional params.
17
+ - **kwargs (any): Argument params.
18
+
19
+ #### Returns:
20
+ - (self): Instance of current class.
21
+ """
22
+ if not cls.__instance:
23
+ cls.__instance = super().__new__(cls)
24
+ return cls.__instance
@@ -0,0 +1,86 @@
1
+ Metadata-Version: 2.4
2
+ Name: xmipp3_installer
3
+ Version: 1.1.0
4
+ Summary: Package to handle the installation of Xmipp3
5
+ Author-email: Martín Salinas <ssalinasmartin@gmail.com>
6
+ License: GPL-3.0-only
7
+ Project-URL: Homepage, https://github.com/I2PC/xmipp3-installer
8
+ Project-URL: Issues, https://github.com/I2PC/xmipp3-installer/issues
9
+ Keywords: xmipp3,installer
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE.txt
22
+ Requires-Dist: typing-extensions>=4.12
23
+ Requires-Dist: distro>=1.9.0
24
+ Provides-Extra: test
25
+ Requires-Dist: pytest==8.*; extra == "test"
26
+ Requires-Dist: pytest-cov==5.*; python_version < "3.9" and extra == "test"
27
+ Requires-Dist: pytest-cov==6.*; python_version >= "3.9" and extra == "test"
28
+ Requires-Dist: pytest-subprocess==1.*; extra == "test"
29
+ Requires-Dist: pytest-localserver==0.*; extra == "test"
30
+ Requires-Dist: ruff==0.*; extra == "test"
31
+ Requires-Dist: cmake==4.*; extra == "test"
32
+ Requires-Dist: ninja==1.*; extra == "test"
33
+ Dynamic: license-file
34
+
35
+ # xmipp3-installer
36
+ Python package that handles the installation of [xmipp3](https://github.com/I2PC/xmipp).
37
+
38
+ ## Installation
39
+ To install the package, simply run:
40
+ ```
41
+ pip install xmipp3-installer
42
+ ```
43
+
44
+ ## Usage
45
+ This package has a CLI built-in, with help messages that explain how to use it.
46
+ To run such help, once the package is installed, run:
47
+ ```
48
+ xmipp3_installer -h
49
+ ```
50
+
51
+ ## Testing the code
52
+ In order to run the tests for this project, the project needs to be installed in development mode and also the test dependencies need to be installed.
53
+
54
+ To do that, you need to clone this project, move inside the repository's folder, and run:
55
+ ```
56
+ pip install -e .[test]
57
+ ```
58
+ Once the dependencies have been installed, the automatic tests for this package can be run using `./scripts/run-tests.sh` in bash, or `.\scripts\run-tests.ps1` in PowerShell.
59
+ If you intend to run this tests from within VSCode, you will need extension `Test Adapter Converter`, and a local `.vscode` folder with a file named `settings.json` inside with the following content:
60
+ ```json
61
+ {
62
+ "python.testing.pytestArgs": [
63
+ ".",
64
+ "--capture=no"
65
+ ],
66
+ "python.testing.unittestEnabled": false,
67
+ "python.testing.pytestEnabled": true
68
+ }
69
+ ```
70
+
71
+ ## SonarQube status
72
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
73
+
74
+ ### Ratings
75
+ [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
76
+ [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
77
+ [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
78
+
79
+ ### Specific metrics
80
+ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=bugs)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
81
+ [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
82
+ [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
83
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=coverage)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
84
+ [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
85
+ [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
86
+ [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=I2PC_xmipp3-installer&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
@@ -0,0 +1,70 @@
1
+ xmipp3_installer/__init__.py,sha256=s67VAuwU_q4SQwrHE2ma0iHaK7B-he8LIAHE6isCmMc,50
2
+ xmipp3_installer/__main__.py,sha256=GjAvEb6__AdjqqtOKc6Q5LQieofjGypAeKmpceqrUsA,124
3
+ xmipp3_installer/api_client/api_client.py,sha256=sMtkC0lvX7sbi0JbKYsCieGgzxU3B1jZNRgcv9AEMxo,1670
4
+ xmipp3_installer/api_client/assembler/installation_info_assembler.py,sha256=hocAe7ynhtOfBOffJnfDhKX_SqOj5-U5-XLqtfhsm6U,5995
5
+ xmipp3_installer/application/__init__.py,sha256=kLEk5vEkDPq06r2mKB9FZ2f-yn0Jgm5rSGfL3tBwtik,89
6
+ xmipp3_installer/application/user_interactions.py,sha256=HcNO1YlL2dY5PWZR7hl2Hw366bZ-5fQ7QRcfkwhvr_E,703
7
+ xmipp3_installer/application/cli/__init__.py,sha256=twbZEzUf7ZjBKE07j3DQinLXqa5KOVJ8akiMISx6Rfg,32
8
+ xmipp3_installer/application/cli/cli.py,sha256=JvRq2vKoqaT_dv2tBMBKFtxN_2XFC31Tr6Ah_rDZvbY,9426
9
+ xmipp3_installer/application/cli/arguments/__init__.py,sha256=8jrMDrY4svRO-SJeJY7bQlhLG2QX9XcSvvqIOGgrnKw,322
10
+ xmipp3_installer/application/cli/arguments/modes.py,sha256=md4ElZFVMfbkvMiBSkBd4vfM7KrTnsIE8khQIN1WCmA,6343
11
+ xmipp3_installer/application/cli/arguments/params.py,sha256=5KeLWMKcgct4_CIcbmnbzA7M-_K9Y2aExtLMcR0H5fI,2737
12
+ xmipp3_installer/application/cli/parsers/base_help_formatter.py,sha256=cwVTbclhsAXHSgjp01JVe0P5SeV51xCpUfVimZwzi-Y,9410
13
+ xmipp3_installer/application/cli/parsers/error_handler_parser.py,sha256=LrBjg7WA6M2NJLvAlnBXzZBXXkkFMpEOs0Ko6Ya72rQ,1902
14
+ xmipp3_installer/application/cli/parsers/format.py,sha256=uvvaTI-zo26Bg5M8vZoFSMkHUqKhBW3gP9I6oNYMinA,876
15
+ xmipp3_installer/application/cli/parsers/general_help_formatter.py,sha256=KAs-kE6iclaqg8zKSMB9eiiA36qevQr6GqDdndmPD3Y,3570
16
+ xmipp3_installer/application/cli/parsers/mode_help_formatter.py,sha256=Zh78zRiyUt4xXHa7YvDAxRyWiwue25-oR7MM2IZto4M,5132
17
+ xmipp3_installer/application/logger/__init__.py,sha256=o70im0Su2rEufEfywsjdWji3o6hAtSF8Pztc6B-C6g8,103
18
+ xmipp3_installer/application/logger/errors.py,sha256=ac6sAejffSaWB9sDxJIHAlNomgk7jJI70s2bVMZhlcw,1295
19
+ xmipp3_installer/application/logger/logger.py,sha256=lkF-edAlG9ON8B-T8xKLyRep1bs8V2QsboBlyhm2Kuw,7639
20
+ xmipp3_installer/application/logger/predefined_messages.py,sha256=Wm5SVwZwknxc8uDx56HOoubAWbXfVvrps1bXkczpfSg,2292
21
+ xmipp3_installer/installer/__init__.py,sha256=sxvxGWDy3i9EumDOpI5djVU-gpdlFcuFG1wfRNWJpfU,51
22
+ xmipp3_installer/installer/installer_service.py,sha256=oRAAjIGb-GA8HlqOcHzxmdKbZccen3noNx6mlEpSvNs,3015
23
+ xmipp3_installer/installer/orquestrator.py,sha256=kmM5DhjGbi2bm_JuXHVPbJvi_89ePb1q38A-RhlRURw,1060
24
+ xmipp3_installer/installer/urls.py,sha256=So738nMK7lkqsLymyc-IJFyeRMx2ZIZ19i-qH_MRAis,521
25
+ xmipp3_installer/installer/constants/__init__.py,sha256=yNZfGRtYy3uuF6WebDr0QqqcVsJlh-oh6DxjK2qtQ0M,352
26
+ xmipp3_installer/installer/constants/paths.py,sha256=oqqkZNkhe5i3OCJ4nzeuU4Sq2AvCYZ4UlZ5kiVcCooI,1009
27
+ xmipp3_installer/installer/handlers/__init__.py,sha256=f5XfFtrOTSDRa7Vco8HThqOp3P517dDYa6Nn_DrpUJQ,91
28
+ xmipp3_installer/installer/handlers/conda_handler.py,sha256=PNuuEEWFrUcd_Eo0Bly4hM72TZqdIS_1AZrWyRfyt4k,334
29
+ xmipp3_installer/installer/handlers/generic_package_handler.py,sha256=GPGD_prkc6tU4ZF7YD8MhR3QERpernnTH-ebMop2gdY,680
30
+ xmipp3_installer/installer/handlers/git_handler.py,sha256=3piY-EYYdvve_NMyZMBDM2PhAOJZVdktkS5ScuYv6lM,6449
31
+ xmipp3_installer/installer/handlers/shell_handler.py,sha256=YBpN0mul3-7vPw9Er57sgYacZ1gtqS4goVpSR4taOnI,3419
32
+ xmipp3_installer/installer/handlers/versions_manager.py,sha256=jKOJ-fQwVVBVwrusCnXQ7K7vlDTtz8k35NfoRgRnbTs,3796
33
+ xmipp3_installer/installer/handlers/cmake/__init__.py,sha256=lORTw5-xZSBQrwn_BzJ8gtIyYxYsIWDgs1AidCFq_vw,65
34
+ xmipp3_installer/installer/handlers/cmake/cmake_constants.py,sha256=GGYX46H3tedr0ghZ2mWk_hAqrvjzlDeG0PHGLgBWso8,722
35
+ xmipp3_installer/installer/handlers/cmake/cmake_handler.py,sha256=xpkrAXSSKDXayWaVU9Fq7L2l-Jf59sXyWirs6zff7vk,2126
36
+ xmipp3_installer/installer/modes/__init__.py,sha256=-8F3Qpzmc9NjP0liDr0U-euw9dDPr93EndDKnRoIm7A,49
37
+ xmipp3_installer/installer/modes/mode_all_executor.py,sha256=tEzhTDWT_5dQXmI-I1X4Rcz2sCw5kX15_DZ-5gsO1hk,2288
38
+ xmipp3_installer/installer/modes/mode_config_executor.py,sha256=TPOHxUzAMZX1F_2W4MdsW_DL0UNZVOTbeKc91bYVDjc,1966
39
+ xmipp3_installer/installer/modes/mode_executor.py,sha256=WTjsIKfxE2JfTfp79uAe3KvdbusBY0xMVN7DIy5SK5g,1332
40
+ xmipp3_installer/installer/modes/mode_get_sources_executor.py,sha256=fwHPKpDuMzXpGdLPHP9A0EuOj8yrVZ1iXUhE546k0Tk,5445
41
+ xmipp3_installer/installer/modes/mode_git_executor.py,sha256=9BPcHV6n-rASrMfnUxYb6nzcBHpct3RWc4I4hVYy1-U,1719
42
+ xmipp3_installer/installer/modes/mode_selector.py,sha256=2uRrCXt-PfHAFWWx3kslgIUBzK7IdmBpokYW8T9CW70,1568
43
+ xmipp3_installer/installer/modes/mode_version_executor.py,sha256=j9-K44pkXMC1QUBKn9IKwQvKADwNCAqUtFLcAcAWG1Q,6749
44
+ xmipp3_installer/installer/modes/mode_clean/__init__.py,sha256=8sd4O5YcWQSTyYPSCFtLFW5YXPM9yKu7LUKSOv5pZBQ,58
45
+ xmipp3_installer/installer/modes/mode_clean/mode_clean_all_executor.py,sha256=3LaVPnOAp2Vb3Hb8sb_x0HJJcJ9xB5noqOgk5SEU4xw,1692
46
+ xmipp3_installer/installer/modes/mode_clean/mode_clean_bin_executor.py,sha256=4slKHhlMPDNCWBO4hZDBQZgDz91Dxj5Ev8x3oY8_-BE,3180
47
+ xmipp3_installer/installer/modes/mode_clean/mode_clean_executor.py,sha256=lPWefQN9RiRb9RK4NO1IcOme3fvqXrOptIKfGjJIUGQ,1954
48
+ xmipp3_installer/installer/modes/mode_cmake/__init__.py,sha256=FffU9aZoFMcsaK0QPi_k1TLYZ_v1q1M5IfBbGQ0DnrI,55
49
+ xmipp3_installer/installer/modes/mode_cmake/mode_cmake_executor.py,sha256=D0ai_sHa4z7TXR1hjEwMbm0GAwUaZ-e4xqiUU3dSKtw,2262
50
+ xmipp3_installer/installer/modes/mode_cmake/mode_compile_and_install_executor.py,sha256=9kRB4FKxGMvVS7buGd516VuLuV6eGJbxa-7cyHJvta4,2553
51
+ xmipp3_installer/installer/modes/mode_cmake/mode_config_build_executor.py,sha256=fB7tGVnNC8f4Xb_MnZ7QHwBQtjjMS2h6Q4c0qG5z5MI,3051
52
+ xmipp3_installer/installer/modes/mode_sync/mode_add_model_executor.py,sha256=z7zdzIvpKSuQpC4U2Q3X36tI6vLI14PY-YrjsxV-qPM,4283
53
+ xmipp3_installer/installer/modes/mode_sync/mode_get_models_executor.py,sha256=9UKGDeBjXEruLM4b4bHXZemYuzwASwDHZ6-tJ7WzopM,2100
54
+ xmipp3_installer/installer/modes/mode_sync/mode_sync_executor.py,sha256=K21SiXm_iUGmhJcQK9APZu3zn6ps21KbvuwavqkosBQ,1795
55
+ xmipp3_installer/installer/modes/mode_sync/mode_test_executor.py,sha256=5OcxZM4DpS-qCHCeYVVHSB_aL7ZLQezWrfpLwRad_aw,5411
56
+ xmipp3_installer/repository/__init__.py,sha256=RzgHN49tR493qbnZuqM18G_TRu3cYAMFYrK2xVuDIzg,66
57
+ xmipp3_installer/repository/config.py,sha256=0DaTPKIS8WTZZ4eYiQSPjuqV5Wl1ruT0c1r0Ol3I4-Q,9043
58
+ xmipp3_installer/repository/invalid_config_line.py,sha256=962875j26zOW48mG4X0XgowhdFUCNbX7KjllwQm-u-g,1222
59
+ xmipp3_installer/repository/config_vars/__init__.py,sha256=C6INj3Y2fmN2HrpEWA2785LHdzoWeAf_kV4ZMQbvIjc,128
60
+ xmipp3_installer/repository/config_vars/config_values_adapter.py,sha256=bpGNRcoJnvM1psgjHXaT0lKa0IXLHwNrXnXZpvz208Q,4420
61
+ xmipp3_installer/repository/config_vars/default_values.py,sha256=eIUVE8G5I7VP4T3ilanMnAwxyBpAUipgMNopYcM4V1U,1125
62
+ xmipp3_installer/repository/config_vars/variables.py,sha256=U2LyYIitxGIO7cP_IG0lfkOQ1IrvFZTOp1l6O98N_34,1513
63
+ xmipp3_installer/shared/file_operations.py,sha256=cwYe3P0Iz3Sq2U4DqANx4AsL1QmqCU-VW2T3C0YcVLA,464
64
+ xmipp3_installer/shared/singleton.py,sha256=nqsCg_rTCdWld2EeLzmvQLjk_goROWWyia3wN7aqHUE,557
65
+ xmipp3_installer-1.1.0.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
66
+ xmipp3_installer-1.1.0.dist-info/METADATA,sha256=uMOTsmvo6oYOxsPdW0FY3NMBwqjCshGABHQXmTARt7c,4740
67
+ xmipp3_installer-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
68
+ xmipp3_installer-1.1.0.dist-info/entry_points.txt,sha256=AbvjNKF8d0LfHkuVMrBz26YhjkzL37m4FYUDDs9UFB4,68
69
+ xmipp3_installer-1.1.0.dist-info/top_level.txt,sha256=PbpSNvfVKVhceWxY482CNYzjSnGbQXl782LlWh39uuw,17
70
+ xmipp3_installer-1.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.0.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5