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.
- xmipp3_installer/__main__.py +1 -1
- xmipp3_installer/api_client/api_client.py +35 -34
- xmipp3_installer/api_client/assembler/installation_info_assembler.py +140 -145
- xmipp3_installer/application/cli/arguments/__init__.py +3 -2
- xmipp3_installer/application/cli/arguments/modes.py +112 -95
- xmipp3_installer/application/cli/arguments/params.py +63 -53
- xmipp3_installer/application/cli/cli.py +171 -190
- xmipp3_installer/application/cli/parsers/base_help_formatter.py +256 -235
- xmipp3_installer/application/cli/parsers/error_handler_parser.py +53 -53
- xmipp3_installer/application/cli/parsers/format.py +22 -22
- xmipp3_installer/application/cli/parsers/general_help_formatter.py +102 -84
- xmipp3_installer/application/cli/parsers/mode_help_formatter.py +144 -105
- xmipp3_installer/application/logger/__init__.py +5 -0
- xmipp3_installer/application/logger/errors.py +8 -8
- xmipp3_installer/application/logger/logger.py +218 -215
- xmipp3_installer/application/logger/predefined_messages.py +42 -35
- xmipp3_installer/application/user_interactions.py +6 -0
- xmipp3_installer/installer/constants/paths.py +6 -0
- xmipp3_installer/installer/handlers/cmake/cmake_handler.py +49 -53
- xmipp3_installer/installer/handlers/conda_handler.py +6 -6
- xmipp3_installer/installer/handlers/generic_package_handler.py +9 -9
- xmipp3_installer/installer/handlers/git_handler.py +152 -153
- xmipp3_installer/installer/handlers/shell_handler.py +87 -88
- xmipp3_installer/installer/handlers/versions_manager.py +20 -6
- xmipp3_installer/installer/installer_service.py +22 -8
- xmipp3_installer/installer/modes/mode_all_executor.py +61 -51
- xmipp3_installer/installer/modes/mode_clean/mode_clean_all_executor.py +44 -36
- xmipp3_installer/installer/modes/mode_clean/mode_clean_bin_executor.py +84 -74
- xmipp3_installer/installer/modes/mode_clean/mode_clean_executor.py +48 -34
- xmipp3_installer/installer/modes/mode_cmake/mode_cmake_executor.py +60 -47
- xmipp3_installer/installer/modes/mode_cmake/mode_compile_and_install_executor.py +52 -39
- xmipp3_installer/installer/modes/mode_cmake/mode_config_build_executor.py +68 -49
- xmipp3_installer/installer/modes/mode_config_executor.py +44 -33
- xmipp3_installer/installer/modes/mode_executor.py +14 -13
- xmipp3_installer/installer/modes/mode_get_sources_executor.py +121 -112
- xmipp3_installer/installer/modes/mode_git_executor.py +43 -31
- xmipp3_installer/installer/modes/mode_selector.py +6 -0
- xmipp3_installer/installer/modes/mode_sync/mode_add_model_executor.py +97 -83
- xmipp3_installer/installer/modes/mode_sync/mode_get_models_executor.py +53 -41
- xmipp3_installer/installer/modes/mode_sync/mode_sync_executor.py +41 -35
- xmipp3_installer/installer/modes/mode_sync/mode_test_executor.py +144 -77
- xmipp3_installer/installer/modes/mode_version_executor.py +161 -150
- xmipp3_installer/installer/orquestrator.py +24 -24
- xmipp3_installer/installer/urls.py +4 -3
- xmipp3_installer/repository/config.py +225 -227
- xmipp3_installer/repository/config_vars/__init__.py +5 -0
- xmipp3_installer/repository/config_vars/config_values_adapter.py +97 -91
- xmipp3_installer/repository/config_vars/default_values.py +24 -24
- xmipp3_installer/repository/config_vars/variables.py +9 -9
- xmipp3_installer/repository/invalid_config_line.py +17 -0
- xmipp3_installer/shared/file_operations.py +14 -12
- xmipp3_installer/shared/singleton.py +16 -17
- xmipp3_installer-1.1.0.dist-info/METADATA +86 -0
- xmipp3_installer-1.1.0.dist-info/RECORD +70 -0
- {xmipp3_installer-1.0.1.dist-info → xmipp3_installer-1.1.0.dist-info}/WHEEL +1 -1
- xmipp3_installer-1.0.1.dist-info/METADATA +0 -729
- xmipp3_installer-1.0.1.dist-info/RECORD +0 -70
- {xmipp3_installer-1.0.1.dist-info → xmipp3_installer-1.1.0.dist-info}/entry_points.txt +0 -0
- /xmipp3_installer-1.0.1.dist-info/LICENSE → /xmipp3_installer-1.1.0.dist-info/licenses/LICENSE.txt +0 -0
- {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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def __get_file_value_from_context_value(key: str, value: str) -> Union[str, bool]:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
104
|
+
"""
|
|
105
|
+
### Converts a toggle value from boolean to string ('ON'/'OFF').
|
|
100
106
|
|
|
101
|
-
|
|
102
|
-
|
|
107
|
+
#### Params:
|
|
108
|
+
- value (bool): Boolean value to convert.
|
|
103
109
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
8
|
+
"""
|
|
9
|
+
### Deletes all the given paths (files or directories).
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
12
|
-
"""
|
|
13
|
-
### Singleton instancer.
|
|
8
|
+
__instance = None
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- **kwargs (any): Argument params.
|
|
10
|
+
def __new__(cls, *args, **kwrgs) -> Self:
|
|
11
|
+
"""
|
|
12
|
+
### Singleton instancer.
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
73
|
+
|
|
74
|
+
### Ratings
|
|
75
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
76
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
77
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
78
|
+
|
|
79
|
+
### Specific metrics
|
|
80
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
81
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
82
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
83
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
84
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
85
|
+
[](https://sonarcloud.io/summary/new_code?id=I2PC_xmipp3-installer)
|
|
86
|
+
[](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,,
|