Skip to content

Commit 33b2890

Browse files
authored
Normalize Windows style paths to parse folder (#376)
1 parent c83c455 commit 33b2890

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

.github/workflows/test.yml

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ on:
88

99
jobs:
1010
build:
11-
runs-on: ubuntu-latest
1211
strategy:
1312
matrix:
14-
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
13+
os: ["ubuntu-latest", "windows-latest"]
14+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
15+
runs-on: ${{ matrix.os }}
16+
env:
17+
PYTHONUTF8: 1
1518

1619
steps:
1720
- name: 🛎️ Checkout

roboflow/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from roboflow.models import CLIPModel, GazeModel # noqa: F401
1616
from roboflow.util.general import write_line
1717

18-
__version__ = "1.1.61"
18+
__version__ = "1.1.62"
1919

2020

2121
def check_key(api_key, model, notebook, num_retries=0):

roboflow/util/folderparser.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@
1212
LABELMAPS_EXTENSIONS = {".labels", ".yaml", ".yml"}
1313

1414

15+
def _patch_sep(filename):
16+
"""
17+
Replace Windows style slashes to keep filenames consistent.
18+
19+
Roboflow depend on it server side.
20+
"""
21+
return filename.replace("\\", "/")
22+
23+
1524
def parsefolder(folder):
16-
folder = folder.strip()
17-
if folder.endswith("/"):
18-
folder = folder[:-1]
25+
folder = _patch_sep(folder).strip().rstrip("/")
1926
if not os.path.exists(folder):
2027
raise Exception(f"folder does not exist. {folder}")
2128
files = _list_files(folder)
@@ -53,7 +60,8 @@ def _list_files(folder):
5360
for root, dirs, files in os.walk(folder):
5461
for file in files:
5562
file_path = os.path.join(root, file)
56-
filedescriptors.append(_describe_file(file_path.split(folder)[1]))
63+
rel = os.path.relpath(file_path, folder)
64+
filedescriptors.append(_describe_file(f"/{rel}"))
5765
filedescriptors = sorted(filedescriptors, key=lambda x: _alphanumkey(x["file"]))
5866
return filedescriptors
5967

@@ -64,6 +72,7 @@ def _add_indices(files):
6472

6573

6674
def _describe_file(f):
75+
f = _patch_sep(f)
6776
name = f.split("/")[-1]
6877
dirname = os.path.dirname(f)
6978
fullkey, extension = os.path.splitext(f)

tests/test_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def test_download_returns_dataset(self, *_):
5959
self.assertEqual(dataset.name, self.version.name)
6060
self.assertEqual(dataset.version, self.version.version)
6161
self.assertEqual(dataset.model_format, "coco")
62-
self.assertEqual(dataset.location, "/my-spot")
62+
self.assertEqual(dataset.location, os.path.abspath("/my-spot"))
6363

6464

6565
class TestExport(unittest.TestCase):

0 commit comments

Comments
 (0)