mirror of
https://github.com/python/cpython.git
synced 2025-11-02 19:12:55 +00:00
bpo-43908: Make re types immutable (GH-25697)
Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
1e7b858575
commit
5daf70b22e
3 changed files with 17 additions and 3 deletions
|
|
@ -2190,6 +2190,18 @@ class ImplementationTest(unittest.TestCase):
|
|||
Test implementation details of the re module.
|
||||
"""
|
||||
|
||||
@cpython_only
|
||||
def test_immutable(self):
|
||||
# bpo-43908: check that re types are immutable
|
||||
with self.assertRaises(TypeError):
|
||||
re.Match.foo = 1
|
||||
with self.assertRaises(TypeError):
|
||||
re.Pattern.foo = 1
|
||||
with self.assertRaises(TypeError):
|
||||
pat = re.compile("")
|
||||
tp = type(pat.scanner(""))
|
||||
tp.foo = 1
|
||||
|
||||
def test_overlap_table(self):
|
||||
f = sre_compile._generate_overlap_table
|
||||
self.assertEqual(f(""), [])
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Make :mod:`re` types immutable. Patch by
|
||||
Erlend E. Aasland.
|
||||
|
|
@ -2690,7 +2690,7 @@ static PyType_Spec pattern_spec = {
|
|||
.name = "re.Pattern",
|
||||
.basicsize = sizeof(PatternObject),
|
||||
.itemsize = sizeof(SRE_CODE),
|
||||
.flags = Py_TPFLAGS_DEFAULT,
|
||||
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE,
|
||||
.slots = pattern_slots,
|
||||
};
|
||||
|
||||
|
|
@ -2755,7 +2755,7 @@ static PyType_Spec match_spec = {
|
|||
.name = "re.Match",
|
||||
.basicsize = sizeof(MatchObject),
|
||||
.itemsize = sizeof(Py_ssize_t),
|
||||
.flags = Py_TPFLAGS_DEFAULT,
|
||||
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE,
|
||||
.slots = match_slots,
|
||||
};
|
||||
|
||||
|
|
@ -2781,7 +2781,7 @@ static PyType_Slot scanner_slots[] = {
|
|||
static PyType_Spec scanner_spec = {
|
||||
.name = "_" SRE_MODULE ".SRE_Scanner",
|
||||
.basicsize = sizeof(ScannerObject),
|
||||
.flags = Py_TPFLAGS_DEFAULT,
|
||||
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE,
|
||||
.slots = scanner_slots,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue