parameters: (pem_string, markers, skip_invalid_blobs=True)
docstring: Read PEM blobs from a string.
  
      Args:
          pem_string: the PEM string.
          markers: a single marker string or an iterable containing all
              accepted markers, such as CERTIFICATE, RSA PUBLIC KEY,
              PUBLIC KEY, etc.
          skip_invalid_blobs: if False, invalid PEM blobs cause a PemError.
              If True, invalid blobs are skipped. In non-skip mode, an immediate
              StopIteration before any valid blocks are found, also causes a
              a PemError exception.
  
      Yields:
          (raw_string, marker) tuples containing the decoded blob and the marker
          used to detect the blob.
  
      Raises:
          PemError: a PEM block was invalid.
docstring_summary: Read PEM blobs from a string.
docstring_tokens: Read PEM blobs from a string .
function: def pem_blocks(pem_string, markers, skip_invalid_blobs=True):
      """Read PEM blobs from a string.
  
      Args:
          pem_string: the PEM string.
          markers: a single marker string or an iterable containing all
              accepted markers, such as CERTIFICATE, RSA PUBLIC KEY,
              PUBLIC KEY, etc.
          skip_invalid_blobs: if False, invalid PEM blobs cause a PemError.
              If True, invalid blobs are skipped. In non-skip mode, an immediate
              StopIteration before any valid blocks are found, also causes a
              a PemError exception.
  
      Yields:
          (raw_string, marker) tuples containing the decoded blob and the marker
          used to detect the blob.
  
      Raises:
          PemError: a PEM block was invalid.
      """
      with PemReader.from_string(pem_string, markers,
                                 skip_invalid_blobs=skip_invalid_blobs) as reader:
          for block in reader:
              yield block
function_tokens: def pem_blocks ( pem_string , markers , skip_invalid_blobs = True ) : with PemReader . from_string ( pem_string , markers , skip_invalid_blobs = skip_invalid_blobs ) as reader : for block in reader : yield block