Source code for py_hla_match.singleton

import logging
from pyard import ard
import threading
from py_hla_match.config import get_config

logger = logging.getLogger(__name__)

# singleton instance of ARD
_ard_instance = None
_config_read = False
_ard_lock = threading.RLock()


def _reset_ard_instance():
    """
    Reset ARD singleton so subsequent get_ard_instance calls re-read
    config and re-initialize ARD.
    """
    global _ard_instance, _config_read
    with _ard_lock:
        _ard_instance = None
        _config_read = False


[docs] def get_ard_instance(imgt_version=None, data_dir=None, **config): global _ard_instance, _config_read with _ard_lock: if _ard_instance is None: # Read config only once, only if no explicit params provided if imgt_version is None and data_dir is None and not _config_read: cfg = get_config() imgt_version = cfg.ard_imgt_version data_dir = cfg.ard_data_dir _config_read = True # Fall back to original defaults if still None if imgt_version is None: imgt_version = "Latest" _ard_instance = ard.ARD( imgt_version=imgt_version, data_dir=data_dir, load_mac=False, **config ) return _ard_instance