]> granicus.if.org Git - python/commitdiff
more yield from
authorPhilip Jenvey <pjenvey@underboss.org>
Mon, 1 Oct 2012 22:34:31 +0000 (15:34 -0700)
committerPhilip Jenvey <pjenvey@underboss.org>
Mon, 1 Oct 2012 22:34:31 +0000 (15:34 -0700)
patch by Serhiy Storchaka

Lib/http/cookiejar.py
Lib/json/encoder.py
Lib/xml/etree/ElementPath.py
Lib/xml/etree/ElementTree.py
Tools/importbench/importbench.py

index 901e762f0e66399d2f80807b9e7f0eb770608c2a..a77dc3fc5d89e8ada17c51870d26b87d71f7284a 100644 (file)
@@ -1193,8 +1193,7 @@ def deepvalues(mapping):
             pass
         else:
             mapping = True
-            for subobj in deepvalues(obj):
-                yield subobj
+            yield from deepvalues(obj)
         if not mapping:
             yield obj
 
index 75b7f494b3f00b299e509eb5aab66bdcd186868d..ba57c2c25eeed92d4b328d8823bb5a4bc3d556f0 100644 (file)
@@ -305,8 +305,7 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
                     chunks = _iterencode_dict(value, _current_indent_level)
                 else:
                     chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
+                yield from chunks
         if newline_indent is not None:
             _current_indent_level -= 1
             yield '\n' + _indent * _current_indent_level
@@ -381,8 +380,7 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
                     chunks = _iterencode_dict(value, _current_indent_level)
                 else:
                     chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
+                yield from chunks
         if newline_indent is not None:
             _current_indent_level -= 1
             yield '\n' + _indent * _current_indent_level
@@ -404,11 +402,9 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
         elif isinstance(o, float):
             yield _floatstr(o)
         elif isinstance(o, (list, tuple)):
-            for chunk in _iterencode_list(o, _current_indent_level):
-                yield chunk
+            yield from _iterencode_list(o, _current_indent_level)
         elif isinstance(o, dict):
-            for chunk in _iterencode_dict(o, _current_indent_level):
-                yield chunk
+            yield from _iterencode_dict(o, _current_indent_level)
         else:
             if markers is not None:
                 markerid = id(o)
@@ -416,8 +412,7 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
                     raise ValueError("Circular reference detected")
                 markers[markerid] = o
             o = _default(o)
-            for chunk in _iterencode(o, _current_indent_level):
-                yield chunk
+            yield from _iterencode(o, _current_indent_level)
             if markers is not None:
                 del markers[markerid]
     return _iterencode
index 52e65f063daef231d93dcdb0d26deadc0898e3c6..341dac0204b8e4428a537b1d784881a902e771a5 100644 (file)
@@ -105,14 +105,12 @@ def prepare_child(next, token):
 def prepare_star(next, token):
     def select(context, result):
         for elem in result:
-            for e in elem:
-                yield e
+            yield from elem
     return select
 
 def prepare_self(next, token):
     def select(context, result):
-        for elem in result:
-            yield elem
+        yield from result
     return select
 
 def prepare_descendant(next, token):
index b9d8df6ab9dc23fc17f69bdb49ceae15177b345c..c199b17eb1a34b023b7349df5d9edb9af44e456e 100644 (file)
@@ -459,8 +459,7 @@ class Element:
         if tag is None or self.tag == tag:
             yield self
         for e in self._children:
-            for e in e.iter(tag):
-                yield e
+            yield from e.iter(tag)
 
     # compatibility
     def getiterator(self, tag=None):
@@ -487,8 +486,7 @@ class Element:
         if self.text:
             yield self.text
         for e in self:
-            for s in e.itertext():
-                yield s
+            yield from e.itertext()
             if e.tail:
                 yield e.tail
 
index 714c0e427f9c872bbf22ad082530f87c2fdb98f6..635dd56d16045c72d8fef16047fcc05ee50c0526 100644 (file)
@@ -46,8 +46,7 @@ def from_cache(seconds, repeat):
     module.__package__ = ''
     with util.uncache(name):
         sys.modules[name] = module
-        for result in bench(name, repeat=repeat, seconds=seconds):
-            yield result
+        yield from bench(name, repeat=repeat, seconds=seconds)
 
 
 def builtin_mod(seconds, repeat):
@@ -56,9 +55,8 @@ def builtin_mod(seconds, repeat):
     if name in sys.modules:
         del sys.modules[name]
     # Relying on built-in importer being implicit.
-    for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
-                        seconds=seconds):
-        yield result
+    yield from bench(name, lambda: sys.modules.pop(name), repeat=repeat,
+                     seconds=seconds)
 
 
 def source_wo_bytecode(seconds, repeat):
@@ -73,9 +71,8 @@ def source_wo_bytecode(seconds, repeat):
             loader = (importlib.machinery.SourceFileLoader,
                       importlib.machinery.SOURCE_SUFFIXES, True)
             sys.path_hooks.append(importlib.machinery.FileFinder.path_hook(loader))
-            for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
-                                seconds=seconds):
-                yield result
+            yield from bench(name, lambda: sys.modules.pop(name), repeat=repeat,
+                             seconds=seconds)
     finally:
         sys.dont_write_bytecode = False
 
@@ -89,9 +86,8 @@ def _wo_bytecode(module):
             os.unlink(bytecode_path)
         sys.dont_write_bytecode = True
         try:
-            for result in bench(name, lambda: sys.modules.pop(name),
-                                repeat=repeat, seconds=seconds):
-                yield result
+            yield from bench(name, lambda: sys.modules.pop(name),
+                             repeat=repeat, seconds=seconds)
         finally:
             sys.dont_write_bytecode = False
 
@@ -127,8 +123,7 @@ def _writing_bytecode(module):
         def cleanup():
             sys.modules.pop(name)
             os.unlink(imp.cache_from_source(module.__file__))
-        for result in bench(name, cleanup, repeat=repeat, seconds=seconds):
-            yield result
+        yield from bench(name, cleanup, repeat=repeat, seconds=seconds)
 
     writing_bytecode_benchmark.__doc__ = (
                                 writing_bytecode_benchmark.__doc__.format(name))
@@ -148,9 +143,8 @@ def source_using_bytecode(seconds, repeat):
         sys.path_hooks.append(importlib.machinery.FileFinder.path_hook(loader))
         py_compile.compile(mapping[name])
         assert os.path.exists(imp.cache_from_source(mapping[name]))
-        for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
-                            seconds=seconds):
-            yield result
+        yield from bench(name, lambda: sys.modules.pop(name), repeat=repeat,
+                         seconds=seconds)
 
 
 def _using_bytecode(module):
@@ -158,9 +152,8 @@ def _using_bytecode(module):
     def using_bytecode_benchmark(seconds, repeat):
         """Source w/ bytecode: {}"""
         py_compile.compile(module.__file__)
-        for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat,
-                            seconds=seconds):
-            yield result
+        yield from bench(name, lambda: sys.modules.pop(name), repeat=repeat,
+                         seconds=seconds)
 
     using_bytecode_benchmark.__doc__ = (
                                 using_bytecode_benchmark.__doc__.format(name))