From 3fb1be26a30998471883acf3395fda2095347b56 Mon Sep 17 00:00:00 2001 From: Theo Vanderkooy Date: Mon, 27 Jan 2025 15:55:24 -0500 Subject: [PATCH] Keep existing behaviour for `session.read.()`, that paths starting with `/` are an error. --- src/snowflake/snowpark/_internal/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/snowflake/snowpark/_internal/utils.py b/src/snowflake/snowpark/_internal/utils.py index 2f06282647a..6ba5275b54f 100644 --- a/src/snowflake/snowpark/_internal/utils.py +++ b/src/snowflake/snowpark/_internal/utils.py @@ -69,6 +69,8 @@ SNOWFLAKE_PATH_PREFIXES = [ STAGE_PREFIX, SNOWURL_PREFIX, +] +SNOWFLAKE_PATH_PREFIXES_FOR_GET = SNOWFLAKE_PATH_PREFIXES + [ RELATIVE_PATH_PREFIX, ] @@ -374,7 +376,7 @@ def normalize_path(path: str, is_local: bool) -> str: a directory named "load data". Therefore, if `path` is already wrapped by single quotes, we do nothing. """ - prefixes = ["file://"] if is_local else SNOWFLAKE_PATH_PREFIXES + prefixes = ["file://"] if is_local else SNOWFLAKE_PATH_PREFIXES_FOR_GET if is_single_quoted(path): return path if is_local and OPERATING_SYSTEM == "Windows": @@ -410,7 +412,7 @@ def split_path(path: str) -> Tuple[str, str]: def unwrap_stage_location_single_quote(name: str) -> str: new_name = unwrap_single_quote(name) - if any(new_name.startswith(prefix) for prefix in SNOWFLAKE_PATH_PREFIXES): + if any(new_name.startswith(prefix) for prefix in SNOWFLAKE_PATH_PREFIXES_FOR_GET): return new_name return f"{STAGE_PREFIX}{new_name}"