Build Path
Creates a complete file or folder path by combining folder/file names.
Build Path
Processing
Creates a complete file or folder path by combining a base path with up to three additional path components. The function validates input arguments to ensure proper path construction and provides flexible output format options.
Inputs
- base path
- The starting directory or path to build from
- part 1
- The first path component to append to the base path
- part 2 (optional)
- The second path component to append
- part 3 (optional)
- The third path component to append (requires part_2 to be provided)
Inputs Types
| Input | Types |
|---|---|
base path |
Str, DirectoryPath |
part 1 |
Str, Path |
part 2 |
Str, Path |
part 3 |
Str, Path |
You can check the list of supported types here: Available Type Hints.
Outputs
- result path
- The complete constructed path combining all provided components
Outputs Types
| Output | Types |
|---|---|
result path |
str, Path |
You can check the list of supported types here: Available Type Hints.
Options
The Build Path brick contains some changeable options:
- Return as a string
- Controls whether the output path is returned as a string or Path object (default: True)
- Verbose
- Enables detailed logging of the path building process (default: True)
import logging
from coded_flows.types import Str, Path, DirectoryPath, Union
from coded_flows.utils import CodedFlowsLogger
logger = CodedFlowsLogger(name="Build Path", level=logging.INFO)
def build_path(
base_path: Union[Str, DirectoryPath],
part_1: Union[Str, Path],
part_2: Union[Str, Path] = None,
part_3: Union[Str, Path] = None,
options=None,
) -> Union[Str, Path]:
options = options or {}
verbose = options.get("verbose", True)
return_as_string: bool = options.get("return_as_string", False)
result_path = None
try:
if verbose:
logger.info(f"Starting path building process")
logger.info(f"Base path: {base_path}")
logger.info(f"Part_1: {part_1}")
logger.info(f"Part_2: {part_2}")
logger.info(f"Part_3: {part_3}")
if part_3 is not None and part_2 is None:
error_message = "Cannot provide part_3 without part_2"
if verbose:
logger.error(f"{error_message}")
raise ValueError(error_message)
if isinstance(base_path, str):
base_path_obj = Path(base_path)
verbose and logger.info(f"Converted string base path to Path object")
else:
base_path_obj = base_path
verbose and logger.info(f"Using provided base path Path object")
result_path = base_path_obj / part_1
verbose and logger.info(f"Added part_1, current path: {result_path}")
if part_2 is not None:
result_path = result_path / part_2
verbose and logger.info(f"Added part_2, current path: {result_path}")
if part_3 is not None:
result_path = result_path / part_3
verbose and logger.info(f"Added part_3, current path: {result_path}")
if return_as_string:
result_path = str(result_path)
verbose and logger.info(f"Converted result to string format")
else:
verbose and logger.info(f"Keeping result as Path object")
if verbose:
logger.info(f"Successfully built path: {result_path}")
logger.info(f"Path building completed successfully")
except Exception as e:
if verbose:
logger.error(f"Unexpected error occurred!")
raise
return result_path
Brick Info
version
v0.1.5
python
3.10,
3.11,
3.12,
3.13
requirements
-
-