diff --git a/pyproject.toml b/pyproject.toml index 5d291f0..f58a4e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "hatchling.build" [project] name = "swankit" -version = "0.2.1" +version = "0.2.2" dynamic = ["readme", "dependencies"] description = "Base toolkit for SwanLab" license = "Apache-2.0" diff --git a/swankit/env.py b/swankit/env.py index ff65c89..dca0244 100644 --- a/swankit/env.py +++ b/swankit/env.py @@ -22,7 +22,7 @@ class SwanLabMode(Enum): DISABLED = "disabled" CLOUD = "cloud" - BACKUP = "backup" + OFFLINE = "offline" LOCAL = "local" @classmethod @@ -107,8 +107,12 @@ def get_save_dir() -> str: if not os.path.exists(os.path.dirname(folder)): raise FileNotFoundError(f"{os.path.dirname(folder)} not found") if not os.path.exists(folder): - # 只创建当前文件夹,不创建父文件夹 - os.mkdir(folder) + # 只创建当前文件夹,不创建父文件夹,之所以还要捕捉 FileExistsError,是因为在多线程或多进程环境下,可能会有多个线程或进程同时创建同一个文件夹 + # 比如:https://github.com/SwanHubX/SwanLab/issues/1033 + try: + os.mkdir(folder) + except FileExistsError: + pass if not os.path.isdir(folder): raise NotADirectoryError(f"{folder} is not a directory") return folder diff --git a/test/unit/test_env.py b/test/unit/test_env.py index 09f809e..67c5c8d 100644 --- a/test/unit/test_env.py +++ b/test/unit/test_env.py @@ -28,7 +28,7 @@ def test_list_mode(): assert len(ms) == 4 assert "disabled" in ms assert "cloud" in ms - assert "backup" in ms + assert "offline" in ms assert "local" in ms