summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-08-20 01:42:01 (GMT)
committerBenjamin Peterson <benjamin@python.org>2008-08-20 01:42:01 (GMT)
commite977ad4d7bda48451c70b72b221c9804b353ceb9 (patch)
tree5fb2d640d3a0d3740e811eb6309d5a8af2a6695d
parentf647dc10e339e8f5b2a17d7057f4fba958678d72 (diff)
downloadcpython-e977ad4d7bda48451c70b72b221c9804b353ceb9.zip
cpython-e977ad4d7bda48451c70b72b221c9804b353ceb9.tar.gz
cpython-e977ad4d7bda48451c70b72b221c9804b353ceb9.tar.bz2
deprecate some useless, noop methods in symtable
-rw-r--r--Doc/library/symtable.rst9
-rw-r--r--Lib/symtable.py18
-rw-r--r--Lib/test/test_symtable.py16
-rw-r--r--Misc/NEWS3
4 files changed, 30 insertions, 16 deletions
diff --git a/Doc/library/symtable.rst b/Doc/library/symtable.rst
index 0082287..ee24823 100644
--- a/Doc/library/symtable.rst
+++ b/Doc/library/symtable.rst
@@ -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.
diff --git a/Lib/symtable.py b/Lib/symtable.py
index 66c0e03..4a5662d 100644
--- a/Lib/symtable.py
+++ b/Lib/symtable.py
@@ -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.
diff --git a/Lib/test/test_symtable.py b/Lib/test/test_symtable.py
index fc678a8..05b237a 100644
--- a/Lib/test/test_symtable.py
+++ b/Lib/test/test_symtable.py
@@ -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")
diff --git a/Misc/NEWS b/Misc/NEWS
index daba284..9aaf5ebf 100644
--- 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.