ipython / ipython/traitlets

CRegExp hides usefull exception when compiling pattern

Aperta
#475 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
653
Fork
217
Merge medio
2g 21h
PR unite (30g)
2

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.