"""Connector for Split.io SDK""" from features import config import splitio from splitio.exceptions import TimeoutException _factory = None def init_splitio_sdk() -> None: """Initialize the factory""" global _factory if _factory is not None: config.logger.warning('Split.io factory already initialized') return _factory = splitio.get_factory(config.SPLITIO_API_KEY, config=config.SPLIT_CONFIG) if not _factory: raise RuntimeError( 'Splitio Initialization failed. Please verify the SPLIT_CONFIG.' ) try: _factory.block_until_ready(config.SPLIT_BLOCK_UNTIL_READY_TIMEOUT) except TimeoutException: config.logger.error('Connection timeout to splitio. Aborting...') raise def get_split_client(): """Get Split SDK client object. Returns: split_client : split_client object used to fetch variants. """ if _factory is None: raise RuntimeError( 'Split.io factory not initialized. Call init_splitio_sdk() first.' ) return _factory.client() def get_split_manager(): """Get Split SDK manager object. Returns: split_manager : used to fetch split(feature details) """ if _factory is None: raise RuntimeError( 'Split.io factory not initialized. Call init_splitio_sdk() first.' ) return _factory.manager()