From 3e770c2192e9ec07c19ad47c321cbfa1cb2997f3 Mon Sep 17 00:00:00 2001 From: Prathmesh Kokate Date: Thu, 18 Jun 2026 03:07:59 +0530 Subject: [PATCH] fix(workflow): resolve CWD safety issue for FileLock --- qlib/workflow/expm.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qlib/workflow/expm.py b/qlib/workflow/expm.py index cb48d156acf..112cb0a0e0d 100644 --- a/qlib/workflow/expm.py +++ b/qlib/workflow/expm.py @@ -231,9 +231,11 @@ def _get_or_create_exp(self, experiment_id=None, experiment_name=None) -> (objec # NOTE: mlflow doesn't consider the lock for recording multiple runs # So we supported it in the interface wrapper + from urllib.request import url2pathname pr = urlparse(self.uri) if pr.scheme == "file": - with FileLock(Path(os.path.join(pr.netloc, pr.path.lstrip("/"), "filelock"))): # pylint: disable=E0110 + lock_path = Path(url2pathname(pr.path)) / "filelock" + with FileLock(lock_path): return self.create_exp(experiment_name), True # NOTE: for other schemes like http, we double check to avoid create exp conflicts try: