ipython / ipython/traitlets

CRegExp hides usefull exception when compiling pattern

Open
#475 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
653
Forks
217
Avg merge
2d 21h
Merged PRs (30d)
2

Description

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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.