def resolve_location(path: Location) -> str: """ Make sure a dataset location is a URL, suitable to be the dataset_location in datacube indexing. Users may specify a pathlib.Path(), and we'll convert it as needed. """ if isinstance(path, str): if not dc_uris.is_url(path) and not dc_uris.is_vsipath(path): raise ValueError( "A string location is expected to be a URL or VSI path. " "Perhaps you want to give it as a local pathlib.Path()?") return path path = dc_uris.normalise_path(path) if ".tar" in path.suffixes: return f"tar:{path}!/" elif ".zip" in path.suffixes: return f"zip:{path}!/" else: uri = path.as_uri() # Base paths specified as directories must end in a slash, # so they will be url joined as subfolders. (pathlib strips them) if path.is_dir(): return f"{uri}/" return uri
def test_is_url(test_input, expected): assert is_url(test_input) == expected if expected: assert as_url(test_input) is test_input
def test_is_url(test_input, expected): assert is_url(test_input) == expected