Common base class for CEL exceptions, without breaking the existing builtin mappings
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Domínio
- backend-api-design, documentation
Direção de pesquisa
Comece inspecionando python/cel/exceptions.py, map_execution_error_to_python, cel.pyi e o guia prático de tratamento de erros. Rastreie os mapeamentos existentes de erros de execução e de análise e, em seguida, verifique se a nova hierarquia preserva o tratamento de exceções integradas, oferece suporte à captura de cel.CelError e está documentada no stub e na tabela do guia prático.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 43
- Forks
- 4
- Merge médio
- 15h 15min
- PRs com merge (30d)
- 9
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de hardbyte/python-common-expression-language
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
hardbyte/python-common-expression-language#47 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
hardbyte/python-common-expression-language#57 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
hardbyte/python-common-expression-language#50 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
hardbyte/python-common-expression-language#48 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
hardbyte/python-common-expression-language#46 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de hardbyte/python-common-expression-language
Issues semelhantes
-
Agentic
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Imbad0202/academic-research-skills#979 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
reflex-dev/reflex#7561 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
prometheus-community/ansible#906 · 2 comentários ·