67 virtual_output_channels: Iterable[str], primary_output_channels: Iterable[str],
68 since: Optional[Union[int, Tuple[int, int], RunLumi]],
69 until: Optional[Union[int, Tuple[int, int], RunLumi]],
70 ignore: Optional[Container[str]]) -> IOVSet:
72 Returns a list of IoVs for a given query in the normal COOL order
73 (sorted by channelID, then by since)
76 if since
is None: since = 0
77 if until
is None: until = 2**63-1
80 result = defaultdict(IOVSet)
82 primary_by_channel = primary_iovs.by_channel
85 for primary_channel, primary_iovs
in six.iteritems(primary_by_channel):
86 if primary_channel
in primary_output_channels:
87 if ignore
is not None and primary_channel
in ignore:
89 result[primary_channel] = primary_iovs
91 args = primary_by_channel, evaluation_order, since, until, ignore
96 for since, until, virtual_iovs
in vfgen:
100 for output_name
in virtual_output_channels:
103 iov = virtual_iovs.get(output_name)
104 if iov
and iov.present:
105 result[output_name].
add(since, until, *iov[2:])
109 result_list = IOVSet()
110 for _, iovs
in sorted(six.iteritems(result)):
111 result_list.extend(iovs.solidify(DEFECT_IOV))