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 :

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.

Edited by Amélie Rondot