Skip to content

Commit

Permalink
Fix renumbering in catala file parsing (#77)
Browse files Browse the repository at this point in the history
* fix renumbering in catala file parsing

* add test case
  • Loading branch information
rprimet authored Oct 17, 2023
1 parent 4107210 commit 9cd76f8
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/catleg/parse_catala_markdown.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def _parse_catala_doc(
text.append(
renderer.render(
curr_elem.next_sibling.to_tokens(),
options={},
options={"mdformat": {"number": True}},
env={},
)
)
Expand Down
71 changes: 71 additions & 0 deletions tests/test_skeleton.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from io import StringIO

from catleg.parse_catala_markdown import parse_catala_file
from catleg.query import _article_from_legifrance_reply
from catleg.skeleton import _formatted_atricle

Expand All @@ -14,3 +17,71 @@ def test_no_article_renumbering():
assert (
"3. Le bénéfice ou revenu net de chacune des catégories" in formatted_article_md
)


# Second regression test for https://github.com/CatalaLang/catleg/issues/71
# It would make sense to have this in test_catala_parsing.py but since
# there is another regression test for issue 71, let's group those cases here.
def test_no_article_renumbering_in_catala_file_parsing():
text = """
######## Article 12 | LEGIARTI000006302214
L'impôt est dû chaque année à raison des bénéfices ou revenus que le
contribuable réalise ou dont il dispose au cours de la même année.
######## Article 13 | LEGIARTI000044983201
1. Le bénéfice ou revenu imposable est constitué par l'excédent du produit brut,
y compris la valeur des profits et avantages en nature, sur les dépenses
effectuées en vue de l'acquisition et de la conservation du revenu.
2. Le revenu global net annuel servant de base à l'impôt sur le revenu est
déterminé en totalisant les bénéfices ou revenus nets mentionnés aux I à VI
de la 1re sous-section de la présente section ainsi que les revenus, gains
nets, profits, plus-values et créances pris en compte dans l'assiette de ce
revenu global net en application des 3, 6 bis et 6 ter de l'article 158,
compte tenu, le cas échéant, du montant des déficits visés au I de l'article
156, des charges énumérées au II dudit article et de l'abattement prévu à
l'article 157 bis.
```catala
champ d'application TraitementsSalairesDéclarant:
définition revenu_brut_global égal à
# Pensions, retraites, rentes avec abattement de droit commun article 158 5)
# a) : attention, garder en synchronisation avec la liste l'article 79
revenus.pensions_retraites_rentes
+ revenus.pensions_alimentaires_perçues
+ revenus.pensions_invalidité
- abattement_pensions_retraites_rentes
# Pensions, retraites, rentes sans abattement de droit commun article
# 158 5) a) :
+ revenus.pensions_en_capital_plans_épargne_retraite
# Traitements et salaire
+ traitements_salaires
- déduction_frais_professionnels
champ d'application TraitementsSalairesFoyerFiscal:
définition revenu_brut_global égal à
(somme argent de résultats.revenu_brut_global pour résultats parmi
déclarations_avec_résultats_traitements_salaires)
+ rentes_viagères_titre_onéreux
```
3. Le bénéfice ou revenu net de chacune des catégories de revenus visées au 2
est déterminé distinctement suivant les règles propres à chacune d'elles.
Le résultat d'ensemble de chaque catégorie de revenus est obtenu en totalisant,
s'il y a lieu, le bénéfice ou revenu afférent à chacune des entreprises,
exploitations ou professions ressortissant à cette catégorie et déterminé dans
les conditions prévues pour cette dernière.
4. Pour l'application du 3, il est fait état, le cas échéant, du montant des
bénéfices correspondant aux droits que le contribuable ou les membres du
foyer fiscal désignés aux 1 et 3 de l'article 6 possèdent en tant qu'associés
ou membres de sociétés ou groupements soumis au régime fiscal des sociétés de
personnes mentionné à l'article 8.
"""
articles = parse_catala_file(StringIO(text))
article = next(elem for elem in articles if elem.id == "LEGIARTI000044983201")
assert "1. Le bénéfice ou revenu imposable est constitué" in article.text
assert "2. Le revenu global net annuel" in article.text
assert "3. Le bénéfice ou revenu net de chacune des catégories" in article.text

0 comments on commit 9cd76f8

Please sign in to comment.