Skip to content

TypeError à l'utilisation du tracer sur test YAML #2387

@sandcha

Description

@sandcha

Hello hello !

Je suis le fan numéro un d'OpenFisca, mais je viens de rencontrer un problème.
Ce problème est connecté à openfisca/openfisca-core#1293.

Qu'ai-je fait ?

J'ai voulu faire une démo de l'arbre de calcul disponible à des collègues voulant debugger un calcul openfisca-france.

À quoi m'attendais-je ?

Sur la dernière version d'openfisca-france (169.5.0) voir l'arbre de calcul pour un test choisi au hasard dans la base de tests. Commande utilisée :

openfisca test tests/formulas/aides_logement.yaml -n "Aides logements - les enfants de moins de 21 ans sont considérés à charge" -c openfisca_france -v

Que s'est-il passé en réalité ?

  • Problème d'information à la marge de cette issue
    J'avais encore oublié que la trace, même en la présence de l'option -v ne s'affichait que si le test échouait parce qu'on hérite du fonctionnement de pytest me semble-t-il (mais aucune information ne me l'a précisé quand je n'ai pas eu de trace 😢 et pour la n-ième fois, j'ai douté entre un problème provenant du code et un problème entre la table et la chaise).

  • Erreur
    Dans le test YAML, j'ai remplacé arbitrairement l'output attendu de 1 à 2 pour le faire échouer. Et là, patatras : TypeError: '>' not supported between instances of 'int' and 'NoneType' 😵
    Et cela proviendrait de la trace parce qu'il y a ensuite :

    • ../../../.local/share/virtualenvs/fr169-5/lib/python3.11/site-packages/openfisca_core/tracers/computation_log.py:58: TypeError
    • et que l'erreur ne survient pas si on retire l'option -v à notre commande openfisca test

Voici des informations qui peuvent aider à reproduire le problème :

Le problème ne se produit pas avant openfisca-france v169 qui bump la version d'openfisca-core.
À première vue, il s'agit d'un bug d'openfisca-core.

Détail de la trace ➡️

(...)
self = <openfisca_core.tracers.computation_log.ComputationLog object at 0x11eb6a810>
node = TraceNode(name='al_nb_personnes_a_charge', period=Period((<DateUnit.MONTH: 'month'>, Instant((2015, 1, 1)), 1)), paren...[], value=9447.21, start=0.0, end=0.0)], value=array([1], dtype=int32), start=1731580560.159484, end=1731580561.962954)
depth = 1, aggregate = False, max_depth = None

    def _get_node_log(
        self,
        node: t.TraceNode,
        depth: int,
        aggregate: bool,
        max_depth: int = sys.maxsize,
    ) -> list[str]:
>       if depth > max_depth:
E       TypeError: '>' not supported between instances of 'int' and 'NoneType'

aggregate  = False
depth      = 1
max_depth  = None
node       = TraceNode(name='al_nb_personnes_a_charge', period=Period((<DateUnit.MONTH: 'month'>, Instant((2015, 1, 1)), 1)), paren...[], value=9447.21, start=0.0, end=0.0)], value=array([1], dtype=int32), start=1731580560.159484, end=1731580561.962954)
self       = <openfisca_core.tracers.computation_log.ComputationLog object at 0x11eb6a810>

../../../.local/share/virtualenvs/fr169-5/lib/python3.11/site-packages/openfisca_core/tracers/computation_log.py:58: TypeError
=========================== short test summary info ============================
FAILED tests/formulas/aides_logement.yaml:: - TypeError: '>' not supported be...
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============================== 1 failed in 6.70s ===============================

Contexte

Je m'identifie plus en tant que :

  • Contributeur·e : je contribue à OpenFisca France.
  • Développeur·e : je crée des outils qui utilisent OpenFisca France.
  • Mainteneur·e : j'intègre les contributions à OpenFisca France.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions