lsst-pipe-base 29.2025.4600__py3-none-any.whl → 29.2025.4800__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.
- lsst/pipe/base/connections.py +11 -0
- lsst/pipe/base/quantum_graph/_common.py +15 -1
- lsst/pipe/base/quantum_graph/_multiblock.py +14 -39
- lsst/pipe/base/quantum_graph/_predicted.py +77 -73
- lsst/pipe/base/quantum_graph/_provenance.py +73 -144
- lsst/pipe/base/quantum_graph/aggregator/_communicators.py +10 -10
- lsst/pipe/base/quantum_graph/aggregator/_scanner.py +88 -60
- lsst/pipe/base/quantum_graph/aggregator/_structs.py +36 -19
- lsst/pipe/base/quantum_graph/aggregator/_supervisor.py +7 -10
- lsst/pipe/base/quantum_graph/aggregator/_writer.py +55 -144
- lsst/pipe/base/quantum_graph_builder.py +0 -1
- lsst/pipe/base/version.py +1 -1
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/METADATA +1 -1
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/RECORD +22 -22
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/WHEEL +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/entry_points.txt +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/COPYRIGHT +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/LICENSE +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/bsd_license.txt +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/gpl-v3.0.txt +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/top_level.txt +0 -0
- {lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/zip-safe +0 -0
|
@@ -30,7 +30,6 @@ from __future__ import annotations
|
|
|
30
30
|
__all__ = ("Writer",)
|
|
31
31
|
|
|
32
32
|
import dataclasses
|
|
33
|
-
import enum
|
|
34
33
|
import itertools
|
|
35
34
|
import logging
|
|
36
35
|
import operator
|
|
@@ -62,69 +61,7 @@ from .._provenance import (
|
|
|
62
61
|
ProvenanceQuantumModel,
|
|
63
62
|
)
|
|
64
63
|
from ._communicators import WriterCommunicator
|
|
65
|
-
from ._structs import
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class _CompressionState(enum.Enum):
|
|
69
|
-
"""Enumeration of the possible states of compression in `_ScanData`."""
|
|
70
|
-
|
|
71
|
-
NOT_COMPRESSED = enum.auto()
|
|
72
|
-
"""Nothing is compressed."""
|
|
73
|
-
|
|
74
|
-
LOG_AND_METADATA_COMPRESSED = enum.auto()
|
|
75
|
-
"""Only the logs and metadata are compressed."""
|
|
76
|
-
|
|
77
|
-
ALL_COMPRESSED = enum.auto()
|
|
78
|
-
"""All `bytes` are compressed."""
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
@dataclasses.dataclass
|
|
82
|
-
class _ScanData:
|
|
83
|
-
"""Information from a quantum scan that has been partially processed for
|
|
84
|
-
writing.
|
|
85
|
-
"""
|
|
86
|
-
|
|
87
|
-
quantum_id: uuid.UUID
|
|
88
|
-
"""Unique ID of the quantum."""
|
|
89
|
-
|
|
90
|
-
log_id: uuid.UUID
|
|
91
|
-
"""Unique ID of the log dataset."""
|
|
92
|
-
|
|
93
|
-
metadata_id: uuid.UUID
|
|
94
|
-
"""Unique ID of the metadata dataset."""
|
|
95
|
-
|
|
96
|
-
quantum: bytes = b""
|
|
97
|
-
"""Possibly-compressed JSON representation of the quantum provenance."""
|
|
98
|
-
|
|
99
|
-
datasets: dict[uuid.UUID, bytes] = dataclasses.field(default_factory=dict)
|
|
100
|
-
"""Possibly-compressed JSON representation of output dataset provenance."""
|
|
101
|
-
|
|
102
|
-
log: bytes = b""
|
|
103
|
-
"""Possibly-compressed log dataset content."""
|
|
104
|
-
|
|
105
|
-
metadata: bytes = b""
|
|
106
|
-
"""Possibly-compressed metadata dataset content."""
|
|
107
|
-
|
|
108
|
-
compression: _CompressionState = _CompressionState.NOT_COMPRESSED
|
|
109
|
-
"""Which data is compressed, if any."""
|
|
110
|
-
|
|
111
|
-
def compress(self, compressor: Compressor) -> None:
|
|
112
|
-
"""Compress all data in place, if it isn't already.
|
|
113
|
-
|
|
114
|
-
Parameters
|
|
115
|
-
----------
|
|
116
|
-
compressor : `Compressor`
|
|
117
|
-
Object that can compress `bytes`.
|
|
118
|
-
"""
|
|
119
|
-
if self.compression is _CompressionState.NOT_COMPRESSED:
|
|
120
|
-
self.metadata = compressor.compress(self.metadata)
|
|
121
|
-
self.log = compressor.compress(self.log)
|
|
122
|
-
self.compression = _CompressionState.LOG_AND_METADATA_COMPRESSED
|
|
123
|
-
if self.compression is _CompressionState.LOG_AND_METADATA_COMPRESSED:
|
|
124
|
-
self.quantum = compressor.compress(self.quantum)
|
|
125
|
-
for key in self.datasets.keys():
|
|
126
|
-
self.datasets[key] = compressor.compress(self.datasets[key])
|
|
127
|
-
self.compression = _CompressionState.ALL_COMPRESSED
|
|
64
|
+
from ._structs import WriteRequest
|
|
128
65
|
|
|
129
66
|
|
|
130
67
|
@dataclasses.dataclass
|
|
@@ -267,8 +204,8 @@ class Writer:
|
|
|
267
204
|
with datasets as well as with quanta.
|
|
268
205
|
"""
|
|
269
206
|
|
|
270
|
-
pending_compression_training: list[
|
|
271
|
-
"""
|
|
207
|
+
pending_compression_training: list[WriteRequest] = dataclasses.field(default_factory=list)
|
|
208
|
+
"""Unprocessed quantum scans that are being accumulated in order to
|
|
272
209
|
build a compression dictionary.
|
|
273
210
|
"""
|
|
274
211
|
|
|
@@ -299,7 +236,7 @@ class Writer:
|
|
|
299
236
|
)
|
|
300
237
|
|
|
301
238
|
def _populate_indices_and_outputs(self) -> None:
|
|
302
|
-
all_uuids = set(self.predicted.
|
|
239
|
+
all_uuids = set(self.predicted.quantum_datasets.keys())
|
|
303
240
|
for quantum in self.comms.periodically_check_for_cancel(
|
|
304
241
|
itertools.chain(
|
|
305
242
|
self.predicted.init_quanta.root,
|
|
@@ -329,13 +266,12 @@ class Writer:
|
|
|
329
266
|
if not predicted_quantum.task_label:
|
|
330
267
|
# Skip the 'packages' producer quantum.
|
|
331
268
|
continue
|
|
332
|
-
quantum_index = self.indices[predicted_quantum.quantum_id]
|
|
333
269
|
for predicted_input in itertools.chain.from_iterable(predicted_quantum.inputs.values()):
|
|
334
|
-
self.xgraph.add_edge(
|
|
270
|
+
self.xgraph.add_edge(predicted_input.dataset_id, predicted_quantum.quantum_id)
|
|
335
271
|
if predicted_input.dataset_id not in self.output_dataset_ids:
|
|
336
272
|
self.overall_inputs.setdefault(predicted_input.dataset_id, predicted_input)
|
|
337
273
|
for predicted_output in itertools.chain.from_iterable(predicted_quantum.outputs.values()):
|
|
338
|
-
self.xgraph.add_edge(
|
|
274
|
+
self.xgraph.add_edge(predicted_quantum.quantum_id, predicted_output.dataset_id)
|
|
339
275
|
|
|
340
276
|
@staticmethod
|
|
341
277
|
def run(predicted_path: str, comms: WriterCommunicator) -> None:
|
|
@@ -365,12 +301,11 @@ class Writer:
|
|
|
365
301
|
self.comms.log.info("Polling for write requests from scanners.")
|
|
366
302
|
for request in self.comms.poll():
|
|
367
303
|
if data_writers is None:
|
|
368
|
-
self.pending_compression_training.
|
|
304
|
+
self.pending_compression_training.append(request)
|
|
369
305
|
if len(self.pending_compression_training) >= self.comms.config.zstd_dict_n_inputs:
|
|
370
306
|
data_writers = self.make_data_writers()
|
|
371
307
|
else:
|
|
372
|
-
|
|
373
|
-
self.write_scan_data(scan_data, data_writers)
|
|
308
|
+
self.process_request(request, data_writers)
|
|
374
309
|
if data_writers is None:
|
|
375
310
|
data_writers = self.make_data_writers()
|
|
376
311
|
self.write_init_outputs(data_writers)
|
|
@@ -398,8 +333,8 @@ class Writer:
|
|
|
398
333
|
)
|
|
399
334
|
self.comms.check_for_cancel()
|
|
400
335
|
self.comms.log.info("Compressing and writing queued scan requests.")
|
|
401
|
-
for
|
|
402
|
-
self.
|
|
336
|
+
for request in self.pending_compression_training:
|
|
337
|
+
self.process_request(request, data_writers)
|
|
403
338
|
del self.pending_compression_training
|
|
404
339
|
self.comms.check_for_cancel()
|
|
405
340
|
self.write_overall_inputs(data_writers)
|
|
@@ -435,11 +370,11 @@ class Writer:
|
|
|
435
370
|
predicted_quantum.datastore_records.clear()
|
|
436
371
|
training_inputs.append(predicted_quantum.model_dump_json().encode())
|
|
437
372
|
# Add the provenance quanta, metadata, and logs we've accumulated.
|
|
438
|
-
for
|
|
439
|
-
assert
|
|
440
|
-
training_inputs.append(
|
|
441
|
-
training_inputs.append(
|
|
442
|
-
training_inputs.append(
|
|
373
|
+
for write_request in self.pending_compression_training:
|
|
374
|
+
assert not write_request.is_compressed, "We can't compress without the compression dictionary."
|
|
375
|
+
training_inputs.append(write_request.quantum)
|
|
376
|
+
training_inputs.append(write_request.metadata)
|
|
377
|
+
training_inputs.append(write_request.logs)
|
|
443
378
|
return zstandard.train_dictionary(self.comms.config.zstd_dict_size, training_inputs)
|
|
444
379
|
|
|
445
380
|
def write_init_outputs(self, data_writers: _DataWriters) -> None:
|
|
@@ -458,19 +393,16 @@ class Writer:
|
|
|
458
393
|
continue
|
|
459
394
|
existing_outputs = self.existing_init_outputs[predicted_init_quantum.quantum_id]
|
|
460
395
|
for predicted_output in itertools.chain.from_iterable(predicted_init_quantum.outputs.values()):
|
|
461
|
-
dataset_index = self.indices[predicted_output.dataset_id]
|
|
462
396
|
provenance_output = ProvenanceDatasetModel.from_predicted(
|
|
463
397
|
predicted_output,
|
|
464
|
-
producer=
|
|
465
|
-
consumers=self.xgraph.successors(
|
|
398
|
+
producer=predicted_init_quantum.quantum_id,
|
|
399
|
+
consumers=self.xgraph.successors(predicted_output.dataset_id),
|
|
466
400
|
)
|
|
467
401
|
provenance_output.produced = predicted_output.dataset_id in existing_outputs
|
|
468
402
|
data_writers.datasets.write_model(
|
|
469
403
|
provenance_output.dataset_id, provenance_output, data_writers.compressor
|
|
470
404
|
)
|
|
471
|
-
init_quanta.root.append(
|
|
472
|
-
ProvenanceInitQuantumModel.from_predicted(predicted_init_quantum, self.indices)
|
|
473
|
-
)
|
|
405
|
+
init_quanta.root.append(ProvenanceInitQuantumModel.from_predicted(predicted_init_quantum))
|
|
474
406
|
data_writers.graph.write_single_model("init_quanta", init_quanta)
|
|
475
407
|
|
|
476
408
|
def write_overall_inputs(self, data_writers: _DataWriters) -> None:
|
|
@@ -484,13 +416,12 @@ class Writer:
|
|
|
484
416
|
self.comms.log.info("Writing overall inputs.")
|
|
485
417
|
for predicted_input in self.comms.periodically_check_for_cancel(self.overall_inputs.values()):
|
|
486
418
|
if predicted_input.dataset_id not in data_writers.datasets.addresses:
|
|
487
|
-
dataset_index = self.indices[predicted_input.dataset_id]
|
|
488
419
|
data_writers.datasets.write_model(
|
|
489
420
|
predicted_input.dataset_id,
|
|
490
421
|
ProvenanceDatasetModel.from_predicted(
|
|
491
422
|
predicted_input,
|
|
492
423
|
producer=None,
|
|
493
|
-
consumers=self.xgraph.successors(
|
|
424
|
+
consumers=self.xgraph.successors(predicted_input.dataset_id),
|
|
494
425
|
),
|
|
495
426
|
data_writers.compressor,
|
|
496
427
|
)
|
|
@@ -509,81 +440,61 @@ class Writer:
|
|
|
509
440
|
data = packages.toBytes("json")
|
|
510
441
|
data_writers.graph.write_single_block("packages", data)
|
|
511
442
|
|
|
512
|
-
def
|
|
513
|
-
"""Process a `
|
|
443
|
+
def process_request(self, request: WriteRequest, data_writers: _DataWriters) -> None:
|
|
444
|
+
"""Process a `WriteRequest` into `_ScanData`.
|
|
514
445
|
|
|
515
446
|
Parameters
|
|
516
447
|
----------
|
|
517
|
-
request : `
|
|
448
|
+
request : `WriteRequest`
|
|
518
449
|
Result of a quantum scan.
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
-------
|
|
522
|
-
data : `list` [ `_ScanData` ]
|
|
523
|
-
A zero- or single-element list of `_ScanData` to write or save for
|
|
524
|
-
compression-dict training. A zero-element list is returned if the
|
|
525
|
-
scan actually represents an init quantum.
|
|
450
|
+
data_writers : `_DataWriters`
|
|
451
|
+
Low-level writers struct.
|
|
526
452
|
"""
|
|
527
453
|
if (existing_init_outputs := self.existing_init_outputs.get(request.quantum_id)) is not None:
|
|
528
454
|
self.comms.log.debug("Handling init-output scan for %s.", request.quantum_id)
|
|
529
455
|
existing_init_outputs.update(request.existing_outputs)
|
|
530
456
|
self.comms.report_write()
|
|
531
|
-
return
|
|
457
|
+
return
|
|
532
458
|
self.comms.log.debug("Handling quantum scan for %s.", request.quantum_id)
|
|
533
459
|
predicted_quantum = self.predicted.quantum_datasets[request.quantum_id]
|
|
534
|
-
|
|
535
|
-
(metadata_output,) = predicted_quantum.outputs[acc.METADATA_OUTPUT_CONNECTION_NAME]
|
|
536
|
-
(log_output,) = predicted_quantum.outputs[acc.LOG_OUTPUT_CONNECTION_NAME]
|
|
537
|
-
data = _ScanData(
|
|
538
|
-
request.quantum_id,
|
|
539
|
-
metadata_id=metadata_output.dataset_id,
|
|
540
|
-
log_id=log_output.dataset_id,
|
|
541
|
-
compression=(
|
|
542
|
-
_CompressionState.LOG_AND_METADATA_COMPRESSED
|
|
543
|
-
if request.is_compressed
|
|
544
|
-
else _CompressionState.NOT_COMPRESSED
|
|
545
|
-
),
|
|
546
|
-
)
|
|
460
|
+
outputs: dict[uuid.UUID, bytes] = {}
|
|
547
461
|
for predicted_output in itertools.chain.from_iterable(predicted_quantum.outputs.values()):
|
|
548
|
-
dataset_index = self.indices[predicted_output.dataset_id]
|
|
549
462
|
provenance_output = ProvenanceDatasetModel.from_predicted(
|
|
550
463
|
predicted_output,
|
|
551
|
-
producer=
|
|
552
|
-
consumers=self.xgraph.successors(
|
|
464
|
+
producer=predicted_quantum.quantum_id,
|
|
465
|
+
consumers=self.xgraph.successors(predicted_output.dataset_id),
|
|
553
466
|
)
|
|
554
467
|
provenance_output.produced = provenance_output.dataset_id in request.existing_outputs
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
self.comms.log.debug("Writing quantum %s.", scan_data.quantum_id)
|
|
574
|
-
scan_data.compress(data_writers.compressor)
|
|
575
|
-
data_writers.quanta.write_bytes(scan_data.quantum_id, scan_data.quantum)
|
|
576
|
-
for dataset_id, dataset_data in scan_data.datasets.items():
|
|
468
|
+
outputs[provenance_output.dataset_id] = data_writers.compressor.compress(
|
|
469
|
+
provenance_output.model_dump_json().encode()
|
|
470
|
+
)
|
|
471
|
+
if not request.quantum:
|
|
472
|
+
request.quantum = (
|
|
473
|
+
ProvenanceQuantumModel.from_predicted(predicted_quantum).model_dump_json().encode()
|
|
474
|
+
)
|
|
475
|
+
if request.is_compressed:
|
|
476
|
+
request.quantum = data_writers.compressor.compress(request.quantum)
|
|
477
|
+
if not request.is_compressed:
|
|
478
|
+
request.quantum = data_writers.compressor.compress(request.quantum)
|
|
479
|
+
if request.metadata:
|
|
480
|
+
request.metadata = data_writers.compressor.compress(request.metadata)
|
|
481
|
+
if request.logs:
|
|
482
|
+
request.logs = data_writers.compressor.compress(request.logs)
|
|
483
|
+
self.comms.log.debug("Writing quantum %s.", request.quantum_id)
|
|
484
|
+
data_writers.quanta.write_bytes(request.quantum_id, request.quantum)
|
|
485
|
+
for dataset_id, dataset_data in outputs.items():
|
|
577
486
|
data_writers.datasets.write_bytes(dataset_id, dataset_data)
|
|
578
|
-
if
|
|
579
|
-
|
|
580
|
-
data_writers.metadata.
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
487
|
+
if request.metadata:
|
|
488
|
+
(metadata_output,) = predicted_quantum.outputs[acc.METADATA_OUTPUT_CONNECTION_NAME]
|
|
489
|
+
address = data_writers.metadata.write_bytes(request.quantum_id, request.metadata)
|
|
490
|
+
data_writers.metadata.addresses[metadata_output.dataset_id] = address
|
|
491
|
+
if request.logs:
|
|
492
|
+
(log_output,) = predicted_quantum.outputs[acc.LOG_OUTPUT_CONNECTION_NAME]
|
|
493
|
+
address = data_writers.logs.write_bytes(request.quantum_id, request.logs)
|
|
494
|
+
data_writers.logs.addresses[log_output.dataset_id] = address
|
|
584
495
|
# We shouldn't need this predicted quantum anymore; delete it in the
|
|
585
496
|
# hopes that'll free up some memory.
|
|
586
|
-
del self.predicted.quantum_datasets[
|
|
497
|
+
del self.predicted.quantum_datasets[request.quantum_id]
|
|
587
498
|
self.comms.report_write()
|
|
588
499
|
|
|
589
500
|
|
|
@@ -1315,7 +1315,6 @@ class QuantumGraphBuilder(ABC):
|
|
|
1315
1315
|
},
|
|
1316
1316
|
)
|
|
1317
1317
|
components.quantum_datasets[quantum_datasets.quantum_id] = quantum_datasets
|
|
1318
|
-
components.set_quantum_indices()
|
|
1319
1318
|
components.set_thin_graph()
|
|
1320
1319
|
components.set_header_counts()
|
|
1321
1320
|
return components
|
lsst/pipe/base/version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
__all__ = ["__version__"]
|
|
2
|
-
__version__ = "29.2025.
|
|
2
|
+
__version__ = "29.2025.4800"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-pipe-base
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.4800
|
|
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-Expression: BSD-3-Clause OR GPL-3.0-or-later
|
|
@@ -14,7 +14,7 @@ lsst/pipe/base/caching_limited_butler.py,sha256=x_e4EXYODcVJV8BkLzvUTu2yCd6dqM1r
|
|
|
14
14
|
lsst/pipe/base/config.py,sha256=yNipVEc6awwhU_O9I01g20OnvQrs28dAwkXuI1hrlYE,11982
|
|
15
15
|
lsst/pipe/base/configOverrides.py,sha256=B0An8EaX76VzWnC5dJxvyZ2AhVzawMtq7qlE9ma5lkc,14661
|
|
16
16
|
lsst/pipe/base/connectionTypes.py,sha256=inUDyzbM1sKMCtHaRkhx3dWSPHPBIDVMHOPhzB13Kdw,16720
|
|
17
|
-
lsst/pipe/base/connections.py,sha256=
|
|
17
|
+
lsst/pipe/base/connections.py,sha256=UIe1km5_bOth5o9LZtjpT2r9vc44K4TGmz5Fvmqu5rA,67178
|
|
18
18
|
lsst/pipe/base/dot_tools.py,sha256=vriWMaB8YTEKKvhJE5KYdVGE4gB5XmiYfD2f18Fue-c,4285
|
|
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
|
|
@@ -28,7 +28,7 @@ lsst/pipe/base/pipelineIR.py,sha256=UuZ02NLhVmzzekbuWlyar7cPLCf_4yfzD5qFEmGHs_A,
|
|
|
28
28
|
lsst/pipe/base/pipelineTask.py,sha256=K3GdjJLvy8A7I-jzQiERQZaYF7mC1LM3iB5TmUtbOCI,8394
|
|
29
29
|
lsst/pipe/base/prerequisite_helpers.py,sha256=bmiebQ4veSrypZgAXjmCBFfj8fUtPW9eRQaVShhxdBQ,28446
|
|
30
30
|
lsst/pipe/base/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
lsst/pipe/base/quantum_graph_builder.py,sha256=
|
|
31
|
+
lsst/pipe/base/quantum_graph_builder.py,sha256=nJsrGx5P4NLTBZo2ZXGpHO8JU05yZkJYxKxWk3ZecEI,67940
|
|
32
32
|
lsst/pipe/base/quantum_graph_executor.py,sha256=WP41iQmihy1jfgaHV6eu2aSrqQx_Fydq3mbEF6CLQ-s,4419
|
|
33
33
|
lsst/pipe/base/quantum_graph_skeleton.py,sha256=GhSQjRHaErneGY4A4E0tERqg9QPEeYrlpmdLzqFXy6E,28586
|
|
34
34
|
lsst/pipe/base/quantum_provenance_graph.py,sha256=33S5iCVxD9Co4oJSU_N8AJXL14Nw0UwGzPEc3gpQiqk,91981
|
|
@@ -42,7 +42,7 @@ lsst/pipe/base/task.py,sha256=XHBd-7m1a4-6LgobBYA1DgY4H7EV-_RWKfxbhZbMmD4,15145
|
|
|
42
42
|
lsst/pipe/base/taskFactory.py,sha256=MsDGECJqZLSZk8SGhpuVhNaP32UWuNvxZiDcZExPFG8,3412
|
|
43
43
|
lsst/pipe/base/testUtils.py,sha256=lSBKMhoKflbi8JkMNYfEqqHNl-rtFI8UYT3QneDYpLo,18477
|
|
44
44
|
lsst/pipe/base/utils.py,sha256=JmEt3l0xrh9uayKrSXuQEq12aXOhDr2YXmbYduaxCko,1940
|
|
45
|
-
lsst/pipe/base/version.py,sha256=
|
|
45
|
+
lsst/pipe/base/version.py,sha256=MHZJr_Yoevn1SeqerO6dmfTP3xtJLGxPmEi-9Jpl380,55
|
|
46
46
|
lsst/pipe/base/cli/__init__.py,sha256=861tXIAW7SqtqNUYkjbeEdfg8lDswXsjJQca0gVCFz4,54
|
|
47
47
|
lsst/pipe/base/cli/_get_cli_subcommands.py,sha256=g_af64klRybBGKAg7fmBSZBdw2LYBAsFON_yQIMZON0,1289
|
|
48
48
|
lsst/pipe/base/cli/cmd/__init__.py,sha256=3UF2IQEEBor4YMGRNPdcZAVCAI5yFyeHp5nGul4IoyM,1557
|
|
@@ -82,20 +82,20 @@ lsst/pipe/base/pipeline_graph/visualization/_printer.py,sha256=yJMRJ-aXd3nYDgs1F
|
|
|
82
82
|
lsst/pipe/base/pipeline_graph/visualization/_show.py,sha256=lPRjO1To2n5r3f_Wgcwy-7TmyJ7UszGGFXAlOtN1wDs,10510
|
|
83
83
|
lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py,sha256=dp7PXl9Cu7GfWjBi5g8KjXZgnF1KGg_idKKxtICL53Q,8679
|
|
84
84
|
lsst/pipe/base/quantum_graph/__init__.py,sha256=-Gp3LihB0AXCvhG387wKAEpHRM-NrHGSXMti8cHee90,1437
|
|
85
|
-
lsst/pipe/base/quantum_graph/_common.py,sha256=
|
|
86
|
-
lsst/pipe/base/quantum_graph/_multiblock.py,sha256=
|
|
87
|
-
lsst/pipe/base/quantum_graph/_predicted.py,sha256=
|
|
88
|
-
lsst/pipe/base/quantum_graph/_provenance.py,sha256=
|
|
85
|
+
lsst/pipe/base/quantum_graph/_common.py,sha256=tgQsIylvs5wSAKs3SVp5_XJ7XEBJwBcRUbBGR2EFuwU,22714
|
|
86
|
+
lsst/pipe/base/quantum_graph/_multiblock.py,sha256=kc2pqezfU7xOAxYZa41mz3G4X5w4GVfovw3ZcjNgK2Y,27950
|
|
87
|
+
lsst/pipe/base/quantum_graph/_predicted.py,sha256=VoJev2xEnNcXA1ar_cM7paUfAP5DrE95FWjgqy4FU78,87901
|
|
88
|
+
lsst/pipe/base/quantum_graph/_provenance.py,sha256=R1SoRxyi6cNi9fXSc7ybrbri9anuYnliJ6SBmVUrh40,55102
|
|
89
89
|
lsst/pipe/base/quantum_graph/visualization.py,sha256=EbTWhk9aPq7sX6bcHmnEIsr2xuuR6d1SxspQbRe8D0Q,12235
|
|
90
90
|
lsst/pipe/base/quantum_graph/aggregator/__init__.py,sha256=4CK8sP_ZjUKmxKS3LnCH1zG7XSk9IEwijrluRBHhEMU,7436
|
|
91
|
-
lsst/pipe/base/quantum_graph/aggregator/_communicators.py,sha256=
|
|
91
|
+
lsst/pipe/base/quantum_graph/aggregator/_communicators.py,sha256=w7hNEQjE1Qjhi6u4Tx4wS_1RrV3-WQRCz1FACd-vmro,36396
|
|
92
92
|
lsst/pipe/base/quantum_graph/aggregator/_config.py,sha256=iV1Ejfk-UnFoQ8TkpJE_jMZYHsmZcdLm5R-FnQEqO7s,5167
|
|
93
93
|
lsst/pipe/base/quantum_graph/aggregator/_ingester.py,sha256=ohZOfQi9VL7fHEn_P84NOaSYvbzeDZIvk71UWL7ZHnY,13746
|
|
94
94
|
lsst/pipe/base/quantum_graph/aggregator/_progress.py,sha256=jiz9Np73uUQ03CtH7pI6TXxXrwFUChh5hSj_gbMGHr0,7207
|
|
95
|
-
lsst/pipe/base/quantum_graph/aggregator/_scanner.py,sha256
|
|
96
|
-
lsst/pipe/base/quantum_graph/aggregator/_structs.py,sha256=
|
|
97
|
-
lsst/pipe/base/quantum_graph/aggregator/_supervisor.py,sha256=
|
|
98
|
-
lsst/pipe/base/quantum_graph/aggregator/_writer.py,sha256=
|
|
95
|
+
lsst/pipe/base/quantum_graph/aggregator/_scanner.py,sha256=I2fgm5f6ILUkIH81SUEBA91gSoa8Y5RqR80BJBVQYmk,22349
|
|
96
|
+
lsst/pipe/base/quantum_graph/aggregator/_structs.py,sha256=bM-MejZz5DFUFQCH8kZDykuMBmBJYbQMl15nBm-3dtc,5499
|
|
97
|
+
lsst/pipe/base/quantum_graph/aggregator/_supervisor.py,sha256=5-6CshU9RFyVEgYI3qJwuVEGw8YtT9Ei7cNkcghXzMk,9290
|
|
98
|
+
lsst/pipe/base/quantum_graph/aggregator/_writer.py,sha256=fYQrJGCg3MQQQF1feWXCLyG6m5ucnzFrIINawWgnF8g,21504
|
|
99
99
|
lsst/pipe/base/script/__init__.py,sha256=cLEXE7aq5UZ0juL_ScmRw0weFgp4tDgwEX_ts-NEYic,1522
|
|
100
100
|
lsst/pipe/base/script/register_instrument.py,sha256=TRC2r2tSoYBNWNVQya01ELxAtGH8WVk9Ya-uNgCIL5U,2426
|
|
101
101
|
lsst/pipe/base/script/retrieve_artifacts_for_quanta.py,sha256=pYI0wNl5PU8ImgzWfGEDrRz3PSKSg2szWLEIVKdm7Og,3939
|
|
@@ -113,13 +113,13 @@ lsst/pipe/base/tests/mocks/_data_id_match.py,sha256=jVekStcrItC0tqOCc01VjYaiE9ex
|
|
|
113
113
|
lsst/pipe/base/tests/mocks/_pipeline_task.py,sha256=N3fC4OMAMWWnYtyLkVdMfb9ZiFse39HniRDvlAOofOY,30691
|
|
114
114
|
lsst/pipe/base/tests/mocks/_repo.py,sha256=OTJw_fi37w7bkZbbLa7z51W-45zxySAnLbV7Qv_aSB4,27423
|
|
115
115
|
lsst/pipe/base/tests/mocks/_storage_class.py,sha256=12IFfJMbZ5GkYlMX6ZMWiG8pMZc2Jlxke3qQW-bljdU,27434
|
|
116
|
-
lsst_pipe_base-29.2025.
|
|
117
|
-
lsst_pipe_base-29.2025.
|
|
118
|
-
lsst_pipe_base-29.2025.
|
|
119
|
-
lsst_pipe_base-29.2025.
|
|
120
|
-
lsst_pipe_base-29.2025.
|
|
121
|
-
lsst_pipe_base-29.2025.
|
|
122
|
-
lsst_pipe_base-29.2025.
|
|
123
|
-
lsst_pipe_base-29.2025.
|
|
124
|
-
lsst_pipe_base-29.2025.
|
|
125
|
-
lsst_pipe_base-29.2025.
|
|
116
|
+
lsst_pipe_base-29.2025.4800.dist-info/licenses/COPYRIGHT,sha256=kB3Z9_f6a6uFLGpEmNJT_n186CE65H6wHu4F6BNt_zA,368
|
|
117
|
+
lsst_pipe_base-29.2025.4800.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
|
|
118
|
+
lsst_pipe_base-29.2025.4800.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
|
|
119
|
+
lsst_pipe_base-29.2025.4800.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
120
|
+
lsst_pipe_base-29.2025.4800.dist-info/METADATA,sha256=54BUUcJ9VnlUujS88EhcV3m0nXzkrEyxpCyjlMm60lA,2257
|
|
121
|
+
lsst_pipe_base-29.2025.4800.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
122
|
+
lsst_pipe_base-29.2025.4800.dist-info/entry_points.txt,sha256=bnmUhJBsChxMdqST9VmFBYYKxLQoToOfqW1wjW7khjk,64
|
|
123
|
+
lsst_pipe_base-29.2025.4800.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
|
|
124
|
+
lsst_pipe_base-29.2025.4800.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
125
|
+
lsst_pipe_base-29.2025.4800.dist-info/RECORD,,
|
|
File without changes
|
{lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/COPYRIGHT
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.4600.dist-info → lsst_pipe_base-29.2025.4800.dist-info}/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|