Exemple #1
0
  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)