Source code for paths

# Copyright 2025-2026 Onera
# This file is part of the Noda package
# SPDX-License-Identifier: GPL-3.0-or-later

"""Generate paths to useful directories."""

import os
from pathlib import Path

package_dir = Path(__file__).parent
pkg_data_dir = package_dir / 'data'


[docs] def get_data_dir(work_dir, logger): """ Determine the appropriate data directory. Use either of these, based on the work directory: * if the job being run is part of the package test suite (validation tests and tutorials), use the data folder in the installation directory. * else (i.e. the job is a user simulation), if the 'NODA_HOME' has been defined and a 'data' folder is found in the user directory, use it; if not, fall back to the data folder in the installation directory. """ if is_in_tests_dir(work_dir): data_dir = pkg_data_dir msg = f"Using data from package installation directory ('{data_dir}')." logger.info(msg) else: if 'NODA_HOME' in os.environ: data_dir = Path(os.environ['NODA_HOME']) / 'data' if data_dir.exists(): msg = f"Reading 'user_data.toml' file in '{data_dir}'." logger.info(msg) else: msg = ("The directory indicated by the environment variable " f"'NODA_HOME', {data_dir}, was not found. Using " "'user_data.toml' file from package installation " f"directory ('{pkg_data_dir}').") logger.warning(msg) data_dir = pkg_data_dir else: data_dir = pkg_data_dir msg = ("The environment variable 'NODA_HOME' was not found. " "Using 'user_data.toml' file from from package " f"installation directory ('{pkg_data_dir}').") logger.warning(msg) return data_dir
[docs] def is_in_tests_dir(job_dir): """Check if the job directory is part of the package test suite.""" cond1 = job_dir.parents[0].name == 'jobs' cond2 = job_dir.parents[1].name == 'tests' cond3 = (job_dir.parents[1] / 'conftest.py').exists() return bool(cond1 and cond2 and cond3)