diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 70f0f2a7..a9481351 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,10 +8,13 @@ on: jobs: build: - runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + os: ["ubuntu-latest", "windows-latest"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + runs-on: ${{ matrix.os }} + env: + PYTHONUTF8: 1 steps: - name: 🛎️ Checkout diff --git a/roboflow/__init__.py b/roboflow/__init__.py index 37a44b09..bcbf24da 100644 --- a/roboflow/__init__.py +++ b/roboflow/__init__.py @@ -15,7 +15,7 @@ from roboflow.models import CLIPModel, GazeModel # noqa: F401 from roboflow.util.general import write_line -__version__ = "1.1.61" +__version__ = "1.1.62" def check_key(api_key, model, notebook, num_retries=0): diff --git a/roboflow/util/folderparser.py b/roboflow/util/folderparser.py index eff2a118..33489b79 100644 --- a/roboflow/util/folderparser.py +++ b/roboflow/util/folderparser.py @@ -12,10 +12,17 @@ LABELMAPS_EXTENSIONS = {".labels", ".yaml", ".yml"} +def _patch_sep(filename): + """ + Replace Windows style slashes to keep filenames consistent. + + Roboflow depend on it server side. + """ + return filename.replace("\\", "/") + + def parsefolder(folder): - folder = folder.strip() - if folder.endswith("/"): - folder = folder[:-1] + folder = _patch_sep(folder).strip().rstrip("/") if not os.path.exists(folder): raise Exception(f"folder does not exist. {folder}") files = _list_files(folder) @@ -53,7 +60,8 @@ def _list_files(folder): for root, dirs, files in os.walk(folder): for file in files: file_path = os.path.join(root, file) - filedescriptors.append(_describe_file(file_path.split(folder)[1])) + rel = os.path.relpath(file_path, folder) + filedescriptors.append(_describe_file(f"/{rel}")) filedescriptors = sorted(filedescriptors, key=lambda x: _alphanumkey(x["file"])) return filedescriptors @@ -64,6 +72,7 @@ def _add_indices(files): def _describe_file(f): + f = _patch_sep(f) name = f.split("/")[-1] dirname = os.path.dirname(f) fullkey, extension = os.path.splitext(f) diff --git a/tests/test_version.py b/tests/test_version.py index f13479bc..3697e1f5 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -59,7 +59,7 @@ def test_download_returns_dataset(self, *_): self.assertEqual(dataset.name, self.version.name) self.assertEqual(dataset.version, self.version.version) self.assertEqual(dataset.model_format, "coco") - self.assertEqual(dataset.location, "/my-spot") + self.assertEqual(dataset.location, os.path.abspath("/my-spot")) class TestExport(unittest.TestCase):