parameters: (name, value)
return_statement: return value
docstring: Helper function to format and quote a single header parameter using the
  
      strategy defined in RFC 2231.
  
  
  
      Particularly useful for header parameters which might contain
  
      non-ASCII values, like file names. This follows
  
      `RFC 2388 Section 4.4 <https://tools.ietf.org/html/rfc2388#section-4.4>`_.
  
  
  
      :param name:
  
          The name of the parameter, a string expected to be ASCII only.
  
      :param value:
  
          The value of the parameter, provided as ``bytes`` or `str``.
  
      :ret:
  
          An RFC-2231-formatted unicode string.
function: def format_header_param_rfc2231(name, value):
  
      """
  
      Helper function to format and quote a single header parameter using the
  
      strategy defined in RFC 2231.
  
  
  
      Particularly useful for header parameters which might contain
  
      non-ASCII values, like file names. This follows
  
      `RFC 2388 Section 4.4 <https://tools.ietf.org/html/rfc2388#section-4.4>`_.
  
  
  
      :param name:
  
          The name of the parameter, a string expected to be ASCII only.
  
      :param value:
  
          The value of the parameter, provided as ``bytes`` or `str``.
  
      :ret:
  
          An RFC-2231-formatted unicode string.
  
      """
  
      if isinstance(value, six.binary_type):
  
          value = value.decode("utf-8")
  
  
  
      if not any(ch in value for ch in '"\\\r\n'):
  
          result = u'%s="%s"' % (name, value)
  
          try:
  
              result.encode("ascii")
  
          except (UnicodeEncodeError, UnicodeDecodeError):
  
              pass
  
          else:
  
              return result
  
  
  
      if six.PY2:  # Python 2:
  
          value = value.encode("utf-8")
  
  
  
      # encode_rfc2231 accepts an encoded string and returns an ascii-encoded
  
      # string in Python 2 but accepts and returns unicode strings in Python 3
  
      value = email.utils.encode_rfc2231(value, "utf-8")
  
      value = "%s*=%s" % (name, value)
  
  
  
      if six.PY2:  # Python 2:
  
          value = value.decode("utf-8")
  
  
  
      return value
function_tokens: def format_header_param_rfc2231 ( name , value ) : if isinstance ( value , six . binary_type ) : value = value . decode ( "utf-8" ) if not any ( ch in value for ch in '"\\\r\n' ) : result = u'%s="%s"' % ( name , value ) try : result . encode ( "ascii" ) except ( UnicodeEncodeError , UnicodeDecodeError ) : pass else : return result if six . PY2 : # Python 2: value = value . encode ( "utf-8" ) # encode_rfc2231 accepts an encoded string and returns an ascii-encoded # string in Python 2 but accepts and returns unicode strings in Python 3 value = email . utils . encode_rfc2231 ( value , "utf-8" ) value = "%s*=%s" % ( name , value ) if six . PY2 : # Python 2: value = value . decode ( "utf-8" ) return value