ipython / ipython/traitlets

CRegExp hides usefull exception when compiling pattern

Abierto
#475 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
653
Forks
217
Merge medio
2 d 21 h
PR fusionados (30 d)
2

Descripción

Trait `CRegExp` discards the exception when compiling a regular exception, and that contains useful debugging information:
https://github.com/ipython/traitlets/blob/3164ffb43167e9d1688046fbe0aefa424af5b58d/traitlets/traitlets.py#L2883-L2889

This is the error message produced on bad regular-expressions:

the CRegExp of MyClass.regex expeted a regular expression, not the str '^('.

An obvious change to preserve the original exception would be:
```python
def validate(self, obj, value):
try:
return re.compile(value)
except Exception as ex:
self.error(obj, value, ex)
```
But unfortunately the error message becomes incomprehensible:

The 'regex' trait of a MyClass instance contains which expected , not the str 'missing ), unterminated subpattern at position 0'.

In #466 things are better (but still cannot make the TestCases to pass):

the str '^(' caused an error in the CRegExp of MyClass.regex because unknown group name 'm' at position 3.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.