diff --git a/notebooks/test_notebooks.py b/notebooks/test_notebooks.py index 66f7cfab..6c5f0a18 100644 --- a/notebooks/test_notebooks.py +++ b/notebooks/test_notebooks.py @@ -28,7 +28,7 @@ def is_notebook(file_path): - return file_path[-6:] == ".ipynb" + return file_path[-6:] == '.ipynb' def run(notebook_path): @@ -36,7 +36,7 @@ def run(notebook_path): Execute a notebook. If an error occurs, then save results in a new notebook - of the name, prefixed bt "executed_". + of the name, prefixed by `executed_`. ''' notebook_directory = os.path.dirname(notebook_path) notebook_filename = os.path.basename(notebook_path) @@ -50,50 +50,50 @@ def run(notebook_path): try: # Execute all the cells in the notebook - ep = ExecutePreprocessor(timeout = 600, kernel_name = "python") + ep = ExecutePreprocessor(timeout = 600, kernel_name = 'python') executed_notebook = ep.preprocess( notebook, - {"metadata": {"path": notebook_directory}} + {'metadata': {'path': notebook_directory}} ) except CellExecutionError: executed_notebook = None - msg = 'Error executing the notebook "%s".\n\n' % notebook_filename - msg += 'See notebook "%s" for stack traceback.' % notebook_filename_out + msg = f'Error executing the notebook {notebook_filename}.\n\n' + msg += f'See notebook {notebook_filename_out} for stack traceback.' log.error(msg) raise finally: - with open(notebook_filename_out, mode = "wt") as f: + with open(notebook_filename_out, mode = 'wt') as f: write(notebook, f) if executed_notebook is not None: os.remove(notebook_filename_out) # Check script target (file or directory) and test all notebooks -if __name__ == "__main__": +if __name__ == '__main__': try: target = sys.argv[1] if os.path.isdir(target): for file in os.listdir(target): if is_notebook(file): - log.debug("> " + file) + log.debug('> ' + file) run(os.path.join(target, file)) else: if not is_notebook(target): - raise Exception("Expected an .ipynb file. Got: {}".format(target)) + raise Exception(f'Expected an .ipynb file. Got: {target}') run(target) - log.info("OK. No error detected in tested notebook(s).") + log.info('OK. No error detected in tested notebook(s).') except BaseException as e: if len(sys.argv) == 1: - log.error("Missing notebook or directory containing notebooks to test.") - log.warn("USAGE: python test_notebooks.py target") - log.warn("where 'target' is directory containing notebooks, or a .ipynb notebook file.") + log.error('Missing notebook or directory containing notebooks to test.') + log.warn('USAGE: python test_notebooks.py target') + log.warn('where `target` is directory containing notebooks, or a .ipynb notebook file.') else: - log.debug(str(e.__class__.__name__) + ": ") + log.debug(str(e.__class__.__name__) + ': ') if e.__class__ is CellExecutionError and e.from_cell_and_msg: log.debug(e.from_cell_and_msg) elif e.message: diff --git a/openfisca_tunisia/__init__.py b/openfisca_tunisia/__init__.py index 284d6554..dbf23a04 100644 --- a/openfisca_tunisia/__init__.py +++ b/openfisca_tunisia/__init__.py @@ -3,4 +3,5 @@ # The name CountryTaxBenefitSystem must not be changed, as all tools of the OpenFisca # ecosystem expect a CountryTaxBenefitSystem class to be exposed # in the __init__ module of a country package. + CountryTaxBenefitSystem = TunisiaTaxBenefitSystem diff --git a/openfisca_tunisia/conv.py b/openfisca_tunisia/conv.py index c47791e4..c1ddd5d3 100644 --- a/openfisca_tunisia/conv.py +++ b/openfisca_tunisia/conv.py @@ -20,7 +20,7 @@ # along with this program. If not, see . -"""Conversion functions""" +'''Conversion functions''' from openfisca_core.conv import * diff --git a/openfisca_tunisia/entities.py b/openfisca_tunisia/entities.py index 403833d2..58cdfe7b 100644 --- a/openfisca_tunisia/entities.py +++ b/openfisca_tunisia/entities.py @@ -2,15 +2,15 @@ Individu = build_entity( - key = "individu", - plural = "individus", + key = 'individu', + plural = 'individus', label = 'Individu', is_person = True ) FoyerFiscal = build_entity( - key = "foyer_fiscal", - plural = "foyers_fiscaux", + key = 'foyer_fiscal', + plural = 'foyers_fiscaux', label = 'Déclaration d’impôts', roles = [ { @@ -28,8 +28,8 @@ ) Menage = build_entity( - key = "menage", - plural = "menages", + key = 'menage', + plural = 'menages', label = 'Logement principal', roles = [ { diff --git a/openfisca_tunisia/model/base.py b/openfisca_tunisia/model/base.py index bd30d863..6528120f 100644 --- a/openfisca_tunisia/model/base.py +++ b/openfisca_tunisia/model/base.py @@ -1,5 +1,2 @@ -from datetime import date - -from openfisca_core.model_api import * - -from openfisca_tunisia.entities import FoyerFiscal, Individu, Menage +from openfisca_core.model_api import * # noqa F401 +from openfisca_tunisia.entities import FoyerFiscal, Individu, Menage # noqa F401 diff --git a/openfisca_tunisia/model/caracteristiques_socio_demographiques/demographie.py b/openfisca_tunisia/model/caracteristiques_socio_demographiques/demographie.py index 0a22ec57..79556876 100644 --- a/openfisca_tunisia/model/caracteristiques_socio_demographiques/demographie.py +++ b/openfisca_tunisia/model/caracteristiques_socio_demographiques/demographie.py @@ -7,7 +7,7 @@ class age(Variable): value_type = int entity = Individu - label = "Âge (en années)" + label = 'Âge (en années)' definition_period = YEAR is_period_size_independent = True set_input = set_input_dispatch_by_period @@ -22,7 +22,7 @@ class age_en_mois(Variable): default_value = -9999 unit = 'months' entity = Individu - label = "Âge (en mois)" + label = 'Âge (en mois)' is_period_size_independent = True definition_period = MONTH @@ -51,21 +51,21 @@ class date_naissance(Variable): value_type = date default_value = date(1970, 1, 1) entity = Individu - label = "Date de naissance" + label = 'Date de naissance' definition_period = ETERNITY class male(Variable): value_type = bool entity = Individu - label = "Mâle" + label = 'Mâle' definition_period = ETERNITY class marie(Variable): value_type = bool entity = Individu - label = "Marié(e)" + label = 'Marié(e)' definition_period = YEAR def formula(individu, period): @@ -76,7 +76,7 @@ def formula(individu, period): class celibataire(Variable): value_type = bool entity = Individu - label = "Célibataire" + label = 'Célibataire' definition_period = YEAR def formula(individu, period): @@ -87,7 +87,7 @@ def formula(individu, period): class divorce(Variable): value_type = bool entity = Individu - label = "Divorcé(e)" + label = 'Divorcé(e)' definition_period = YEAR def formula(individu, period): @@ -98,7 +98,7 @@ def formula(individu, period): class veuf(Variable): value_type = bool entity = Individu - label = "Veuf(ve)" + label = 'Veuf(ve)' definition_period = YEAR def formula(individu, period): @@ -110,13 +110,13 @@ class statut_marital(Variable): value_type = int default_value = 2 entity = Individu - label = "Statut marital" + label = 'Statut marital' definition_period = ETERNITY class invalide(Variable): value_type = bool - label = "Invalide" + label = 'Invalide' entity = Individu definition_period = ETERNITY @@ -124,11 +124,10 @@ class invalide(Variable): class activite(Variable): value_type = int entity = Individu - label = "Activité" + label = 'Activité' definition_period = ETERNITY - class boursier(Variable): value_type = bool entity = Individu diff --git a/openfisca_tunisia/model/caracteristiques_socio_demographiques/logement.py b/openfisca_tunisia/model/caracteristiques_socio_demographiques/logement.py index 3f64abef..aee30485 100644 --- a/openfisca_tunisia/model/caracteristiques_socio_demographiques/logement.py +++ b/openfisca_tunisia/model/caracteristiques_socio_demographiques/logement.py @@ -4,15 +4,17 @@ class code_postal(Variable): value_type = int entity = Menage - label = "Localisation du logement (code postal)" + label = 'Localisation du logement (code postal)' definition_period = ETERNITY + class loyer(Variable): value_type = int entity = Menage - label = "Loyer du logement" + label = 'Loyer du logement' definition_period = YEAR + class statut_occupation_logement(Variable): value_type = int entity = Menage diff --git a/openfisca_tunisia/model/common.py b/openfisca_tunisia/model/common.py index 2a20c6be..786e5019 100644 --- a/openfisca_tunisia/model/common.py +++ b/openfisca_tunisia/model/common.py @@ -7,7 +7,7 @@ class impots_directs(Variable): value_type = float entity = Individu - label = "Impôts directs" + label = 'Impôts directs' definition_period = YEAR def formula(individu, period): @@ -19,14 +19,14 @@ def formula(individu, period): class prestations_sociales(Variable): value_type = int entity = Individu - label = "Prestations sociales" + label = 'Prestations sociales' definition_period = YEAR class revenu_disponible(Variable): value_type = float entity = Menage - label = "Revenu disponible du ménage" + label = 'Revenu disponible du ménage' definition_period = YEAR def formula(menage, period): @@ -37,7 +37,7 @@ def formula(menage, period): class revenu_disponible_individuel(Variable): value_type = float entity = Individu - label = "Revenu disponible individuel" + label = 'Revenu disponible individuel' definition_period = YEAR def formula(individu, period): @@ -53,7 +53,7 @@ def formula(individu, period): class revenus_du_capital(Variable): value_type = float entity = Individu - label = "Revenus du capital" + label = 'Revenus du capital' definition_period = YEAR def formula(individu, period): @@ -64,7 +64,7 @@ def formula(individu, period): class revenus_du_travail(Variable): value_type = float entity = Individu - label = "Revenus du travail" + label = 'Revenus du travail' definition_period = YEAR def formula(individu, period): diff --git a/openfisca_tunisia/model/prelevements_obligatoires/cotisations_sociales.py b/openfisca_tunisia/model/prelevements_obligatoires/cotisations_sociales.py index 87ff5a18..dfd6efcc 100644 --- a/openfisca_tunisia/model/prelevements_obligatoires/cotisations_sociales.py +++ b/openfisca_tunisia/model/prelevements_obligatoires/cotisations_sociales.py @@ -9,16 +9,16 @@ class TypesRegimeSecuriteSociale(Enum): __order__ = 'rsna rsa rsaa rtns rtte re rtfr raci salarie_cnrps pensionne_cnrps' # Needed to preserve the enum order in Python 2 - rsna = "Régime des Salariés Non Agricoles" - rsa = "Régime des Salariés Agricoles" - rsaa = "Régime des Salariés Agricoles Amélioré" - rtns = "Régime des Travailleurs Non Salariés (secteurs agricole et non agricole)" + rsna = 'Régime des Salariés Non Agricoles' + rsa = 'Régime des Salariés Agricoles' + rsaa = 'Régime des Salariés Agricoles Amélioré' + rtns = 'Régime des Travailleurs Non Salariés (secteurs agricole et non agricole)' rtte = "Régime des Travailleurs Tunisiens à l'Etranger" re = "Régime des Etudiants, diplômés de l'enseignement supérieur et stagiaires" - rtfr = "Régime des Travailleurs à Faibles Revenus (gens de maisons, travailleurs de chantiers, et artisans travaillant à la pièce)" - raci = "Régime des Artistes, Créateurs et Intellectuels" - salarie_cnrps = "Régime des salariés affilés à la Caisse Nationale de Retraite et de Prévoyance Sociale" - pensionne_cnrps = "Régime des salariés des pensionnés de la Caisse Nationale de Retraite et de Prévoyance Sociale" + rtfr = 'Régime des Travailleurs à Faibles Revenus (gens de maisons, travailleurs de chantiers, et artisans travaillant à la pièce)' + raci = 'Régime des Artistes, Créateurs et Intellectuels' + salarie_cnrps = 'Régime des salariés affilés à la Caisse Nationale de Retraite et de Prévoyance Sociale' + pensionne_cnrps = 'Régime des salariés des pensionnés de la Caisse Nationale de Retraite et de Prévoyance Sociale' # references : # http://www.social.gov.tn/index.php?id=49&L=0 # http://www.paie-tunisie.com/412/fr/83/reglementations/regimes-de-securite-sociale.aspx @@ -67,13 +67,13 @@ def compute_cotisation(individu, period, cotisation_type = None, bareme_name = N class assiette_cotisations_sociales(Variable): value_type = float entity = Individu - label = "Assiette des cotisations sociales" + label = 'Assiette des cotisations sociales' definition_period = MONTH def formula(individu, period): return ( - individu('salaire_de_base', period) + - individu('primes', period) + individu('salaire_de_base', period) + + individu('primes', period) ) @@ -82,65 +82,65 @@ class regime_securite_sociale(Variable): possible_values = TypesRegimeSecuriteSociale default_value = TypesRegimeSecuriteSociale.rsna entity = Individu - label = "Régime de sécurité sociale du salarié" + label = 'Régime de sécurité sociale du salarié' definition_period = ETERNITY class cotisations_sociales(Variable): value_type = float entity = Individu - label = "Cotisations sociales" + label = 'Cotisations sociales' definition_period = MONTH def formula(individu, period): return ( - individu('cotisations_employeur', period) + - individu('cotisations_salarie', period) + individu('cotisations_employeur', period) + + individu('cotisations_salarie', period) ) class cotisations_employeur(Variable): value_type = float entity = Individu - label = "Cotisation sociales employeur" + label = 'Cotisation sociales employeur' definition_period = MONTH def formula(individu, period): return ( - individu('accident_du_travail_employeur', period) + - individu('deces_employeur', period) + - individu('fonds_special_etat', period) + - individu('famille_employeur', period) + - individu('maladie_employeur', period) + - individu('maternite_employeur', period) + - individu('protection_sociale_travailleurs_employeur', period) + - individu('retraite_employeur', period) + individu('accident_du_travail_employeur', period) + + individu('deces_employeur', period) + + individu('fonds_special_etat', period) + + individu('famille_employeur', period) + + individu('maladie_employeur', period) + + individu('maternite_employeur', period) + + individu('protection_sociale_travailleurs_employeur', period) + + individu('retraite_employeur', period) ) class cotisations_salarie(Variable): value_type = float entity = Individu - label = "Cotisation sociales salarié" + label = 'Cotisation sociales salarié' definition_period = MONTH def formula(individu, period): return ( - individu('accident_du_travail_salarie', period) + - individu('deces_salarie', period) + - individu('famille_salarie', period) + - individu('maladie_salarie', period) + - individu('maternite_salarie', period) + - individu('protection_sociale_travailleurs_salarie', period) + - individu('retraite_salarie', period) + - individu('ugtt', period) + individu('accident_du_travail_salarie', period) + + individu('deces_salarie', period) + + individu('famille_salarie', period) + + individu('maladie_salarie', period) + + individu('maternite_salarie', period) + + individu('protection_sociale_travailleurs_salarie', period) + + individu('retraite_salarie', period) + + individu('ugtt', period) ) class accident_du_travail_employeur(Variable): value_type = float entity = Individu - label = "Cotisation accidents du travail et maladies professionnelles (employeur)" + label = 'Cotisation accidents du travail et maladies professionnelles (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -156,7 +156,7 @@ def formula(individu, period, parameters): class accident_du_travail_salarie(Variable): value_type = float entity = Individu - label = "Cotisation accidents du travail et maladies professionnelles (salarié)" + label = 'Cotisation accidents du travail et maladies professionnelles (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -172,7 +172,7 @@ def formula(individu, period, parameters): class deces_employeur(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales: décès (employeur)" + label = 'Cotisation assurances sociales: décès (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -188,7 +188,7 @@ def formula(individu, period, parameters): class deces_salarie(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales: décès (salarié)" + label = 'Cotisation assurances sociales: décès (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -204,7 +204,7 @@ def formula(individu, period, parameters): class famille_employeur(Variable): value_type = float entity = Individu - label = "Cotisation sociale allocations familiales (employeur)" + label = 'Cotisation sociale allocations familiales (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -220,7 +220,7 @@ def formula(individu, period, parameters): class famille_salarie(Variable): value_type = float entity = Individu - label = "Cotisation sociale allocations familiales (salarié)" + label = 'Cotisation sociale allocations familiales (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -252,7 +252,7 @@ def formula(individu, period, parameters): class maladie_employeur(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales: maladie (employeur)" + label = 'Cotisation assurances sociales: maladie (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -268,7 +268,7 @@ def formula(individu, period, parameters): class maladie_salarie(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales: maladie (salarié)" + label = 'Cotisation assurances sociales: maladie (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -284,7 +284,7 @@ def formula(individu, period, parameters): class maternite_employeur(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales : maternité (employeur)" + label = 'Cotisation assurances sociales : maternité (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -300,7 +300,7 @@ def formula(individu, period, parameters): class maternite_salarie(Variable): value_type = float entity = Individu - label = "Cotisation assurances sociales : maternité (salarié)" + label = 'Cotisation assurances sociales : maternité (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -316,7 +316,7 @@ def formula(individu, period, parameters): class protection_sociale_travailleurs_employeur(Variable): value_type = float entity = Individu - label = "Cotisation protection sociale des travailleurs (employeur)" + label = 'Cotisation protection sociale des travailleurs (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -332,7 +332,7 @@ def formula(individu, period, parameters): class protection_sociale_travailleurs_salarie(Variable): value_type = float entity = Individu - label = "Cotisation protection sociale des travailleurs (salarié)" + label = 'Cotisation protection sociale des travailleurs (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -348,7 +348,7 @@ def formula(individu, period, parameters): class retraite_employeur(Variable): value_type = float entity = Individu - label = "Cotisation pensions de retraite (employeur)" + label = 'Cotisation pensions de retraite (employeur)' definition_period = MONTH def formula(individu, period, parameters): @@ -364,7 +364,7 @@ def formula(individu, period, parameters): class retraite_salarie(Variable): value_type = float entity = Individu - label = "Cotisation pensions de retraite (salarié)" + label = 'Cotisation pensions de retraite (salarié)' definition_period = MONTH def formula(individu, period, parameters): @@ -380,7 +380,7 @@ def formula(individu, period, parameters): class salaire_imposable(Variable): value_type = float entity = Individu - label = "Salaire imposable" + label = 'Salaire imposable' definition_period = MONTH set_input = set_input_divide_by_period @@ -394,7 +394,7 @@ def formula(individu, period): class salaire_net_a_payer(Variable): value_type = float entity = Individu - label = "Salaire net à payer (fiche de paie)" + label = 'Salaire net à payer (fiche de paie)' definition_period = MONTH set_input = set_input_divide_by_period @@ -408,7 +408,7 @@ def formula(individu, period): class salaire_super_brut(Variable): value_type = float entity = Individu - label = "Salaires super bruts" + label = 'Salaires super bruts' definition_period = MONTH set_input = set_input_divide_by_period @@ -423,9 +423,9 @@ def formula(individu, period): class ugtt(Variable): value_type = float entity = Individu - label = "Cotisation syndicale UGTT" + label = 'Cotisation syndicale UGTT' definition_period = MONTH def formula(individu, period): + # TODO put this value (3) in parameters return -3 * (individu('regime_securite_sociale', period) == TypesRegimeSecuriteSociale.salarie_cnrps) - # TODO put this value (3) in parameters diff --git a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/__init__.py b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/__init__.py index 8b137891..e69de29b 100644 --- a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/__init__.py +++ b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/__init__.py @@ -1 +0,0 @@ - diff --git a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/deductions.py b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/deductions.py index 67e248e0..0e12040b 100644 --- a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/deductions.py +++ b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/deductions.py @@ -49,21 +49,21 @@ class compte_special_epargne_banque(Variable): value_type = int - label = "Intérêts des comptes spéciaux d’épargne ouverts auprès des banques" + label = "Intérêts des comptes spéciaux d'épargne ouverts auprès des banques" entity = Individu definition_period = YEAR class compte_special_epargne_cent(Variable): value_type = int - label = "Intérêts des comptes spéciaux d’épargne ouverts auprès de la CENT dans la limite" + label = "Intérêts des comptes spéciaux d'épargne ouverts auprès de la CENT dans la limite" entity = Individu definition_period = YEAR class emprunt_obligataire(Variable): value_type = int - label = "Intérêts des emprunts obligataires" + label = 'Intérêts des emprunts obligataires' entity = Individu definition_period = YEAR @@ -77,43 +77,42 @@ class compte_epargne_investissement(Variable): class rente(Variable): value_type = int - label = "Rentes payées obligatoirement et à titre gratuit" + label = 'Rentes payées obligatoirement et à titre gratuit' entity = Individu definition_period = YEAR class prime_assurance_vie(Variable): value_type = int - label = "Prime d’assurance-vie" + label = 'Prime d’assurance-vie' entity = Individu definition_period = YEAR class dons(Variable): value_type = int - label = "Dons au profit du fonds national de solidarité 26-26 et du Fonds National de l’Emploi 21-21" + label = 'Dons au profit du fonds national de solidarité 26-26 et du Fonds National de l’Emploi 21-21' entity = Individu definition_period = YEAR class pret_universitaire(Variable): value_type = int - label = "Remboursement des prêts universitaires en principal et intérêts" + label = 'Remboursement des prêts universitaires en principal et intérêts' entity = Individu definition_period = YEAR class cotisations_non_affilie(Variable): value_type = int - label = "Cotisations payées par les travailleurs non salariés affiliés à l’un des régimes légaux " \ - "de la sécurité sociale" + label = "Cotisations payées par les travailleurs non salariés affiliés à l'un des régimes légaux de la sécurité sociale" entity = Individu definition_period = YEAR class interet_acquisition_logement(Variable): value_type = int - label = "Intérêts payés au titre des prêts relatifs à l’acquisition ou à la construction d’un logement social" + label = "Intérêts payés au titre des prêts relatifs à l'acquisition ou à la construction d’un logement social" entity = Individu definition_period = YEAR diff --git a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/irpp.py b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/irpp.py index 68271f6f..7b0b2736 100644 --- a/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/irpp.py +++ b/openfisca_tunisia/model/prelevements_obligatoires/impot_revenu/irpp.py @@ -1,7 +1,5 @@ from __future__ import division -from numpy import logical_or as or_ - from openfisca_tunisia.model.base import * # noqa analysis:ignore @@ -60,7 +58,7 @@ def formula(foyer_fiscal, period): class nb_parents(Variable): value_type = float entity = FoyerFiscal - label = "Nombre de parents" + label = 'Nombre de parents' definition_period = YEAR def formula(foyer_fiscal, period): @@ -68,15 +66,15 @@ def formula(foyer_fiscal, period): TODO: Nombre de parents ''' return ( - (foyer_fiscal.declarant_principal('age', period) > 20) + (foyer_fiscal.declarant_principal('age', period) > 20) + + (foyer_fiscal.declarant_principal('age', period) > 20) ) class chef_de_famille(Variable): value_type = bool entity = FoyerFiscal - label = "Indicatrice de chef de famille" + label = 'Indicatrice de chef de famille' definition_period = YEAR set_input = set_input_dispatch_by_period @@ -104,10 +102,7 @@ def formula(foyer_fiscal, period): veuf = foyer_fiscal.declarant_principal('veuf', period = period) nb_enf = foyer_fiscal('nb_enf', period = period) chef_de_famille = ( - veuf | - (marie & male) | - (divorce & (nb_enf > 0)) # |  - # (marie & (not male)) | + veuf | (marie & male) | (divorce & (nb_enf > 0)) # | (marie & (not male)) | ) return chef_de_famille @@ -122,7 +117,7 @@ def formula(foyer_fiscal, period): class bic(Variable): value_type = float entity = FoyerFiscal - label = "Bénéfices industriels et commerciaux (BIC)" + label = 'Bénéfices industriels et commerciaux (BIC)' definition_period = YEAR def formula(foyer_fiscal, period): @@ -140,14 +135,14 @@ def formula(foyer_fiscal, period): class bic_ca_global(Variable): value_type = float entity = Individu - label = "Chiffre d’affaires global (BIC, cession de fond de commerce" + label = 'Chiffre d’affaires global (BIC, cession de fond de commerce' definition_period = YEAR def formula(foyer_fiscal, period): - """ + ''' Chiffre d’affaires global des personnes soumises au régime forfaitaire ayant cédé le fond de commerce - """ + ''' bic_ca_revente = foyer_fiscal('bic_ca_revente', period = period) bic_ca_autre = foyer_fiscal('bic_ca_autre', period = period) @@ -157,7 +152,7 @@ def formula(foyer_fiscal, period): class bic_res_cession(Variable): value_type = float entity = Individu - label = "Résultat (BIC, cession de fond de commerce)" + label = 'Résultat (BIC, cession de fond de commerce)' definition_period = YEAR def formula(foyer_fiscal, period): @@ -170,7 +165,7 @@ def formula(foyer_fiscal, period): class bic_benef_fiscal_cession(Variable): value_type = float entity = Individu - label = "Bénéfice fiscal (BIC, cession de fond de commerce)" + label = 'Bénéfice fiscal (BIC, cession de fond de commerce)' definition_period = YEAR def formula(foyer_fiscal, period): @@ -181,9 +176,9 @@ def formula(foyer_fiscal, period): def _bic_res_net(bic_benef_fiscal_cession, bic_part_benef_sp): - """ + ''' Résultat net BIC TODO: il manque le régime réel - """ + ''' return bic_benef_fiscal_cession + bic_part_benef_sp @@ -191,7 +186,7 @@ def _bic_res_net(bic_benef_fiscal_cession, bic_part_benef_sp): class bnc(Variable): value_type = float entity = FoyerFiscal - label = "Bénéfices des professions non commerciales (BNC)" + label = 'Bénéfices des professions non commerciales (BNC)' definition_period = YEAR def formula(foyer_fiscal, period): @@ -210,13 +205,13 @@ def formula(foyer_fiscal, period): class bnc_forf_benef_fiscal(Variable): value_type = float entity = Individu - label = "Bénéfice fiscal (régime forfaitaire en % des recettes brutes TTC)" + label = 'Bénéfice fiscal (régime forfaitaire en % des recettes brutes TTC)' definition_period = YEAR def formula(foyer_fiscal, period, parameters): - """ + ''' Bénéfice fiscal (régime forfaitaire, en % des recettes brutes TTC) - """ + ''' bnc_forfaitaire_recettes_brutes = foyer_fiscal('bnc_forfaitaire_recettes_brutes', period = period) part = parameters(period.start).impot_revenu.bnc.forf.part_forf return bnc_forfaitaire_recettes_brutes * part @@ -243,7 +238,7 @@ def formula(foyer_fiscal, period): class revenus_fonciers(Variable): value_type = float entity = FoyerFiscal - label = "Revenus fonciers" + label = 'Revenus fonciers' definition_period = YEAR def formula(foyer_fiscal, period): @@ -258,29 +253,31 @@ def formula(foyer_fiscal, period): class fon_forf_bati(Variable): value_type = float entity = FoyerFiscal - label = "Revenus fonciers net des immeubles bâtis" + label = 'Revenus fonciers net des immeubles bâtis' definition_period = YEAR def formula(foyer_fiscal, period, parameters): foncier_forfaitaire_batis_recettes = foyer_fiscal.declarant_principal( 'foncier_forfaitaire_batis_recettes', period = period) - foncier_forfaitaire_batis_reliquat = foyer_fiscal.declarant_principal( - 'foncier_forfaitaire_batis_reliquat', period = period) + # foncier_forfaitaire_batis_reliquat = foyer_fiscal.declarant_principal( + # 'foncier_forfaitaire_batis_reliquat', period = period) foncier_forfaitaire_batis_frais = foyer_fiscal.declarant_principal( 'foncier_forfaitaire_batis_frais', period = period) foncier_forfaitaire_batis_taxe = foyer_fiscal.declarant_principal( 'foncier_forfaitaire_batis_taxe', period = period) - P = parameters(period.start).impot_revenu.foncier.bati.deduction_frais + taux_deduction_frais = parameters(period.start).impot_revenu.foncier.bati.deduction_frais return max_( 0, - foncier_forfaitaire_batis_recettes * (1 - P) - foncier_forfaitaire_batis_frais - foncier_forfaitaire_batis_taxe + foncier_forfaitaire_batis_recettes * (1 - taux_deduction_frais) + - foncier_forfaitaire_batis_frais + - foncier_forfaitaire_batis_taxe ) class fon_forf_nbat(Variable): value_type = float entity = FoyerFiscal - label = "Revenus fonciers net des terrains non bâtis" + label = 'Revenus fonciers net des terrains non bâtis' definition_period = YEAR def formula(foyer_fiscal, period): @@ -301,7 +298,7 @@ def formula(foyer_fiscal, period): class tspr(Variable): value_type = float entity = FoyerFiscal - label = "Traitements, salaires, indemnités, pensions et rentes viagères" + label = 'Traitements, salaires, indemnités, pensions et rentes viagères' definition_period = YEAR def formula(foyer_fiscal, period): @@ -316,7 +313,7 @@ def formula(foyer_fiscal, period): class revenu_assimile_salaire(Variable): value_type = float entity = FoyerFiscal - label = "Revenu assimilé à des salaires" + label = 'Revenu assimilé à des salaires' definition_period = YEAR def formula(foyer_fiscal, period): @@ -328,21 +325,24 @@ def formula(foyer_fiscal, period): class smig(Variable): value_type = bool entity = FoyerFiscal - label = "Indicatrice de SMIG ou SMAG déduite du montant des salaires" + label = 'Indicatrice de SMIG ou SMAG déduite du montant des salaires' definition_period = YEAR def formula(foyer_fiscal, period, parameters): revenu_assimile_salaire = foyer_fiscal('revenu_assimile_salaire', period = period) smig_dec = foyer_fiscal.declarant_principal('smig_dec', period = period.first_month) smig_40h_mensuel = parameters(period.start).cotisations_sociales.gen.smig_40h_mensuel - smig = or_(smig_dec, revenu_assimile_salaire <= 12 * smig_40h_mensuel) + smig = ( + smig_dec + + (revenu_assimile_salaire <= 12 * smig_40h_mensuel) + ) return smig class revenu_assimile_salaire_apres_abattements(Variable): value_type = float entity = FoyerFiscal - label = "Revenu imposé comme des salaires net des abatements" + label = 'Revenu imposé comme des salaires net des abatements' definition_period = YEAR def formula(foyer_fiscal, period, parameters): @@ -362,7 +362,7 @@ def formula(foyer_fiscal, period, parameters): class revenu_assimile_pension_apres_abattements(Variable): value_type = float entity = FoyerFiscal - label = "Revenu assimilé à des pensions après abattements" + label = 'Revenu assimilé à des pensions après abattements' definition_period = YEAR def formula(foyer_fiscal, period, parameters): @@ -378,7 +378,7 @@ def formula(foyer_fiscal, period, parameters): class rvcm(Variable): value_type = float entity = FoyerFiscal - label = "Revenus de valeurs mobilières et de capitaux mobiliers" + label = 'Revenus de valeurs mobilières et de capitaux mobiliers' definition_period = YEAR def formula(foyer_fiscal, period): @@ -393,8 +393,15 @@ def formula(foyer_fiscal, period): capm_aut = foyer_fiscal.declarant_principal('capm_aut', period = period) return ( - capm_banq + capm_cent + capm_caut + capm_part + capm_oblig + capm_caisse + - capm_plfcc + capm_epinv + capm_aut + capm_banq + + capm_cent + + capm_caut + + capm_part + + capm_oblig + + capm_caisse + + capm_plfcc + + capm_epinv + + capm_aut ) @@ -417,10 +424,10 @@ def formula(foyer_fiscal, period, parameters): tspr = parameters(period.start).impot_revenu.tspr return ( - salaire_etranger * (1 - tspr.abat_sal) + - pension_etranger_non_transferee * (1 - tspr.abat_pen) + - pension_etranger_transferee * (1 - tspr.abat_pen_etr) + - autres_revenus_etranger + salaire_etranger * (1 - tspr.abat_sal) + + pension_etranger_non_transferee * (1 - tspr.abat_pen) + + pension_etranger_transferee * (1 - tspr.abat_pen_etr) + + autres_revenus_etranger ) @@ -432,7 +439,7 @@ def formula(foyer_fiscal, period, parameters): class rng(Variable): value_type = float entity = FoyerFiscal - label = "Revenu net global" + label = 'Revenu net global' definition_period = YEAR def formula(foyer_fiscal, period): @@ -467,18 +474,21 @@ def formula(foyer_fiscal, period, parameters): deductions = parameters(period).impot_revenu.deductions return max_( max_( - max_(compte_special_epargne_banque, deductions.banq.plaf) + - max_(compte_special_epargne_cent, deductions.cent.plaf), - deductions.banq.plaf - ) + - max_(emprunt_obligataire, deductions.oblig.plaf), deductions.oblig.plaf + ( + max_(compte_special_epargne_banque, deductions.banq.plaf) + + max_(compte_special_epargne_cent, deductions.cent.plaf) + ), + deductions.banq.plaf, + ) + + max_(emprunt_obligataire, deductions.oblig.plaf), + deductions.oblig.plaf, ) class deduction_famille(Variable): value_type = float entity = FoyerFiscal - label = "Déductions pour situation et charges de famille" + label = 'Déductions pour situation et charges de famille' definition_period = YEAR def formula(foyer_fiscal, period, parameters): @@ -504,7 +514,7 @@ def formula(foyer_fiscal, period, parameters): class deduction_rente(Variable): value_type = float entity = FoyerFiscal - label = "Arrérages et rentes payées à titre obligatoire et gratuit" + label = 'Arrérages et rentes payées à titre obligatoire et gratuit' definition_period = YEAR def formula(foyer_fiscal, period): @@ -563,7 +573,7 @@ def formula(foyer_fiscal, period, parameters): class deduction_smig(Variable): value_type = float entity = FoyerFiscal - label = "Déduction supplémentaire pour les salariés payés au SMIG et SMAG" + label = 'Déduction supplémentaire pour les salariés payés au SMIG et SMAG' definition_period = YEAR def formula(foyer_fiscal, period): @@ -575,7 +585,7 @@ def formula(foyer_fiscal, period): class revenu_net_imposable(Variable): value_type = float entity = FoyerFiscal - label = "Revenu net imposable" + label = 'Revenu net imposable' definition_period = YEAR def formula(foyer_fiscal, period): @@ -593,7 +603,7 @@ def formula(foyer_fiscal, period): class impot_revenu_brut(Variable): value_type = float entity = FoyerFiscal - label = "Impôt brut avant non-imposabilité" + label = 'Impôt brut avant non-imposabilité' definition_period = YEAR def formula(foyer_fiscal, period, parameters): @@ -626,7 +636,7 @@ def formula_2014(foyer_fiscal, period, parameters): class irpp(Variable): value_type = float entity = FoyerFiscal - label = "Impôt sur le revenu des personnes physiques" + label = 'Impôt sur le revenu des personnes physiques' definition_period = YEAR def formula(foyer_fiscal, period): @@ -638,7 +648,7 @@ def formula(foyer_fiscal, period): class irpp_mensuel_salarie(Variable): value_type = float entity = Individu - label = "Impôt sur le revenu des personnes physiques prélevé à la source pour les salariés" + label = 'Impôt sur le revenu des personnes physiques prélevé à la source pour les salariés' definition_period = MONTH def formula(individu, period, parameters): diff --git a/openfisca_tunisia/model/prestations_familiales.py b/openfisca_tunisia/model/prestations_familiales.py index 7eb76fee..62b9bfb9 100644 --- a/openfisca_tunisia/model/prestations_familiales.py +++ b/openfisca_tunisia/model/prestations_familiales.py @@ -1,29 +1,18 @@ from __future__ import division -from numpy import ( - round, maximum as max_, minimum as min_, logical_xor as xor_, logical_not as not_, - asanyarray, amin, amax, arange) -from openfisca_tunisia.model.base import * # noqa analysis:ignore +from numpy import ( + amax, + arange, + asanyarray, + # logical_not as not_, + maximum as max_, + minimum as min_, + round, + ) -def age_min(age, minimal_age=None): - ''' - Returns minimal age higher than or equal to a - ''' - if minimal_age is None: - minimal_age = 0 - ages = asanyarray(age) - ages = ages + (ages < minimal_age) * 9999 - return amin(ages, axis=1) - - -def age_max(age): - ''' - Returns minimal age higher than or equal to a - ''' - ages = asanyarray(age) - return amax(ages, axis=1) +from openfisca_tunisia.model.base import * # noqa F401 def ages_first_kids(age, nb=None): @@ -51,7 +40,7 @@ def ages_first_kids(age, nb=None): class salaire_unique(Variable): value_type = bool entity = Menage - label = "Indicatrice de salaire unique" + label = 'Indicatrice de salaire unique' definition_period = YEAR def formula(individu, period): @@ -65,9 +54,9 @@ def formula(individu, period): class prestations_familiales_enfant_a_charge(Variable): value_type = bool entity = Individu - label = "Enfant considéré à charge au sens des prestations familiales" + label = 'Enfant considéré à charge au sens des prestations familiales' definition_period = MONTH - reference = "http://www.cleiss.fr/docs/regimes/regime_tunisie_salaries.html" + reference = 'http://www.cleiss.fr/docs/regimes/regime_tunisie_salaries.html' # Jusqu'à l'âge de 16 ans sans conditions. # Jusqu'à l'âge de 18 ans pour les enfants en apprentissage qui ne perçoivent pas une rémunération @@ -82,20 +71,20 @@ class prestations_familiales_enfant_a_charge(Variable): # locales. def formula(individu, period, parameters): - age = individu('age', period) + # age = individu('age', period) invalide = individu('invalide', period) est_enfant = individu.has_role(Menage.ENFANT) - condition_enfant = or_( - (age_individu <= 16) + - (age_individu <= 18) * (salaire_individu <= .75 * smig_48h_mensuel) + condition_enfant = ( + (age_individu <= 16) + + (age_individu <= 18) * (salaire_individu <= .75 * smig_48h_mensuel) ) condition_jeune_etudiant_ou_invalide = ( # (age_individu <= 21) * etudiant ou soeur au foyer - (invalide_individu) + invalide ) - return or_(condition_enfant, condition_jeune_etudiant_ou_invalide) * est_enfant + return (condition_enfant + condition_jeune_etudiant_ou_invalide) * est_enfant class af_nbenf(Variable): @@ -117,7 +106,7 @@ def formula(menage, period, parameters): class af(Variable): value_type = float entity = Menage - label = "Allocations familiales" + label = 'Allocations familiales' definition_period = YEAR def formula(menage, period, parameters): @@ -137,15 +126,18 @@ def formula(menage, period, parameters): af_1enf = round(bm * parameters.af.taux.enf1, 2) af_2enf = round(bm * parameters.af.taux.enf2, 2) af_3enf = round(bm * parameters.af.taux.enf3, 2) - af_base = (af_nbenf >= 1) * af_1enf + \ - (af_nbenf >= 2) * af_2enf + (af_nbenf >= 3) * af_3enf + af_base = ( + (af_nbenf >= 1) * af_1enf + + (af_nbenf >= 2) * af_2enf + + (af_nbenf >= 3) * af_3enf + ) return 4 * af_base # annualisé class majoration_salaire_unique(Variable): value_type = float entity = Menage - label = "Majoration du salaire unique" + label = 'Majoration du salaire unique' definition_period = YEAR # TODO trimestrialiser def formula(menage, period, parameters): @@ -155,8 +147,11 @@ def formula(menage, period, parameters): af_1enf = round(P.salaire_unique.enf1, 3) # trimestrielle af_2enf = round(P.salaire_unique.enf2, 3) # trimestrielle af_3enf = round(P.salaire_unique.enf3, 3) # trimestrielle - af = (af_nbenf >= 1) * af_1enf + (af_nbenf >= 2) * \ - af_2enf + (af_nbenf >= 3) * af_3enf + af = ( + (af_nbenf >= 1) * af_1enf + + (af_nbenf >= 2) * af_2enf + + (af_nbenf >= 3) * af_3enf + ) return 4 * af * salaire_unique # annualisé @@ -181,13 +176,11 @@ def _af_cong_jeun_trav(age, _P): class contribution_frais_creche(Variable): value_type = float entity = Menage - label = "Contribution aux frais de crêche" + label = 'Contribution aux frais de crêche' definition_period = YEAR def formula(menage, period, parameters): month = period.last_month - salaire_imposable_holder = menage.members('salaire_imposable', period = month) - age_en_mois_holder = menage.members('age_en_mois', period = month) smig48 = parameters(period.start).cotisations_sociales.gen.smig_48h_mensuel # TODO: smig 48H # TODO rework and test # Une prise en charge peut être accordée à la mère exerçant une @@ -198,22 +191,22 @@ def formula(menage, period, parameters): # enfant et par mois pendant 11 mois. # , _option = {'age_en_mois': ENFS, 'sal': [CHEF, PART]} somme_salaire_imposable = ( - menage.personne_de_reference('salaire_imposable', period = month) + - menage.conjoint('salaire_imposable', period = month) + menage.personne_de_reference('salaire_imposable', period = month) + + menage.conjoint('salaire_imposable', period = month) ) age_en_mois = menage.members('age_en_mois', period = month) - P = parameters(period).prestations_familiales.creche + creche = parameters(period).prestations_familiales.creche age_en_mois_benjamin = menage.min(age_en_mois)[0] - elig_age = (age_en_mois_benjamin <= P.age_max) * (age_en_mois_benjamin >= P.age_min) - elig_sal = somme_salaire_imposable < P.plaf * smig48 - return P.montant * elig_age * elig_sal * min_(P.duree, 12 - age_en_mois_benjamin) + elig_age = (age_en_mois_benjamin <= creche.age_max) * (age_en_mois_benjamin >= creche.age_min) + elig_sal = somme_salaire_imposable < creche.plaf * smig48 + return creche.montant * elig_age * elig_sal * min_(creche.duree, 12 - age_en_mois_benjamin) class prestations_familiales(Variable): # TODO add _af_cong_naiss, af_cong_jeun_trav value_type = float entity = Menage - label = "Prestations familales" + label = 'Prestations familales' definition_period = YEAR def formula(menage, period): @@ -244,7 +237,7 @@ def _as_maternite(age, sal, _P): Assurance sociale - maternité TODO: à compléter ''' # P = _P.as.maternite - smig = _P.gen.smig + # smig = _P.gen.smig # return P.part*max(P.plaf_mult*smig,sal)*P.duree return 0 diff --git a/openfisca_tunisia/model/revenus/activite/non_salarie.py b/openfisca_tunisia/model/revenus/activite/non_salarie.py index 31a15e55..e15eb2ca 100644 --- a/openfisca_tunisia/model/revenus/activite/non_salarie.py +++ b/openfisca_tunisia/model/revenus/activite/non_salarie.py @@ -6,29 +6,29 @@ class TypesActivite(Enum): - neant = "Néant" - commercant = "Commerçant" - industriel = "Industriel" - prestataire_de_services = "Prestataire de services" - artisan = "Artisan" + neant = 'Néant' + commercant = 'Commerçant' + industriel = 'Industriel' + prestataire_de_services = 'Prestataire de services' + artisan = 'Artisan' multi_activites = "Plus d'une activité" class TypesCadreLegalActiviteEntreprise(Enum): exportation_totale = "Exportation totale dans le cadre du Code d'Incitations aux Investissements (CII)" - developpement_regional = "Développement régional" - developpement_agricole = "Développement agricole" - parcs_activites_economiques = "Parcs des activités économiques" - exportation_droit_commun = "Exportation dans le cadre du droit commun" - autres = "Autres (à préciser)" + developpement_regional = 'Développement régional' + developpement_agricole = 'Développement agricole' + parcs_activites_economiques = 'Parcs des activités économiques' + exportation_droit_commun = 'Exportation dans le cadre du droit commun' + autres = 'Autres (à préciser)' class TypesStructureDeclarationInvestissement(Enum): api = "Agence de Promotion de l'Industrie et de l'Innovation" - apia = "Agence de Promotion des Investissements Agricoles" - commissariat_regional_developpement_agricole = "Commissariat régional du développement agricole" - ont = "ONT" - autres = "Autre structure (à préciser)" + apia = 'Agence de Promotion des Investissements Agricoles' + commissariat_regional_developpement_agricole = 'Commissariat régional du développement agricole' + ont = 'ONT' + autres = 'Autre structure (à préciser)' class bic_reel(Variable): @@ -36,7 +36,7 @@ class bic_reel(Variable): possible_values = TypesActivite default_value = TypesActivite.neant entity = Individu - label = "Type d’activité (BIC)" + label = "Type d'activité (BIC)" definition_period = YEAR @@ -49,7 +49,7 @@ class bic_reel(Variable): class bic_societes_personnes(Variable): value_type = bool entity = Individu - label = "Indicatrice des sociétés de personnes et assimilées (BIC)" + label = 'Indicatrice des sociétés de personnes et assimilées (BIC)' definition_period = YEAR @@ -58,29 +58,29 @@ class cadre_legal(Variable): default_value = TypesCadreLegalActiviteEntreprise.developpement_regional # Développement régional possible_values = TypesCadreLegalActiviteEntreprise entity = Individu - label = "Cadre légal de l’activité de l’entreprise" + label = "Cadre légal de l'activité de l'entreprise" definition_period = YEAR class bic_reel_res(Variable): value_type = int entity = Individu - label = "Résultat comptable (BIC, régime réel)" + label = 'Résultat comptable (BIC, régime réel)' definition_period = YEAR class bic_forfaitaire_resultat(Variable): value_type = int entity = Individu - label = "Résultat (BIC, régime forfaitaire, cession de fonds de commerce)" + label = 'Résultat (BIC, régime forfaitaire, cession de fonds de commerce)' definition_period = YEAR class bic_societes_personnes_resultat(Variable): value_type = int entity = Individu - label = "Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées " \ - "exerçant dans le secteur industriel et commercial (BIC)" + label = 'Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées ' \ + 'exerçant dans le secteur industriel et commercial (BIC)' definition_period = YEAR @@ -89,7 +89,7 @@ class structure_declaration_investissement(Variable): possible_values = TypesStructureDeclarationInvestissement default_value = TypesStructureDeclarationInvestissement.api entity = Individu - label = "Structure auprès de laquelle la déclaration d’investissement a été déposée" + label = "Structure auprès de laquelle la déclaration d'investissement a été déposée" definition_period = YEAR @@ -111,7 +111,7 @@ class structure_declaration_investissement(Variable): class bic_res_fiscal(Variable): value_type = int entity = Individu - label = "Résultat fiscal (BIC, régime réel)" + label = 'Résultat fiscal (BIC, régime réel)' definition_period = YEAR @@ -121,21 +121,20 @@ class bic_res_fiscal(Variable): class bic_ca_revente(Variable): value_type = int entity = Individu - label = "Chiffre d’affaires global au titre des activités d’achat en vue de la revente " \ - "et les activités de transformation (BIC, régime forfaitaire, cession de fonds de commerce)" + label = "Chiffre d'affaires global au titre des activités d'achat en vue de la revente et les activités de transformation (BIC, régime forfaitaire, cession de fonds de commerce)" definition_period = YEAR class bic_ca_autre(Variable): value_type = int entity = Individu - label = "Chiffre d’affaires global au titre d’autres activités (BIC, régime forfaitaire, cession de fonds de commerce)" + label = 'Chiffre d’affaires global au titre d’autres activités (BIC, régime forfaitaire, cession de fonds de commerce)' definition_period = YEAR class bic_depenses(Variable): value_type = int - label = "Total des dépenses (BIC, cession de fonds de commerce)" + label = 'Total des dépenses (BIC, cession de fonds de commerce)' entity = Individu definition_period = YEAR @@ -143,7 +142,7 @@ class bic_depenses(Variable): class bic_pv_cession(Variable): value_type = int entity = Individu - label = "Plue-value de cession du fond de commerce (BIC, régime forfaitaire, cession de fonds de commerce)" + label = 'Plue-value de cession du fond de commerce (BIC, régime forfaitaire, cession de fonds de commerce)' definition_period = YEAR @@ -153,8 +152,8 @@ class bic_pv_cession(Variable): class bic_part_benef_sp(Variable): value_type = int - label = "Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées exerçant " \ - "dans le secteur industriel et commercial" + label = 'Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées exerçant ' \ + 'dans le secteur industriel et commercial' entity = Individu definition_period = YEAR @@ -174,7 +173,7 @@ class bic_part_benef_sp(Variable): class bnc_reel_res_fiscal(Variable): value_type = int entity = Individu - label = "Résultat fiscal (BNC, régime réel)" + label = 'Résultat fiscal (BNC, régime réel)' definition_period = YEAR @@ -187,7 +186,7 @@ class bnc_reel_res_fiscal(Variable): class bnc_forfaitaire_recettes_brutes(Variable): value_type = int - label = "Recettes globales brutes TTC (BNC, assiette forfaitaire)" + label = 'Recettes globales brutes TTC (BNC, assiette forfaitaire)' entity = Individu definition_period = YEAR @@ -203,8 +202,8 @@ class bnc_forfaitaire_recettes_brutes(Variable): class bnc_part_benef_sp(Variable): value_type = int entity = Individu - label = "Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées" \ - "qui réalisent des bénéfices non commerciaux (BNC)" + label = 'Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées' \ + 'qui réalisent des bénéfices non commerciaux (BNC)' definition_period = YEAR @@ -222,7 +221,7 @@ class bnc_part_benef_sp(Variable): class beap_reel_res_fiscal(Variable): value_type = int - label = "Résultat fiscal (BEAP, régime réel)" + label = 'Résultat fiscal (BEAP, régime réel)' entity = Individu definition_period = YEAR @@ -234,13 +233,14 @@ class beap_reel_res_fiscal(Variable): class beap_reliq_rec(Variable): value_type = int - label = "Recettes brutes (BEAP, bénéfice comme reliquat positif entre recette et dépenses)" + label = 'Recettes brutes (BEAP, bénéfice comme reliquat positif entre recette et dépenses)' entity = Individu definition_period = YEAR + class beap_reliq_stock(Variable): value_type = int - label = "Stocks (BEAP, bénéfice comme reliquat positif entre recette et dépenses)" + label = 'Stocks (BEAP, bénéfice comme reliquat positif entre recette et dépenses)' entity = Individu definition_period = YEAR @@ -250,7 +250,7 @@ class beap_reliq_stock(Variable): class beap_reliq_dep_ex(Variable): value_type = int - label = "Dépenses d’exploitation (BEAP, bénéfice comme reliquat positif entre recette et dépenses)" + label = "Dépenses d'exploitation (BEAP, bénéfice comme reliquat positif entre recette et dépenses)" entity = Individu definition_period = YEAR @@ -261,7 +261,7 @@ class beap_reliq_dep_ex(Variable): class beap_reliq_benef_fiscal(Variable): value_type = int - label = "Bénéfice fiscal (BEAP, bénéfice comme reliquat positif entre recette et dépenses)" + label = 'Bénéfice fiscal (BEAP, bénéfice comme reliquat positif entre recette et dépenses)' entity = Individu definition_period = YEAR @@ -271,7 +271,7 @@ class beap_reliq_benef_fiscal(Variable): class beap_monogr(Variable): value_type = int - label = "Bénéfice sur la base de monographies sectorielles (BEAP)" + label = 'Bénéfice sur la base de monographies sectorielles (BEAP)' entity = Individu definition_period = YEAR # D/ Part dans le bénéfice ou dans la perte des sociétés de personnes et @@ -280,7 +280,7 @@ class beap_monogr(Variable): class beap_part_benef_sp(Variable): value_type = int - label = "Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées " \ - "exerçant dans le secteur agricole et de pêche (BEAP)" + label = 'Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées ' \ + 'exerçant dans le secteur agricole et de pêche (BEAP)' entity = Individu definition_period = YEAR diff --git a/openfisca_tunisia/model/revenus/activite/salarie.py b/openfisca_tunisia/model/revenus/activite/salarie.py index c25cfea3..3db10d51 100644 --- a/openfisca_tunisia/model/revenus/activite/salarie.py +++ b/openfisca_tunisia/model/revenus/activite/salarie.py @@ -6,7 +6,7 @@ class salaire_de_base(Variable): value_type = float - label = "Salaire de base" + label = 'Salaire de base' entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -14,7 +14,7 @@ class salaire_de_base(Variable): class primes(Variable): value_type = float - label = "Primes" + label = 'Primes' entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -22,7 +22,7 @@ class primes(Variable): class salaire_en_nature(Variable): value_type = float - label = "Avantages en nature assimilables à des salaires" + label = 'Avantages en nature assimilables à des salaires' entity = Individu definition_period = MONTH set_input = set_input_divide_by_period @@ -30,6 +30,6 @@ class salaire_en_nature(Variable): class smig_dec(Variable): value_type = bool - label = "Salarié déclarant percevoir le SMIG ou le SMAG" + label = 'Salarié déclarant percevoir le SMIG ou le SMAG' entity = Individu definition_period = MONTH diff --git a/openfisca_tunisia/model/revenus/autres_revenus.py b/openfisca_tunisia/model/revenus/autres_revenus.py index 97d3dfae..bfcf885f 100644 --- a/openfisca_tunisia/model/revenus/autres_revenus.py +++ b/openfisca_tunisia/model/revenus/autres_revenus.py @@ -39,6 +39,6 @@ class autres_revenus_etranger(Variable): class deficits_anterieurs_non_deduits(Variable): value_type = int - label = "Déficits des années antérieures non déduits" + label = 'Déficits des années antérieures non déduits' entity = Individu definition_period = YEAR diff --git a/openfisca_tunisia/model/revenus/capital/foncier.py b/openfisca_tunisia/model/revenus/capital/foncier.py index 2aa51663..7e0d4175 100644 --- a/openfisca_tunisia/model/revenus/capital/foncier.py +++ b/openfisca_tunisia/model/revenus/capital/foncier.py @@ -9,7 +9,7 @@ class foncier_reel_resultat_fiscal(Variable): value_type = int entity = Individu - label = "Résultat fiscal (revenus fonciers, régime réel)" + label = 'Résultat fiscal (revenus fonciers, régime réel)' definition_period = YEAR @@ -18,29 +18,28 @@ class foncier_reel_resultat_fiscal(Variable): class foncier_forfaitaire_batis_recettes(Variable): value_type = int entity = Individu - label = "Recettes brutes réalisées TTC (revenus fonciers, base forfaitaire, immeubles bâtis)" + label = 'Recettes brutes réalisées TTC (revenus fonciers, base forfaitaire, immeubles bâtis)' definition_period = YEAR class foncier_forfaitaire_batis_reliquat(Variable): value_type = int entity = Individu - label = "Reliquat (revenus fonciers, base forfaitaire, immeubles bâtis)" + label = 'Reliquat (revenus fonciers, base forfaitaire, immeubles bâtis)' definition_period = YEAR class foncier_forfaitaire_batis_frais(Variable): value_type = int entity = Individu - label = "Frais d’entretien et de réparation justifiés à déduire " \ - "(revenus fonciers, base forfaitaire, immeubles bâtis)" + label = "Frais d'entretien et de réparation justifiés à déduire (revenus fonciers, base forfaitaire, immeubles bâtis)" definition_period = YEAR class foncier_forfaitaire_batis_taxe(Variable): value_type = int entity = Individu - label = "Taxe effectivement payée à déduire (revenus fonciers, base forfaitaire, immeubles bâtis)" + label = 'Taxe effectivement payée à déduire (revenus fonciers, base forfaitaire, immeubles bâtis)' definition_period = YEAR @@ -49,26 +48,26 @@ class foncier_forfaitaire_batis_taxe(Variable): class foncier_forfaitaire_non_batis_recettes(Variable): value_type = int entity = Individu - label = "Recettes brutes réalisées TTC (revenus fonciers, base forfaitaire, terrains non bâtis)" + label = 'Recettes brutes réalisées TTC (revenus fonciers, base forfaitaire, terrains non bâtis)' definition_period = YEAR class foncier_forfaitaire_non_batis_depenses(Variable): value_type = int entity = Individu - label = "Dépenses justifiées à déduire (revenus fonciers, base forfaitaire, terrains non bâtis)" + label = 'Dépenses justifiées à déduire (revenus fonciers, base forfaitaire, terrains non bâtis)' definition_period = YEAR class foncier_forfaitaire_non_batis_taxe(Variable): value_type = int entity = Individu - label = "Taxe effectivement payée à déduire (revenus fonciers, base forfaitaire, terrains non bâtis)" + label = 'Taxe effectivement payée à déduire (revenus fonciers, base forfaitaire, terrains non bâtis)' definition_period = YEAR class foncier_societes_personnes(Variable): value_type = int entity = Individu - label = "Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées qui réalisent des revenus fonciers" + label = 'Part dans le bénéfice ou dans la perte des sociétés de personnes et assimilées qui réalisent des revenus fonciers' definition_period = YEAR diff --git a/openfisca_tunisia/model/revenus/capital/valeurs_mobilieres_et_capitaux_mobiliers.py b/openfisca_tunisia/model/revenus/capital/valeurs_mobilieres_et_capitaux_mobiliers.py index f99eede1..78564a69 100644 --- a/openfisca_tunisia/model/revenus/capital/valeurs_mobilieres_et_capitaux_mobiliers.py +++ b/openfisca_tunisia/model/revenus/capital/valeurs_mobilieres_et_capitaux_mobiliers.py @@ -7,21 +7,21 @@ class valm_nreg(Variable): value_type = int - label = "Revenus des valeurs mobilières autres que ceux régulièrement distribués" + label = 'Revenus des valeurs mobilières autres que ceux régulièrement distribués' entity = Individu definition_period = YEAR class valm_jpres(Variable): value_type = int - label = "Jetons de présence" + label = 'Jetons de présence' entity = Individu definition_period = YEAR class valm_aut(Variable): value_type = int - label = "Autres rémunérations assimilées" + label = 'Autres rémunérations assimilées' entity = Individu definition_period = YEAR @@ -31,49 +31,49 @@ class valm_aut(Variable): class capm_banq(Variable): value_type = int - label = "Intérêts bruts des comptes spéciaux d’épargne ouverts auprès des banques" + label = "Intérêts bruts des comptes spéciaux d'épargne ouverts auprès des banques" entity = Individu definition_period = YEAR class capm_cent(Variable): value_type = int - label = "Intérêts bruts des comptes spéciaux d’épargne ouverts auprès de la CENT" + label = "Intérêts bruts des comptes spéciaux d'épargne ouverts auprès de la CENT" entity = Individu definition_period = YEAR class capm_caut(Variable): value_type = int - label = "Intérêts des créances et intérêts et rémunérations des cautionnements" + label = 'Intérêts des créances et intérêts et rémunérations des cautionnements' entity = Individu definition_period = YEAR class capm_part(Variable): value_type = int - label = "Intérêts des titres de participation" + label = 'Intérêts des titres de participation' entity = Individu definition_period = YEAR class capm_oblig(Variable): value_type = int - label = "Intérêts des emprunts obligataires" + label = 'Intérêts des emprunts obligataires' entity = Individu definition_period = YEAR class capm_caisse(Variable): value_type = int - label = "Intérêts des bons de caisse" + label = 'Intérêts des bons de caisse' entity = Individu definition_period = YEAR class capm_plfcc(Variable): value_type = int - label = "Revenus des parts et de liquidation du fonds commun des créances" + label = 'Revenus des parts et de liquidation du fonds commun des créances' entity = Individu definition_period = YEAR @@ -87,6 +87,6 @@ class capm_epinv(Variable): class capm_aut(Variable): value_type = int - label = "Autres intérêts" + label = 'Autres intérêts' entity = Individu definition_period = YEAR diff --git a/openfisca_tunisia/model/revenus/remplacement/retraite.py b/openfisca_tunisia/model/revenus/remplacement/retraite.py index 5b099b5f..b69ae80e 100644 --- a/openfisca_tunisia/model/revenus/remplacement/retraite.py +++ b/openfisca_tunisia/model/revenus/remplacement/retraite.py @@ -5,13 +5,13 @@ class revenu_assimile_pension(Variable): value_type = int - label = "Revenus assimilés à des pensions (pensions et rentes viagères)" + label = 'Revenus assimilés à des pensions (pensions et rentes viagères)' entity = Individu definition_period = YEAR class avantages_nature_assimile_pension(Variable): value_type = int - label = "Avantages en nature assimilables à des pensions" + label = 'Avantages en nature assimilables à des pensions' entity = Individu definition_period = YEAR diff --git a/openfisca_tunisia/reforms/de_net_a_imposable.py b/openfisca_tunisia/reforms/de_net_a_imposable.py index b82bbb3e..62715d85 100644 --- a/openfisca_tunisia/reforms/de_net_a_imposable.py +++ b/openfisca_tunisia/reforms/de_net_a_imposable.py @@ -1,10 +1,6 @@ from __future__ import division from openfisca_tunisia.model.base import * -from openfisca_tunisia import entities - -from numpy.ma.testutils import assert_not_equal -from urllib.request import Request try: from scipy.optimize import fsolve @@ -36,11 +32,10 @@ def calculate_net_from(salaire_imposable, individu, period, requested_variable_n class salaire_imposable(Variable): value_type = float entity = Individu - label = "Salaire imposable" + label = 'Salaire imposable' definition_period = MONTH set_input = set_input_divide_by_period - def formula(individu, period): # Use numerical inversion to calculate 'salaire_imposable' from 'salaire_net_a_payer' net = individu.get_holder('salaire_net_a_payer').get_array(period) diff --git a/openfisca_tunisia/reforms/de_net_a_salaire_de_base.py b/openfisca_tunisia/reforms/de_net_a_salaire_de_base.py index 6617d499..f8d67a4e 100644 --- a/openfisca_tunisia/reforms/de_net_a_salaire_de_base.py +++ b/openfisca_tunisia/reforms/de_net_a_salaire_de_base.py @@ -36,7 +36,7 @@ def calculate_net_from(salaire_de_base, individu, period, requested_variable_nam class salaire_de_base(Variable): value_type = float entity = Individu - label = "Salaire de base" + label = 'Salaire de base' definition_period = MONTH set_input = set_input_divide_by_period diff --git a/openfisca_tunisia/scenarios.py b/openfisca_tunisia/scenarios.py index 48ca08ed..b3414066 100644 --- a/openfisca_tunisia/scenarios.py +++ b/openfisca_tunisia/scenarios.py @@ -36,8 +36,8 @@ def init_single_entity(scenario, axes = None, enfants = None, foyer_fiscal = Non menage_nth.setdefault('enfants', []).append(id) count_so_far += len(group) - foyers_fiscaux["ff{}".format(nth)] = foyer_fiscal_nth - menages["m{}".format(nth)] = menage_nth + foyers_fiscaux['ff{}'.format(nth)] = foyer_fiscal_nth + menages['m{}'.format(nth)] = menage_nth dict = { 'period': period, diff --git a/openfisca_tunisia/tunisia_taxbenefitsystem.py b/openfisca_tunisia/tunisia_taxbenefitsystem.py index ffcd0ed8..95c98cb1 100644 --- a/openfisca_tunisia/tunisia_taxbenefitsystem.py +++ b/openfisca_tunisia/tunisia_taxbenefitsystem.py @@ -2,7 +2,7 @@ import os from openfisca_core.taxbenefitsystems import TaxBenefitSystem -from openfisca_tunisia import entities, scenarios +from openfisca_tunisia import entities COUNTRY_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -11,8 +11,8 @@ class TunisiaTaxBenefitSystem(TaxBenefitSystem): - """Tunisian tax benefit system""" - CURRENCY = "DT" # code iso is TND see https://fr.wikipedia.org/wiki/Dinar_tunisien + '''Tunisian tax benefit system''' + CURRENCY = 'DT' # code iso is TND see https://fr.wikipedia.org/wiki/Dinar_tunisien REFORMS_DIR = os.path.join(COUNTRY_DIR, 'reformes') REV_TYP = None diff --git a/setup.py b/setup.py index 62d0ca35..d3786b8c 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ 'requests >=2.28.2, <3.0', 'yamllint >=1.30.0, <2.0' ], - 'notebook' : [ + 'notebook': [ 'ipykernel >= 4.8', 'jupyter-client >= 5.2', 'matplotlib >= 2.2', @@ -55,7 +55,7 @@ 'nbformat >= 4.4', 'pandas >= 0.22.0', ], - 'survey' : [ + 'survey': [ 'OpenFisca-Survey-Manager >=0.34,<1.0', ], }, diff --git a/tests/base.py b/tests/base.py index b4a0d832..55c3cb27 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,4 +1,3 @@ -from openfisca_core.tools import assert_near from openfisca_tunisia import TunisiaTaxBenefitSystem diff --git a/tests/test_prestations_familiales.py b/tests/test_prestations_familiales.py index 89a52b80..daf6928c 100644 --- a/tests/test_prestations_familiales.py +++ b/tests/test_prestations_familiales.py @@ -1,4 +1,4 @@ -from openfisca_tunisia.model.base import * +from openfisca_tunisia.model.base import * # noqa F401 from openfisca_tunisia.scenarios import init_single_entity from tests import base