]> granicus.if.org Git - python/commitdiff
remove py3k warnings about the threading api; update docs
authorBenjamin Peterson <benjamin@python.org>
Mon, 1 Sep 2008 23:12:58 +0000 (23:12 +0000)
committerBenjamin Peterson <benjamin@python.org>
Mon, 1 Sep 2008 23:12:58 +0000 (23:12 +0000)
Reviewer: Benjamin Peterson

Doc/library/threading.rst
Lib/test/test_py3kwarn.py
Lib/threading.py
Misc/NEWS

index 6841ceaa0f92abe4083f94188af82d6b9ef3fb4c..1a43be58f97d87d1fe9d59e41a3a375def68217a 100644 (file)
@@ -14,11 +14,12 @@ The :mod:`dummy_threading` module is provided for situations where
 
 .. note::
 
-   Some ``camelCase`` names have been converted to their underscored
-   equivalents. Others have been replaced by properties.  Using the old methods
-   in 2.6 will trigger a :exc:`DeprecationWarning` when Python is run with the
-   :option:`-3` flag and a full :exc:`DeprecationWarning` in 3.0.  The old names
-   will be removed early in the 3.x series.
+   Starting with Python 2.6, this module provides PEP 8 compliant aliases and
+   properties to replace the ``camelCase`` names that were inspired by Java's
+   threading API. This updated API is compatible with that of the
+   :mod:`multiprocessing` module. However, no schedule has been set for the
+   deprecation of the ``camelCase`` names and they remain fully supported in
+   both Python 2.x and 3.x.
 
 This module defines the following functions and objects:
 
index 1b487fe53ad731b3e5a7766f18dbc82e137eb8e6..8fa613508bb6bdcb5d8f08a70a30f0f3803a676b 100644 (file)
@@ -272,41 +272,6 @@ class TestPy3KWarnings(unittest.TestCase):
                 def __hash__(self): pass
             self.assertEqual(len(w.warnings), 0)
 
-    def test_pep8ified_threading(self):
-        import threading
-
-        t = threading.Thread()
-        with catch_warning() as w:
-            msg = "isDaemon() is deprecated in favor of the " \
-                  "Thread.daemon property"
-            self.assertWarning(t.isDaemon(), w, msg)
-            w.reset()
-            msg = "setDaemon() is deprecated in favor of the " \
-                  "Thread.daemon property"
-            self.assertWarning(t.setDaemon(True), w, msg)
-            w.reset()
-            msg = "getName() is deprecated in favor of the " \
-                  "Thread.name property"
-            self.assertWarning(t.getName(), w, msg)
-            w.reset()
-            msg = "setName() is deprecated in favor of the " \
-                  "Thread.name property"
-            self.assertWarning(t.setName("name"), w, msg)
-            w.reset()
-            msg = "isAlive() is deprecated in favor of is_alive()"
-            self.assertWarning(t.isAlive(), w, msg)
-            w.reset()
-            e = threading.Event()
-            msg = "isSet() is deprecated in favor of is_set()"
-            self.assertWarning(e.isSet(), w, msg)
-            w.reset()
-            msg = "currentThread() is deprecated in favor of current_thread()"
-            self.assertWarning(threading.currentThread(), w, msg)
-            w.reset()
-            msg = "activeCount() is deprecated in favor of active_count()"
-            self.assertWarning(threading.activeCount(), w, msg)
-
-
 
 class TestStdlibRemovals(unittest.TestCase):
 
index 7a5877355f804a88bb8ba0c3b892c11415ee475c..25eb9b61c7e4a3c039451df8d3f2413d22c09577 100644 (file)
@@ -15,6 +15,17 @@ from time import time as _time, sleep as _sleep
 from traceback import format_exc as _format_exc
 from collections import deque
 
+# Note regarding PEP 8 compliant aliases
+#  This threading model was originally inspired by Java, and inherited
+# the convention of camelCase function and method names from that
+# language. While those names are not in any imminent danger of being
+# deprecated, starting with Python 2.6, the module now provides a
+# PEP 8 compliant alias for any such method name.
+# Using the new PEP 8 compliant names also facilitates substitution
+# with the multiprocessing module, which doesn't provide the old
+# Java inspired names.
+
+
 # Rename some stuff so "from threading import *" is safe
 __all__ = ['activeCount', 'active_count', 'Condition', 'currentThread',
            'current_thread', 'enumerate', 'Event',
@@ -33,19 +44,6 @@ del thread
 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("{0}() is deprecated in favor of {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.
@@ -287,10 +285,10 @@ class _Condition(_Verbose):
             except ValueError:
                 pass
 
-    def notify_all(self):
+    def notifyAll(self):
         self.notify(len(self.__waiters))
 
-    notifyAll = _old_api(notify_all, "notifyAll")
+    notify_all = notifyAll
 
 
 def Semaphore(*args, **kwargs):
@@ -368,10 +366,10 @@ class _Event(_Verbose):
         self.__cond = Condition(Lock())
         self.__flag = False
 
-    def is_set(self):
+    def isSet(self):
         return self.__flag
 
-    isSet = _old_api(is_set, "isSet")
+    is_set = isSet
 
     def set(self):
         self.__cond.acquire()
@@ -666,11 +664,11 @@ class Thread(_Verbose):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__ident
 
-    def is_alive(self):
+    def isAlive(self):
         assert self.__initialized, "Thread.__init__() not called"
         return self.__started.is_set() and not self.__stopped
 
-    isAlive = _old_api(is_alive, "isAlive")
+    is_alive = isAlive
 
     @property
     def daemon(self):
@@ -686,23 +684,15 @@ class Thread(_Verbose):
         self.__daemonic = daemonic
 
     def isDaemon(self):
-        warnings.warnpy3k("isDaemon() is deprecated in favor of the " \
-                          "Thread.daemon property")
         return self.daemon
 
     def setDaemon(self, daemonic):
-        warnings.warnpy3k("setDaemon() is deprecated in favor of the " \
-                          "Thread.daemon property")
         self.daemon = daemonic
 
     def getName(self):
-        warnings.warnpy3k("getName() is deprecated in favor of the " \
-                          "Thread.name property")
         return self.name
 
     def setName(self, name):
-        warnings.warnpy3k("setName() is deprecated in favor of the " \
-                          "Thread.name property")
         self.name = name
 
 # The timer class was contributed by Itamar Shtull-Trauring
@@ -803,22 +793,22 @@ class _DummyThread(Thread):
 
 # Global API functions
 
-def current_thread():
+def currentThread():
     try:
         return _active[_get_ident()]
     except KeyError:
         ##print "current_thread(): no current thread for", _get_ident()
         return _DummyThread()
 
-currentThread = _old_api(current_thread, "currentThread")
+current_thread = currentThread
 
-def active_count():
+def activeCount():
     _active_limbo_lock.acquire()
     count = len(_active) + len(_limbo)
     _active_limbo_lock.release()
     return count
 
-activeCount = _old_api(active_count, "activeCount")
+active_count = activeCount
 
 def enumerate():
     _active_limbo_lock.acquire()
index 6f012ab94da7bde8c0da790c492f67e4898429dd..73bcf08b628dd7a42bb646e95f0081debb541d30 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -53,6 +53,8 @@ C-API
 Library
 -------
 
+- The deprecation warnings for the old camelCase threading API were removed.
+
 - logging: fixed lack of use of encoding attribute specified on a stream.
 
 - Silenced a trivial compiler warning in the sqlite module.