import logging

from pkg_resources import iter_entry_points

_already_initialized = False
logger = logging.getLogger(__name__)


def init_all():
    '''Execute all `numba_extensions` entry points with the name `init`

    If extensions have already been initialized, this function does nothing.
    '''
    global _already_initialized
    if _already_initialized:
        return

    # Must put this here to avoid extensions re-triggering initialization
    _already_initialized = True

    for entry_point in iter_entry_points('numba_extensions', 'init'):
        logger.debug('Loading extension:', entry_point)
        func = entry_point.load()
        func()
