From 9f9fc68b0fb279e5774d56bcee932d66d02ba369 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Wed, 20 Aug 2008 02:06:00 +0000 Subject: return sets instead of tuples from some symtable methods --- Doc/library/symtable.rst | 10 +++++----- Lib/symtable.py | 6 +++--- Lib/test/test_symtable.py | 10 +++++----- Misc/NEWS | 3 +++ 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Doc/library/symtable.rst b/Doc/library/symtable.rst index ee24823..4bb59e8 100644 --- a/Doc/library/symtable.rst +++ b/Doc/library/symtable.rst @@ -95,19 +95,19 @@ Examining Symbol Tables .. method:: get_parameters() - Return a tuple containing names of parameters to this function. + Return a set containing names of parameters to this function. .. method:: get_locals() - Return a tuple containing names of locals in this function. + Return a set containing names of locals in this function. .. method:: get_globals() - Return a tuple containing names of globals in this function. + Return a set containing names of globals in this function. .. method:: get_frees() - Return a tuple containing names of free variables in this function. + Return a set containing names of free variables in this function. .. class:: Class @@ -116,7 +116,7 @@ Examining Symbol Tables .. method:: get_methods() - Return a tuple containing the names of methods declared in the class. + Return a set containing the names of methods declared in the class. .. class:: Symbol diff --git a/Lib/symtable.py b/Lib/symtable.py index 3d1775b..ac9396c 100644 --- a/Lib/symtable.py +++ b/Lib/symtable.py @@ -129,8 +129,8 @@ class Function(SymbolTable): __globals = None def __idents_matching(self, test_func): - return tuple([ident for ident in self.get_identifiers() - if test_func(self._table.symbols[ident])]) + return frozenset(ident for ident in self.get_identifiers() + if test_func(self._table.symbols[ident])) def get_parameters(self): if self.__params is None: @@ -165,7 +165,7 @@ class Class(SymbolTable): d = {} for st in self._table.children: d[st.name] = 1 - self.__methods = tuple(d) + self.__methods = frozenset(d) return self.__methods diff --git a/Lib/test/test_symtable.py b/Lib/test/test_symtable.py index 7e0206d..712eca7 100644 --- a/Lib/test/test_symtable.py +++ b/Lib/test/test_symtable.py @@ -80,11 +80,11 @@ class SymtableTest(unittest.TestCase): def test_function_info(self): func = self.spam - self.assertEqual(func.get_parameters(), ("a", "b", "kw", "var")) + self.assertEqual(func.get_parameters(), {"a", "b", "kw", "var"}) self.assertEqual(func.get_locals(), - ("a", "b", "bar", "glob", "internal", "kw", "var", "x")) - self.assertEqual(func.get_globals(), ("bar", "glob")) - self.assertEqual(self.internal.get_frees(), ("x",)) + {"a", "b", "bar", "glob", "internal", "kw", "var", "x"}) + self.assertEqual(func.get_globals(), {"bar", "glob"}) + self.assertEqual(self.internal.get_frees(), {"x"}) def test_globals(self): self.assertTrue(self.spam.lookup("glob").is_global()) @@ -142,7 +142,7 @@ class SymtableTest(unittest.TestCase): self.assertEqual(self.Mine.get_name(), "Mine") def test_class_info(self): - self.assertEqual(self.Mine.get_methods(), ('a_method',)) + self.assertEqual(self.Mine.get_methods(), {'a_method'}) def test_filename_correct(self): ### Bug tickler: SyntaxError file name correct whether error raised diff --git a/Misc/NEWS b/Misc/NEWS index 3d10f6e..096f9a1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -249,6 +249,9 @@ Extension Modules Library ------- +- symtable.Function's ``get_locals()``, ``get_globals()``, ``get_parameters()``, + and ``get_frees()`` and symtable.Class's ``get_methods()`` now return sets. + - The methods ``is_in_tuple()``, ``is_vararg()``, and ``is_keywordarg()`` of symtable.Symbol have been removed. -- cgit v0.12