/Lib/lib2to3/fixes/fix_xreadlines.py

http://unladen-swallow.googlecode.com/ · Python · 24 lines · 17 code · 5 blank · 2 comment · 3 complexity · ade2c0b61ba9f8effa9df543a2fbdc4a MD5 · raw file

  1. """Fix "for x in f.xreadlines()" -> "for x in f".
  2. This fixer will also convert g(f.xreadlines) into g(f.__iter__)."""
  3. # Author: Collin Winter
  4. # Local imports
  5. from .. import fixer_base
  6. from ..fixer_util import Name
  7. class FixXreadlines(fixer_base.BaseFix):
  8. PATTERN = """
  9. power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
  10. |
  11. power< any+ trailer< '.' no_call='xreadlines' > >
  12. """
  13. def transform(self, node, results):
  14. no_call = results.get("no_call")
  15. if no_call:
  16. no_call.replace(Name("__iter__", prefix=no_call.get_prefix()))
  17. else:
  18. node.replace([x.clone() for x in results["call"]])