Skip to content
Snippets Groups Projects
Commit 71b8b061 authored by Ashwin Kumar Karnad's avatar Ashwin Kumar Karnad
Browse files

Merge branch 'towards-conventional-doc-strings' into 'linux-debian11'

Making docstrings comply with numpydoc

See merge request mpsd-cs/mpsd-software-environments!11
parents b5402380 d64ab5bc
No related branches found
No related tags found
2 merge requests!19Move linux-debian11 into main,!11Making docstrings comply with numpydoc
Pipeline #368544 passed
...@@ -15,6 +15,7 @@ This function builds toolchains for MPSD-HPC at the appropriate directory, \n ...@@ -15,6 +15,7 @@ This function builds toolchains for MPSD-HPC at the appropriate directory, \n
for given system architecture and MPSD software stack version.\n for given system architecture and MPSD software stack version.\n
The toolchains The toolchains
are built using the bash script spack_setup.sh, and the results are logged. """ are built using the bash script spack_setup.sh, and the results are logged. """
config_vars = { config_vars = {
"cmd_log_file": "install.log", "cmd_log_file": "install.log",
"build_log_file": ( "build_log_file": (
...@@ -29,8 +30,9 @@ config_vars = { ...@@ -29,8 +30,9 @@ config_vars = {
# Helper class to change directory via context manager # Helper class to change directory via context manager
class os_chdir: class os_chdir:
""" """
The os_chdir class is a context manager that The os_chdir class is a context manager.
changes the current directory to a specified directory
It changes the current directory to a specified directory
and returns to the original directory after execution. and returns to the original directory after execution.
""" """
...@@ -132,20 +134,26 @@ def run(*args, counter=[0], **kwargs): ...@@ -132,20 +134,26 @@ def run(*args, counter=[0], **kwargs):
def setup_log_cmd( def setup_log_cmd(
mpsd_release: str, script_dir: str, msg: str = None, *args, **kwargs mpsd_release: str, script_dir: str, msg: str = None, *args, **kwargs
) -> None: ) -> None:
"""The setup_log_cmd function logs the command used to build the """
toolchains, along with information about the software environment installer Log the command used to build the toolchains.
branch, the Spack environments branch, and the commit hashes of each. It
also logs steps taken in install process using the optional message
argument.
Args: It also logs information about the software environment installer branch,
mpsd_release (str): The name of the release to install toolchains for. the Spack environments branch, and the commit hashes of each.
script_dir (str): The path to the directory where the scripts are located. It also logs steps taken
msg (str, optional): An optional message to log in the command log file. in the install process using the optional message argument.
Returns: Parameters
None ----------
- mpsd_release : str
The name of the release to install toolchains for.
- script_dir : str
The path to the directory where the scripts are located.
- msg : str, optional
An optional message to log in the command log file.
Returns
-------
- None
""" """
release_base_dir = script_dir / mpsd_release release_base_dir = script_dir / mpsd_release
...@@ -203,17 +211,21 @@ def setup_log_cmd( ...@@ -203,17 +211,21 @@ def setup_log_cmd(
def create_dir_structure(mpsd_release: str, script_dir: Path) -> None: def create_dir_structure(mpsd_release: str, script_dir: Path) -> None:
"""The create_dir_structure function creates the directory structure for """
Create the directory structure and clone spack environments repo.
The create_dir_structure function creates the directory structure for
the specified release and clones the Spack environments repository if it the specified release and clones the Spack environments repository if it
doesn't exist. doesn't exist.
Args: Parameters
----------
- mpsd_release: A string representing the MPSD release version. - mpsd_release: A string representing the MPSD release version.
- script_dir: A Path object representing the path to the scripts directory. - script_dir: A Path object representing the path to the scripts directory.
Returns: Returns
-------
- None - None
""" """
# Create the directory structure for the release # Create the directory structure for the release
release_base_dir = script_dir / mpsd_release release_base_dir = script_dir / mpsd_release
...@@ -244,22 +256,31 @@ def create_dir_structure(mpsd_release: str, script_dir: Path) -> None: ...@@ -244,22 +256,31 @@ def create_dir_structure(mpsd_release: str, script_dir: Path) -> None:
def get_release_info(mpsd_release: str, script_dir: Path) -> Tuple[str, str, List[str]]: def get_release_info(mpsd_release: str, script_dir: Path) -> Tuple[str, str, List[str]]:
""" """
Get information about the specified release.
Get information about the specified release, such as the branch and commit hash Get information about the specified release, such as the branch and commit hash
of the Spack environments repository and the available toolchains. of the Spack environments repository and the available toolchains.
Args: Parameters
- mpsd_release (str) : the name of the release to get information for. ----------
- script_dir (pathlib.Path): the base directory where releases are stored. mpsd_release : str
The name of the release to get information for.
Returns: script_dir : pathlib.Path
- spe_branch: str, the name of the branch for the Spack environments repository. The base directory where releases are stored.
- spe_commit_hash: str, the commit hash for the Spack environments repository.
- available_toolchains: list, a list of strings representing the available
toolchains for the release.
Raises: Returns
- FileNotFoundError: If the release directory does not exist. Run -------
`create_dir_structure()` first. spe_branch : str
The name of the branch for the Spack environments repository.
spe_commit_hash : str
The commit hash for the Spack environments repository.
available_toolchains : list
A list of strings representing the available toolchains for the release.
Raises
------
FileNotFoundError
If the release directory does not exist. Run `create_dir_structure()` first.
""" """
# Get the info for release # Get the info for release
release_base_dir = script_dir / mpsd_release release_base_dir = script_dir / mpsd_release
...@@ -288,20 +309,26 @@ def get_release_info(mpsd_release: str, script_dir: Path) -> Tuple[str, str, Lis ...@@ -288,20 +309,26 @@ def get_release_info(mpsd_release: str, script_dir: Path) -> Tuple[str, str, Lis
def prepare_environment(mpsd_release: str, script_dir: Path) -> List[str]: def prepare_environment(mpsd_release: str, script_dir: Path) -> List[str]:
""" """
- Creates the directory structure for the given MPSD release and clones the Create the directory structure for the given MPSD release.
spack-environments repository.
- Determines the branch and commit hash of the spack-environments repository and It does the following steps:
the available toolchains. Clones the spack-environments repository.
- Logs the command usage. Determines the branch and commit hash of the spack-environments repository
and the available toolchains.
Args: Logs the command usage.
- mpsd_release (str): The name of the MPSD release to prepare the environment for.
- script_dir (pathlib.Path): The base directory to create the release folder and Parameters
clone the spack-environments repository into. ----------
mpsd_release : str
Returns: The name of the MPSD release to prepare the environment for.
- available_toolchains (list): A list of available toolchains for the given MPSD script_dir : pathlib.Path
release. The base directory to create the release folder and
clone the spack-environments repository into.
Returns
-------
available_toolchains : list
A list of available toolchains for the given MPSD release.
""" """
create_dir_structure(mpsd_release, script_dir) create_dir_structure(mpsd_release, script_dir)
spe_branch, spe_commit_hash, available_toolchains = get_release_info( spe_branch, spe_commit_hash, available_toolchains = get_release_info(
...@@ -320,30 +347,36 @@ def install_environment( ...@@ -320,30 +347,36 @@ def install_environment(
force_reinstall: bool = False, force_reinstall: bool = False,
enable_build_cache: bool = False, enable_build_cache: bool = False,
) -> None: ) -> None:
"""Installs the specified MPSD release and toolchains to the specified """
directory using Spack. Install the specified MPSD release and toolchains.
Args:
mpsd_release: A string representing the MPSD release version.
toolchains: A list of strings representing the toolchains to install
(e.g., "foss2021a-mpi", "global_generic", "ALL").
script_dir: A Path object representing the path to the directory where
the release and toolchains will be installed.
force_reinstall: A boolean indicating whether to force a reinstallation
even if the release and toolchains already exist. Defaults to False.
enable_build_cache: A boolean indicating whether to build the build
cache when installing toolchains. Defaults to False.
Raises: The function installs the toolchain to the specified directory, using Spack.
ValueError: If a requested toolchain is not available in the specified release.
Returns: Parameters
None ----------
mpsd_release : str
A string representing the MPSD release version.
toolchains : list of str
A list of strings representing the toolchains to install
(e.g., "foss2021a-mpi", "global_generic", "ALL").
script_dir : pathlib.Path
A Path object representing the path to the directory where
the release and toolchains will be installed.
force_reinstall : bool, optional
A boolean indicating whether to force a reinstallation
even if the release and toolchains already exist. Defaults to False.
enable_build_cache : bool, optional
A boolean indicating whether to build the build cache
when installing toolchains. Defaults to False.
Raises
------
ValueError
If a requested toolchain is not available in the specified release.
Returns
-------
None
""" """
print( print(
f"Installing release {mpsd_release} with toolchains {toolchains} " f"Installing release {mpsd_release} with toolchains {toolchains} "
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment