add aliases to threading module
authorBenjamin Peterson <benjamin@python.org>
Wed, 11 Jun 2008 17:50:00 +0000 (17:50 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 11 Jun 2008 17:50:00 +0000 (17:50 +0000)
Doc/library/threading.rst
Lib/threading.py
Misc/NEWS

index 565d3bb7fe0699ef01c03f0ef2b1d401b79ac354..8fcf95ddc670b94d175fa7aae1532f5a1a1cc0c4 100644 (file)
@@ -13,10 +13,16 @@ See also the :mod:`mutex` and :mod:`Queue` modules.
 The :mod:`dummy_threading` module is provided for situations where
 :mod:`threading` cannot be used because :mod:`thread` is missing.
 
+.. note::
+
+   In 3.x, names in camelCase have been renamed to their underscored
+   equivelents.  Both names are availble in 2.6.
+
 This module defines the following functions and objects:
 
 
 .. function:: active_count()
+              activeCount()
 
    Return the number of :class:`Thread` objects currently alive.  The returned
    count is equal to the length of the list returned by :func:`enumerate`.
@@ -31,6 +37,7 @@ This module defines the following functions and objects:
 
 
 .. function:: current_thread()
+              currentThread()
 
    Return the current :class:`Thread` object, corresponding to the caller's thread
    of control.  If the caller's thread of control was not created through the
@@ -396,6 +403,7 @@ needs to wake up one consumer thread.
 
 
 .. method:: Condition.notify_all()
+            Condition.notifyAll()
 
    Wake up all threads waiting on this condition.  This method acts like
    :meth:`notify`, but wakes up all waiting threads instead of one. If the calling
@@ -498,7 +506,8 @@ An event object manages an internal flag that can be set to true with the
    The internal flag is initially false.
 
 
-.. method:: Event.isSet()
+.. method:: Event.is_set()
+            Event.isSet()
 
    Return true if and only if the internal flag is true.
 
@@ -638,11 +647,13 @@ impossible to detect the termination of alien threads.
 
 
 .. method:: Thread.get_name()
+            Thread.getName()
 
    Return the thread's name.
 
 
-.. method:: Thread.set_same(name)
+.. method:: Thread.set_name(name)
+            Thread.setName(name)
 
    Set the thread's name.
 
@@ -651,7 +662,7 @@ impossible to detect the termination of alien threads.
    constructor.
 
 
-.. method:: Thread.get_ddent()
+.. method:: Thread.get_ident()
 
    Return the 'thread identifier' of this thread or None if the thread has not
    been started.  This is a nonzero integer.  See the :func:`thread.get_ident()`
@@ -663,6 +674,7 @@ impossible to detect the termination of alien threads.
 
 
 .. method:: Thread.is_alive()
+            Thread.isAlive()
 
    Return whether the thread is alive.
 
@@ -672,11 +684,13 @@ impossible to detect the termination of alien threads.
 
 
 .. method:: Thread.is_daemon()
+            Thread.isDaemon()
 
    Return the thread's daemon flag.
 
 
 .. method:: Thread.set_daemon(daemonic)
+            Thread.setDaemon(daemonic)
 
    Set the thread's daemon flag to the Boolean value *daemonic*. This must be
    called before :meth:`start` is called, otherwise :exc:`RuntimeError` is raised.
index 751b6926a5db4e02be16e9e237f2fa2d453c64cf..b6f0375bcd4c6bfc75ebe6bb184c00bca01aa38f 100644 (file)
@@ -9,6 +9,8 @@ except ImportError:
     raise
 
 import warnings
+
+from functools import wraps
 from time import time as _time, sleep as _sleep
 from traceback import format_exc as _format_exc
 from collections import deque
@@ -31,6 +33,18 @@ warnings.filterwarnings('ignore', category=DeprecationWarning,
                         module='threading', message='sys.exc_clear')
 
 
+def _old_api(callable, old_name):
+    if not _sys.py3kwarning:
+        return callable
+    @wraps(callable)
+    def old(*args, **kwargs):
+        warnings.warnpy3k("In 3.x, {0} is renamed to {1}."
+                          .format(old_name, callable.__name__),
+                          stacklevel=3)
+        return callable(*args, **kwargs)
+    old.__name__ = old_name
+    return old
+
 # Debug support (adapted from ihooks.py).
 # All the major classes here derive from _Verbose.  We force that to
 # be a new-style class so that all the major classes here are new-style.
@@ -274,6 +288,8 @@ class _Condition(_Verbose):
     def notify_all(self):
         self.notify(len(self.__waiters))
 
+    notifyAll = _old_api(notify_all, "notifyAll")
+
 
 def Semaphore(*args, **kwargs):
     return _Semaphore(*args, **kwargs)
@@ -353,6 +369,8 @@ class _Event(_Verbose):
     def is_set(self):
         return self.__flag
 
+    isSet = _old_api(is_set, "isSet")
+
     def set(self):
         self.__cond.acquire()
         try:
@@ -635,10 +653,14 @@ class Thread(_Verbose):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__name
 
+    getName = _old_api(get_name, "getName")
+
     def set_name(self, name):
         assert self.__initialized, "Thread.__init__() not called"
         self.__name = str(name)
 
+    setName = _old_api(set_name, "setName")
+
     def get_ident(self):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__ident
@@ -647,10 +669,14 @@ class Thread(_Verbose):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__started.is_set() and not self.__stopped
 
+    isAlive = _old_api(is_alive, "isAlive")
+
     def is_daemon(self):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__daemonic
 
+    isDaemon = _old_api(is_daemon, "isDaemon")
+
     def set_daemon(self, daemonic):
         if not self.__initialized:
             raise RuntimeError("Thread.__init__() not called")
@@ -658,6 +684,8 @@ class Thread(_Verbose):
             raise RuntimeError("cannot set daemon status of active thread");
         self.__daemonic = daemonic
 
+    setDaemon = _old_api(set_daemon, "setDaemon")
+
 # The timer class was contributed by Itamar Shtull-Trauring
 
 def Timer(*args, **kwargs):
@@ -763,12 +791,16 @@ def current_thread():
         ##print "current_thread(): no current thread for", _get_ident()
         return _DummyThread()
 
+currentThread = _old_api(current_thread, "currentThread")
+
 def active_count():
     _active_limbo_lock.acquire()
     count = len(_active) + len(_limbo)
     _active_limbo_lock.release()
     return count
 
+activeCount = _old_api(active_count, "activeCount")
+
 def enumerate():
     _active_limbo_lock.acquire()
     active = _active.values() + _limbo.values()
index b5e7d5839f084eb458a6303829977a36dc6f435e..06b8b45a1a22f82fec62d38f498252036d6010fd 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -291,6 +291,7 @@ Library
 - The bundled OSX-specific copy of libbffi is now in sync with the version
   shipped with PyObjC 2.0 and includes support for x86_64 and ppc64 platforms.
 
+- The threading module gained alias for names that are removed in 3.x.
 
 Build
 -----