Source code for mypythontools_cicd.misc.misc_internal
"""Module with functions for 'misc' subpackage."""
from __future__ import annotations
from typing import Sequence
from mypythontools.paths import validate_path, PathLike
from mypythontools.types import validate_sequence
from mypythontools.misc import print_progress
from mypythontools.system import (
check_script_is_available,
terminal_do_command,
)
from mypythontools_cicd.project_paths import PROJECT_PATHS
[docs]def reformat_with_black(
root_path: None | PathLike = None, extra_args: Sequence[str] = ("--quiet",), verbose: bool = False
) -> None:
"""Reformat code with black.
Args:
root_path (None | PathLike, optional): Root path of project. If None, will be inferred.
Defaults to None.
extra_args (Sequence[str], optional): Some extra args for black. Defaults to ("--quiet,").
verbose (bool, optional): If True, result of terminal command will be printed to console.
Defaults to False.
Example:
>>> reformat_with_black()
"""
print_progress("Reformatting", verbose)
check_script_is_available("black", "black")
validate_sequence(extra_args, "extra_args")
root_path = validate_path(root_path, "Reformating failed") if root_path else PROJECT_PATHS.root
terminal_do_command(
f"black . {' '.join(extra_args)}", cwd=root_path, verbose=verbose, error_header="Formatting failed"
)