Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Common base class for CEL exceptions, without breaking the existing builtin mappings

Ouverte
#49 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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
Stack technique
python, rust

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

enhancement

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de hardbyte/python-common-expression-language

Toutes les issues de hardbyte/python-common-expression-language

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.