deprecate some useless, noop methods in symtable

This commit is contained in:
Benjamin Peterson 2008-08-20 01:42:01 +00:00
parent f647dc10e3
commit e977ad4d7b
4 changed files with 30 additions and 16 deletions

View file

@ -144,15 +144,6 @@ Examining Symbol Tables
Return ``True`` if the symbol is global. 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() .. method:: is_local()
Return ``True`` if the symbol is local to its block. Return ``True`` if the symbol is local to its block.

View file

@ -2,11 +2,10 @@
import _symtable import _symtable
from _symtable import (USE, DEF_GLOBAL, DEF_LOCAL, DEF_PARAM, from _symtable import (USE, DEF_GLOBAL, DEF_LOCAL, DEF_PARAM,
DEF_STAR, DEF_DOUBLESTAR, DEF_INTUPLE, DEF_FREE, DEF_IMPORT, DEF_BOUND, OPT_IMPORT_STAR, OPT_EXEC, OPT_BARE_EXEC,
DEF_FREE_GLOBAL, DEF_FREE_CLASS, DEF_IMPORT, DEF_BOUND, SCOPE_OFF, SCOPE_MASK, FREE, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)
OPT_IMPORT_STAR, OPT_EXEC, OPT_BARE_EXEC, SCOPE_OFF, SCOPE_MASK,
FREE, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)
import warnings
import weakref import weakref
__all__ = ["symtable", "SymbolTable", "newSymbolTable", "Class", __all__ = ["symtable", "SymbolTable", "newSymbolTable", "Class",
@ -194,10 +193,14 @@ class Symbol(object):
return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)) return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT))
def is_vararg(self): 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): 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): def is_local(self):
return bool(self.__flags & DEF_BOUND) return bool(self.__flags & DEF_BOUND)
@ -212,7 +215,8 @@ class Symbol(object):
return bool(self.__flags & DEF_LOCAL) return bool(self.__flags & DEF_LOCAL)
def is_in_tuple(self): 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): def is_namespace(self):
"""Returns true if name binding introduces new namespace. """Returns true if name binding introduces new namespace.

View file

@ -55,6 +55,22 @@ class SymtableTest(unittest.TestCase):
internal = find_block(spam, "internal") internal = find_block(spam, "internal")
foo = find_block(top, "foo") 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): def test_type(self):
self.assertEqual(self.top.get_type(), "module") self.assertEqual(self.top.get_type(), "module")
self.assertEqual(self.Mine.get_type(), "class") self.assertEqual(self.Mine.get_type(), "class")

View file

@ -54,6 +54,9 @@ Core and Builtins
Library 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 - Issue #2234: distutils failed for some versions of the cygwin compiler. The
version reported by these tools does not necessarily follow the python version reported by these tools does not necessarily follow the python
version numbering scheme, so the module is less strict when parsing it. version numbering scheme, so the module is less strict when parsing it.