Skip to content

DependencyExtractor

Functions to extract each type of pattern in _dependency_patterns

Source code in 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,
    ) -> Union[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 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,
) -> Union[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,
    )