Skip to content

kedro.utils

kedro.utils

This module provides a set of helper functions being used across different components of kedro package.

Name Type Description
find_kedro_project Function Given a path, find a Kedro project associated with it.
is_kedro_project Function Evaluate if a given path is a root directory of a Kedro project or not.
load_obj Function Extract an object from a given path.

kedro.utils.find_kedro_project

find_kedro_project(current_dir)

Given a path, find a Kedro project associated with it.

Can be
  • Itself, if a path is a root directory of a Kedro project.
  • One of its parents, if self is not a Kedro project but one of the parent path is.
  • None, if neither self nor any parent path is a Kedro project.

Returns:

  • Any

    Kedro project associated with a given path,

  • Any

    or None if no relevant Kedro project is found.

Source code in kedro/utils.py
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
def find_kedro_project(current_dir: Path) -> Any:  # pragma: no cover
    """Given a path, find a Kedro project associated with it.

    Can be:
        - Itself, if a path is a root directory of a Kedro project.
        - One of its parents, if self is not a Kedro project but one of the parent path is.
        - None, if neither self nor any parent path is a Kedro project.

    Returns:
        Kedro project associated with a given path,
        or None if no relevant Kedro project is found.
    """
    paths_to_check = [current_dir, *list(current_dir.parents)]
    for parent_dir in paths_to_check:
        if is_kedro_project(parent_dir):
            return parent_dir
    return None

kedro.utils.is_kedro_project

is_kedro_project(project_path)

Evaluate if a given path is a root directory of a Kedro project or not.

Parameters:

  • project_path (Union[str, Path]) –

    Path to be tested for being a root of a Kedro project.

Returns:

  • bool

    True if a given path is a root directory of a Kedro project, otherwise False.

Source code in kedro/utils.py
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
def is_kedro_project(project_path: Union[str, Path]) -> bool:
    """Evaluate if a given path is a root directory of a Kedro project or not.

    Args:
        project_path: Path to be tested for being a root of a Kedro project.

    Returns:
        True if a given path is a root directory of a Kedro project, otherwise False.
    """
    metadata_file = Path(project_path).expanduser().resolve() / _PYPROJECT
    if not metadata_file.is_file():
        return False

    try:
        return "[tool.kedro]" in metadata_file.read_text(encoding="utf-8")
    except Exception:
        return False

kedro.utils.load_obj

load_obj(obj_path, default_obj_path='')

Extract an object from a given path.

Parameters:

  • obj_path (str) –

    Path to an object to be extracted, including the object name.

  • default_obj_path (str, default: '' ) –

    Default object path.

Returns:

  • Any

    Extracted object.

Raises:

  • AttributeError

    When the object does not have the given named attribute.

Source code in kedro/utils.py
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
def load_obj(obj_path: str, default_obj_path: str = "") -> Any:
    """Extract an object from a given path.

    Args:
        obj_path: Path to an object to be extracted, including the object name.
        default_obj_path: Default object path.

    Returns:
        Extracted object.

    Raises:
        AttributeError: When the object does not have the given named attribute.

    """
    obj_path_list = obj_path.rsplit(".", 1)
    obj_path = obj_path_list.pop(0) if len(obj_path_list) > 1 else default_obj_path
    obj_name = obj_path_list[0]
    module_obj = importlib.import_module(obj_path)
    return getattr(module_obj, obj_name)