# Path: punch/file_configuration.py
# class FileConfiguration(object):
#     def __init__(self, filepath, local_variables, global_variables=None):
#     def from_dict(cls, dic, global_variables):
# 
# Path: punch/helpers.py
# def import_file(filepath):
#     if sys.version_info < (3, 0):  # pragma: nocover
#         import imp
# 
#         module = imp.load_source("punch_config", filepath)
# 
#     elif sys.version_info < (3, 5):  # pragma: nocover
#         from importlib.machinery import SourceFileLoader
# 
#         try:
#             module = SourceFileLoader("punch_config", filepath).load_module()
#         except FileNotFoundError:
#             raise ValueError(
#                 "The module file {} cannot be found.".format(filepath))
#         except ImportError:
#             raise ValueError(
#                 "The module file {} cannot imported due to an error.".format(
#                     filepath))
# 
#     else:
#         import importlib.util
# 
#         spec = importlib.util.spec_from_file_location("punch_config", filepath)
#         module = importlib.util.module_from_spec(spec)
#         spec.loader.exec_module(module)
# 
#     return module


from collections import abc
from punch import file_configuration as fc
from punch.helpers import import_file
            self.__config_version__ = configuration_module.__config_version__
        except AttributeError:
            raise ValueError(
                ("Given config file is invalid: "
                 "missing '__config_version__' variable")
            )

        if configuration_module.__config_version__ > 1:
            raise ConfigurationVersionError(
                ("Unsupported configuration file version "
                 "{}".format(configuration_module.__config_version__))
            )

        try:
            self.globals = configuration_module.GLOBALS
        except AttributeError:
            self.globals = {}

        try:
            files = configuration_module.FILES
        except AttributeError:
            raise ValueError(
                "Given config file is invalid: missing 'FILES' attribute")

        self.files = []
        for file_configuration in files:
            if isinstance(file_configuration, abc.Mapping):
                self.files.append(fc.FileConfiguration.from_dict(
                    file_configuration, self.globals))
            else:

# Path: punch/file_configuration.py
# class FileConfiguration(object):
#     def __init__(self, filepath, local_variables, global_variables=None):
#     def from_dict(cls, dic, global_variables):
# 
# Path: punch/helpers.py
# def import_file(filepath):
#     if sys.version_info < (3, 0):  # pragma: nocover
#         import imp
# 
#         module = imp.load_source("punch_config", filepath)
# 
#     elif sys.version_info < (3, 5):  # pragma: nocover
#         from importlib.machinery import SourceFileLoader
# 
#         try:
#             module = SourceFileLoader("punch_config", filepath).load_module()
#         except FileNotFoundError:
#             raise ValueError(
#                 "The module file {} cannot be found.".format(filepath))
#         except ImportError:
#             raise ValueError(
#                 "The module file {} cannot imported due to an error.".format(
#                     filepath))
# 
#     else:
#         import importlib.util
# 
#         spec = importlib.util.spec_from_file_location("punch_config", filepath)
#         module = importlib.util.module_from_spec(spec)
#         spec.loader.exec_module(module)
# 
#     return module


# Path: punch/config.py
from collections import abc
from punch import file_configuration as fc
from punch.helpers import import_file

            self.__config_version__ = configuration_module.__config_version__
        except AttributeError:
            raise ValueError(
                ("Given config file is invalid: "
                 "missing '__config_version__' variable")
            )

        if configuration_module.__config_version__ > 1:
            raise ConfigurationVersionError(
                ("Unsupported configuration file version "
                 "{}".format(configuration_module.__config_version__))
            )

        try:
            self.globals = configuration_module.GLOBALS
        except AttributeError:
            self.globals = {}

        try:
            files = configuration_module.FILES
        except AttributeError:
            raise ValueError(
                "Given config file is invalid: missing 'FILES' attribute")

        self.files = []
        for file_configuration in files:
            if isinstance(file_configuration, abc.Mapping):
                self.files.append(fc.FileConfiguration.from_dict(
                    file_configuration, self.globals))
            else:

                self.files.append(fc.FileConfiguration(