code: def quote(string, safe='/', encoding=None, errors=None):
      
      if isinstance(string, str):
          if not string:
              return string
          if encoding is None:
              encoding = 'utf-8'
          if errors is None:
              errors = 'strict'
          string = string.encode(encoding, errors)
      else:
          if encoding is not None:
              raise TypeError("quote() doesn't support 'encoding' for bytes")
          if errors is not None:
              raise TypeError("quote() doesn't support 'errors' for bytes")
      return quote_from_bytes(string, safe)
docs: quote('abc def') -> 'abc%20def'
  
      Each part of a URL, e.g. the path info, the query, etc., has a
      different set of reserved characters that must be quoted.
  
      RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists
      the following reserved characters.
  
      reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                    "$" | ","
  
      Each of these characters is reserved in some component of a URL,
      but not necessarily in all of them.
  
      By default, the quote function is intended for quoting the path
      section of a URL.  Thus, it will not encode '/'.  This character
      is reserved, but in typical usage the quote function is being
      called on a path where the existing slash characters are used as
      reserved characters.
  
      string and safe may be either str or bytes objects. encoding must
      not be specified if string is a str.
  
      The optional encoding and errors parameters specify how to deal with
      non-ASCII characters, as accepted by the str.encode method.
      By default, encoding='utf-8' (characters are encoded with UTF-8), and
      errors='strict' (unsupported characters raise a UnicodeEncodeError).