def __init__(self):
        TaxBenefitSystem.__init__(self, entities.entities)
        self.Scenario = scenarios.Scenario

        param_files = [
            '__root__.xml',
            'bouclier_fiscal.xml',
            'bourses_education.xml',
            'cmu.xml',
            'cotsoc.xml',
            'fonc.xml',
            'impot_revenu.xml',
            'prelevements_sociaux.xml',
            'prestations.xml',
            'taxation_capital.xml',
            'tns.xml'
            ]

        for param_file in param_files:
            param_path = os.path.join(COUNTRY_DIR, 'parameters', param_file)
            self.add_legislation_params(param_path)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        self.cache_blacklist = conf_cache_blacklist
        for extension_dir in EXTENSIONS_DIRECTORIES:
            self.load_extension(extension_dir)
Exemplo n.º 2
0
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities)
        self.Scenario = scenarios.Scenario

        param_dir = os.path.join(COUNTRY_DIR, 'parameters')
        self.load_parameters(param_dir)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        self.cache_blacklist = conf_cache_blacklist
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities.entities)
     self.Scenario = scenarios.Scenario
     param_file = os.path.join(COUNTRY_DIR, 'param', 'param.xml')
     self.add_legislation_params(param_file)
     self.add_variables_from_directory(os.path.join(COUNTRY_DIR,'model'))
     self.cache_blacklist = conf_cache_blacklist
     for extension_dir in EXTENSIONS_DIRECTORIES:
         self.load_extension(extension_dir)
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities)

        # We add to our tax and benefit system all the variables
        self.add_variables_from_directory(
            os.path.join(COUNTRY_DIR, 'variables'))

        param_path = os.path.join(COUNTRY_DIR, 'parameters')
        self.load_parameters(param_path)
Exemplo n.º 5
0
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities.entities)
        self.Scenario = scenarios.Scenario

        legislation_xml_file_path = os.path.join(COUNTRY_DIR, 'param',
                                                 'param.xml')
        self.add_legislation_params(legislation_xml_file_path)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        for extension_dir in EXTENSIONS_DIRECTORIES:
            self.load_extension(extension_dir)
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities)

        param_dir = os.path.join(COUNTRY_DIR, 'parameters')
        self.load_parameters(param_dir)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        self.cache_blacklist = conf_cache_blacklist

        self.open_api_config = {
            "variable_example": "rsa_montant",
            "parameter_example": "cotsoc.gen.smic_h_b",
            "simulation_example": couple,
            }
Exemplo n.º 7
0
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities)

        param_dir = os.path.join(COUNTRY_DIR, 'parameters')
        self.load_parameters(param_dir)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        self.cache_blacklist = conf_cache_blacklist

        self.open_api_config = {
            "variable_example": "rsa_montant",
            "parameter_example": "cotsoc.gen.smic_h_b",
            "simulation_example": couple,
            }
    def __init__(self):
        TaxBenefitSystem.__init__(self, entities)
        self.Scenario = scenarios.Scenario

        param_files = [
            '__root__.xml', 'bouclier_fiscal.xml', 'bourses_education.xml',
            'cmu.xml', 'cotsoc.xml', 'fonc.xml', 'impot_revenu.xml',
            'prelevements_sociaux.xml', 'prestations.xml',
            'taxation_capital.xml', 'tns.xml'
        ]

        for param_file in param_files:
            param_path = os.path.join(COUNTRY_DIR, 'parameters', param_file)
            self.add_legislation_params(param_path)

        self.add_variables_from_directory(os.path.join(COUNTRY_DIR, 'model'))
        self.cache_blacklist = conf_cache_blacklist
        for extension_dir in EXTENSIONS_DIRECTORIES:
            self.load_extension(extension_dir)
Exemplo n.º 9
0
def test_shortcut_to_containing_entity_not_provided():
    """
    Tests that, when an entity doesn't provide a containing
    entity, the shortcut to that containing entity is not provided.
    """
    person_entity = build_entity(
        key="person",
        plural="people",
        label="A person",
        is_person=True,
    )
    family_entity = build_entity(
        key="family",
        plural="families",
        label="A family (all members in the same household)",
        containing_entities=[],
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])
    household_entity = build_entity(
        key="household",
        plural="households",
        label="A household, containing one or more families",
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])

    entities = [person_entity, family_entity, household_entity]

    system = TaxBenefitSystem(entities)
    simulation = SimulationBuilder().build_from_dict(system, {})
    try:
        simulation.populations["family"].household
        raise AssertionError()
    except AttributeError:
        pass
Exemplo n.º 10
0
def test_group_encapsulation():
    """Projects a calculation to all members of an entity.

    When a household contains more than one family
    Variables can be defined for the the household
    And calculations are projected to all the member families.

    """
    from openfisca_core.taxbenefitsystems import TaxBenefitSystem
    from openfisca_core.entities import build_entity
    from openfisca_core.periods import ETERNITY

    person_entity = build_entity(
        key="person",
        plural="people",
        label="A person",
        is_person=True,
    )
    family_entity = build_entity(
        key="family",
        plural="families",
        label="A family (all members in the same household)",
        containing_entities=["household"],
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])
    household_entity = build_entity(
        key="household",
        plural="households",
        label="A household, containing one or more families",
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])

    entities = [person_entity, family_entity, household_entity]

    system = TaxBenefitSystem(entities)

    class household_level_variable(Variable):
        value_type = int
        entity = household_entity
        definition_period = ETERNITY

    class projected_family_level_variable(Variable):
        value_type = int
        entity = family_entity
        definition_period = ETERNITY

        def formula(family, period):
            return family.household("household_level_variable", period)

    system.add_variables(household_level_variable,
                         projected_family_level_variable)

    simulation = SimulationBuilder().build_from_dict(
        system, {
            "people": {
                "person1": {},
                "person2": {},
                "person3": {}
            },
            "families": {
                "family1": {
                    "members": ["person1", "person2"]
                },
                "family2": {
                    "members": ["person3"]
                },
            },
            "households": {
                "household1": {
                    "members": ["person1", "person2", "person3"],
                    "household_level_variable": {
                        "eternity": 5
                    }
                }
            }
        })

    assert (simulation.calculate("projected_family_level_variable",
                                 "2021-01-01") == 5).all()
Exemplo n.º 11
0
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities)
     self.Scenario = Scenario
     self.add_variables(af, salaire, age, autonomie_financiere, depcom)
Exemplo n.º 12
0
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities)
     self.Scenario = Scenario
     self.add_legislation_params(path_to_root_params)
     self.add_legislation_params(path_to_crds_params, 'contribution_sociale')
     self.add_variables_from_directory(path_to_model_dir)
Exemplo n.º 13
0
def test_enum_projects_between_containing_groups():
    """
    Test that an Enum-type person-level variable projects
    values onto its household (from the first person) correctly.
    """

    person_entity = build_entity(
        key="person",
        plural="people",
        label="A person",
        is_person=True,
    )
    family_entity = build_entity(
        key="family",
        plural="families",
        label="A family (all members in the same household)",
        containing_entities=["household"],
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])
    household_entity = build_entity(
        key="household",
        plural="households",
        label="A household, containing one or more families",
        roles=[{
            "key": "member",
            "plural": "members",
            "label": "Member",
        }])

    entities = [person_entity, family_entity, household_entity]

    system = TaxBenefitSystem(entities)

    class enum(Enum):
        FIRST_OPTION = "First option"
        SECOND_OPTION = "Second option"

    class household_level_variable(Variable):
        value_type = Enum
        possible_values = enum
        default_value = enum.FIRST_OPTION
        entity = household_entity
        definition_period = ETERNITY

    class projected_family_level_variable(Variable):
        value_type = Enum
        possible_values = enum
        default_value = enum.FIRST_OPTION
        entity = family_entity
        definition_period = ETERNITY

        def formula(family, period):
            return family.household("household_level_variable", period)

    system.add_variables(household_level_variable,
                         projected_family_level_variable)

    simulation = SimulationBuilder().build_from_dict(
        system, {
            "people": {
                "person1": {},
                "person2": {},
                "person3": {}
            },
            "families": {
                "family1": {
                    "members": ["person1", "person2"]
                },
                "family2": {
                    "members": ["person3"]
                },
            },
            "households": {
                "household1": {
                    "members": ["person1", "person2", "person3"],
                    "household_level_variable": {
                        "eternity": "SECOND_OPTION"
                    }
                }
            }
        })

    assert (simulation.calculate("projected_family_level_variable",
                                 "2021-01-01").decode_to_str() == np.array(
                                     ["SECOND_OPTION"])).all()

class salaire_net(Variable):
    column = FloatCol
    entity = Individu
    label = u"Salaire net"

    def function(self, simulation, period):
        period = period.start.period(u'year').offset('first-of')
        salaire_brut = simulation.calculate('salaire_brut', period)
        return period, salaire_brut * 0.8


# TaxBenefitSystem instance declared after formulas

tax_benefit_system = TaxBenefitSystem([Famille, Individu])
tax_benefit_system.add_variables(age_en_mois, birth, depcom, salaire_brut, age,
                                 dom_tom, revenu_disponible, rsa,
                                 salaire_imposable, salaire_net)


@timeit
def check_revenu_disponible(year, depcom, expected_revenu_disponible):
    simulation = simulations.Simulation(period=periods.period(year),
                                        tax_benefit_system=tax_benefit_system)
    famille = simulation.entities["famille"]
    famille.count = 3
    famille.roles_count = 2
    famille.step_size = 1
    individu = simulation.entities["individu"]
    individu.count = 6
Exemplo n.º 15
0
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities)
     self.Scenario = Scenario
     self.add_variables(af, salaire, age, autonomie_financiere, depcom)
Exemplo n.º 16
0
class salaire_net(Variable):
    column = FloatCol
    entity_class = Individus
    label = u"Salaire net"

    def function(self, simulation, period):
        period = period.start.period(u'year').offset('first-of')
        salaire_brut = simulation.calculate('salaire_brut', period)
        return period, salaire_brut * 0.8


# TaxBenefitSystem instance declared after formulas


tax_benefit_system = TaxBenefitSystem([Familles, Individus])
tax_benefit_system.add_variables(age_en_mois, birth, depcom, id_famille, role_dans_famille, salaire_brut, age,
    dom_tom, dom_tom_individu, revenu_disponible, revenu_disponible_famille, rsa, salaire_imposable, salaire_net)


@timeit
def check_revenu_disponible(year, depcom, expected_revenu_disponible):
    simulation = simulations.Simulation(period = periods.period(year), tax_benefit_system = tax_benefit_system)
    famille = simulation.entity_by_key_singular["famille"]
    famille.count = 3
    famille.roles_count = 2
    famille.step_size = 1
    individu = simulation.entity_by_key_singular["individu"]
    individu.count = 6
    individu.step_size = 2
    simulation.get_or_new_holder("depcom").array = np.array([depcom, depcom, depcom])
Exemplo n.º 17
0
def test_enum_projects_downwards():
    """
    Test that an Enum-type household-level variable projects
    values onto its members correctly.
    """

    person = build_entity(
        key="person",
        plural="people",
        label="A person",
        is_person=True,
    )
    household = build_entity(key="household",
                             plural="households",
                             label="A household",
                             roles=[{
                                 "key": "member",
                                 "plural": "members",
                                 "label": "Member",
                             }])

    entities = [person, household]

    system = TaxBenefitSystem(entities)

    class enum(Enum):
        FIRST_OPTION = "First option"
        SECOND_OPTION = "Second option"

    class household_enum_variable(Variable):
        value_type = Enum
        possible_values = enum
        default_value = enum.FIRST_OPTION
        entity = household
        definition_period = ETERNITY

    class projected_enum_variable(Variable):
        value_type = Enum
        possible_values = enum
        default_value = enum.FIRST_OPTION
        entity = person
        definition_period = ETERNITY

        def formula(person, period):
            return person.household("household_enum_variable", period)

    system.add_variables(household_enum_variable, projected_enum_variable)

    simulation = SimulationBuilder().build_from_dict(
        system, {
            "people": {
                "person1": {},
                "person2": {},
                "person3": {}
            },
            "households": {
                "household1": {
                    "members": ["person1", "person2", "person3"],
                    "household_enum_variable": {
                        "eternity": "SECOND_OPTION"
                    }
                }
            }
        })

    assert (simulation.calculate("projected_enum_variable",
                                 "2021-01-01").decode_to_str() == np.array(
                                     ["SECOND_OPTION"] * 3)).all()
Exemplo n.º 18
0
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities.entities)
     self.Scenario = scenarios.Scenario
     self.add_variables_from_file(os.path.join(COUNTRY_DIR, 'model.py'))
Exemplo n.º 19
0
 def __init__(self):
     TaxBenefitSystem.__init__(self, entities)
     self.Scenario = Scenario
     self.add_variables_from_file(__file__)
     self.add_legislation_params(path_to_root_params)
     self.add_legislation_params(path_to_crds_params, 'csg.activite')