summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2024-01-25 19:46:32 (GMT)
committerGitHub <noreply@github.com>2024-01-25 19:46:32 (GMT)
commitd96358ff9de646dbf64dfdfed46d510da7ec4803 (patch)
treeab98adc8df28364e72a0ae3ab6db75027d8ef34e /Lib/test
parentb52fc70d1ab3be7866ab71065bae61a03a28bfae (diff)
downloadcpython-d96358ff9de646dbf64dfdfed46d510da7ec4803.zip
cpython-d96358ff9de646dbf64dfdfed46d510da7ec4803.tar.gz
cpython-d96358ff9de646dbf64dfdfed46d510da7ec4803.tar.bz2
gh-114315: Make `threading.Lock` a real class, not a factory function (#114479)
`threading.Lock` is now the underlying class and is constructable rather than the old factory function. This allows for type annotations to refer to it which had no non-ugly way to be expressed prior to this. --------- Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> Co-authored-by: Gregory P. Smith <greg@krypto.org>
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_threading.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index dbdc46f..1ab223b 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -171,11 +171,21 @@ class ThreadTests(BaseTestCase):
t.start()
t.join()
- @cpython_only
- def test_disallow_instantiation(self):
- # Ensure that the type disallows instantiation (bpo-43916)
- lock = threading.Lock()
- test.support.check_disallow_instantiation(self, type(lock))
+ def test_lock_no_args(self):
+ threading.Lock() # works
+ self.assertRaises(TypeError, threading.Lock, 1)
+ self.assertRaises(TypeError, threading.Lock, a=1)
+ self.assertRaises(TypeError, threading.Lock, 1, 2, a=1, b=2)
+
+ def test_lock_no_subclass(self):
+ # Intentionally disallow subclasses of threading.Lock because they have
+ # never been allowed, so why start now just because the type is public?
+ with self.assertRaises(TypeError):
+ class MyLock(threading.Lock): pass
+
+ def test_lock_or_none(self):
+ import types
+ self.assertIsInstance(threading.Lock | None, types.UnionType)
# Create a bunch of threads, let each do some work, wait until all are
# done.