diff --git a/src/datasets/utils/filelock.py b/src/datasets/utils/filelock.py index 4e7a130484b..fe4452dcb78 100644 --- a/src/datasets/utils/filelock.py +++ b/src/datasets/utils/filelock.py @@ -352,13 +352,15 @@ class WindowsFileLock(BaseFileLock): windows systems. """ + def __init__(self, lock_file, timeout=-1, max_filename_length=255): + super().__init__(lock_file, timeout=timeout, max_filename_length=max_filename_length) + self._lock_file = "\\\\?\\" + os.path.abspath(os.path.expanduser(os.path.expandvars(self._lock_file))) + def _acquire(self): open_mode = os.O_RDWR | os.O_CREAT | os.O_TRUNC try: fd = os.open(self._lock_file, open_mode) - except FileNotFoundError: - raise except OSError: pass else: diff --git a/tests/test_filelock.py b/tests/test_filelock.py index 31d4c9dc0e7..86d4ae8d215 100644 --- a/tests/test_filelock.py +++ b/tests/test_filelock.py @@ -7,8 +7,8 @@ def test_filelock(tmpdir): - lock1 = FileLock(tmpdir / "foo.lock") - lock2 = FileLock(tmpdir / "foo.lock") + lock1 = FileLock(str(tmpdir / "foo.lock")) + lock2 = FileLock(str(tmpdir / "foo.lock")) timeout = 0.01 with lock1.acquire(): with pytest.raises(Timeout): @@ -19,7 +19,7 @@ def test_filelock(tmpdir): def test_long_filename(tmpdir): filename = "a" * 1000 + ".lock" - lock1 = FileLock(tmpdir / filename) + lock1 = FileLock(str(tmpdir / filename)) assert lock1._lock_file.endswith(".lock") assert not lock1._lock_file.endswith(filename) assert len(os.path.basename(lock1._lock_file)) <= 255