diff options
author | Nikita Sobolev <mail@sobolevn.me> | 2024-01-25 19:46:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-25 19:46:32 (GMT) |
commit | d96358ff9de646dbf64dfdfed46d510da7ec4803 (patch) | |
tree | ab98adc8df28364e72a0ae3ab6db75027d8ef34e /Lib/test | |
parent | b52fc70d1ab3be7866ab71065bae61a03a28bfae (diff) | |
download | cpython-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.py | 20 |
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. |