code: def make_target(url, extra_opts=None):
      
      # debug = extra_opts.get("debug", 1)
      parts = compat.urlparse(url, allow_fragments=False)
      # scheme is case-insensitive according to https://tools.ietf.org/html/rfc3986
      scheme = parts.scheme.lower()
      if scheme in ["ftp", "ftps"]:
          creds = parts.username, parts.password
          tls = scheme == "ftps"
          from ftpsync import ftp_target
  
          target = ftp_target.FtpTarget(
              parts.path,
              parts.hostname,
              parts.port,
              username=creds[0],
              password=creds[1],
              tls=tls,
              timeout=None,
              extra_opts=extra_opts,
          )
      else:
          target = FsTarget(url, extra_opts)
  
      return target
docs: Factory that creates `_Target` objects from URLs.
  
      FTP targets must begin with the scheme ``ftp://`` or ``ftps://`` for TLS.
  
      Note:
          TLS is only supported on Python 2.7/3.2+.
      Args:
          url (str):
          extra_opts (dict, optional): Passed to Target constructor. Default: None.
      Returns:
          :class:`_Target`