New submission from Dave Malcolm <dmalc...@redhat.com>:

Running 2to3 on lxml-2.2.6 failed with broken indentation.

This fragment from lxml/html/__init__.py:
> def open_http_urllib(method, url, values):
>     ## FIXME: should test that it's not a relative URL or something
>     try:
>        from urllib import urlencode, urlopen
>     except ImportError: # Python 3

became:
> def open_http_urllib(method, url, values):
>     ## FIXME: should test that it's not a relative URL or something
>     try:
>         from urllib.parse import urlencode
> from urllib.request import urlopen
>     except ImportError: # Python 3

which is syntactically invalid: note the invalid indentation for the second 
"import" line.

Seems to work when there's a single name imported per line; fails when more 
than one name is imported from urlib.


Am attaching a patch to test_fixers (for the 2.7 branch) which adds a 
reproducer.  I don't have a fix.

test test_lib2to3 failed -- Traceback (most recent call last):
  File 
"/home/david/coding/python-svn/2.7-2to3/Lib/lib2to3/tests/test_fixers.py", line 
1858, in test_import_indentation
    self.check(b, a)
  File 
"/home/david/coding/python-svn/2.7-2to3/Lib/lib2to3/tests/test_fixers.py", line 
37, in check
    tree = self._check(before, after)
  File 
"/home/david/coding/python-svn/2.7-2to3/Lib/lib2to3/tests/test_fixers.py", line 
33, in _check
    self.assertEqual(after, unicode(tree))
AssertionError: u"\ndef foo():\n    from urllib.parse import urlencode\n    
from urllib.parse im [truncated]... != u"\ndef foo():\n    from urllib.parse 
import urlencode\nfrom urllib.request impo [truncated]...
  
  def foo():
      from urllib.parse import urlencode
-     from urllib.parse import urlopen
? ----            --  ^
+ from urllib.request import urlopen
?              ++++ ^
      print('got here')
  
(Note to self: tracking this downstream in Fedora for lxml as 
https://bugzilla.redhat.com/show_bug.cgi?id=600036 )

----------
components: 2to3 (2.x to 3.0 conversion tool)
files: urllib-indentation-issue.patch
keywords: patch
messages: 111649
nosy: dmalcolm
priority: normal
severity: normal
stage: needs patch
status: open
title: Bad indentation in urllib import fixer with multipe imports
type: behavior
versions: Python 2.7
Added file: http://bugs.python.org/file18212/urllib-indentation-issue.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue9386>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to