]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
deprecate some useless, noop methods in symtable
authorBenjamin Peterson <benjamin@python.org>
Wed, 20 Aug 2008 01:42:01 +0000 (01:42 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 20 Aug 2008 01:42:01 +0000 (01:42 +0000)
Doc/library/symtable.rst
Lib/symtable.py
Lib/test/test_symtable.py
Misc/NEWS

index 0082287c33868e709c4b914c9d5086f66df56c53..ee2482377decf39725a55cee727de85366e8c8fd 100644 (file)
@@ -144,15 +144,6 @@ Examining Symbol Tables
 
       Return ``True`` if the symbol is global.
 
-   .. method:: is_vararg()
-
-      Return ``True`` if the symbol is a star arg (receives varargs).
-
-   .. method:: is_kewordarg()
-
-      Return ``True`` if the symbol is a two-star arg (receives keyword
-      arguments).
-
    .. method:: is_local()
 
       Return ``True`` if the symbol is local to its block.
index 66c0e0354c5b4a5e47d4cb62b19cc1a4441eaf3e..4a5662d2992f955424ac24bf52b288576eed2603 100644 (file)
@@ -2,11 +2,10 @@
 
 import _symtable
 from _symtable import (USE, DEF_GLOBAL, DEF_LOCAL, DEF_PARAM,
-     DEF_STAR, DEF_DOUBLESTAR, DEF_INTUPLE, DEF_FREE,
-     DEF_FREE_GLOBAL, DEF_FREE_CLASS, DEF_IMPORT, DEF_BOUND,
-     OPT_IMPORT_STAR, OPT_EXEC, OPT_BARE_EXEC, SCOPE_OFF, SCOPE_MASK,
-     FREE, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)
+     DEF_IMPORT, DEF_BOUND, OPT_IMPORT_STAR, OPT_EXEC, OPT_BARE_EXEC,
+     SCOPE_OFF, SCOPE_MASK, FREE, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)
 
+import warnings
 import weakref
 
 __all__ = ["symtable", "SymbolTable", "newSymbolTable", "Class",
@@ -194,10 +193,14 @@ class Symbol(object):
         return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT))
 
     def is_vararg(self):
-        return bool(self.__flags & DEF_STAR)
+        warnings.warn("is_vararg() is obsolete and will be removed",
+                      DeprecationWarning, 2)
+        return False
 
     def is_keywordarg(self):
-        return bool(self.__flags & DEF_DOUBLESTAR)
+        warnings.warn("is_keywordarg() is obsolete and will be removed",
+                      DeprecationWarning, 2)
+        return False
 
     def is_local(self):
         return bool(self.__flags & DEF_BOUND)
@@ -212,7 +215,8 @@ class Symbol(object):
         return bool(self.__flags & DEF_LOCAL)
 
     def is_in_tuple(self):
-        return bool(self.__flags & DEF_INTUPLE)
+        warnings.warn("is_in_tuple() is obsolete and will be removed",
+                      DeprecationWarning, 2)
 
     def is_namespace(self):
         """Returns true if name binding introduces new namespace.
index fc678a84a9a6b5229d7499c9a86fd10323dc705b..05b237a97a20ddfd3e75ee949a585018ceb43679 100644 (file)
@@ -55,6 +55,22 @@ class SymtableTest(unittest.TestCase):
     internal = find_block(spam, "internal")
     foo = find_block(top, "foo")
 
+    def test_noops(self):
+        # Check methods that don't work. They should warn and return False.
+        def check(w, msg):
+            self.assertEqual(str(w.message), msg)
+        sym = self.top.lookup("glob")
+        with test_support.catch_warning() as w:
+            warnings.simplefilter("always", DeprecationWarning)
+            self.assertFalse(sym.is_vararg())
+            check(w, "is_vararg() is obsolete and will be removed")
+            w.reset()
+            self.assertFalse(sym.is_keywordarg())
+            check(w, "is_keywordarg() is obsolete and will be removed")
+            w.reset()
+            self.assertFalse(sym.is_in_tuple())
+            check(w, "is_in_tuple() is obsolete and will be removed")
+
     def test_type(self):
         self.assertEqual(self.top.get_type(), "module")
         self.assertEqual(self.Mine.get_type(), "class")
index daba28409303e85cc2e4ad33c1f76e4307b0b37e..9aaf5ebfc748b5f4bab1de957781a80842322aa6 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -54,6 +54,9 @@ Core and Builtins
 Library
 -------
 
+- The methods ``is_in_tuple()``, ``is_vararg()``, and ``is_keywordarg()`` of
+  symtable.Symbol have been deprecated for removal in 3.0 and the next release.
+
 - Issue #2234: distutils failed for some versions of the cygwin compiler. The
   version reported by these tools does not necessarily follow the python
   version numbering scheme, so the module is less strict when parsing it.