# Path: dizzy/log.py
# def print_dizzy(value, level=NORMAL):
#     if print_level >= level:
#         with print_lock:
#             print(print_colors[level], end='')
#             print(value)
#             if isinstance(value, Exception):
#                 ex_type, ex, tb = exc_info()
#                 print_tb(tb)
#             print(ENDC, end='')
# 
# VERBOSE_1 = 3
# 
# VERBOSE_2 = 4
# 
# DEBUG = 5


from zipimport import zipimporter
from dizzy.log import print_dizzy, VERBOSE_1, VERBOSE_2, DEBUG
import sys
#         contributors may be used to endorse or promote products derived from
#         this software without specific prior written permission.
#
#       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#       "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#       LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#       A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#       OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#       SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#       LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#       DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#       THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



class DizzyModule(object):
    def __init__(self, path, config):
        self.path = path
        self.global_config = config
        self.zipimport = zipimporter(path)
        self.config = self.zipimport.load_module("config")

    def load(self):
        inventory = self.zipimport.load_module(self.name).__all__

        if "deps" in inventory:
            depspath = self.path + "/" + self.name + "/deps"
            sys.path.insert(0, depspath)

# Path: dizzy/log.py
# def print_dizzy(value, level=NORMAL):
#     if print_level >= level:
#         with print_lock:
#             print(print_colors[level], end='')
#             print(value)
#             if isinstance(value, Exception):
#                 ex_type, ex, tb = exc_info()
#                 print_tb(tb)
#             print(ENDC, end='')
# 
# VERBOSE_1 = 3
# 
# VERBOSE_2 = 4
# 
# DEBUG = 5


# Path: dizzy/module.py
from zipimport import zipimporter
from dizzy.log import print_dizzy, VERBOSE_1, VERBOSE_2, DEBUG
import sys

#         contributors may be used to endorse or promote products derived from
#         this software without specific prior written permission.
#
#       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#       "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#       LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#       A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#       OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#       SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#       LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#       DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#       THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



class DizzyModule(object):
    def __init__(self, path, config):
        self.path = path
        self.global_config = config
        self.zipimport = zipimporter(path)
        self.config = self.zipimport.load_module("config")

    def load(self):
        inventory = self.zipimport.load_module(self.name).__all__

        if "deps" in inventory:
            depspath = self.path + "/" + self.name + "/deps"
            sys.path.insert(0, depspath)

            print_dizzy("mod:%s/load: added dependency path '%s'" % (self.name, depspath), VERBOSE_1)