parameters: (self, url, params)
docstring: Prepares the given HTTP URL.
docstring_summary: Prepares the given HTTP URL.
docstring_tokens: Prepares the given HTTP URL .
function: def prepare_url(self, url, params):
          """Prepares the given HTTP URL."""
          #: Accept objects that have string representations.
          #: We're unable to blindly call unicode/str functions
          #: as this will include the bytestring indicator (b'')
          #: on python 3.x.
          #: https://github.com/requests/requests/pull/2238
          if isinstance(url, bytes):
              url = url.decode('utf8')
          else:
              url = unicode(url) if is_py2 else str(url)
  
          # Remove leading whitespaces from url
          url = url.lstrip()
  
          # Don't do any URL preparation for non-HTTP schemes like `mailto`,
          # `data` etc to work around exceptions from `url_parse`, which
          # handles RFC 3986 only.
          if ':' in url and not url.lower().startswith('http'):
              self.url = url
              return
  
          # Support for unicode domain names and paths.
          try:
              scheme, auth, host, port, path, query, fragment = parse_url(url)
          except LocationParseError as e:
              raise InvalidURL(*e.args)
  
          if not scheme:
              error = ("Invalid URL {0!r}: No schema supplied. Perhaps you meant http://{0}?")
              error = error.format(to_native_string(url, 'utf8'))
  
              raise MissingSchema(error)
  
          if not host:
              raise InvalidURL("Invalid URL %r: No host supplied" % url)
  
          # In general, we want to try IDNA encoding the hostname if the string contains
          # non-ASCII characters. This allows users to automatically get the correct IDNA
          # behaviour. For strings containing only ASCII characters, we need to also verify
          # it doesn't start with a wildcard (*), before allowing the unencoded hostname.
          if not unicode_is_ascii(host):
              try:
                  host = self._get_idna_encoded_host(host)
              except UnicodeError:
                  raise InvalidURL('URL has an invalid label.')
          elif host.startswith(u'*'):
              raise InvalidURL('URL has an invalid label.')
  
          # Carefully reconstruct the network location
          netloc = auth or ''
          if netloc:
              netloc += '@'
          netloc += host
          if port:
              netloc += ':' + str(port)
  
          # Bare domains aren't valid URLs.
          if not path:
              path = '/'
  
          if is_py2:
              if isinstance(scheme, str):
                  scheme = scheme.encode('utf-8')
              if isinstance(netloc, str):
                  netloc = netloc.encode('utf-8')
              if isinstance(path, str):
                  path = path.encode('utf-8')
              if isinstance(query, str):
                  query = query.encode('utf-8')
              if isinstance(fragment, str):
                  fragment = fragment.encode('utf-8')
  
          if isinstance(params, (str, bytes)):
              params = to_native_string(params)
  
          enc_params = self._encode_params(params)
          if enc_params:
              if query:
                  query = '%s&%s' % (query, enc_params)
              else:
                  query = enc_params
  
          url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment]))
          self.url = url
function_tokens: def prepare_url ( self , url , params ) : #: Accept objects that have string representations. #: We're unable to blindly call unicode/str functions #: as this will include the bytestring indicator (b'') #: on python 3.x. #: https://github.com/requests/requests/pull/2238 if isinstance ( url , bytes ) : url = url . decode ( 'utf8' ) else : url = unicode ( url ) if is_py2 else str ( url ) # Remove leading whitespaces from url url = url . lstrip ( ) # Don't do any URL preparation for non-HTTP schemes like `mailto`, # `data` etc to work around exceptions from `url_parse`, which # handles RFC 3986 only. if ':' in url and not url . lower ( ) . startswith ( 'http' ) : self . url = url return # Support for unicode domain names and paths. try : scheme , auth , host , port , path , query , fragment = parse_url ( url ) except LocationParseError as e : raise InvalidURL ( * e . args ) if not scheme : error = ( "Invalid URL {0!r}: No schema supplied. Perhaps you meant http://{0}?" ) error = error . format ( to_native_string ( url , 'utf8' ) ) raise MissingSchema ( error ) if not host : raise InvalidURL ( "Invalid URL %r: No host supplied" % url ) # In general, we want to try IDNA encoding the hostname if the string contains # non-ASCII characters. This allows users to automatically get the correct IDNA # behaviour. For strings containing only ASCII characters, we need to also verify # it doesn't start with a wildcard (*), before allowing the unencoded hostname. if not unicode_is_ascii ( host ) : try : host = self . _get_idna_encoded_host ( host ) except UnicodeError : raise InvalidURL ( 'URL has an invalid label.' ) elif host . startswith ( u'*' ) : raise InvalidURL ( 'URL has an invalid label.' ) # Carefully reconstruct the network location netloc = auth or '' if netloc : netloc += '@' netloc += host if port : netloc += ':' + str ( port ) # Bare domains aren't valid URLs. if not path : path = '/' if is_py2 : if isinstance ( scheme , str ) : scheme = scheme . encode ( 'utf-8' ) if isinstance ( netloc , str ) : netloc = netloc . encode ( 'utf-8' ) if isinstance ( path , str ) : path = path . encode ( 'utf-8' ) if isinstance ( query , str ) : query = query . encode ( 'utf-8' ) if isinstance ( fragment , str ) : fragment = fragment . encode ( 'utf-8' ) if isinstance ( params , ( str , bytes ) ) : params = to_native_string ( params ) enc_params = self . _encode_params ( params ) if enc_params : if query : query = '%s&%s' % ( query , enc_params ) else : query = enc_params url = requote_uri ( urlunparse ( [ scheme , netloc , path , None , query , fragment ] ) ) self . url = url