Author: Armin Rigo <[email protected]>
Branch:
Changeset: r68558:180796aa92c5
Date: 2013-12-27 11:51 +0100
http://bitbucket.org/pypy/pypy/changeset/180796aa92c5/
Log: issue1665: rematch.group('nonexistent'): convert the KeyError to
IndexError
diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py
--- a/pypy/module/_sre/interp_sre.py
+++ b/pypy/module/_sre/interp_sre.py
@@ -415,7 +415,13 @@
except OperationError, e:
if not e.match(space, space.w_TypeError):
raise
- w_groupnum = space.getitem(self.srepat.w_groupindex, w_arg)
+ try:
+ w_groupnum = space.getitem(self.srepat.w_groupindex, w_arg)
+ except OperationError, e:
+ if not e.match(space, space.w_KeyError):
+ raise
+ raise OperationError(space.w_IndexError,
+ space.wrap("no such group"))
groupnum = space.int_w(w_groupnum)
if groupnum == 0:
return self.ctx.match_start, self.ctx.match_end
diff --git a/pypy/module/_sre/test/test_app_sre.py
b/pypy/module/_sre/test/test_app_sre.py
--- a/pypy/module/_sre/test/test_app_sre.py
+++ b/pypy/module/_sre/test/test_app_sre.py
@@ -172,6 +172,9 @@
assert ("1", "1", None) == m.group(1, 2, 3)
assert ("1", None) == m.group("first", "second")
raises(IndexError, m.group, 1, 4)
+ assert ("1", None) == m.group(1, "second")
+ raises(IndexError, m.group, 'foobarbaz')
+ raises(IndexError, m.group, 'first', 'foobarbaz')
def test_expand(self):
import re
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit