Common base class for CEL exceptions, without breaking the existing builtin mappings
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Domaine
- backend-api-design, documentation
Piste de recherche
Commencez par examiner python/cel/exceptions.py, map_execution_error_to_python, cel.pyi et le guide pratique de gestion des erreurs. Suivez les mappages existants des erreurs d’exécution et d’analyse, puis vérifiez que la nouvelle hiérarchie préserve la gestion des exceptions intégrées, permette d’intercepter cel.CelError et soit documentée dans le stub et dans le tableau du guide pratique.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Follow-up promised when closing #23. Execution errors are mapped to the idiomatic builtin (RuntimeError, TypeError, KeyError, IndexError, ZeroDivisionError, OverflowError) and parse errors to ValueError, which is right for each case but means "did the rule run and fail" needs a five-clause except:
except (RuntimeError, TypeError, KeyError, IndexError, ArithmeticError):
Proposal
Add a cel.CelError hierarchy whose members also inherit from the builtin they replace, so nothing existing breaks:
class CelError(Exception): ...
class CelParseError(CelError, ValueError): ...
class CelRuntimeError(CelError, RuntimeError): ...
class CelTypeError(CelError, TypeError): ...
class CelKeyError(CelError, KeyError): ...
class CelIndexError(CelError, IndexError): ...
class CelZeroDivisionError(CelError, ZeroDivisionError): ...
class CelOverflowError(CelError, OverflowError): ...
except TypeError keeps working; except cel.CelError catches everything CEL raised; except cel.CelParseError separates a bad rule from a failed check.
Implementation notes
PyO3's create_exception! only takes a single base, so define the classes in a small python/cel/exceptions.py and have map_execution_error_to_python look them up from the module once (a GILOnceCell<Py<PyType>> per class) and raise with PyErr::from_type. Add them to cel.pyi and to the error-handling how-to, whose current table becomes the mapping between the two hierarchies.
- Langage dominant
- Python
- Étoiles
- 43
- Forks
- 4
- Merge moyen
- 12 h 37 min
- PR mergées (30 j)
- 11
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de hardbyte/python-common-expression-language
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
hardbyte/python-common-expression-language#47 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
hardbyte/python-common-expression-language#57 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
hardbyte/python-common-expression-language#50 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
hardbyte/python-common-expression-language#48 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
hardbyte/python-common-expression-language#46 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de hardbyte/python-common-expression-language
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
bot-found bug priority: P3
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
madenvel/KalinkaPlayer#179 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
ls1intum/edutelligence#1098 ·
Les mainteneurs répondent en général sous 1 jour