Skip to content

Commit 70c659c

Browse files
committed
Add locking to DummyFileManager
1 parent 8429f31 commit 70c659c

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

xarray/backends/file_manager.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,13 @@ def _remove_del_methods():
453453
class DummyFileManager(FileManager[T_File]):
454454
"""FileManager that simply wraps an open file in the FileManager interface."""
455455

456-
def __init__(self, value: T_File, *, close: Callable[[], None] | None = None):
456+
def __init__(
457+
self, value: T_File, *, close: Callable[[], None] | None = None
458+
lock: Lock | None | Literal[False] = None,
459+
):
457460
if close is None:
458461
close = value.close
462+
self._lock = lock
459463
self._value = value
460464
self._close = close
461465

@@ -469,5 +473,8 @@ def acquire_context(self, needs_lock: bool = True) -> Iterator[T_File]:
469473
yield self._value
470474

471475
def close(self, needs_lock: bool = True) -> None:
472-
del needs_lock # unused
473-
self._close()
476+
if needs_lock and self._lock:
477+
with self._lock:
478+
self._close()
479+
else:
480+
self._close()

0 commit comments

Comments
 (0)