Skip to content

Commit

Permalink
Merge pull request #234 from graingert/move-to-flit
Browse files Browse the repository at this point in the history
  • Loading branch information
graingert committed Sep 28, 2020
2 parents 99ce5b2 + 434213e commit 02fd478
Show file tree
Hide file tree
Showing 46 changed files with 159 additions and 210 deletions.
11 changes: 11 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,14 @@ repos:
hooks:
- id: prettier
args: [--prose-wrap=always, --print-width=88]

- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:
- id: autoflake
args:
- --in-place
- --remove-all-unused-imports
- --expand-star-imports
- --remove-duplicate-keys
- --remove-unused-variables
3 changes: 2 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
0.8.1 (unreleased)
==================

- Nothing changed yet.
- move all code under the ``modernize`` namespace.
- use flit to create PyPI distributions.


0.8.0 (2020-09-27)
Expand Down
2 changes: 0 additions & 2 deletions MANIFEST.in

This file was deleted.

2 changes: 1 addition & 1 deletion docs/fixers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ Opt-in
To specify an opt-in fixer while also running all the default fixers, make sure
to specify the ``-f default`` or ``--fix=default`` option, e.g.::

python -m modernize -f default -f libmodernize.fixes.fix_open
python -m modernize -f default -f modernize.fixes.fix_open

.. attribute:: classic_division

Expand Down
4 changes: 2 additions & 2 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ A note about handling text literals
along with Python 2.
- Alternatively, there is the ``--six-unicode`` flag which will wrap Unicode
literals with the six helper function ``six.u()`` using the
``libmodernize.fixes.fix_unicode`` fixer. This is useful if you want
``modernize.fixes.fix_unicode`` fixer. This is useful if you want
to support Python 3.1 and Python 3.2 without bigger changes.
- The last alternative is the ``--future-unicode`` flag which
imports the ``unicode_literals`` from the ``__future__`` module using the
``libmodernize.fixes.fix_unicode_future`` fixer.
``modernize.fixes.fix_unicode_future`` fixer.
This requires Python 2.6 and later, and will require that you
mark bytestrings with ``b''`` and native strings in ``str('')``
or something similar that survives the transformation.
Expand Down
7 changes: 0 additions & 7 deletions modernize.py

This file was deleted.

7 changes: 7 additions & 0 deletions modernize/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""
A hack on top of fissix (lib2to3 fork) for modernizing code for hybrid codebases.
"""

from __future__ import generator_stop

__version__ = "0.8.1.dev0"
6 changes: 4 additions & 2 deletions __main__.py → modernize/__main__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from __future__ import generator_stop

from libmodernize import main
import sys

from .main import main

if __name__ == "__main__":
main.main()
sys.exit(main())
40 changes: 19 additions & 21 deletions libmodernize/fixes/__init__.py → modernize/fixes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,31 +28,29 @@
"fissix.fixes.fix_xreadlines",
}

lib2to3_fix_names = fissix_fix_names

# fixes that involve using six
six_fix_names = {
"libmodernize.fixes.fix_basestring",
"libmodernize.fixes.fix_dict_six",
"libmodernize.fixes.fix_filter",
"libmodernize.fixes.fix_imports_six",
"libmodernize.fixes.fix_itertools_six",
"libmodernize.fixes.fix_itertools_imports_six",
"libmodernize.fixes.fix_input_six",
"libmodernize.fixes.fix_int_long_tuple",
"libmodernize.fixes.fix_map",
"libmodernize.fixes.fix_metaclass",
"libmodernize.fixes.fix_raise_six",
"libmodernize.fixes.fix_unicode",
"libmodernize.fixes.fix_unicode_type",
"libmodernize.fixes.fix_urllib_six",
"libmodernize.fixes.fix_unichr",
"libmodernize.fixes.fix_xrange_six",
"libmodernize.fixes.fix_zip",
"modernize.fixes.fix_basestring",
"modernize.fixes.fix_dict_six",
"modernize.fixes.fix_filter",
"modernize.fixes.fix_imports_six",
"modernize.fixes.fix_itertools_six",
"modernize.fixes.fix_itertools_imports_six",
"modernize.fixes.fix_input_six",
"modernize.fixes.fix_int_long_tuple",
"modernize.fixes.fix_map",
"modernize.fixes.fix_metaclass",
"modernize.fixes.fix_raise_six",
"modernize.fixes.fix_unicode",
"modernize.fixes.fix_unicode_type",
"modernize.fixes.fix_urllib_six",
"modernize.fixes.fix_unichr",
"modernize.fixes.fix_xrange_six",
"modernize.fixes.fix_zip",
}

# Fixes that are opt-in only.
opt_in_fix_names = {
"libmodernize.fixes.fix_classic_division",
"libmodernize.fixes.fix_open",
"modernize.fixes.fix_classic_division",
"modernize.fixes.fix_open",
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

from fissix import fixer_base, fixer_util

import libmodernize


class FixBasestring(fixer_base.BaseFix):
BM_compatible = True
PATTERN = """'basestring'"""

def transform(self, node, results):
libmodernize.touch_import(None, "six", node)
fixer_util.touch_import(None, "six", node)
return fixer_util.Name("six.string_types", prefix=node.prefix)
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from fissix import fixer_base, pytree
from fissix.pgen2 import token

import libmodernize
from .. import utils


class FixClassicDivision(fixer_base.BaseFix):
Expand All @@ -21,7 +21,7 @@ def match(self, node):
def transform(self, node, results):
if self.skip:
return
libmodernize.add_future(node, "division")
utils.add_future(node, "division")

if node.value == "/":
return pytree.Leaf(token.DOUBLESLASH, "//", prefix=node.prefix)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@
from fissix import fixer_util, pytree
from fissix.fixes import fix_dict

import libmodernize


class FixDictSix(fix_dict.FixDict):
def transform_iter(self, node, results):
"""Call six.(iter|view)items() and friends."""
# Make sure six is imported.
libmodernize.touch_import(None, "six", node)
fixer_util.touch_import(None, "six", node)

# Copy of self.transform() from fissix.fix_dict with some changes to
# use the six.* methods.
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@

from __future__ import generator_stop

from fissix import fixer_util
from fissix.fixes import fix_filter

import libmodernize
from .. import utils


class FixFilter(fix_filter.FixFilter):
Expand All @@ -14,8 +15,8 @@ class FixFilter(fix_filter.FixFilter):

def transform(self, node, results):
result = super().transform(node, results)
if not libmodernize.is_listcomp(result):
if not utils.is_listcomp(result):
# Keep performance improvement from six.moves.filter in iterator
# contexts on Python 2.7.
libmodernize.touch_import("six.moves", "filter", node)
fixer_util.touch_import("six.moves", "filter", node)
return result
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from fissix.fixer_util import syms
from fissix.fixes import fix_import

import libmodernize
from .. import utils


class FixImport(fix_import.FixImport):
Expand All @@ -23,5 +23,5 @@ def transform(self, node, results):
return

# If there are any non-future imports, add absolute_import
libmodernize.add_future(node, "absolute_import")
utils.add_future(node, "absolute_import")
return super().transform(node, results)
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@

from __future__ import generator_stop

from fissix import fixer_base
from fissix import fixer_base, fixer_util
from fissix.fixer_util import Call, Name

from libmodernize import touch_import


class FixInputSix(fixer_base.ConditionalFix):

Expand All @@ -31,7 +29,7 @@ def transform(self, node, results):
if self.should_skip(node):
return

touch_import("six.moves", "input", node)
fixer_util.touch_import("six.moves", "input", node)
name = results["name"]
if name.value == "raw_input":
name.replace(Name("input", prefix=name.prefix))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

from fissix import fixer_base, fixer_util

from libmodernize import touch_import


class FixIntLongTuple(fixer_base.BaseFix):

Expand All @@ -17,6 +15,6 @@ class FixIntLongTuple(fixer_base.BaseFix):
"""

def transform(self, node, results):
touch_import(None, "six", node)
fixer_util.touch_import(None, "six", node)
pair = results["pair"]
pair.replace(fixer_util.Name("six.integer_types", prefix=pair.prefix))
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
from __future__ import generator_stop

# Local imports
from fissix import fixer_base
from fissix import fixer_base, fixer_util
from fissix.fixer_util import BlankLine, syms, token

import libmodernize

# This is a derived work of Lib/lib2to3/fixes/fix_itertools_imports.py. That file
# is under the copyright of the Python Software Foundation and licensed
# under the Python Software Foundation License 2.
Expand Down Expand Up @@ -50,7 +48,7 @@ def transform(self, node, results):
"izip_longest",
):
child.value = None
libmodernize.touch_import("six.moves", member_name[1:], node)
fixer_util.touch_import("six.moves", member_name[1:], node)
child.remove()

# Make sure the import statement is still sane
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,9 @@
from __future__ import generator_stop

# Local imports
from fissix import fixer_base
from fissix import fixer_base, fixer_util
from fissix.fixer_util import Name

import libmodernize


class FixItertoolsSix(fixer_base.BaseFix):
BM_compatible = True
Expand Down Expand Up @@ -50,7 +48,7 @@ def transform(self, node, results):
# function (to be consistant with the second part of the pattern)
dot.remove()
func.parent.replace(func)
libmodernize.touch_import("six.moves", func.value[1:], node)
fixer_util.touch_import("six.moves", func.value[1:], node)

prefix = prefix or func.prefix
func.replace(Name(func.value[1:], prefix=prefix))
7 changes: 4 additions & 3 deletions libmodernize/fixes/fix_map.py → modernize/fixes/fix_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@

from __future__ import generator_stop

from fissix import fixer_util
from fissix.fixes import fix_map

import libmodernize
from .. import utils


class FixMap(fix_map.FixMap):
Expand All @@ -14,8 +15,8 @@ class FixMap(fix_map.FixMap):

def transform(self, node, results):
result = super().transform(node, results)
if not libmodernize.is_listcomp(result):
if not utils.is_listcomp(result):
# Always use the import even if no change is required so as to have
# improved performance in iterator contexts even on Python 2.7.
libmodernize.touch_import("six.moves", "map", node)
fixer_util.touch_import("six.moves", "map", node)
return result
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,10 @@
from __future__ import generator_stop

# Local imports
from fissix import fixer_base
from fissix import fixer_base, fixer_util
from fissix.fixer_util import Call, Comma, Leaf, Name, Node, syms
from fissix.pygram import token

from libmodernize import touch_import

# Author: Jack Diederich, Daniel Neuhäuser


Expand Down Expand Up @@ -198,7 +196,7 @@ def transform(self, node, results):
else:
raise ValueError("Unexpected class definition") # pragma: no cover

touch_import(None, "six", node)
fixer_util.touch_import(None, "six", node)

metaclass = last_metaclass.children[0].children[2].clone()
metaclass.prefix = ""
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from __future__ import generator_stop

from fissix import fixer_base

import libmodernize
from fissix import fixer_base, fixer_util


class FixOpen(fixer_base.BaseFix):
Expand All @@ -14,4 +12,4 @@ class FixOpen(fixer_base.BaseFix):
"""

def transform(self, node, results):
libmodernize.touch_import("io", "open", node)
fixer_util.touch_import("io", "open", node)
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

from fissix.fixes import fix_print

import libmodernize
from .. import utils


class FixPrint(fix_print.FixPrint):
def transform(self, node, results):
result = super().transform(node, results)
libmodernize.add_future(node, "print_function")
utils.add_future(node, "print_function")
return result
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
from __future__ import generator_stop

# Local imports
from fissix import fixer_base
from fissix import fixer_base, fixer_util
from fissix.fixer_util import Call, Comma, Name

from libmodernize import touch_import


class FixRaiseSix(fixer_base.BaseFix):

Expand All @@ -28,7 +26,7 @@ def transform(self, node, results):
exc.prefix = ""
val.prefix = tb.prefix = " "

touch_import(None, "six", node)
fixer_util.touch_import(None, "six", node)
return Call(
Name("six.reraise"), [exc, Comma(), val, Comma(), tb], prefix=node.prefix
)

0 comments on commit 02fd478

Please sign in to comment.