docs: def uri_with(uri, scheme=None, netloc=None, path=None, params=None, query=None, fragment=None):
      """Return a URI with the given part(s) replaced.
  
      Parts are decoded / encoded.
      """
      old_scheme, old_netloc, old_path, old_params, old_query, old_fragment = urlparse(uri)
      path, _netloc = _normalize_win_path(path)
      return urlunparse((
          scheme or old_scheme,
          netloc or old_netloc,
          path or old_path,
          params or old_params,
          query or old_query,
          fragment or old_fragment
      ))