Example #1
0
    def _create_chunks(self):
        def discriminator(tgt):
            for group_member in self._group_members:
                if group_member.predicate(tgt):
                    return group_member.name
            return None

        # TODO(John Sirois): coalescing should be made available in another spot, InternalTarget is jvm
        # specific, and all we care is that the Targets have dependencies defined
        coalesced = InternalTarget.coalesce_targets(self._targets,
                                                    discriminator)
        coalesced = list(reversed(coalesced))

        chunks = []
        flavor = None
        chunk_start = 0
        for chunk_num, target in enumerate(coalesced):
            target_flavor = discriminator(target)
            if target_flavor != flavor and chunk_num > chunk_start:
                chunks.append(OrderedSet(coalesced[chunk_start:chunk_num]))
                chunk_start = chunk_num
            flavor = target_flavor
        if chunk_start < len(coalesced):
            chunks.append(OrderedSet(coalesced[chunk_start:]))
        return chunks
Example #2
0
  def _create_chunks(self):
    def discriminator(tgt):
      for group_member in self._group_members:
        if group_member.predicate(tgt):
          return group_member.name
      return None

    # TODO(John Sirois): coalescing should be made available in another spot, InternalTarget is jvm
    # specific, and all we care is that the Targets have dependencies defined
    coalesced = InternalTarget.coalesce_targets(self._targets, discriminator)
    coalesced = list(reversed(coalesced))

    chunks = []
    flavor = None
    chunk_start = 0
    for chunk_num, target in enumerate(coalesced):
      target_flavor = discriminator(target)
      if target_flavor != flavor and chunk_num > chunk_start:
        chunks.append(OrderedSet(coalesced[chunk_start:chunk_num]))
        chunk_start = chunk_num
      flavor = target_flavor
    if chunk_start < len(coalesced):
      chunks.append(OrderedSet(coalesced[chunk_start:]))
    return chunks