Issue 8877: 2to3 fixes stdlib import wrongly (original) (raw)

Issue8877

Created on 2010-06-02 14:09 by djc, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (3)
msg106882 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2010-06-02 14:09
djc@enrai src $ ls -l test/* -rw-r--r-- 1 djc users 34 Jun 2 16:00 test/http.py -rw-r--r-- 1 djc users 0 Jun 2 16:00 test/__init__.py djc@enrai src $ cat test/http.py from httplib import BadStatusLine djc@enrai src $ 2to3 test/* RefactoringTool: Skipping implicit fixer: buffer RefactoringTool: Skipping implicit fixer: idioms RefactoringTool: Skipping implicit fixer: set_literal RefactoringTool: Skipping implicit fixer: ws_comma --- test/http.py (original) +++ test/http.py (refactored) @@ -1,1 +1,1 @@ -from httplib import BadStatusLine +from .http.client import BadStatusLine RefactoringTool: Files that need to be modified: RefactoringTool: test/http.py ... which doesn't work, of course. On the other hand, http.py is not in a package, it works correctly. If test/http.py is moved to test/blah.py instead, it also works correctly. 2to3 should be able to conclude that the "httplib" it was before did not refer to .http, but refered to http.client.
msg106897 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2010-06-02 17:07
Just in case it isn't clear: this is because of the order of fixes. The first fixer replaces httplib with http.client, then the next fixer thinks this is a relative import.
msg106900 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2010-06-02 18:03
And this has been fixed in the lastest versions of 2to3.
History
Date User Action Args
2022-04-11 14:57:01 admin set github: 53123
2010-06-02 18:03:50 benjamin.peterson set status: open -> closednosy: + benjamin.petersonmessages: + resolution: fixed
2010-06-02 17:07:29 loewis set nosy: + loewismessages: +
2010-06-02 14:09:03 djc create