1. Armin Rigo
  2. cpython-withatomic

Commits

Benjamin Peterson  committed abde4db

deprecate some useless, noop methods in symtable

  • Participants
  • Parent commits bee4003
  • Branches legacy-trunk

Comments (0)

Files changed (4)

File Doc/library/symtable.rst

View file
  • Ignore whitespace
 
       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.

File Lib/symtable.py

View file
  • Ignore whitespace
 
 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",
         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)
         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.

File Lib/test/test_symtable.py

View file
  • Ignore whitespace
     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")

File Misc/NEWS

View file
  • Ignore whitespace
 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.