Skip to content

parser_multiply_rule

Module for ParserMultiplyRule class

!!! classes ParserMultiplyRule

ParserMultiplyRule (IParserRuleBase)

Class for creating a MultiplyRuleData

Source code in parsers/parser_multiply_rule.py
class ParserMultiplyRule(IParserRuleBase):
    """Class for creating a MultiplyRuleData"""

    @property
    def rule_type_name(self) -> str:
        """Type name for the rule"""
        return "multiply_rule"

    def parse_dict(self, dictionary: Dict[str, Any], logger: ILogger) -> IRuleData:
        """Parses the provided dictionary to a IRuleData
        Args:
            dictionary (Dict[str, Any]): Dictionary holding the values
                                         for making the rule
        Returns:
            RuleBase: Rule based on the provided data
        """
        name = get_dict_element("name", dictionary)
        input_variable_name = get_dict_element("input_variable", dictionary)
        output_variable_name = get_dict_element("output_variable", dictionary)
        description = get_dict_element("description", dictionary, False) or ""

        multipliers = [get_dict_element("multipliers", dictionary, False)]
        date_range = []

        if not multipliers[0]:
            multipliers_table = get_dict_element("multipliers_table", dictionary)
            multipliers_dict = convert_table_element(multipliers_table)
            multipliers = get_dict_element("multipliers", multipliers_dict)
            start_date = get_dict_element("start_date", multipliers_dict)
            end_date = get_dict_element("end_date", multipliers_dict)

            validate_type_date(start_date, "start_date")
            validate_type_date(end_date, "end_date")
            validate_start_before_end(start_date, end_date)

            date_range = list(zip(start_date, end_date))
        validate_all_instances_number(sum(multipliers, []), "Multipliers")

        rule_data = MultiplyRuleData(
            name,
            multipliers,
            input_variable_name,
            date_range,
        )

        rule_data.output_variable = output_variable_name
        rule_data.description = description

        return rule_data

rule_type_name: str property readonly

Type name for the rule

parse_dict(self, dictionary, logger)

Parses the provided dictionary to a IRuleData

Parameters:

Name Type Description Default
dictionary Dict[str, Any]

Dictionary holding the values for making the rule

required

Returns:

Type Description
RuleBase

Rule based on the provided data

Source code in parsers/parser_multiply_rule.py
def parse_dict(self, dictionary: Dict[str, Any], logger: ILogger) -> IRuleData:
    """Parses the provided dictionary to a IRuleData
    Args:
        dictionary (Dict[str, Any]): Dictionary holding the values
                                     for making the rule
    Returns:
        RuleBase: Rule based on the provided data
    """
    name = get_dict_element("name", dictionary)
    input_variable_name = get_dict_element("input_variable", dictionary)
    output_variable_name = get_dict_element("output_variable", dictionary)
    description = get_dict_element("description", dictionary, False) or ""

    multipliers = [get_dict_element("multipliers", dictionary, False)]
    date_range = []

    if not multipliers[0]:
        multipliers_table = get_dict_element("multipliers_table", dictionary)
        multipliers_dict = convert_table_element(multipliers_table)
        multipliers = get_dict_element("multipliers", multipliers_dict)
        start_date = get_dict_element("start_date", multipliers_dict)
        end_date = get_dict_element("end_date", multipliers_dict)

        validate_type_date(start_date, "start_date")
        validate_type_date(end_date, "end_date")
        validate_start_before_end(start_date, end_date)

        date_range = list(zip(start_date, end_date))
    validate_all_instances_number(sum(multipliers, []), "Multipliers")

    rule_data = MultiplyRuleData(
        name,
        multipliers,
        input_variable_name,
        date_range,
    )

    rule_data.output_variable = output_variable_name
    rule_data.description = description

    return rule_data