65 virtual_output_channels: Iterable[str], primary_output_channels: Iterable[str],
66 since: Optional[Union[int, Tuple[int, int], RunLumi]],
67 until: Optional[Union[int, Tuple[int, int], RunLumi]],
68 ignore: Optional[Container[str]]) -> IOVSet:
70 Returns a list of IoVs for a given query in the normal COOL order
71 (sorted by channelID, then by since)
74 if since
is None: since = 0
75 if until
is None: until = 2**63-1
78 result = defaultdict(IOVSet)
80 primary_by_channel = primary_iovs.by_channel
83 for primary_channel, primary_iovs
in primary_by_channel.items():
84 if primary_channel
in primary_output_channels:
85 if ignore
is not None and primary_channel
in ignore:
87 result[primary_channel] = primary_iovs
89 args = primary_by_channel, evaluation_order, since, until, ignore
94 for since, until, virtual_iovs
in vfgen:
98 for output_name
in virtual_output_channels:
101 iov = virtual_iovs.get(output_name)
102 if iov
and iov.present:
103 result[output_name].
add(since, until, *iov[2:])
107 result_list = IOVSet()
108 for _, iovs
in sorted(result.items()):
109 result_list.extend(iovs.solidify(DEFECT_IOV))