summaryrefslogtreecommitdiffstats
path: root/Lib/lib2to3/fixes
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2009-05-05 23:13:58 (GMT)
committerBenjamin Peterson <benjamin@python.org>2009-05-05 23:13:58 (GMT)
commiteaeb4c695e5b493dcf66d381ff21a659d9388d62 (patch)
tree78df12c2c90d68063a6586f2663efcbed53ed43d /Lib/lib2to3/fixes
parentc6c1f96420f7c02a0d4642c5f5b3a282b7d29f40 (diff)
downloadcpython-eaeb4c695e5b493dcf66d381ff21a659d9388d62.zip
cpython-eaeb4c695e5b493dcf66d381ff21a659d9388d62.tar.gz
cpython-eaeb4c695e5b493dcf66d381ff21a659d9388d62.tar.bz2
Merged revisions 68503,68507,68694,69054,69673,69679-69681,70991,70999,71003,71695 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r68503 | benjamin.peterson | 2009-01-10 14:14:49 -0600 (Sat, 10 Jan 2009) | 1 line use variable ........ r68507 | benjamin.peterson | 2009-01-10 15:13:16 -0600 (Sat, 10 Jan 2009) | 1 line rewrap ........ r68694 | benjamin.peterson | 2009-01-17 17:55:59 -0600 (Sat, 17 Jan 2009) | 1 line test for specific node type ........ r69054 | guilherme.polo | 2009-01-28 10:01:54 -0600 (Wed, 28 Jan 2009) | 2 lines Added mapping for the ttk module. ........ r69673 | benjamin.peterson | 2009-02-16 09:38:22 -0600 (Mon, 16 Feb 2009) | 1 line fix handling of as imports #5279 ........ r69679 | benjamin.peterson | 2009-02-16 11:36:06 -0600 (Mon, 16 Feb 2009) | 1 line make Base.get_next_sibling() and Base.get_prev_sibling() properties ........ r69680 | benjamin.peterson | 2009-02-16 11:41:48 -0600 (Mon, 16 Feb 2009) | 1 line normalize docstrings in pytree according to PEP 11 ........ r69681 | benjamin.peterson | 2009-02-16 11:43:09 -0600 (Mon, 16 Feb 2009) | 1 line use a set ........ r70991 | benjamin.peterson | 2009-04-01 15:54:50 -0500 (Wed, 01 Apr 2009) | 1 line map urllib.urlopen to urllib.request.open #5637 ........ r70999 | benjamin.peterson | 2009-04-01 17:36:47 -0500 (Wed, 01 Apr 2009) | 1 line add very alpha support to 2to3 for running concurrently with multiprocessing ........ r71003 | benjamin.peterson | 2009-04-01 18:10:43 -0500 (Wed, 01 Apr 2009) | 1 line fix when multiprocessing is not available or used ........ r71695 | benjamin.peterson | 2009-04-17 22:21:29 -0500 (Fri, 17 Apr 2009) | 1 line refactor multiprocessing support, so it's less hacky to employ and only loads mp when needed ........
Diffstat (limited to 'Lib/lib2to3/fixes')
-rw-r--r--Lib/lib2to3/fixes/fix_except.py4
-rw-r--r--Lib/lib2to3/fixes/fix_imports.py14
-rw-r--r--Lib/lib2to3/fixes/fix_itertools_imports.py37
-rw-r--r--Lib/lib2to3/fixes/fix_set_literal.py2
-rw-r--r--Lib/lib2to3/fixes/fix_urllib.py2
5 files changed, 34 insertions, 25 deletions
diff --git a/Lib/lib2to3/fixes/fix_except.py b/Lib/lib2to3/fixes/fix_except.py
index dc2a5b1..5554c02 100644
--- a/Lib/lib2to3/fixes/fix_except.py
+++ b/Lib/lib2to3/fixes/fix_except.py
@@ -25,11 +25,11 @@ The following cases will be converted:
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
-from ..fixer_util import Assign, Attr, Name, is_tuple, is_list
+from ..fixer_util import Assign, Attr, Name, is_tuple, is_list, syms
def find_excepts(nodes):
for i, n in enumerate(nodes):
- if isinstance(n, pytree.Node):
+ if n.type == syms.except_clause:
if n.children[0].value == 'except':
yield (n, nodes[i+2])
diff --git a/Lib/lib2to3/fixes/fix_imports.py b/Lib/lib2to3/fixes/fix_imports.py
index 08be543..46ba4a2 100644
--- a/Lib/lib2to3/fixes/fix_imports.py
+++ b/Lib/lib2to3/fixes/fix_imports.py
@@ -27,6 +27,7 @@ MAPPING = {'StringIO': 'io',
'ScrolledText': 'tkinter.scrolledtext',
'Tkconstants': 'tkinter.constants',
'Tix': 'tkinter.tix',
+ 'ttk': 'tkinter.ttk',
'Tkinter': 'tkinter',
'markupbase': '_markupbase',
'_winreg': 'winreg',
@@ -121,17 +122,18 @@ class FixImports(fixer_base.BaseFix):
def transform(self, node, results):
import_mod = results.get("module_name")
if import_mod:
- new_name = self.mapping[import_mod.value]
+ mod_name = import_mod.value
+ new_name = self.mapping[mod_name]
import_mod.replace(Name(new_name, prefix=import_mod.get_prefix()))
if "name_import" in results:
# If it's not a "from x import x, y" or "import x as y" import,
# marked its usage to be replaced.
- self.replace[import_mod.value] = new_name
+ self.replace[mod_name] = new_name
if "multiple_imports" in results:
- # This is a nasty hack to fix multiple imports on a
- # line (e.g., "import StringIO, urlparse"). The problem is that I
- # can't figure out an easy way to make a pattern recognize the
- # keys of MAPPING randomly sprinkled in an import statement.
+ # This is a nasty hack to fix multiple imports on a line (e.g.,
+ # "import StringIO, urlparse"). The problem is that I can't
+ # figure out an easy way to make a pattern recognize the keys of
+ # MAPPING randomly sprinkled in an import statement.
results = self.match(node)
if results:
self.transform(node, results)
diff --git a/Lib/lib2to3/fixes/fix_itertools_imports.py b/Lib/lib2to3/fixes/fix_itertools_imports.py
index cbabfee..8a57f6d 100644
--- a/Lib/lib2to3/fixes/fix_itertools_imports.py
+++ b/Lib/lib2to3/fixes/fix_itertools_imports.py
@@ -1,8 +1,9 @@
""" Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) """
# Local imports
-from .. import fixer_base
-from ..fixer_util import BlankLine
+from lib2to3 import fixer_base
+from lib2to3.fixer_util import BlankLine, syms, token
+
class FixItertoolsImports(fixer_base.BaseFix):
PATTERN = """
@@ -11,34 +12,40 @@ class FixItertoolsImports(fixer_base.BaseFix):
def transform(self, node, results):
imports = results['imports']
- children = imports.children[:] or [imports]
- for child in children:
- if not hasattr(child, 'value'):
- # Handle 'import ... as ...'
- continue
- if child.value in ('imap', 'izip', 'ifilter'):
- # The value must be set to none in case child == import,
- # so that the test for empty imports will work out
+ if imports.type == syms.import_as_name or not imports.children:
+ children = [imports]
+ else:
+ children = imports.children
+ for child in children[::2]:
+ if child.type == token.NAME:
+ member = child.value
+ name_node = child
+ else:
+ assert child.type == syms.import_as_name
+ name_node = child.children[0]
+ member_name = name_node.value
+ if member_name in ('imap', 'izip', 'ifilter'):
child.value = None
child.remove()
- elif child.value == 'ifilterfalse':
+ elif member_name == 'ifilterfalse':
node.changed()
- child.value = 'filterfalse'
+ name_node.value = 'filterfalse'
# Make sure the import statement is still sane
children = imports.children[:] or [imports]
remove_comma = True
for child in children:
- if remove_comma and getattr(child, 'value', None) == ',':
+ if remove_comma and child.type == token.COMMA:
child.remove()
else:
remove_comma ^= True
- if unicode(children[-1]) == ',':
+ if children[-1].type == token.COMMA:
children[-1].remove()
# If there are no imports left, just get rid of the entire statement
- if not (imports.children or getattr(imports, 'value', None)):
+ if not (imports.children or getattr(imports, 'value', None)) or \
+ imports.parent is None:
p = node.get_prefix()
node = BlankLine()
node.prefix = p
diff --git a/Lib/lib2to3/fixes/fix_set_literal.py b/Lib/lib2to3/fixes/fix_set_literal.py
index 414b1df..35743d2 100644
--- a/Lib/lib2to3/fixes/fix_set_literal.py
+++ b/Lib/lib2to3/fixes/fix_set_literal.py
@@ -38,7 +38,7 @@ class FixSetLiteral(fixer_base.BaseFix):
literal.extend(n.clone() for n in items.children)
literal.append(pytree.Leaf(token.RBRACE, "}"))
# Set the prefix of the right brace to that of the ')' or ']'
- literal[-1].set_prefix(items.get_next_sibling().get_prefix())
+ literal[-1].set_prefix(items.next_sibling.get_prefix())
maker = pytree.Node(syms.dictsetmaker, literal)
maker.set_prefix(node.get_prefix())
diff --git a/Lib/lib2to3/fixes/fix_urllib.py b/Lib/lib2to3/fixes/fix_urllib.py
index 89abfc4..f262537 100644
--- a/Lib/lib2to3/fixes/fix_urllib.py
+++ b/Lib/lib2to3/fixes/fix_urllib.py
@@ -12,7 +12,7 @@ from ..fixer_util import Name, Comma, FromImport, Newline, attr_chain
MAPPING = {'urllib': [
('urllib.request',
['URLOpener', 'FancyURLOpener', 'urlretrieve',
- '_urlopener', 'urlcleanup']),
+ '_urlopener', 'urlopen', 'urlcleanup']),
('urllib.parse',
['quote', 'quote_plus', 'unquote', 'unquote_plus',
'urlencode', 'pathname2url', 'url2pathname', 'splitattr',