Common base class for CEL exceptions, without breaking the existing builtin mappings
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Bereich
- backend-api-design, documentation
Rechercherichtung
Beginne mit der Untersuchung von python/cel/exceptions.py, map_execution_error_to_python, cel.pyi und dem How-to zur Fehlerbehandlung. Verfolge die bestehenden Zuordnungen von Ausführungs- und Parse-Fehlern und überprüfe anschließend, dass die neue Hierarchie die Behandlung integrierter Ausnahmen beibehält, das Abfangen von cel.CelError unterstützt und in der Stub-Datei sowie in der How-to-Tabelle dokumentiert ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 43
- Forks
- 4
- Ø Merge
- 12 Std. 37 Min.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus hardbyte/python-common-expression-language
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
hardbyte/python-common-expression-language#47 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
hardbyte/python-common-expression-language#57 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
hardbyte/python-common-expression-language#50 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
hardbyte/python-common-expression-language#48 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
hardbyte/python-common-expression-language#46 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in hardbyte/python-common-expression-language
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
modelcontextprotocol/python-sdk#3648 ·
Maintainer antworten meist innerhalb von 1 Tag
-
docs good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
VenetoStato/giorgio#6 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
EclipseFdn/open-vsx.org#13831 ·
Maintainer antworten meist innerhalb von 1 Tag
-
feature request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 2 Tagen