提交 865099c2 authored 作者: Brandon T. Willard's avatar Brandon T. Willard 提交者: Brandon T. Willard

Let filelock determine valid values for timeout

上级 66d973bd
...@@ -4,8 +4,8 @@ in the same compilation directory (which can cause crashes). ...@@ -4,8 +4,8 @@ in the same compilation directory (which can cause crashes).
""" """
import os import os
import threading import threading
import typing
from contextlib import contextmanager from contextlib import contextmanager
from typing import Optional
import filelock import filelock
...@@ -45,7 +45,7 @@ def force_unlock(lock_dir: os.PathLike): ...@@ -45,7 +45,7 @@ def force_unlock(lock_dir: os.PathLike):
@contextmanager @contextmanager
def lock_ctx(lock_dir: os.PathLike = None, *, timeout: typing.Optional[float] = -1): def lock_ctx(lock_dir: os.PathLike = None, *, timeout: Optional[float] = None):
"""Context manager that wraps around FileLock and SoftFileLock from filelock package. """Context manager that wraps around FileLock and SoftFileLock from filelock package.
Parameters Parameters
...@@ -59,10 +59,9 @@ def lock_ctx(lock_dir: os.PathLike = None, *, timeout: typing.Optional[float] = ...@@ -59,10 +59,9 @@ def lock_ctx(lock_dir: os.PathLike = None, *, timeout: typing.Optional[float] =
""" """
if lock_dir is None: if lock_dir is None:
lock_dir = config.compiledir lock_dir = config.compiledir
if timeout == -1:
if timeout is None:
timeout = config.compile__timeout timeout = config.compile__timeout
elif not (timeout is None or timeout > 0):
raise ValueError(f"Timeout parameter must be None or positive. Got {timeout}.")
# locks are kept in a dictionary to account for changing compiledirs # locks are kept in a dictionary to account for changing compiledirs
dir_key = f"{lock_dir}-{os.getpid()}" dir_key = f"{lock_dir}-{os.getpid()}"
......
...@@ -11,16 +11,6 @@ import pytest ...@@ -11,16 +11,6 @@ import pytest
from aesara.compile.compilelock import force_unlock, local_mem, lock_ctx from aesara.compile.compilelock import force_unlock, local_mem, lock_ctx
def test_compilelock_errors():
with tempfile.TemporaryDirectory() as dir:
with pytest.raises(ValueError):
with lock_ctx(dir, timeout=0):
pass
with pytest.raises(ValueError):
with lock_ctx(dir, timeout=-2):
pass
def test_compilelock_force_unlock(): def test_compilelock_force_unlock():
with tempfile.TemporaryDirectory() as dir_name: with tempfile.TemporaryDirectory() as dir_name:
with lock_ctx(dir_name): with lock_ctx(dir_name):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论