Source code for pyicat_plus.tests.servers.coilmq.pkg_resources

from importlib.resources import as_file
from importlib.resources import files
from typing import BinaryIO

_ENTERED_CONTEXT_MANAGERS = []


[docs] def resource_filename(package: str, resource: str) -> str: """ Replacement for pkg_resources.resource_filename Returns a real filesystem path (even if package is zipped) """ ref = files(package) / resource cm = as_file(ref) path = cm.__enter__() _ENTERED_CONTEXT_MANAGERS.append(cm) return str(path)
[docs] def resource_stream(package: str, resource: str) -> BinaryIO: """ Replacement for pkg_resources.resource_stream Returns a file-like object (rb) """ return (files(package) / resource).open("rb")
[docs] def cleanup() -> None: """ Close any open context managers """ global _ENTERED_CONTEXT_MANAGERS for cm in _ENTERED_CONTEXT_MANAGERS: try: cm.__exit__(None, None, None) except Exception: pass _ENTERED_CONTEXT_MANAGERS = []