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)
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)
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, }
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)
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
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()
def __init__(self): TaxBenefitSystem.__init__(self, entities) self.Scenario = Scenario self.add_variables(af, salaire, age, autonomie_financiere, depcom)
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)
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
def __init__(self): TaxBenefitSystem.__init__(self, entities) self.Scenario = Scenario self.add_variables(af, salaire, age, autonomie_financiere, depcom)
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])
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()
def __init__(self): TaxBenefitSystem.__init__(self, entities.entities) self.Scenario = scenarios.Scenario self.add_variables_from_file(os.path.join(COUNTRY_DIR, 'model.py'))
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')