def __init__(self, name='Project', rule_namespace=None, module_resolver=None, modules=None): """Initializes an empty project. Args: name: A human-readable name for the project that will be used for logging. rule_namespace: Rule namespace to use when loading modules. If omitted a default one is used. module_resolver: A module resolver to use when attempt to dynamically resolve modules by path. modules: A list of modules to add to the project. Raises: NameError: The name given is not valid. """ self.name = name if rule_namespace: self.rule_namespace = rule_namespace else: self.rule_namespace = RuleNamespace() self.rule_namespace.discover() if module_resolver: self.module_resolver = module_resolver else: self.module_resolver = StaticModuleResolver() self.modules = {} if modules and len(modules): self.add_modules(modules)