code: def test_parse_url():
      from ..s3 import S3Downloader
  
      f = S3Downloader._parse_url
      b1 = "s3://bucket.name/file/path?revision=123"
      assert_equal(f(b1, bucket_only=True), "bucket.name")
      assert_equal(
          f(b1), ("bucket.name", "file/path", {"revision": "123"})
      )
      assert_equal(f("s3://b/f name"), ("b", "f name", {}))
      assert_equal(f("s3://b/f%20name"), ("b", "f name", {}))
      assert_equal(f("s3://b/f%2Bname"), ("b", "f+name", {}))
      assert_equal(
          f("s3://b/f%2bname?r=%20"), ("b", "f+name", {"r": "%20"})
      )
  
imports: import os
  from unittest.mock import patch
  import pytest
  from ...downloaders.base import DownloadError
  from ...support import path
  from ...support.exceptions import AccessDeniedError
  from ...tests.utils_pytest import SkipTest, assert_equal, assert_raises, integration, skip_if_no_module, skip_if_no_network, swallow_outputs, turtle, use_cassette, with_tempfile, with_testsui
  from ...utils import md5sum
  from ..providers import Providers
  from ..s3 import S3Authenticator, S3Downloader
  from .test_http import check_download_external_url
  from .utils import get_test_providers
label_desc: Use image node_id 4 for calling a global function with example usage: test_parse_url() without return types