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>
This commit is contained in:
Nikita Sobolev 2024-01-25 22:46:32 +03:00 committed by GitHub
parent b52fc70d1a
commit d96358ff9d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 52 additions and 14 deletions

View file

@ -5,7 +5,6 @@ import sys as _sys
import _thread
import functools
import warnings
import _weakref
from time import monotonic as _time
from _weakrefset import WeakSet
@ -37,6 +36,7 @@ __all__ = ['get_ident', 'active_count', 'Condition', 'current_thread',
_start_joinable_thread = _thread.start_joinable_thread
_daemon_threads_allowed = _thread.daemon_threads_allowed
_allocate_lock = _thread.allocate_lock
_LockType = _thread.LockType
_set_sentinel = _thread._set_sentinel
get_ident = _thread.get_ident
_is_main_interpreter = _thread._is_main_interpreter
@ -115,7 +115,7 @@ def gettrace():
# Synchronization classes
Lock = _allocate_lock
Lock = _LockType
def RLock(*args, **kwargs):
"""Factory function that returns a new reentrant lock.