Source code for punchbowl.auto.control.cache_layer.psf
import os
from regularizepsf import ArrayPSFTransform
from punchbowl.auto.control.cache_layer import manager
from punchbowl.auto.control.cache_layer.loader_base_class import LoaderABC
from punchbowl.util import DataLoader
[docs]
class PSFLoader(LoaderABC[ArrayPSFTransform]):
def __init__(self, path: str):
self.path = path
[docs]
def gen_key(self) -> str:
return f"psf-{os.path.basename(self.path)}-{os.path.getmtime(self.path)}"
[docs]
def src_repr(self) -> str:
return self.path
[docs]
def load_from_disk(self) -> ArrayPSFTransform:
return ArrayPSFTransform.load(self.path)
[docs]
def __repr__(self):
return f"PSFLoader({self.path})"
[docs]
def wrap_if_appropriate(psf_path: str) -> str | DataLoader:
if manager.caching_is_enabled():
return PSFLoader(psf_path)
return psf_path