forked from Plachtaa/seed-vc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_paths.py
More file actions
26 lines (22 loc) · 898 Bytes
/
_paths.py
File metadata and controls
26 lines (22 loc) · 898 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
from typing import Optional
def resolve_path(relpath: str, must_exist: bool = True) -> str:
"""
Return an absolute path for a resource that may be referenced relative to:
1) the current working directory (preferred for checkpoints/cache writes), or
2) the installed package directory (read-only package data).
This allows running CLIs from any CWD while still reading bundled config files.
"""
# Try CWD first
if os.path.isabs(relpath):
return relpath
cwd_path = os.path.abspath(relpath)
if os.path.exists(cwd_path):
return cwd_path
# Fall back to package directory
pkg_dir = os.path.dirname(__file__)
pkg_path = os.path.join(pkg_dir, relpath)
if os.path.exists(pkg_path) or not must_exist:
return pkg_path
# As a last resort, return CWD path even if missing (will raise on open)
return cwd_path