"""Iterate over string"""

from __future__ import absolute_import

import StringIO

import d1_common.const


class StringIterator(object):
  """Generator that returns the bytes of a string in chunks"""

  def __init__(self, string, chunk_size=d1_common.const.DEFAULT_CHUNK_SIZE):
    self._string = string
    self._chunk_size = chunk_size

  def __iter__(self):
    f = StringIO.StringIO(self._string)
    while True:
      chunk_str = f.read(self._chunk_size)
      if not chunk_str:
        break
      yield chunk_str

"""Iterate over string"""

from __future__ import absolute_import

import StringIO

import d1_common.const


class StringIterator(object):
  """Generator that returns the bytes of a string in chunks"""

  def __init__(self, string, chunk_size=d1_common.const.DEFAULT_CHUNK_SIZE):
    self._string = string
    self._chunk_size = chunk_size

  def __iter__(self):
    f = StringIO.StringIO(self._string)
    while True:
      chunk_str = f.read(self._chunk_size)
      if not chunk_str:
        break
      yield chunk_str

  def __len__(self):
    return len(self._string)

  @property
  def size(self):
    return len(self._string)

Improve StringIterator to allow for more general usage
Improve StringIterator to allow for more general usage

  """Iterate over string"""
  
  from __future__ import absolute_import
  
  import StringIO
  
  import d1_common.const
  
  
  class StringIterator(object):
    """Generator that returns the bytes of a string in chunks"""
  
    def __init__(self, string, chunk_size=d1_common.const.DEFAULT_CHUNK_SIZE):
      self._string = string
      self._chunk_size = chunk_size
  
    def __iter__(self):
      f = StringIO.StringIO(self._string)
      while True:
        chunk_str = f.read(self._chunk_size)
        if not chunk_str:
          break
        yield chunk_str
  
+   def __len__(self):
+     return len(self._string)
+ 
+   @property
+   def size(self):
+     return len(self._string)
+ 
Improve StringIterator to allow for more general usage
## Code Before:
"""Iterate over string"""

from __future__ import absolute_import

import StringIO

import d1_common.const


class StringIterator(object):
  """Generator that returns the bytes of a string in chunks"""

  def __init__(self, string, chunk_size=d1_common.const.DEFAULT_CHUNK_SIZE):
    self._string = string
    self._chunk_size = chunk_size

  def __iter__(self):
    f = StringIO.StringIO(self._string)
    while True:
      chunk_str = f.read(self._chunk_size)
      if not chunk_str:
        break
      yield chunk_str

## Instruction:
Improve StringIterator to allow for more general usage
## Code After:
"""Iterate over string"""

from __future__ import absolute_import

import StringIO

import d1_common.const


class StringIterator(object):
  """Generator that returns the bytes of a string in chunks"""

  def __init__(self, string, chunk_size=d1_common.const.DEFAULT_CHUNK_SIZE):
    self._string = string
    self._chunk_size = chunk_size

  def __iter__(self):
    f = StringIO.StringIO(self._string)
    while True:
      chunk_str = f.read(self._chunk_size)
      if not chunk_str:
        break
      yield chunk_str

  def __len__(self):
    return len(self._string)

  @property
  def size(self):
    return len(self._string)
