Download analysis/code/paths.py from ekwan16/MagNET: direct link, hf CLI and curl.
- Browser
- Download file 2.77 kB
-
https://huggingface.co/ekwan16/MagNET/resolve/fe222d1894afb2d954fe8d2e67e70731a006c8d2/analysis/code/paths.py
- Command line
-
hf download hf://ekwan16/MagNET@fe222d1894afb2d954fe8d2e67e70731a006c8d2/analysis/code/paths.py
-
curl -L -o paths.py https://huggingface.co/ekwan16/MagNET/resolve/fe222d1894afb2d954fe8d2e67e70731a006c8d2/analysis/code/paths.py
2.77 kB
| """Repo-root and sys.path resolution for the analysis code. | |
| Bootstrap-only: imports nothing from analysis/code/ (it is what makes that folder importable), so it | |
| stays at analysis/code/ root. repo_root(file) assumes the caller sits two dirs below the repo root | |
| (analysis/code/x.py -> ../..), which holds for every module here. | |
| """ | |
| import os | |
| import sys | |
| def repo_root(file): | |
| """The release repo root, given a module's __file__.""" | |
| return os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(file)), "..", "..")) | |
| def dataset_file(name, filename=None, *, file=None, root=None): | |
| """Absolute path to a large released dataset file, in the repo at data/<name>/<filename>. | |
| `filename` defaults to "<name>.hdf5". Give `root` (the repo root) or `file` (a module __file__, | |
| from which the repo root is derived) so the file can be located. Only the large, git-ignored | |
| data files go through here; small companion files (readers, spreadsheets) always live in the | |
| repo and are addressed directly. The Hugging Face checkout carries these files via Git LFS. | |
| """ | |
| if filename is None: | |
| filename = "{}.hdf5".format(name) | |
| if root is None: | |
| if file is None: | |
| raise ValueError( | |
| "dataset_file needs root=<repo root> or file=__file__ to locate {!r}".format(filename) | |
| ) | |
| root = repo_root(file) | |
| return os.path.join(root, "data", name, filename) | |
| def checkpoints_root(*, required=False): | |
| """Absolute path to the in-repo model_checkpoints/ folder holding the trained weights. | |
| Returns the path when it exists, else None so callers can skip checkpoint-dependent work, unless | |
| required=True, which raises. The Hugging Face checkout carries the weights via Git LFS; they are | |
| git-ignored on GitHub, so this is None in CI. | |
| """ | |
| in_repo = os.path.join(repo_root(__file__), "model_checkpoints") | |
| if os.path.exists(in_repo): | |
| return in_repo | |
| if required: | |
| raise RuntimeError( | |
| "No model_checkpoints/ found. It ships in the repo via Git LFS in the Hugging Face " | |
| "checkout (hf download ekwan16/MagNET --include 'model_checkpoints/*')." | |
| ) | |
| return None | |
| def ensure_on_path(*relative_parts, file=None, root=None): | |
| """Inserts os.path.join(root, *relative_parts) at the front of sys.path, if not already present. | |
| Pass either `file` (typically __file__, resolved via repo_root) or `root` directly. | |
| """ | |
| if root is None: | |
| if file is None: | |
| raise ValueError("ensure_on_path needs either file=__file__ or root=<repo root>") | |
| root = repo_root(file) | |
| target = os.path.join(root, *relative_parts) | |
| if target not in sys.path: | |
| sys.path.insert(0, target) | |
| return target | |