Skip to content

DependencyExtractor

Functions to extract each type of pattern in _dependency_patterns.

Source code in src/library_analyzer/processing/dependencies/_get_dependency.py
class DependencyExtractor:
    """Functions to extract each type of pattern in _dependency_patterns."""

    @staticmethod
    def extract_pattern_parameter_adverbial_clause(
        dependent_param: Parameter,
        func_parameters: list[Parameter],
        match: tuple,
        param_docstring: Doc,
    ) -> Dependency | None:
        is_depending_on_param_index = match[1][2]
        is_depending_on_param_name = param_docstring[is_depending_on_param_index].text
        is_depending_on_param = next(
            filter(lambda param: param.name == is_depending_on_param_name, func_parameters),
            None,
        )
        if is_depending_on_param is None:
            # Likely not a correct dependency match
            return None

        condition_token = param_docstring[match[1][1]]
        condition = extract_condition(condition_token)

        action_token = param_docstring[match[1][0]]
        action = extract_action(action_token, condition_token)

        return Dependency(
            hasDependentParameter=dependent_param,
            isDependingOn=is_depending_on_param,
            hasCondition=condition,
            hasAction=action,
        )

extract_pattern_parameter_adverbial_clause(dependent_param, func_parameters, match, param_docstring) staticmethod

Source code in src/library_analyzer/processing/dependencies/_get_dependency.py
@staticmethod
def extract_pattern_parameter_adverbial_clause(
    dependent_param: Parameter,
    func_parameters: list[Parameter],
    match: tuple,
    param_docstring: Doc,
) -> Dependency | None:
    is_depending_on_param_index = match[1][2]
    is_depending_on_param_name = param_docstring[is_depending_on_param_index].text
    is_depending_on_param = next(
        filter(lambda param: param.name == is_depending_on_param_name, func_parameters),
        None,
    )
    if is_depending_on_param is None:
        # Likely not a correct dependency match
        return None

    condition_token = param_docstring[match[1][1]]
    condition = extract_condition(condition_token)

    action_token = param_docstring[match[1][0]]
    action = extract_action(action_token, condition_token)

    return Dependency(
        hasDependentParameter=dependent_param,
        isDependingOn=is_depending_on_param,
        hasCondition=condition,
        hasAction=action,
    )