Skip to content

Commit a306b8e

Browse files
authored
fix: windows globbing for check (#6598)
## 📝 Summary Use `os.sep` for correct globbing mechanism. Fixed old tests that ignored windows
1 parent 8229cf7 commit a306b8e

File tree

2 files changed

+219
-242
lines changed

2 files changed

+219
-242
lines changed

marimo/_utils/files.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ async def async_get_files(folder: str) -> AsyncGenerator[Path, None]:
3838
yield file_path
3939

4040

41+
def _get_root(pattern: str) -> str:
42+
sep = os.sep
43+
root = "."
44+
parts = pattern.split(sep)
45+
for i, part in enumerate(parts):
46+
if "*" in part or "?" in part:
47+
root = sep.join(parts[:i]) if i > 0 else "."
48+
break
49+
elif os.path.isdir(sep.join(parts[: i + 1])):
50+
root = sep.join(parts[: i + 1])
51+
return root
52+
53+
4154
def expand_file_patterns(file_patterns: tuple[str, ...]) -> list[Path]:
4255
"""Expand file patterns to actual file paths.
4356
@@ -57,14 +70,7 @@ def expand_file_patterns(file_patterns: tuple[str, ...]) -> list[Path]:
5770
# Handle glob patterns by walking from root and filtering
5871
if "**" in pattern or "*" in pattern or "?" in pattern:
5972
# Extract root directory to walk from
60-
root = "."
61-
parts = pattern.split("/")
62-
for i, part in enumerate(parts):
63-
if "*" in part or "?" in part:
64-
root = "/".join(parts[:i]) if i > 0 else "."
65-
break
66-
elif os.path.isdir("/".join(parts[: i + 1])):
67-
root = "/".join(parts[: i + 1])
73+
root = _get_root(pattern)
6874

6975
# Get all files from root and filter by pattern
7076
if os.path.isdir(root):
@@ -111,14 +117,7 @@ async def async_expand_file_patterns(
111117
# Handle glob patterns by walking from root and filtering
112118
if "**" in pattern or "*" in pattern or "?" in pattern:
113119
# Extract root directory to walk from
114-
root = "."
115-
parts = pattern.split("/")
116-
for i, part in enumerate(parts):
117-
if "*" in part or "?" in part:
118-
root = "/".join(parts[:i]) if i > 0 else "."
119-
break
120-
elif os.path.isdir("/".join(parts[: i + 1])):
121-
root = "/".join(parts[: i + 1])
120+
root = _get_root(pattern)
122121

123122
# Get all files from root and filter by pattern
124123
if os.path.isdir(root):

0 commit comments

Comments
 (0)