lsst-pipe-base 29.2025.2000__tar.gz → 29.2025.2100__tar.gz
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-29.2025.2000/python/lsst_pipe_base.egg-info → lsst_pipe_base-29.2025.2100}/PKG-INFO +1 -1
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py +12 -3
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/cmd/commands.py +1 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/transfer_from_graph.py +10 -1
- lsst_pipe_base-29.2025.2100/python/lsst/pipe/base/script/utils.py +74 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/zip_from_graph.py +4 -18
- lsst_pipe_base-29.2025.2100/python/lsst/pipe/base/version.py +2 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100/python/lsst_pipe_base.egg-info}/PKG-INFO +1 -1
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/SOURCES.txt +1 -0
- lsst_pipe_base-29.2025.2000/python/lsst/pipe/base/version.py +0 -2
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/COPYRIGHT +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/LICENSE +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/MANIFEST.in +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/README.md +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/bsd_license.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/CHANGES.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/creating-a-pipeline.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/creating-a-pipelinetask.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/creating-a-task.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/index.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/task-framework-overview.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/task-retargeting-howto.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/testing-a-pipeline-task.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/testing-pipelines-with-mocks.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/working-with-pipeline-graphs.rst +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/gpl-v3.0.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/pyproject.toml +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_datasetQueryConstraints.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_dataset_handle.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_instrument.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_observation_dimension_packer.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_quantumContext.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_status.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_task_metadata.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/automatic_connection_constants.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/caching_limited_butler.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/_get_cli_subcommands.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/cmd/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/opt/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/opt/arguments.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/opt/options.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/config.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/configOverrides.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/connectionTypes.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/connections.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/dot_tools.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/executionButlerBuilder.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/execution_reports.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/formatters/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/formatters/pexConfig.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/_implDetails.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/_loadHelpers.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/_versionDeserializers.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/graph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/graphSummary.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/quantumNode.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/mermaid_tools.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipelineIR.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipelineTask.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/__main__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_dataset_types.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_edges.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_exceptions.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_mapping_views.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_nodes.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_task_subsets.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/_tasks.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/expressions.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/io.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_dot.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_layout.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_merge.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_options.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_printer.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_show.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/prerequisite_helpers.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/py.typed +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/quantum_graph_builder.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/quantum_graph_skeleton.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/quantum_provenance_graph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/register_instrument.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/retrieve_artifacts_for_quanta.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/struct.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/task.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/taskFactory.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/testUtils.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/mocks/__init__.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/mocks/_data_id_match.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/mocks/_pipeline_task.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/mocks/_storage_class.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/no_dimensions.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/pipelineStepTester.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/simpleQGraph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/util.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/utils.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/dependency_links.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/entry_points.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/requires.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/top_level.txt +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/zip-safe +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/setup.cfg +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_adjust_all_quanta.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_caching_limited_butler.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_cliCmdRegisterInstrument.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_configOverrides.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_config_formatter.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_connections.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_dataid_match.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_dataset_handle.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_dot_tools.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_dynamic_connections.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_executionButler.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_execution_reports.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_graphBuilder.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_init_output_run.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_instrument.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_mermaid.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipeline.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipelineIR.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipelineLoadSubset.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipelineTask.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipeline_graph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipeline_graph_expressions.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_quantumGraph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_quantum_provenance_graph.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_quantum_success_caveats.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_struct.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_task.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_taskmetadata.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_testUtils.py +0 -0
- {lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_utils.py +0 -0
{lsst_pipe_base-29.2025.2000/python/lsst_pipe_base.egg-info → lsst_pipe_base-29.2025.2100}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-pipe-base
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.2100
|
|
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
|
|
@@ -48,7 +48,7 @@ from lsst.daf.butler import (
|
|
|
48
48
|
DimensionRecordSet,
|
|
49
49
|
MissingDatasetTypeError,
|
|
50
50
|
)
|
|
51
|
-
from lsst.utils.logging import LsstLogAdapter
|
|
51
|
+
from lsst.utils.logging import LsstLogAdapter, PeriodicLogger
|
|
52
52
|
from lsst.utils.timer import timeMethod
|
|
53
53
|
|
|
54
54
|
from ._datasetQueryConstraints import DatasetQueryConstraintVariant
|
|
@@ -215,17 +215,26 @@ class AllDimensionsQuantumGraphBuilder(QuantumGraphBuilder):
|
|
|
215
215
|
# Allow duplicates from common skypix overlaps to make some queries
|
|
216
216
|
# run faster.
|
|
217
217
|
query._allow_duplicate_overlaps = True
|
|
218
|
-
self.log.info("Iterating over query results to associate quanta with datasets.")
|
|
219
218
|
# Iterate over query results, populating data IDs for datasets,
|
|
220
219
|
# quanta, and edges. We populate only the first level of the tree
|
|
221
220
|
# in the first pass, so we can be done with the query results as
|
|
222
221
|
# quickly as possible in case that holds a connection/cursor open.
|
|
223
222
|
n_rows = 0
|
|
223
|
+
progress_logger: PeriodicLogger | None = None
|
|
224
224
|
for common_data_id in query.data_ids(tree.all_dimensions):
|
|
225
|
+
if progress_logger is None:
|
|
226
|
+
# There can be a long wait between submitting the query and
|
|
227
|
+
# returning the first row, so we want to make sure we log
|
|
228
|
+
# when we get it; note that PeriodicLogger is not going to
|
|
229
|
+
# do that for us, as it waits for its interval _after_ the
|
|
230
|
+
# first log is seen.
|
|
231
|
+
self.log.info("Iterating over data ID query results.")
|
|
232
|
+
progress_logger = PeriodicLogger(self.log)
|
|
225
233
|
for branch_dimensions, branch in tree.trunk_branches.items():
|
|
226
234
|
data_id = common_data_id.subset(branch_dimensions)
|
|
227
235
|
branch.data_ids.add(data_id)
|
|
228
236
|
n_rows += 1
|
|
237
|
+
progress_logger.log("Iterating over data ID query results: %d rows processed so far.", n_rows)
|
|
229
238
|
if n_rows == 0:
|
|
230
239
|
# A single multiline log plays better with log aggregators like
|
|
231
240
|
# Loki.
|
|
@@ -242,7 +251,7 @@ class AllDimensionsQuantumGraphBuilder(QuantumGraphBuilder):
|
|
|
242
251
|
# If an exception was raised, write a partial.
|
|
243
252
|
self.log.error("\n".join(lines))
|
|
244
253
|
return
|
|
245
|
-
self.log.verbose("
|
|
254
|
+
self.log.verbose("Done iterating over query results: %d rows processed in total.", n_rows)
|
|
246
255
|
# We now recursively populate the data IDs of the rest of the tree.
|
|
247
256
|
tree.project_data_ids(self.log)
|
|
248
257
|
|
|
@@ -61,6 +61,7 @@ def register_instrument(*args: Any, **kwargs: Any) -> None:
|
|
|
61
61
|
@click.option(
|
|
62
62
|
"--dry-run", is_flag=True, default=False, help="Run the transfer but do not update the destination butler"
|
|
63
63
|
)
|
|
64
|
+
@dataset_type_option(help="Subset of dataset types to transfer from graph.")
|
|
64
65
|
@options_file_option()
|
|
65
66
|
def transfer_from_graph(**kwargs: Any) -> None:
|
|
66
67
|
"""Transfer datasets from a quantum graph to a destination butler.
|
|
@@ -31,6 +31,8 @@ from lsst.daf.butler import Butler, CollectionType, QuantumBackedButler, Registr
|
|
|
31
31
|
from lsst.daf.butler.registry import MissingCollectionError
|
|
32
32
|
from lsst.pipe.base import QuantumGraph
|
|
33
33
|
|
|
34
|
+
from .utils import filter_by_dataset_type_glob
|
|
35
|
+
|
|
34
36
|
|
|
35
37
|
def transfer_from_graph(
|
|
36
38
|
graph: str,
|
|
@@ -39,6 +41,7 @@ def transfer_from_graph(
|
|
|
39
41
|
transfer_dimensions: bool,
|
|
40
42
|
update_output_chain: bool,
|
|
41
43
|
dry_run: bool,
|
|
44
|
+
dataset_type: tuple[str, ...],
|
|
42
45
|
) -> int:
|
|
43
46
|
"""Transfer output datasets from quantum graph to dest.
|
|
44
47
|
|
|
@@ -60,6 +63,9 @@ def transfer_from_graph(
|
|
|
60
63
|
name as a the first collection in the chain.
|
|
61
64
|
dry_run : `bool`
|
|
62
65
|
Run the transfer without updating the destination butler.
|
|
66
|
+
dataset_type : `tuple` of `str`
|
|
67
|
+
Dataset type names. An empty tuple implies all dataset types.
|
|
68
|
+
Can include globs.
|
|
63
69
|
|
|
64
70
|
Returns
|
|
65
71
|
-------
|
|
@@ -84,11 +90,14 @@ def transfer_from_graph(
|
|
|
84
90
|
dataset_types=dataset_types,
|
|
85
91
|
)
|
|
86
92
|
|
|
93
|
+
# Filter the refs based on requested dataset types.
|
|
94
|
+
filtered_refs = filter_by_dataset_type_glob(output_refs, dataset_type)
|
|
95
|
+
|
|
87
96
|
dest_butler = Butler.from_config(dest, writeable=True)
|
|
88
97
|
|
|
89
98
|
transferred = dest_butler.transfer_from(
|
|
90
99
|
qbb,
|
|
91
|
-
|
|
100
|
+
filtered_refs,
|
|
92
101
|
transfer="auto",
|
|
93
102
|
register_dataset_types=register_dataset_types,
|
|
94
103
|
transfer_dimensions=transfer_dimensions,
|
|
@@ -0,0 +1,74 @@
|
|
|
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__ = [
|
|
31
|
+
"filter_by_dataset_type_glob",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
import re
|
|
35
|
+
from collections.abc import Collection
|
|
36
|
+
|
|
37
|
+
from lsst.daf.butler import DatasetRef
|
|
38
|
+
from lsst.daf.butler.utils import globToRegex
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _matches_dataset_type(dataset_type_name: str, regexes: list[str | re.Pattern]) -> bool:
|
|
42
|
+
for regex in regexes:
|
|
43
|
+
if isinstance(regex, str):
|
|
44
|
+
if dataset_type_name == regex:
|
|
45
|
+
return True
|
|
46
|
+
elif regex.search(dataset_type_name):
|
|
47
|
+
return True
|
|
48
|
+
return False
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def filter_by_dataset_type_glob(
|
|
52
|
+
refs: Collection[DatasetRef], dataset_types: tuple[str, ...]
|
|
53
|
+
) -> Collection[DatasetRef]:
|
|
54
|
+
"""Filter the refs based on requested dataset types.
|
|
55
|
+
|
|
56
|
+
Parameters
|
|
57
|
+
----------
|
|
58
|
+
refs : `collections.abc.Collection` [ `lsst.daf.butler.DatasetRef` ]
|
|
59
|
+
Datasets to be filtered.
|
|
60
|
+
dataset_types : `tuple` [ `str`, ...]
|
|
61
|
+
Dataset type names or globs to use for filtering. Empty tuple implies
|
|
62
|
+
no filtering.
|
|
63
|
+
|
|
64
|
+
Returns
|
|
65
|
+
-------
|
|
66
|
+
filtered : `collections.abc.Collection` [ `lsst.daf.butler.DatasetRef` ]
|
|
67
|
+
Filter datasets.
|
|
68
|
+
"""
|
|
69
|
+
regexes = globToRegex(dataset_types)
|
|
70
|
+
if regexes is ...:
|
|
71
|
+
# Nothing to do.
|
|
72
|
+
return refs
|
|
73
|
+
|
|
74
|
+
return {ref for ref in refs if _matches_dataset_type(ref.datasetType.name, regexes)}
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
__all__ = ["zip_from_graph"]
|
|
29
29
|
|
|
30
30
|
import logging
|
|
31
|
-
import re
|
|
32
31
|
|
|
33
32
|
from lsst.daf.butler import QuantumBackedButler
|
|
34
|
-
from lsst.daf.butler.utils import globToRegex
|
|
35
33
|
from lsst.pipe.base import QuantumGraph
|
|
36
34
|
from lsst.resources import ResourcePath
|
|
37
35
|
|
|
36
|
+
from .utils import filter_by_dataset_type_glob
|
|
37
|
+
|
|
38
38
|
_LOG = logging.getLogger(__name__)
|
|
39
39
|
|
|
40
40
|
|
|
@@ -83,22 +83,8 @@ def zip_from_graph(
|
|
|
83
83
|
)
|
|
84
84
|
|
|
85
85
|
# Filter the refs based on requested dataset types.
|
|
86
|
-
|
|
87
|
-
if regexes is ...:
|
|
88
|
-
filtered_refs = output_refs
|
|
89
|
-
else:
|
|
90
|
-
|
|
91
|
-
def _matches(dataset_type_name: str, regexes: list[str | re.Pattern]) -> bool:
|
|
92
|
-
for regex in regexes:
|
|
93
|
-
if isinstance(regex, str):
|
|
94
|
-
if dataset_type_name == regex:
|
|
95
|
-
return True
|
|
96
|
-
elif regex.search(dataset_type_name):
|
|
97
|
-
return True
|
|
98
|
-
return False
|
|
99
|
-
|
|
100
|
-
filtered_refs = {ref for ref in output_refs if _matches(ref.datasetType.name, regexes)}
|
|
86
|
+
filtered_refs = filter_by_dataset_type_glob(output_refs, dataset_type)
|
|
101
87
|
|
|
102
|
-
_LOG.info("Retrieving artifacts for %d datasets and storing in Zip file.", len(
|
|
88
|
+
_LOG.info("Retrieving artifacts for %d datasets and storing in Zip file.", len(filtered_refs))
|
|
103
89
|
zip = qbb.retrieve_artifacts_zip(filtered_refs, dest)
|
|
104
90
|
return zip
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100/python/lsst_pipe_base.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-pipe-base
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.2100
|
|
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
|
|
@@ -93,6 +93,7 @@ python/lsst/pipe/base/script/__init__.py
|
|
|
93
93
|
python/lsst/pipe/base/script/register_instrument.py
|
|
94
94
|
python/lsst/pipe/base/script/retrieve_artifacts_for_quanta.py
|
|
95
95
|
python/lsst/pipe/base/script/transfer_from_graph.py
|
|
96
|
+
python/lsst/pipe/base/script/utils.py
|
|
96
97
|
python/lsst/pipe/base/script/zip_from_graph.py
|
|
97
98
|
python/lsst/pipe/base/tests/__init__.py
|
|
98
99
|
python/lsst/pipe/base/tests/no_dimensions.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/doc/lsst.pipe.base/creating-a-task.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_dataset_handle.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_instrument.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_quantumContext.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_status.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/_task_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/cli/opt/options.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/configOverrides.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/connectionTypes.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/connections.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/dot_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/graph/graph.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/mermaid_tools.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipeline.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipelineIR.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/pipelineTask.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/script/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/taskFactory.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/testUtils.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst/pipe/base/tests/util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/python/lsst_pipe_base.egg-info/zip-safe
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_caching_limited_butler.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_cliCmdRegisterInstrument.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_dynamic_connections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipelineLoadSubset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_pipeline_graph_expressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_quantum_provenance_graph.py
RENAMED
|
File without changes
|
{lsst_pipe_base-29.2025.2000 → lsst_pipe_base-29.2025.2100}/tests/test_quantum_success_caveats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|