code: def _encode_auth(auth):
      
      auth_s = urllib.parse.unquote(auth)
      # convert to bytes
      auth_bytes = auth_s.encode()
      encoded_bytes = base64.b64encode(auth_bytes)
      # convert back to a string
      encoded = encoded_bytes.decode()
      # strip the trailing carriage return
      return encoded.replace('\n', '')
docs: A function compatible with Python 2.3-3.3 that will encode
      auth from a URL suitable for an HTTP header.
      >>> str(_encode_auth('username%3Apassword'))
      'dXNlcm5hbWU6cGFzc3dvcmQ='
  
      Long auth strings should not cause a newline to be inserted.
      >>> long_auth = 'username:' + 'password'*10
      >>> chr(10) in str(_encode_auth(long_auth))
      False