Erreur non explicite "General error" retranscrite dans le rapport de validation de validata_core en cas de nom erroné de colonne relative à un custom check
Contexte
En complément à l'issue #41, pour le schéma Délibérations, lorsque l'on nomme de manière erronée la colonne BUDGET_ANNEE, relative au custom_check CohesiveColumnsValue, le rapport de validation de validata_core relate une General error :
Rapport = {'date': '2022-12-14T16:36:20.418016+00:00',
'errors': [{'code': 'general-error',
'description': 'There is an error.',
'message': 'General error: Field BUDGET_ANNEE is not in the row',
'name': 'General Error',
'note': 'Field BUDGET_ANNEE is not in the row',
'tags': []}],
'stats': {'errors': 1, 'tasks': 0},
'tasks': [],
'time': 0.043,
'valid': False,
'version': '4.38.0'}
Reproduction du problème :
Schema utilisé : Délibérations
Jeu de données utilisés :
- deliberation_invalide_nom_errone_sur_cohesive_columns_value.csv : donne un rapport de validation non explicite
- deliberation_invalide_nom_errone_sur_nomenclature_actes_value.csv : donne un rapport de validation conforme au comportement attendu
Problème
L'erreur observée ci-dessus General error: Field BUDGET_ANNEE is not in the row est provoquée lors de la validation des lignes, dans l'appel à la méthode validate_row() du custom check CohesiveColumnsValue, par une exception lancée au moment de la création de l'erreur CohesiveColumnsValueError par la méthode de classe frictionless.errors.cells.CellError.from_row()
A ce moment les erreurs de type "check-error" ont déjà été construites sans problème.
Proposition de solutions
-
Avant d'effectuer la validation de le ligne, (en wrapper de la méthode validate_row() par exemple), vérifier que les colonnes impliquées dans le custom check ont été nommées conformément au schéma.
Ce qui permettrait d'ignorer le custom_check si le nom de la colonne est erroné. Le rapport de validation remonterait ainsi une erreur de type "check-error" sur le fait que la colonne impliquée dans ce custom_check est mal nommée.