code: def _splitlines_preserving_trailing_newline(str):
      '''
      Returns a list of the lines in the string, breaking at line boundaries and
      preserving a trailing newline (if present).
  
      Essentially, this works like ``str.striplines(False)`` but preserves an
      empty line at the end. This is equivalent to the following code:
  
      .. code-block:: python
  
          lines = str.splitlines()
          if str.endswith('\n') or str.endswith('\r'):
              lines.append('')
      '''
      lines = str.splitlines()
      if str.endswith('\n') or str.endswith('\r'):
          lines.append('')
      return linef _splitlines_preserving_trailing_newline(str):
      '''
      Returns a list of the lines in the string, breaking at line boundaries and
      preserving a trailing newline (if present).
  
      Essentially, this works like ``str.striplines(False)`` but preserves an
      empty line at the end. This is equivalent to the following code:
  
      .. code-block:: python
  
          lines = str.splitlines()
          if str.endswith('\n') or str.endswith('\r'):
              lines.append('')
      '''
      lines = str.splitlines()
      if str.endswith('\n') or str.endswith('\r'):
          lines.append('')
      return lines
docs: Returns a list of the lines in the string, breaking at line boundaries and
      preserving a trailing newline (if present).
  
      Essentially, this works like ``str.striplines(False)`` but preserves an
      empty line at the end. This is equivalent to the following code:
  
      .. code-block:: python
  
          lines = str.splitlines()
          if str.endswith('\n') or str.endswith('\r'):
              lines.append('')