Résolution d'une erreur obscure AttributeError: 'NoneType' object has no attribute 'total_seconds'
dans l'import SIAE depuis la MAJ django 4.
#1043
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Quoi ?
Résolution d'une erreur obscure
AttributeError: 'NoneType' object has no attribute 'total_seconds'
dans l'import SIAE depuis la MAJ django 4.Pourquoi ?
L'erreur se produit depuis la récente MAJ django 4 et dépendances. Elle se produit même avec pandas
1.3.5
(nous sommes actuellement sur la1.3.4
).Le bug semble connu côté pandas et non résolu : pandas-dev/pandas#43516
Il semble se produire quand on itère sur les rows d'une df contenant des timezone aware datetimes.
Comment ?
La source de l'erreur fut difficile à trouver car l'erreur se produit au moment de l'itération sur la df et non au moment où les datetimes problématiques sont créées dans la df.
La solution est un pur contournement : on transforme les datetimes en "timezone aware" datetimes uniquement à la volée, sans jamais les restocker dans la df pour éviter l'erreur.
J'avoue ne pas avoir complètement compris les tenants et les aboutissements mais ce fix me parait suffisant, surtout parce qu'il me débloque sur un autre sujet.