]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Implement prepend_sys_path_separator
authormwerezak <mwerezak@gmail.com>
Sat, 4 Nov 2023 23:24:53 +0000 (19:24 -0400)
committerMike Werezak <mike.werezak@nrcan-rncan.gc.ca>
Wed, 2 Apr 2025 18:02:12 +0000 (14:02 -0400)
alembic/config.py
alembic/script/base.py

index 2c52e7cd138820e1fdda5ac277ae723958d89d19..95502cb468b8998aa4fdc84b99832142f968c498 100644 (file)
@@ -339,6 +339,27 @@ class Config:
             ),
         )
 
+    def get_separator_char(self, name: str) -> Optional[str]:
+        separator = self.get_main_option(name)
+
+        split_on_path = {
+            None: None,
+            "space": " ",
+            "newline": "\n",
+            "os": os.pathsep,
+            ":": ":",
+            ";": ";",
+        }
+
+        try:
+            return split_on_path[separator]
+        except KeyError as ke:
+            raise ValueError(
+                "'%s' is not a valid value for %s; "
+                "expected 'space', 'newline', 'os', ':', ';'"
+                % (separator, name)
+            ) from ke
+
 
 class MessagingOptions(TypedDict, total=False):
     quiet: bool
index 75061ce272987cc15f1d7fa1b22f5f1e24984497..f556f35421551433faafb8f69cf07e1806bca5a3 100644 (file)
@@ -180,53 +180,41 @@ class ScriptDirectory:
         version_locations_str = config.get_main_option("version_locations")
         version_locations: Optional[List[str]]
         if version_locations_str:
-            version_path_separator = config.get_main_option(
+            split_char = config.get_separator_char(
                 "version_path_separator"
             )
 
-            split_on_path = {
-                None: None,
-                "space": " ",
-                "newline": "\n",
-                "os": os.pathsep,
-                ":": ":",
-                ";": ";",
-            }
-
-            try:
-                split_char: Optional[str] = split_on_path[
-                    version_path_separator
-                ]
-            except KeyError as ke:
-                raise ValueError(
-                    "'%s' is not a valid value for "
-                    "version_path_separator; "
-                    "expected 'space', 'newline', 'os', ':', ';'"
-                    % version_path_separator
-                ) from ke
+            if split_char is None:
+                # legacy behaviour for backwards compatibility
+                version_locations = _split_on_space_comma.split(
+                    version_locations_str
+                )
             else:
-                if split_char is None:
-                    # legacy behaviour for backwards compatibility
-                    version_locations = _split_on_space_comma.split(
-                        version_locations_str
-                    )
-                else:
-                    version_locations = [
-                        x.strip()
-                        for x in version_locations_str.split(split_char)
-                        if x
-                    ]
+                version_locations = [
+                    x.strip()
+                    for x in version_locations_str.split(split_char)
+                    if x
+                ]
         else:
             version_locations = None
 
         prepend_sys_path = config.get_main_option("prepend_sys_path")
         if prepend_sys_path:
-            if os.name == 'nt':
-                prepend_paths = _split_on_space_comma.split(prepend_sys_path)
+            split_char = config.get_separator_char(
+                "prepend_sys_path_separator"
+            )
+
+            if split_char is None:
+                # legacy behaviour for backwards compatibility
+                sys.path[:0] = list(
+                    _split_on_space_comma_colon.split(prepend_sys_path)
+                )
             else:
-                prepend_paths = _split_on_space_comma_colon.split(prepend_sys_path)
-            
-            sys.path[:0] = (os.path.normpath(path.strip()) for path in prepend_paths)
+                sys.path[:0] = (
+                    path.strip()
+                    for path in prepend_sys_path.split(split_char)
+                    if path
+                )
 
         rvl = config.get_main_option("recursive_version_locations") == "true"
         return ScriptDirectory(