예제 #1
0
  def __init__(self, parent, description, full_slave=True, name=None):
    self.parent = parent
    self.description = description
    self.load_time = time.time()
    self.name = name or description['type']
    self.pause_time = 0

    super(Element, self).__init__()

    elements = description.get('elements', None)
    if elements:
      # This has to be local to avoid an infinite loop...
      # pylint: disable=R0401
      from echomesh.element import Load
      # pylint: enable=R0401

      self.elements = Load.make(self, elements)
      if full_slave:
        self.add_slave(*self.elements)
      else:
        self.add_pause_only_slave(*self.elements)
    else:
      self.elements = []

    self.element_table = dict((e.name, e) for e in reversed(self.elements))
    self.variables = {}

    for key in description.keys():
      if len(key) > 2 and ((key == 'vars') or 'variables'.startswith(key)):
        items = list(description[key].iteritems())
        self.variables = dict((k, Variable.variable(self, v)) for k, v in items)
        break
예제 #2
0
  def __init__(self, parent, description):
    super(Mapper, self).__init__(parent, description)
    self.target = description.get('target', Name.NAME)
    self.source = description.get('source')
    self.mapping = description.get('mapping', {})
    handlers = description.get('handlers', [])
    self.handlers = Load.make(self, handlers)

    for key, element in self.mapping.iteritems():
      self.mapping[key] = Load.make_one(self, element)