[Python-checkins] distutils2: replacing a string by a list when possible
tarek.ziade
python-checkins at python.org
Fri May 14 22:36:12 CEST 2010
tarek.ziade pushed 89afa1684670 to distutils2:
http://hg.python.org/distutils2/rev/89afa1684670
changeset: 150:89afa1684670
user: Tarek Ziade <tarek at ziade.org>
date: Fri May 14 17:53:48 2010 +0200
summary: replacing a string by a list when possible
files: src/distutils2/converter/fixers/fix_setup_options.py, src/distutils2/tests/conversions/03_after.py
diff --git a/src/distutils2/converter/fixers/fix_setup_options.py b/src/distutils2/converter/fixers/fix_setup_options.py
--- a/src/distutils2/converter/fixers/fix_setup_options.py
+++ b/src/distutils2/converter/fixers/fix_setup_options.py
@@ -5,7 +5,7 @@
"""
# Local imports
-from lib2to3 import pytree
+from lib2to3.pytree import Leaf, Node
from lib2to3.pgen2 import token
from lib2to3 import fixer_base
from lib2to3.fixer_util import Assign, Name, Newline, Number, Subscript, syms
@@ -20,6 +20,7 @@
'long_description': 'description',
'description': 'summary',
'install_requires': 'requires_dist'}
+_SEQUENCE_NAMES = ['requires_dist']
class FixSetupOptions(fixer_base.BaseFix):
@@ -30,14 +31,35 @@
power< name='setup' trailer< '(' [any] ')' > any* >
"""
+ def _get_list(self, *nodes):
+ """A List node, filled"""
+ lbrace = Leaf(token.LBRACE, u"[")
+ lbrace.prefix = u" "
+ if len(nodes) > 0:
+ nodes[0].prefix = u""
+ return Node(self.syms.trailer,
+ [lbrace]+
+ [node.clone() for node in nodes] +
+ [Leaf(token.RBRACE, u"]")])
+
def _fix_name(self, argument, remove_list):
name = argument.children[0]
- sibling = name.get_next_sibling()
+ next = name.get_next_sibling
+ sibling = next()
if sibling is None or sibling.type != token.EQUAL:
return False
if name.value in _OLD_NAMES:
name.value = _OLD_NAMES[name.value]
+ if name.value in _SEQUENCE_NAMES:
+ right_operand = next().get_next_sibling()
+ # replacing string -> list[string]
+ if right_operand.type == token.STRING:
+ # we want this to be a list now
+ new_node = self._get_list(right_operand)
+ right_operand.replace(new_node)
+
+
return True
return False
diff --git a/src/distutils2/tests/conversions/03_after.py b/src/distutils2/tests/conversions/03_after.py
--- a/src/distutils2/tests/conversions/03_after.py
+++ b/src/distutils2/tests/conversions/03_after.py
@@ -80,7 +80,7 @@
packages = ['zc', 'zc.buildout'],
package_dir = {'': 'src'},
namespace_packages = ['zc'],
- requires_dist = 'setuptools',
+ requires_dist = ['setuptools'],
include_package_data = True,
entry_points = entry_points,
zip_safe=False,
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list