Add lib2to3 fixer base code

Switching to using RedBaron instead of lib2to3, committing to save lib2to3 code in case using Baron is not successful.
This commit is contained in:
Keyan Pishdadian 2015-02-10 11:23:16 -05:00
parent 9d64ff420f
commit 0b2556f3ec
4 changed files with 28 additions and 43 deletions

20
scripts/fix_ext_import.py Normal file
View file

@ -0,0 +1,20 @@
from lib2to3.fixer_base import BaseFix
from lib2to3.fixer_util import Name, syms
class FixExtImport(BaseFix):
PATTERN = "fixnode='oldname'"
def transform(self, node, results):
fixnode = results['fixnode']
fixnode.replace(Name('newname', prefix=fixnode.prefix))
if node.type == syms.import_from and \
getattr(results['imp'], 'value', None) == 'flask.ext':
return 0
# TODO: Case 2
# CASE 1 - from flask.ext.foo import bam --> from flask_foo import bam
# CASE 2 - from flask.ext import foo --> import flask_foo as foo

View file

@ -1,30 +1,14 @@
# from flask.ext import foo => import flask_foo as foo
# from flask.ext.foo import bam => from flask_foo import bam
# import flask.ext.foo => import flask_foo
# CASE 1 - from flask.ext.foo import bam --> from flask_foo import bam
# CASE 2 - from flask.ext import foo --> import flask_foo as foo
from redbaron import RedBaron
import sys
def migrate(old_file):
new_file = open("temp.py", "w")
for line in old_file:
if line[0:14] == "from flask.ext":
if line[14] == '.':
import_statement = line[15::].split(' ')
extension = import_statement[0]
line = line.replace("flask.ext." + extension,
"flask_" + extension)
elif line[14] == " ":
import_statement = line[15::].split(' ')[1]
import_statement = import_statement.strip('\n')
line = ("import flask_" +
import_statement +
" as " +
import_statement)
with open("test.py", "r") as source_code:
red = RedBaron(source_code.read())
new_file.write(line)
new_file.close()
print red.dumps()
if __name__ == "__main__":
old_file = open(sys.argv[1])
migrate(old_file)
# with open("code.py", "w") as source_code:
# source_code.write(red.dumps())

View file

@ -1,19 +0,0 @@
from flask_foo import bam
import flask_foo as foo
def migrate(old_file):
new_file = open("temp.py", "w")
for line in old_file:
if line[0, 15] is "from flask.ext":
if line[15] == '.':
import_statement = line[16::].split(' ')
extension = import_statement[0]
line = line. replace("flask.ext." + extension,
"flask_" + extension)
else:
pass
new_file.write(line)
if __name__ == "__main__":
old_file = open(sys.arv[1])