lsst-pipe-base 29.2025.4100__py3-none-any.whl → 29.2025.4300__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. lsst/pipe/base/_status.py +1 -1
  2. lsst/pipe/base/cli/cmd/__init__.py +2 -2
  3. lsst/pipe/base/cli/cmd/commands.py +116 -1
  4. lsst/pipe/base/graph_walker.py +8 -4
  5. lsst/pipe/base/pipeline_graph/_pipeline_graph.py +30 -5
  6. lsst/pipe/base/quantum_graph/__init__.py +1 -0
  7. lsst/pipe/base/quantum_graph/_common.py +2 -1
  8. lsst/pipe/base/quantum_graph/_multiblock.py +41 -7
  9. lsst/pipe/base/quantum_graph/_predicted.py +62 -5
  10. lsst/pipe/base/quantum_graph/_provenance.py +1209 -0
  11. lsst/pipe/base/quantum_graph/aggregator/__init__.py +143 -0
  12. lsst/pipe/base/quantum_graph/aggregator/_communicators.py +981 -0
  13. lsst/pipe/base/quantum_graph/aggregator/_config.py +139 -0
  14. lsst/pipe/base/quantum_graph/aggregator/_ingester.py +312 -0
  15. lsst/pipe/base/quantum_graph/aggregator/_progress.py +208 -0
  16. lsst/pipe/base/quantum_graph/aggregator/_scanner.py +371 -0
  17. lsst/pipe/base/quantum_graph/aggregator/_structs.py +167 -0
  18. lsst/pipe/base/quantum_graph/aggregator/_supervisor.py +225 -0
  19. lsst/pipe/base/quantum_graph/aggregator/_writer.py +593 -0
  20. lsst/pipe/base/resource_usage.py +183 -0
  21. lsst/pipe/base/simple_pipeline_executor.py +4 -1
  22. lsst/pipe/base/tests/util.py +31 -0
  23. lsst/pipe/base/version.py +1 -1
  24. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/METADATA +1 -1
  25. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/RECORD +33 -22
  26. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/WHEEL +0 -0
  27. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/entry_points.txt +0 -0
  28. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/licenses/COPYRIGHT +0 -0
  29. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/licenses/LICENSE +0 -0
  30. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/licenses/bsd_license.txt +0 -0
  31. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/licenses/gpl-v3.0.txt +0 -0
  32. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/top_level.txt +0 -0
  33. {lsst_pipe_base-29.2025.4100.dist-info → lsst_pipe_base-29.2025.4300.dist-info}/zip-safe +0 -0
@@ -0,0 +1,183 @@
1
+ # This file is part of pipe_base.
2
+ #
3
+ # Developed for the LSST Data Management System.
4
+ # This product includes software developed by the LSST Project
5
+ # (http://www.lsst.org).
6
+ # See the COPYRIGHT file at the top-level directory of this distribution
7
+ # for details of code ownership.
8
+ #
9
+ # This software is dual licensed under the GNU General Public License and also
10
+ # under a 3-clause BSD license. Recipients may choose which of these licenses
11
+ # to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12
+ # respectively. If you choose the GPL option then the following text applies
13
+ # (but note that there is still no warranty even if you opt for BSD instead):
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 3 of the License, or
18
+ # (at your option) any later version.
19
+ #
20
+ # This program is distributed in the hope that it will be useful,
21
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
+ # GNU General Public License for more details.
24
+ #
25
+ # You should have received a copy of the GNU General Public License
26
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
27
+
28
+ from __future__ import annotations
29
+
30
+ __all__ = ("QuantumResourceUsage",)
31
+
32
+ import datetime
33
+
34
+ import numpy as np
35
+ import pydantic
36
+
37
+ from ._task_metadata import TaskMetadata
38
+
39
+
40
+ class QuantumResourceUsage(pydantic.BaseModel):
41
+ """A struct holding the most frequently used resource usage metrics for
42
+ executed quanta.
43
+ """
44
+
45
+ memory: float = pydantic.Field(json_schema_extra={"unit": "byte"})
46
+ """Maximum memory usage of the process that ran this quantum, in bytes.
47
+
48
+ This is derived from the maximum resident set size at the end of the
49
+ quantum's execution, and is expected to only grow as multiple quanta are
50
+ executed in the same process; that makes this a lower bound on the actual
51
+ memory use of any particular quantum.
52
+ """
53
+
54
+ start: datetime.datetime
55
+ """Start time (UTC), corresponding to the beginning of the "prep" period.
56
+ """
57
+
58
+ prep_time: float = pydantic.Field(json_schema_extra={"unit": "s"})
59
+ """Wall-clock time in seconds spent preparing for the execution of this
60
+ quantum.
61
+
62
+ This includes checking for existing inputs, outputs, clobbering when
63
+ necessary, and running the `..PipelineTaskConnections.adjustQuantum` hook.
64
+ It does not include process startup times, import times, or butler
65
+ initialization overheads.
66
+ """
67
+
68
+ init_time: float = pydantic.Field(json_schema_extra={"unit": "s"})
69
+ """Wall-clock time in seconds spent initializing the task used to run this
70
+ quantum.
71
+
72
+ This includes the time spent reading init-inputs.
73
+ """
74
+
75
+ run_time: float = pydantic.Field(json_schema_extra={"unit": "s"})
76
+ """Wall-clock time in seconds spent executing this quantum.
77
+
78
+ This includes time spent reading inputs and writing outputs. It does not
79
+ include the time spent writing the special log and metadata datasets.
80
+ """
81
+
82
+ run_time_cpu: float = pydantic.Field(json_schema_extra={"unit": "s"})
83
+ """CPU time in seconds spent executing this quantum.
84
+
85
+ This includes time spent reading inputs and writing outputs, to the extent
86
+ that those operations actually spend CPU time at all. It does not include
87
+ the time spent writing the special log and metadata datasets.
88
+ """
89
+
90
+ @property
91
+ def total_time(self) -> float:
92
+ """Total wall-clock time spent in "prep", "init", and "run"."""
93
+ return self.prep_time + self.init_time + self.run_time
94
+
95
+ @property
96
+ def end(self) -> datetime.datetime:
97
+ """End time (UTC), corresponding to the end of the "run" period."""
98
+ return self.start + datetime.timedelta(seconds=self.total_time)
99
+
100
+ @classmethod
101
+ def from_task_metadata(cls, metadata: TaskMetadata) -> QuantumResourceUsage | None:
102
+ """Extract resource usage information from task metadata.
103
+
104
+ Parameters
105
+ ----------
106
+ metadata : `TaskMetadata`
107
+ Metadata written by
108
+ `.single_quantum_executor.SingleQuantumExecutor`.
109
+
110
+ Returns
111
+ -------
112
+ resource_usage : `QuantumResourceUsage` or `None`
113
+ Resource usage information for this quantum, or `None` if the
114
+ expected fields were not found.
115
+ """
116
+ try:
117
+ quantum_metadata = metadata["quantum"]
118
+ except KeyError:
119
+ return None
120
+ end = datetime.datetime.fromisoformat(quantum_metadata["endUtc"])
121
+ start = datetime.datetime.fromisoformat(quantum_metadata["prepUtc"])
122
+ try:
123
+ start_init = datetime.datetime.fromisoformat(quantum_metadata["initUtc"])
124
+ except KeyError:
125
+ start_init = end
126
+ try:
127
+ start_run = datetime.datetime.fromisoformat(quantum_metadata["startUtc"])
128
+ except KeyError:
129
+ start_run = end
130
+ try:
131
+ run_time_cpu = quantum_metadata["endCpuTime"] - quantum_metadata["startCpuTime"]
132
+ except KeyError:
133
+ run_time_cpu = 0.0
134
+ return cls(
135
+ memory=quantum_metadata["endMaxResidentSetSize"],
136
+ start=start,
137
+ prep_time=(start_init - start).total_seconds(),
138
+ init_time=(start_run - start_init).total_seconds(),
139
+ run_time=(end - start_run).total_seconds(),
140
+ run_time_cpu=run_time_cpu,
141
+ )
142
+
143
+ @staticmethod
144
+ def get_numpy_fields() -> dict[str, np.dtype]:
145
+ """Return a mapping from field name to the `numpy.dtype` for that
146
+ field.
147
+ """
148
+ return {
149
+ "memory": np.dtype(np.float32),
150
+ "start": np.dtype(np.float64),
151
+ "prep_time": np.dtype(np.float32),
152
+ "init_time": np.dtype(np.float32),
153
+ "run_time": np.dtype(np.float32),
154
+ "run_time_cpu": np.dtype(np.float32),
155
+ }
156
+
157
+ @staticmethod
158
+ def get_units() -> dict[str, str | None]:
159
+ """Return a mapping from field name to units.
160
+
161
+ Units are astropy-compatible strings.
162
+ """
163
+ return {
164
+ "memory": "byte",
165
+ "start": "s",
166
+ "prep_time": "s",
167
+ "init_time": "s",
168
+ "run_time": "s",
169
+ "run_time_cpu": "s",
170
+ }
171
+
172
+ def get_numpy_row(self) -> tuple[object, ...]:
173
+ """Convert this object to a `tuple` that can used to initialize a
174
+ NumPy structured array with the fields from `get_numpy_fields`.
175
+ """
176
+ return (
177
+ self.memory,
178
+ self.start.timestamp(),
179
+ self.prep_time,
180
+ self.init_time,
181
+ self.run_time,
182
+ self.run_time_cpu,
183
+ )
@@ -667,7 +667,10 @@ class SimplePipelineExecutor:
667
667
  Butler to transfer records to.
668
668
  """
669
669
  assert self.predicted.dimension_data is not None, "Dimension data must be present for execution."
670
- for record_set in self.predicted.dimension_data.records.values():
670
+ records = self.predicted.dimension_data.records
671
+ dimensions = out_butler.dimensions.sorted(records.keys())
672
+ for dimension in dimensions:
673
+ record_set = records[dimension.name]
671
674
  if record_set and record_set.element.has_own_table:
672
675
  out_butler.registry.insertDimensionData(
673
676
  record_set.element,
@@ -29,6 +29,13 @@
29
29
 
30
30
  from __future__ import annotations
31
31
 
32
+ __all__ = ("check_output_run", "patch_deterministic_uuid4")
33
+
34
+ import random
35
+ import uuid
36
+ from collections.abc import Iterator
37
+ from contextlib import contextmanager
38
+
32
39
  from lsst.daf.butler import DatasetRef
33
40
 
34
41
  from ..graph import QuantumGraph
@@ -111,3 +118,27 @@ def get_output_refs(graph: QuantumGraph) -> list[DatasetRef]:
111
118
  result += [ref for ref in init_refs if ref in output_refs]
112
119
 
113
120
  return result
121
+
122
+
123
+ @contextmanager
124
+ def patch_deterministic_uuid4(seed: int) -> Iterator[None]:
125
+ """Return a context manager that replaces the standard library's
126
+ `uuid.uuid4` function with one that generates random numbers with a
127
+ deterministic sequence.
128
+
129
+ Parameters
130
+ ----------
131
+ seed : `int
132
+ Integer seed for the random number generator.
133
+ """
134
+ random.seed(seed)
135
+ original = uuid.uuid4
136
+ uuid.uuid4 = _deterministic_uuid
137
+ try:
138
+ yield
139
+ finally:
140
+ uuid.uuid4 = original
141
+
142
+
143
+ def _deterministic_uuid() -> uuid.UUID:
144
+ return uuid.UUID(int=random.getrandbits(128))
lsst/pipe/base/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "29.2025.4100"
2
+ __version__ = "29.2025.4300"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-pipe-base
3
- Version: 29.2025.4100
3
+ Version: 29.2025.4300
4
4
  Summary: Pipeline infrastructure for the Rubin Science Pipelines.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License: BSD 3-Clause License
@@ -6,7 +6,7 @@ lsst/pipe/base/_dataset_handle.py,sha256=ft_ke1LbhLLndDPARsHSQJUA05LgUFnfWOq2vbw
6
6
  lsst/pipe/base/_instrument.py,sha256=I9UTaj81krR1zkTZ1owfOPBzHN29PY3Egg7fIE5obxQ,30057
7
7
  lsst/pipe/base/_observation_dimension_packer.py,sha256=78Jg2OVFOdXIK62TS2Y3X4095xqCzmiIx9o4TXyADYA,8027
8
8
  lsst/pipe/base/_quantumContext.py,sha256=gb60mTHbgOIEptYvJ64SaChvViXyeKJlG6kEHq4nYVw,19345
9
- lsst/pipe/base/_status.py,sha256=tvKm-z_haZGksOR4nQ-ePJgbLag-e3t4nQY47yLFP2M,15741
9
+ lsst/pipe/base/_status.py,sha256=AoCyee9zS1c3SOi38fO8BCQ28fn3JhwDSjYHhQY_ANA,15740
10
10
  lsst/pipe/base/_task_metadata.py,sha256=Y4rjrYWvYxYCJwy86VvzxKMkNxEJbYVgLVuXo6KiXac,25638
11
11
  lsst/pipe/base/all_dimensions_quantum_graph_builder.py,sha256=nazY74jrdSCr6CFfPp78JecM_-udW95EYP7grLPO2hg,70830
12
12
  lsst/pipe/base/automatic_connection_constants.py,sha256=H5uuh1rYRpjndgPdb0dh1L_-OyLKdT6VWOZTAb__xCU,3298
@@ -19,7 +19,7 @@ lsst/pipe/base/dot_tools.py,sha256=vriWMaB8YTEKKvhJE5KYdVGE4gB5XmiYfD2f18Fue-c,4
19
19
  lsst/pipe/base/exec_fixup_data_id.py,sha256=9OjOcH-6AHZ1JnD_CemieI0wWX90J_VdaY9v1oXwMdQ,4187
20
20
  lsst/pipe/base/execution_graph_fixup.py,sha256=ND0x4hlpeEW-gudo-i2K7HT7MoM5sp_mcoqRMCopSqQ,3815
21
21
  lsst/pipe/base/execution_reports.py,sha256=jYtWCD4PkEAeVUpKIxuiJJVgsCm7qiwCorWVgNHkVgU,17270
22
- lsst/pipe/base/graph_walker.py,sha256=7dOx3V7thYr6eN29GRbkudV9Y8249ojDQUlnW2JHtg8,4486
22
+ lsst/pipe/base/graph_walker.py,sha256=Ij7JfYF0srA29VgM_DhbNBxUBeOHDOnujrTQPjVNha0,4694
23
23
  lsst/pipe/base/log_capture.py,sha256=LylLrxPJyMxU90uSQ15PqFhObDSLWQWGKX6NuXOuwXA,9504
24
24
  lsst/pipe/base/mermaid_tools.py,sha256=cdlDJQ1x8k7-VvCLEUqvSC3GR1zCsB-aUTxOjYejNWc,5216
25
25
  lsst/pipe/base/mp_graph_executor.py,sha256=FKlFxjtU2-6SFzX_wsdtMMAj5P09ZE8V65-Sg585g2Y,35501
@@ -33,19 +33,20 @@ lsst/pipe/base/quantum_graph_executor.py,sha256=WP41iQmihy1jfgaHV6eu2aSrqQx_Fydq
33
33
  lsst/pipe/base/quantum_graph_skeleton.py,sha256=GhSQjRHaErneGY4A4E0tERqg9QPEeYrlpmdLzqFXy6E,28586
34
34
  lsst/pipe/base/quantum_provenance_graph.py,sha256=SChke6lcSzQQQMbVN_mCZ-RxDj7chehjJrSMvXRuhAI,93372
35
35
  lsst/pipe/base/quantum_reports.py,sha256=ut235L88v7SXaeVUvMA9qFl7tpeMwGnzob3X0QoOI_s,14210
36
+ lsst/pipe/base/resource_usage.py,sha256=LfH7Qf6taI3lxw0aB90riRMn1UxUTMBSqtBjKPJ-XuY,6759
36
37
  lsst/pipe/base/separable_pipeline_executor.py,sha256=vXqJrRI5GNezzGV9QsiaRHEhioDF2Y_W7JQYQCzHR7A,16720
37
- lsst/pipe/base/simple_pipeline_executor.py,sha256=xYxaCJOorzy5RFXprzOZX8HtSGbd6Ir_nhqLnHr9FBM,29409
38
+ lsst/pipe/base/simple_pipeline_executor.py,sha256=QjgX5seueopxPpnJz7H2hBNx-8ucxeT-3BXj6ET_vww,29543
38
39
  lsst/pipe/base/single_quantum_executor.py,sha256=YWzLJDTRlvMwmtjsIW7XXZEUlLlv7ize-Oxb_0eKTrI,26667
39
40
  lsst/pipe/base/struct.py,sha256=Fa-UkpuXOxdzKWbHrMUkJYOszZuBXCm2NesXNR0IOPQ,5048
40
41
  lsst/pipe/base/task.py,sha256=XHBd-7m1a4-6LgobBYA1DgY4H7EV-_RWKfxbhZbMmD4,15145
41
42
  lsst/pipe/base/taskFactory.py,sha256=MsDGECJqZLSZk8SGhpuVhNaP32UWuNvxZiDcZExPFG8,3412
42
43
  lsst/pipe/base/testUtils.py,sha256=lSBKMhoKflbi8JkMNYfEqqHNl-rtFI8UYT3QneDYpLo,18477
43
44
  lsst/pipe/base/utils.py,sha256=JmEt3l0xrh9uayKrSXuQEq12aXOhDr2YXmbYduaxCko,1940
44
- lsst/pipe/base/version.py,sha256=imQpc8l8n1Xj3guWKoFaXrBR3HnAY8jkMITBuZx-5DA,55
45
+ lsst/pipe/base/version.py,sha256=pmH-QwBOGm7hpNEwNmgwgFuJ9J8NNZQ81N3RGqBJ3YU,55
45
46
  lsst/pipe/base/cli/__init__.py,sha256=861tXIAW7SqtqNUYkjbeEdfg8lDswXsjJQca0gVCFz4,54
46
47
  lsst/pipe/base/cli/_get_cli_subcommands.py,sha256=g_af64klRybBGKAg7fmBSZBdw2LYBAsFON_yQIMZON0,1289
47
- lsst/pipe/base/cli/cmd/__init__.py,sha256=BGicstnryQ48rYcNRh4fa6Vy63ZIlZ_pPAEa17jhkwY,1519
48
- lsst/pipe/base/cli/cmd/commands.py,sha256=t91PZoIQwgstzONNbqpFJMWpaxeHesVP6EtgkMJYrcE,5612
48
+ lsst/pipe/base/cli/cmd/__init__.py,sha256=3UF2IQEEBor4YMGRNPdcZAVCAI5yFyeHp5nGul4IoyM,1557
49
+ lsst/pipe/base/cli/cmd/commands.py,sha256=ilwKms1Gq4vc6Mddz3MB0fFcgWidseZeYlxTrOQlg8Q,9743
49
50
  lsst/pipe/base/cli/opt/__init__.py,sha256=DN17wUbMwNIgbDBfF35sdyGfaMT81f3b_CA5Pp8POdk,1347
50
51
  lsst/pipe/base/cli/opt/arguments.py,sha256=9LhDnsM98_2zOqqm-eyv_nnZmAQcBG5OpHzeJYw_eTw,1484
51
52
  lsst/pipe/base/cli/opt/options.py,sha256=d5mC2WXZJiUbkdaIo_VUsvNxShD3GmredbEN5jQD64Q,1900
@@ -65,7 +66,7 @@ lsst/pipe/base/pipeline_graph/_edges.py,sha256=n6iCYql-TvAyM1xrINt7m02efjebJlIwh
65
66
  lsst/pipe/base/pipeline_graph/_exceptions.py,sha256=3jvCXms0_5ThLGtsOlKxsI1vWiq3gY4hba8fRBW0tgI,3943
66
67
  lsst/pipe/base/pipeline_graph/_mapping_views.py,sha256=9nLKPA8j7sS09haShbJnEtGXbb4vy_cWpbLeMLBmVvs,9194
67
68
  lsst/pipe/base/pipeline_graph/_nodes.py,sha256=GGXfzXvrjNbwPt-0w8cC0l_I6CCNskoDNjA8Ds4ILS0,4236
68
- lsst/pipe/base/pipeline_graph/_pipeline_graph.py,sha256=G-P3r-AHBM1cMP7ex75M-Xtu4HlQiaIqly3er6BZC0A,121536
69
+ lsst/pipe/base/pipeline_graph/_pipeline_graph.py,sha256=V5xvlH0VxPsSctWYD5kDT-HybfZqYjMtnZi6n48GEM4,122536
69
70
  lsst/pipe/base/pipeline_graph/_task_subsets.py,sha256=lLvcndSGcZigteWd4eeAM8LxQ1lHPBoysY8PjJTxx1c,13244
70
71
  lsst/pipe/base/pipeline_graph/_tasks.py,sha256=jTLpm5dZMXRNrGi3L45-3DtF95PGwhmejWLZ-zcSTzo,42802
71
72
  lsst/pipe/base/pipeline_graph/expressions.py,sha256=MZ0qxGA4ctu_WqVjdjjezZF8Jd5174PWbio7EF2wdl0,7717
@@ -80,11 +81,21 @@ lsst/pipe/base/pipeline_graph/visualization/_options.py,sha256=vOIp2T7DLA48lTm5m
80
81
  lsst/pipe/base/pipeline_graph/visualization/_printer.py,sha256=yJMRJ-aXd3nYDgs1FqS2l_hzNbQ50HUVm55VVaNi71s,16537
81
82
  lsst/pipe/base/pipeline_graph/visualization/_show.py,sha256=lPRjO1To2n5r3f_Wgcwy-7TmyJ7UszGGFXAlOtN1wDs,10510
82
83
  lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py,sha256=dp7PXl9Cu7GfWjBi5g8KjXZgnF1KGg_idKKxtICL53Q,8679
83
- lsst/pipe/base/quantum_graph/__init__.py,sha256=rPvhjKcnPisHsJ1-PbyASSmyaxzw55nGYi4ZKI5LO84,1410
84
- lsst/pipe/base/quantum_graph/_common.py,sha256=PKYd7YsFCB7dW-WBlUVRmQEpt4rNKEfJmKL0SgFwd-M,22138
85
- lsst/pipe/base/quantum_graph/_multiblock.py,sha256=Y99r4yDAuxmf_YfXbHfBXVmMnKxmIBvOp9NPztlZqE8,27488
86
- lsst/pipe/base/quantum_graph/_predicted.py,sha256=_yp2mth3j0BC6lB4s_wk-atQ-scenoGxhiHD5qSb5e0,86013
84
+ lsst/pipe/base/quantum_graph/__init__.py,sha256=-Gp3LihB0AXCvhG387wKAEpHRM-NrHGSXMti8cHee90,1437
85
+ lsst/pipe/base/quantum_graph/_common.py,sha256=8WnQ5OD4LCz9i5xEWBlo3D3P7gfVRTYAxOkn0mbRvjE,22167
86
+ lsst/pipe/base/quantum_graph/_multiblock.py,sha256=FQa8lafbuS4sD1rZE_ivQb-WTiHZkOol0OGCHNbTpq8,29125
87
+ lsst/pipe/base/quantum_graph/_predicted.py,sha256=FHLqcEBBuJmIf_3eEUMdBNm70t9DvDWaxGp8bHTWJSA,88056
88
+ lsst/pipe/base/quantum_graph/_provenance.py,sha256=zb7YXiIYnLPYaej9f9tl8aW8wtxow3YT79yk1vdErQg,48554
87
89
  lsst/pipe/base/quantum_graph/visualization.py,sha256=EbTWhk9aPq7sX6bcHmnEIsr2xuuR6d1SxspQbRe8D0Q,12235
90
+ lsst/pipe/base/quantum_graph/aggregator/__init__.py,sha256=4CK8sP_ZjUKmxKS3LnCH1zG7XSk9IEwijrluRBHhEMU,7436
91
+ lsst/pipe/base/quantum_graph/aggregator/_communicators.py,sha256=QERfDavbc_3dcRizrTtKtDha647aMBhFt74bH6N36QA,36375
92
+ lsst/pipe/base/quantum_graph/aggregator/_config.py,sha256=iV1Ejfk-UnFoQ8TkpJE_jMZYHsmZcdLm5R-FnQEqO7s,5167
93
+ lsst/pipe/base/quantum_graph/aggregator/_ingester.py,sha256=ohZOfQi9VL7fHEn_P84NOaSYvbzeDZIvk71UWL7ZHnY,13746
94
+ lsst/pipe/base/quantum_graph/aggregator/_progress.py,sha256=D0PrjwdJTuPvgQwLeD90nocMgrNnSzkeQmXcvPFV7jc,7155
95
+ lsst/pipe/base/quantum_graph/aggregator/_scanner.py,sha256=EcglaQBMjVxEJyikBAfCOvoqta6fMjKmtZGAOtgjNJE,15412
96
+ lsst/pipe/base/quantum_graph/aggregator/_structs.py,sha256=nn7CVzYPFLZmCOeZhf47H8CIszUL0x3dNgUbGHazpl4,5475
97
+ lsst/pipe/base/quantum_graph/aggregator/_supervisor.py,sha256=HoBAm1ojovpoIvl4KZKCOzSp1BF4YFZLtU8skUFX4O4,9287
98
+ lsst/pipe/base/quantum_graph/aggregator/_writer.py,sha256=u6YubtNiLjFkvH5grQ94Y9ZU9rKUAtK77y07qh5EIo8,24679
88
99
  lsst/pipe/base/script/__init__.py,sha256=cLEXE7aq5UZ0juL_ScmRw0weFgp4tDgwEX_ts-NEYic,1522
89
100
  lsst/pipe/base/script/register_instrument.py,sha256=TRC2r2tSoYBNWNVQya01ELxAtGH8WVk9Ya-uNgCIL5U,2426
90
101
  lsst/pipe/base/script/retrieve_artifacts_for_quanta.py,sha256=pYI0wNl5PU8ImgzWfGEDrRz3PSKSg2szWLEIVKdm7Og,3939
@@ -96,19 +107,19 @@ lsst/pipe/base/tests/in_memory_limited_butler.py,sha256=UzLh416H67nCUhD9y3cniAAj
96
107
  lsst/pipe/base/tests/no_dimensions.py,sha256=58UpyRN8cLAMZtkOmjTm3dJZyRFRekotQ-7-OgEfiAI,4710
97
108
  lsst/pipe/base/tests/pipelineStepTester.py,sha256=KGxdB8gdVpSey2RUGURDIzIfPL-4qvQCsBpMrhG4Z2M,7208
98
109
  lsst/pipe/base/tests/simpleQGraph.py,sha256=WHphpVvOA9eSbVtUp884wjk4g6ppFLM7gnddDYSwnTc,19862
99
- lsst/pipe/base/tests/util.py,sha256=eWuIRz55HYgNmMkexinN9HjUFmPC3uapO8jMjcQY-ao,4010
110
+ lsst/pipe/base/tests/util.py,sha256=IXpZOC58fdRnurB5lPcNX-xRgKEV-cPNkWKJDFIr1gs,4772
100
111
  lsst/pipe/base/tests/mocks/__init__.py,sha256=fDy9H9vRAIBpKDJEXNZuDWJMzWZfpcBT4TmyOw4o-RY,1572
101
112
  lsst/pipe/base/tests/mocks/_data_id_match.py,sha256=v33QZhZm-srXZAXZ8NbNKGN-_ql4AzaArBUk1lxhyss,7474
102
113
  lsst/pipe/base/tests/mocks/_pipeline_task.py,sha256=_n16lDsk3ItWi2J28Qheuqphr4aaCK6CN9acmJ1hAqI,30692
103
114
  lsst/pipe/base/tests/mocks/_repo.py,sha256=OTJw_fi37w7bkZbbLa7z51W-45zxySAnLbV7Qv_aSB4,27423
104
115
  lsst/pipe/base/tests/mocks/_storage_class.py,sha256=12IFfJMbZ5GkYlMX6ZMWiG8pMZc2Jlxke3qQW-bljdU,27434
105
- lsst_pipe_base-29.2025.4100.dist-info/licenses/COPYRIGHT,sha256=kB3Z9_f6a6uFLGpEmNJT_n186CE65H6wHu4F6BNt_zA,368
106
- lsst_pipe_base-29.2025.4100.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
107
- lsst_pipe_base-29.2025.4100.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
108
- lsst_pipe_base-29.2025.4100.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
109
- lsst_pipe_base-29.2025.4100.dist-info/METADATA,sha256=lVmQWmCi-0YqNnb8EPmNhDrPUolZ0Fl6QQW8_85xbeo,2234
110
- lsst_pipe_base-29.2025.4100.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
111
- lsst_pipe_base-29.2025.4100.dist-info/entry_points.txt,sha256=bnmUhJBsChxMdqST9VmFBYYKxLQoToOfqW1wjW7khjk,64
112
- lsst_pipe_base-29.2025.4100.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
113
- lsst_pipe_base-29.2025.4100.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
114
- lsst_pipe_base-29.2025.4100.dist-info/RECORD,,
116
+ lsst_pipe_base-29.2025.4300.dist-info/licenses/COPYRIGHT,sha256=kB3Z9_f6a6uFLGpEmNJT_n186CE65H6wHu4F6BNt_zA,368
117
+ lsst_pipe_base-29.2025.4300.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
118
+ lsst_pipe_base-29.2025.4300.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
119
+ lsst_pipe_base-29.2025.4300.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
120
+ lsst_pipe_base-29.2025.4300.dist-info/METADATA,sha256=XdNNWTqV2W6-kCxqRwWfvKkrCbmaO-qFlavCmaRUJwM,2234
121
+ lsst_pipe_base-29.2025.4300.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
122
+ lsst_pipe_base-29.2025.4300.dist-info/entry_points.txt,sha256=bnmUhJBsChxMdqST9VmFBYYKxLQoToOfqW1wjW7khjk,64
123
+ lsst_pipe_base-29.2025.4300.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
124
+ lsst_pipe_base-29.2025.4300.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
125
+ lsst_pipe_base-29.2025.4300.dist-info/RECORD,,