# Path: invenio_stats/proxies.py

# 
# Path: invenio_stats/utils.py
# def obj_or_import_string(value, default=None):
#     """Import string or return object.
# 
#     :params value: Import path or class object to instantiate.
#     :params default: Default object to return if the import fails.
#     :returns: The imported object.
#     """
#     if isinstance(value, six.string_types):
#         return import_string(value)
#     elif value:
#         return value
#     return default


from flask import current_app
from .proxies import current_stats
from .utils import obj_or_import_string
# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2017-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

"""Function registering signal-receiving/event-emitting functions."""

from __future__ import absolute_import, print_function




class EventEmmiter(object):
    """Receive a signal and send an event."""

    def __init__(self, name, builders):
        """Contructor."""
        self.name = name
        self.builders = builders

    def __call__(self, *args, **kwargs):
        """Receive a signal and send an event."""
        # Send the event only if it is registered
        try:

# Path: invenio_stats/proxies.py

# 
# Path: invenio_stats/utils.py
# def obj_or_import_string(value, default=None):
#     """Import string or return object.
# 
#     :params value: Import path or class object to instantiate.
#     :params default: Default object to return if the import fails.
#     :returns: The imported object.
#     """
#     if isinstance(value, six.string_types):
#         return import_string(value)
#     elif value:
#         return value
#     return default


# Path: invenio_stats/receivers.py
from flask import current_app
from .proxies import current_stats
from .utils import obj_or_import_string

# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2017-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

"""Function registering signal-receiving/event-emitting functions."""

from __future__ import absolute_import, print_function




class EventEmmiter(object):
    """Receive a signal and send an event."""

    def __init__(self, name, builders):
        """Contructor."""
        self.name = name
        self.builders = builders

    def __call__(self, *args, **kwargs):
        """Receive a signal and send an event."""
        # Send the event only if it is registered
        try:

            if self.name in current_stats.events: