]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-100690: [mock] hide `ATTRIB_DENY_LIST` and make it immutable (#100819)
authorNikita Sobolev <mail@sobolevn.me>
Sat, 7 Jan 2023 10:25:05 +0000 (13:25 +0300)
committerGitHub <noreply@github.com>
Sat, 7 Jan 2023 10:25:05 +0000 (10:25 +0000)
Lib/unittest/mock.py

index 78827d61b69dc3f6a0fae9fac14bbdf28945c0f9..b3c0e28c698b44cb74097c5bd832666faac2b3f2 100644 (file)
@@ -653,7 +653,7 @@ class NonCallableMock(Base):
         elif _is_magic(name):
             raise AttributeError(name)
         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
-            if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in ATTRIB_DENY_LIST:
+            if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
                 raise AttributeError(
                     f"{name!r} is not a valid assertion. Use a spec "
                     f"for the mock if {name!r} is meant to be an attribute.")
@@ -1063,7 +1063,11 @@ class NonCallableMock(Base):
 
 
 # Denylist for forbidden attribute names in safe mode
-ATTRIB_DENY_LIST = {name.removeprefix("assert_") for name in dir(NonCallableMock) if name.startswith("assert_")}
+_ATTRIB_DENY_LIST = frozenset({
+    name.removeprefix("assert_")
+    for name in dir(NonCallableMock)
+    if name.startswith("assert_")
+})
 
 
 class _AnyComparer(list):