code: def _iter_straight_packed(self, byte_blocks):
          
  
          # length of row, in bytes
          rb = self.row_bytes
          a = bytearray()
          # The previous (reconstructed) scanline.
          # None indicates first line of image.
          recon = None
          for some_bytes in byte_blocks:
              a.extend(some_bytes)
              while len(a) >= rb + 1:
                  filter_type = a[0]
                  scanline = a[1: rb + 1]
                  del a[: rb + 1]
                  recon = self.undo_filter(filter_type, scanline, recon)
                  yield recon
          if len(a) != 0:
              # :file:format We get here with a file format error:
              # when the available bytes (after decompressing) do not
              # pack into exact rows.
              raise FormatError('Wrong size for decompressed IDAT chunk.')
          assert len(a) == 0
docs: Iterator that undoes the effect of filtering;
          yields each row as a sequence of packed bytes.
          Assumes input is straightlaced.
          `byte_blocks` should be an iterable that yields the raw bytes
          in blocks of arbitrary size.