code: def split_auth_from_netloc(netloc):
      
      if '@' not in netloc:
          return netloc, (None, None)
  
      # Split from the right because that's how urllib.parse.urlsplit()
      # behaves if more than one @ is present (which can be checked using
      # the password attribute of urlsplit()'s return value).
      auth, netloc = netloc.rsplit('@', 1)
      if ':' in auth:
          # Split from the left because that's how urllib.parse.urlsplit()
          # behaves if more than one : is present (which again can be checked
          # using the password attribute of the return value)
          user_pass = auth.split(':', 1)
      else:
          user_pass = auth, None
  
      user_pass = tuple(
          None if x is None else urllib_unquote(x) for x in user_pass
      )
  
      return netloc, user_pass
docs: Parse out and remove the auth information from a netloc.
  
      Returns: (netloc, (username, password)).