ianmcook commented on a change in pull request #9800: URL: https://github.com/apache/arrow/pull/9800#discussion_r605828206
########## File path: r/R/filesystem.R ########## @@ -273,33 +273,56 @@ FileSystem$from_uri <- function(uri) { fs___FileSystemFromUri(uri) } -get_path_and_filesystem <- function(x, filesystem = NULL) { +get_paths_and_filesystem <- function(x, filesystem = NULL) { # Wrapper around FileSystem$from_uri that handles local paths # and an optional explicit filesystem if (inherits(x, "SubTreeFileSystem")) { return(list(fs = x$base_fs, path = x$base_path)) } - assert_that(is.string(x)) - if (is_url(x)) { + assert_that(is.character(x)) + are_urls <- are_urls(x) + if (any(are_urls)) { + if (!all(are_urls)) { + stop( + "Vectors of paths and URIs for different file systems are not supported", + call. = FALSE + ) + } if (!is.null(filesystem)) { # Stop? Can't have URL (which yields a fs) and another fs } - FileSystem$from_uri(x) + # TODO: do this more efficiently? + x <- lapply(x, FileSystem$from_uri) Review comment: I'm unsure if this approach is OK, or if we should instead attempt to find a common parent directory of all the files in `x`, create a `SubTreeFileSystem` from that, then make all the paths relative to that. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org