Source code for osl_ephys.utils.package

import importlib
import os

# Housekeeping for logging
import logging
[docs]logger = logging.getLogger(__name__)
[docs]def soft_import(package): """Try to import a package raising friendly error if not present.""" try: module = importlib.import_module(package) except (ImportError, ModuleNotFoundError): msg = f"Package '{package}' is required for this " msg += "function to run but cannot be imported. " msg += "Please install it into your python environment to continue." raise ModuleNotFoundError(msg) return module
[docs]def run_package_tests(): """Run OSL tests from within python https://docs.pytest.org/en/7.1.x/how-to/usage.html Notes ----- Calling pytest.main() will result in importing your tests and any modules that they import. Due to the caching mechanism of python’s import system, making subsequent calls to pytest.main() from the same process will not reflect changes to those files between the calls. For this reason, making multiple calls to pytest.main() from the same process (in order to re-run tests, for example) is not recommended. """ import pytest thisdir = os.path.dirname(os.path.realpath(__file__)) installdir = os.path.abspath(os.path.join(thisdir, '..')) canarypth = os.path.join(installdir, 'tests', 'test_00_package_canary.py') print(installdir) out = pytest.main(['-x', canarypth])