mirror of https://github.com/python/cpython
bpo-43723: Deprecate camelCase aliases from threading (GH-25174)
The snake_case names have existed since Python 2.6, so there is no reason to keep the old camelCase names around. One similar method, threading.Thread.isAlive, was already removed in Python 3.9 (bpo-37804).
This commit is contained in:
parent
cc2ffcdfd7
commit
9825bdfbd5
|
@ -319,11 +319,11 @@ Here's a trivial example::
|
|||
try:
|
||||
arg = q.get(block=False)
|
||||
except queue.Empty:
|
||||
print('Worker', threading.currentThread(), end=' ')
|
||||
print('Worker', threading.current_thread(), end=' ')
|
||||
print('queue empty')
|
||||
break
|
||||
else:
|
||||
print('Worker', threading.currentThread(), end=' ')
|
||||
print('Worker', threading.current_thread(), end=' ')
|
||||
print('running with argument', arg)
|
||||
time.sleep(0.5)
|
||||
|
||||
|
|
|
@ -732,7 +732,7 @@ intended to be the same as executing the same code by the default method,
|
|||
directly with Python in a text-mode system console or terminal window.
|
||||
However, the different interface and operation occasionally affect
|
||||
visible results. For instance, ``sys.modules`` starts with more entries,
|
||||
and ``threading.activeCount()`` returns 2 instead of 1.
|
||||
and ``threading.active_count()`` returns 2 instead of 1.
|
||||
|
||||
By default, IDLE runs user code in a separate OS process rather than in
|
||||
the user interface process that runs the shell and editor. In the execution
|
||||
|
|
|
@ -16,9 +16,9 @@ level :mod:`_thread` module. See also the :mod:`queue` module.
|
|||
|
||||
.. note::
|
||||
|
||||
While they are not listed below, the ``camelCase`` names used for some
|
||||
methods and functions in this module in the Python 2.x series are still
|
||||
supported by this module.
|
||||
In the Python 2.x series, this module contained ``camelCase`` names
|
||||
for some methods and functions. These are deprecated as of Python 3.10,
|
||||
but they are still supported for compatibility with Python 2.5 and lower.
|
||||
|
||||
|
||||
.. impl-detail::
|
||||
|
@ -42,6 +42,8 @@ This module defines the following functions:
|
|||
Return the number of :class:`Thread` objects currently alive. The returned
|
||||
count is equal to the length of the list returned by :func:`.enumerate`.
|
||||
|
||||
The function ``activeCount`` is a deprecated alias for this function.
|
||||
|
||||
|
||||
.. function:: current_thread()
|
||||
|
||||
|
@ -50,6 +52,8 @@ This module defines the following functions:
|
|||
:mod:`threading` module, a dummy thread object with limited functionality is
|
||||
returned.
|
||||
|
||||
The function ``currentThread`` is a deprecated alias for this function.
|
||||
|
||||
|
||||
.. function:: excepthook(args, /)
|
||||
|
||||
|
@ -381,9 +385,11 @@ since it is impossible to detect the termination of alien threads.
|
|||
.. method:: getName()
|
||||
setName()
|
||||
|
||||
Old getter/setter API for :attr:`~Thread.name`; use it directly as a
|
||||
Deprecated getter/setter API for :attr:`~Thread.name`; use it directly as a
|
||||
property instead.
|
||||
|
||||
.. deprecated:: 3.10
|
||||
|
||||
.. attribute:: ident
|
||||
|
||||
The 'thread identifier' of this thread or ``None`` if the thread has not
|
||||
|
@ -433,9 +439,11 @@ since it is impossible to detect the termination of alien threads.
|
|||
.. method:: isDaemon()
|
||||
setDaemon()
|
||||
|
||||
Old getter/setter API for :attr:`~Thread.daemon`; use it directly as a
|
||||
Deprecated getter/setter API for :attr:`~Thread.daemon`; use it directly as a
|
||||
property instead.
|
||||
|
||||
.. deprecated:: 3.10
|
||||
|
||||
|
||||
.. _lock-objects:
|
||||
|
||||
|
@ -771,6 +779,8 @@ item to the buffer only needs to wake up one consumer thread.
|
|||
calling thread has not acquired the lock when this method is called, a
|
||||
:exc:`RuntimeError` is raised.
|
||||
|
||||
The method ``notifyAll`` is a deprecated alias for this method.
|
||||
|
||||
|
||||
.. _semaphore-objects:
|
||||
|
||||
|
@ -908,6 +918,8 @@ method. The :meth:`~Event.wait` method blocks until the flag is true.
|
|||
|
||||
Return ``True`` if and only if the internal flag is true.
|
||||
|
||||
The method ``isSet`` is a deprecated alias for this method.
|
||||
|
||||
.. method:: set()
|
||||
|
||||
Set the internal flag to true. All threads waiting for it to become true
|
||||
|
|
|
@ -1129,6 +1129,27 @@ Deprecated
|
|||
``cache=shared`` query parameter.
|
||||
(Contributed by Erlend E. Aasland in :issue:`24464`.)
|
||||
|
||||
* The following ``threading`` methods are now deprecated:
|
||||
|
||||
* ``threading.currentThread`` => :func:`threading.current_thread`
|
||||
|
||||
* ``threading.activeCount`` => :func:`threading.active_count`
|
||||
|
||||
* ``threading.Condition.notifyAll`` =>
|
||||
:meth:`threading.Condition.notify_all`
|
||||
|
||||
* ``threading.Event.isSet`` => :meth:`threading.Event.is_set`
|
||||
|
||||
* ``threading.Thread.setName`` => :attr:`threading.Thread.name`
|
||||
|
||||
* ``threading.thread.getName`` => :attr:`threading.Thread.name`
|
||||
|
||||
* ``threading.Thread.isDaemon`` => :attr:`threading.Thread.daemon`
|
||||
|
||||
* ``threading.Thread.setDaemon`` => :attr:`threading.Thread.daemon`
|
||||
|
||||
(Contributed by Jelle Zijlstra in :issue:`21574`.)
|
||||
|
||||
|
||||
Removed
|
||||
=======
|
||||
|
|
|
@ -154,9 +154,9 @@ class ThreadTests(BaseTestCase):
|
|||
|
||||
def test_ident_of_no_threading_threads(self):
|
||||
# The ident still must work for the main thread and dummy threads.
|
||||
self.assertIsNotNone(threading.currentThread().ident)
|
||||
self.assertIsNotNone(threading.current_thread().ident)
|
||||
def f():
|
||||
ident.append(threading.currentThread().ident)
|
||||
ident.append(threading.current_thread().ident)
|
||||
done.set()
|
||||
done = threading.Event()
|
||||
ident = []
|
||||
|
@ -447,13 +447,32 @@ class ThreadTests(BaseTestCase):
|
|||
# Just a quick sanity check to make sure the old method names are
|
||||
# still present
|
||||
t = threading.Thread()
|
||||
t.isDaemon()
|
||||
t.setDaemon(True)
|
||||
t.getName()
|
||||
t.setName("name")
|
||||
with self.assertWarnsRegex(DeprecationWarning,
|
||||
r'get the daemon attribute'):
|
||||
t.isDaemon()
|
||||
with self.assertWarnsRegex(DeprecationWarning,
|
||||
r'set the daemon attribute'):
|
||||
t.setDaemon(True)
|
||||
with self.assertWarnsRegex(DeprecationWarning,
|
||||
r'get the name attribute'):
|
||||
t.getName()
|
||||
with self.assertWarnsRegex(DeprecationWarning,
|
||||
r'set the name attribute'):
|
||||
t.setName("name")
|
||||
|
||||
e = threading.Event()
|
||||
e.isSet()
|
||||
threading.activeCount()
|
||||
with self.assertWarnsRegex(DeprecationWarning, 'use is_set()'):
|
||||
e.isSet()
|
||||
|
||||
cond = threading.Condition()
|
||||
cond.acquire()
|
||||
with self.assertWarnsRegex(DeprecationWarning, 'use notify_all()'):
|
||||
cond.notifyAll()
|
||||
|
||||
with self.assertWarnsRegex(DeprecationWarning, 'use active_count()'):
|
||||
threading.activeCount()
|
||||
with self.assertWarnsRegex(DeprecationWarning, 'use current_thread()'):
|
||||
threading.currentThread()
|
||||
|
||||
def test_repr_daemon(self):
|
||||
t = threading.Thread()
|
||||
|
|
|
@ -388,7 +388,16 @@ class Condition:
|
|||
"""
|
||||
self.notify(len(self._waiters))
|
||||
|
||||
notifyAll = notify_all
|
||||
def notifyAll(self):
|
||||
"""Wake up all threads waiting on this condition.
|
||||
|
||||
This method is deprecated, use notify_all() instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('notifyAll() is deprecated, use notify_all() instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
self.notify_all()
|
||||
|
||||
|
||||
class Semaphore:
|
||||
|
@ -538,7 +547,16 @@ class Event:
|
|||
"""Return true if and only if the internal flag is true."""
|
||||
return self._flag
|
||||
|
||||
isSet = is_set
|
||||
def isSet(self):
|
||||
"""Return true if and only if the internal flag is true.
|
||||
|
||||
This method is deprecated, use notify_all() instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('isSet() is deprecated, use is_set() instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.is_set()
|
||||
|
||||
def set(self):
|
||||
"""Set the internal flag to true.
|
||||
|
@ -1146,15 +1164,47 @@ class Thread:
|
|||
self._daemonic = daemonic
|
||||
|
||||
def isDaemon(self):
|
||||
"""Return whether this thread is a daemon.
|
||||
|
||||
This method is deprecated, use the daemon attribute instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('isDaemon() is deprecated, get the daemon attribute instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.daemon
|
||||
|
||||
def setDaemon(self, daemonic):
|
||||
"""Set whether this thread is a daemon.
|
||||
|
||||
This method is deprecated, use the .daemon property instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('setDaemon() is deprecated, set the daemon attribute instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
self.daemon = daemonic
|
||||
|
||||
def getName(self):
|
||||
"""Return a string used for identification purposes only.
|
||||
|
||||
This method is deprecated, use the name attribute instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('getName() is deprecated, get the name attribute instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.name
|
||||
|
||||
def setName(self, name):
|
||||
"""Set the name string for this thread.
|
||||
|
||||
This method is deprecated, use the name attribute instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('setName() is deprecated, set the name attribute instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
self.name = name
|
||||
|
||||
|
||||
|
@ -1349,7 +1399,16 @@ def current_thread():
|
|||
except KeyError:
|
||||
return _DummyThread()
|
||||
|
||||
currentThread = current_thread
|
||||
def currentThread():
|
||||
"""Return the current Thread object, corresponding to the caller's thread of control.
|
||||
|
||||
This function is deprecated, use current_thread() instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('currentThread() is deprecated, use current_thread() instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return current_thread()
|
||||
|
||||
def active_count():
|
||||
"""Return the number of Thread objects currently alive.
|
||||
|
@ -1361,7 +1420,16 @@ def active_count():
|
|||
with _active_limbo_lock:
|
||||
return len(_active) + len(_limbo)
|
||||
|
||||
activeCount = active_count
|
||||
def activeCount():
|
||||
"""Return the number of Thread objects currently alive.
|
||||
|
||||
This function is deprecated, use active_count() instead.
|
||||
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('activeCount() is deprecated, use active_count() instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return active_count()
|
||||
|
||||
def _enumerate():
|
||||
# Same as enumerate(), but without the lock. Internal use only.
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
The following ``threading`` methods are now deprecated and should be replaced:
|
||||
|
||||
- ``currentThread`` => :func:`threading.current_thread`
|
||||
|
||||
- ``activeCount`` => :func:`threading.active_count`
|
||||
|
||||
- ``Condition.notifyAll`` => :meth:`threading.Condition.notify_all`
|
||||
|
||||
- ``Event.isSet`` => :meth:`threading.Event.is_set`
|
||||
|
||||
- ``Thread.setName`` => :attr:`threading.Thread.name`
|
||||
|
||||
- ``thread.getName`` => :attr:`threading.Thread.name`
|
||||
|
||||
- ``Thread.isDaemon`` => :attr:`threading.Thread.daemon`
|
||||
|
||||
- ``Thread.setDaemon`` => :attr:`threading.Thread.daemon`
|
||||
|
||||
Patch by Jelle Zijlstra.
|
Loading…
Reference in New Issue