lsst-daf-butler 30.2026.300__tar.gz → 30.2026.500__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_daf_butler-30.2026.300/python/lsst_daf_butler.egg-info → lsst_daf_butler-30.2026.500}/PKG-INFO +3 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/CHANGES.rst +115 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/writing-subcommands.rst +4 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/pyproject.toml +3 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler.py +10 -3
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler_collections.py +4 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler_metrics.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_provenance.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_ref.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_exceptions.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_file_dataset.py +2 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_formatter.py +12 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_query_all_datasets.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +1 -12
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/column_spec.py +4 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/_datastore.py +21 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/stored_file_info.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/chainedDatastore.py +4 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/fileDatastore.py +4 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/file_datastore/get.py +4 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +8 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/ddl.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_coordinate.py +6 -8
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_record_set.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_records.py +9 -3
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_butler/_direct_butler.py +3 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_driver.py +5 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/parquet.py +6 -6
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/nonempty_mapping.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/persistence_context.py +8 -5
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_general_query_results.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/driver.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expression_factory.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/exprTree.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/parserYacc.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/overlaps.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_column_set.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_collection_record_cache.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_collection_summary_cache.py +5 -4
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_registry.py +4 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/databases/postgresql.py +2 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +4 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +3 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_datasets.py +2 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_obscore.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/_records.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/_spatial.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/_results.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/sql_registry.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/wildcards.py +5 -5
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_get.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +4 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +4 -3
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/_pruneDatasets.py +4 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/configValidate.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/queryCollections.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/removeCollections.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/removeRuns.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/cliCmdTestBase.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/cliLogTestBase.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/spatial.py +4 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/utils.py +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/timespan_database_representation.py +3 -3
- lsst_daf_butler-30.2026.500/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500/python/lsst_daf_butler.egg-info}/PKG-INFO +3 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/requires.txt +1 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_butler.py +9 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdPruneDatasets.py +2 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdRemoveCollections.py +3 -3
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_datastore.py +4 -1
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_simpleButler.py +10 -0
- lsst_daf_butler-30.2026.300/python/lsst/daf/butler/version.py +0 -2
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/COPYRIGHT +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/LICENSE +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/MANIFEST.in +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/README.md +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/bsd_license.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_type.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_registry_shim.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_rubin/temporary_for_ingest.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_uuid.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/cli/utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastore/record_data.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/logging.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/_query.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_registry_base.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/expand_data_ids.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/_query_common.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/_query_data_coordinates.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/_query_datasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/queries/_query_dimension_records.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/lsstcam-subset.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/server_available.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/setup.cfg +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_composites.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_config.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_location.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_logging.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_packages.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_parquet.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_postgresql.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_progress.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_remote_butler.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_server.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_sqlite.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_templates.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_utils.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_uuid.py +0 -0
- {lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/tests/test_versioning.py +0 -0
{lsst_daf_butler-30.2026.300/python/lsst_daf_butler.egg-info → lsst_daf_butler-30.2026.500}/PKG-INFO
RENAMED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 30.2026.
|
|
3
|
+
Version: 30.2026.500
|
|
4
4
|
Summary: An abstraction layer for reading and writing astronomical data to datastores.
|
|
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
|
|
7
7
|
Project-URL: Homepage, https://github.com/lsst/daf_butler
|
|
8
|
+
Project-URL: Source, https://github.com/lsst/daf_butler
|
|
8
9
|
Keywords: lsst
|
|
9
10
|
Classifier: Intended Audience :: Science/Research
|
|
10
11
|
Classifier: Operating System :: OS Independent
|
|
@@ -42,7 +43,7 @@ Provides-Extra: test
|
|
|
42
43
|
Requires-Dist: pytest>=3.2; extra == "test"
|
|
43
44
|
Requires-Dist: numpy>=1.17; extra == "test"
|
|
44
45
|
Requires-Dist: matplotlib>=3.0.3; extra == "test"
|
|
45
|
-
Requires-Dist: pandas
|
|
46
|
+
Requires-Dist: pandas<3.0,>=1.0; extra == "test"
|
|
46
47
|
Provides-Extra: s3
|
|
47
48
|
Requires-Dist: lsst-resources[s3]; extra == "s3"
|
|
48
49
|
Provides-Extra: https
|
|
@@ -1,3 +1,118 @@
|
|
|
1
|
+
Butler v30.0.0 (2026-01-15)
|
|
2
|
+
===========================
|
|
3
|
+
|
|
4
|
+
New Features
|
|
5
|
+
------------
|
|
6
|
+
|
|
7
|
+
- Modified ``ButlerMDC`` to preserve metadata for exceptions that are raised in a context but handled outside it.
|
|
8
|
+
This lets exceptions be logged by high-level handlers the same way they would have been if the problem were logged immediately. (`DM-42272 <https://rubinobs.atlassian.net/browse/DM-42272>`_)
|
|
9
|
+
- Added a new method ``Butler.query_all_datasets()``, which can be used to query for datasets of multiple types more efficiently than looping over ``query_datasets()``. (`DM-47563 <https://rubinobs.atlassian.net/browse/DM-47563>`_)
|
|
10
|
+
- Added a new registry configuration option ``temporary_tables: False`` to disable the use of temporary tables by the database backend. (`DM-51125 <https://rubinobs.atlassian.net/browse/DM-51125>`_)
|
|
11
|
+
- Added support to the query language to allow sky regions to be specified directly in an ADQL-like way. This includes ``CIRCLE``, ``BOX``, ``POLYGON``, and ``REGION``. (`DM-51454 <https://rubinobs.atlassian.net/browse/DM-51454>`_)
|
|
12
|
+
- ``Butler.transfer_dimension_records_from`` now accepts ``DataCoordinate`` instances in addition to ``DatasetRef`` instances to specify the dimension records to be transferred. (`DM-51681 <https://rubinobs.atlassian.net/browse/DM-51681>`_)
|
|
13
|
+
- ``Butler.ingest()`` now has an optional ``skip_existing`` parameter that makes it ignore datasets that already exist in the repository instead of raising an error. This makes it easier for applications to retry ingests. (`DM-52179 <https://rubinobs.atlassian.net/browse/DM-52179>`_)
|
|
14
|
+
- Added glob-style matching to column names in parquet tables, when specified via the ``columns`` parameter. (`DM-52515 <https://rubinobs.atlassian.net/browse/DM-52515>`_)
|
|
15
|
+
- Added a new ``--remove-from-parents`` flag for the ``remove-collections`` CLI to allow removal of collections that are still referenced from chained collections. (`DM-52782 <https://rubinobs.atlassian.net/browse/DM-52782>`_)
|
|
16
|
+
- We now build the Butler server Docker container for both arm64 and amd64. (`DM-52819 <https://rubinobs.atlassian.net/browse/DM-52819>`_)
|
|
17
|
+
- Made ``ButlerLogRecords`` extensible.
|
|
18
|
+
|
|
19
|
+
This changes the ``ButlerLogRecords`` file format (the old format can still be
|
|
20
|
+
read) to allow arbitrary JSON data to be serialized with the log records.
|
|
21
|
+
|
|
22
|
+
The ``ButlerLogRecords`` class has been modified to inherit from
|
|
23
|
+
``collections.abc.MutableSequence`` instead of `pydantic.RootModel`, which means
|
|
24
|
+
Pydantic methods can no longer be called on it directly (in particular, use
|
|
25
|
+
``to_json_data`` to serialize instead of ``model_dump_json``). (`DM-53019 <https://rubinobs.atlassian.net/browse/DM-53019>`_)
|
|
26
|
+
- The ``id`` parameter to ``Butler.get_dataset`` now accepts hexadecimal strings, in addition to UUID instances.
|
|
27
|
+
A new method ``Butler.get_many_datasets()`` allows the efficient lookup of multiple ``DatasetRef`` by dataset UUID. (`DM-53176 <https://rubinobs.atlassian.net/browse/DM-53176>`_)
|
|
28
|
+
- Added ``Butler.close()``, a context manager implementation for ``Butler``, and ``QuantumBackedButler.close()``. These can be used to ensure that database connections are closed deterministically, rather than waiting for mark-and-sweep garbage collection. (`DM-53233 <https://rubinobs.atlassian.net/browse/DM-53233>`_)
|
|
29
|
+
- ``LabeledButlerFactory`` now has a ``writeable`` constructor option to allow writeable Butlers to be instantiated.
|
|
30
|
+
``LabeledButlerFactory`` can now be used as a context manager to control the lifetime of its database connections. (`DM-53739 <https://rubinobs.atlassian.net/browse/DM-53739>`_)
|
|
31
|
+
|
|
32
|
+
Bug Fixes
|
|
33
|
+
---------
|
|
34
|
+
|
|
35
|
+
- Fixed a few server-side exceptions that should have been sent to ``RemoteButler`` clients as meaningful exceptions, but instead were triggering an HTTP 500 Internal Server Error. (`DM-51314 <https://rubinobs.atlassian.net/browse/DM-51314>`_)
|
|
36
|
+
- Deferred loading storage class definitions when deserializing datastore records.
|
|
37
|
+
|
|
38
|
+
This prevents storage class lookup errors when loading quantum graphs, when the storage class definitions are defined somewhere other than the defaults in ``daf_butler`` (such as a repository root). (`DM-51381 <https://rubinobs.atlassian.net/browse/DM-51381>`_)
|
|
39
|
+
- When exporting ``visit`` dimension records, ``Butler.export()`` now includes ``populated_by: visit`` records like ``visit_definition``/``visit_system_membership``, and the associated ``exposure`` records. (`DM-51681 <https://rubinobs.atlassian.net/browse/DM-51681>`_)
|
|
40
|
+
- Fixed a bug introduced in July 2024 in collection query methods that specify ``flatten_chains=True`` with name patterns.
|
|
41
|
+
|
|
42
|
+
The bug resulted in not returning all children names for a chain collection that matches the pattern, only child names that also match the pattern were returned. (`DM-51819 <https://rubinobs.atlassian.net/browse/DM-51819>`_)
|
|
43
|
+
- ``Butler.ingest()`` now checks for conflicting datastore records before ingesting files, reducing the likelihood of an issue where existing files are overwritten/deleted by an ingest that fails due to conflicting datasets. (`DM-52179 <https://rubinobs.atlassian.net/browse/DM-52179>`_)
|
|
44
|
+
- Query generation will no longer throw ``sqlalchemy.exc.ArgumentError`` when attempting to use a dataset calibration timespan constraint for a dataset search without any calibration collections. (`DM-52398 <https://rubinobs.atlassian.net/browse/DM-52398>`_)
|
|
45
|
+
- Changed the conceptual timespan associated with ``RUN`` and ``TAGGED`` collections from `None` / ``NULL`` to an unbounded timespan.
|
|
46
|
+
|
|
47
|
+
This fixes the behavior of temporal joins in quantum graph builds, where prior to this change a ``RUN`` or ``TAGGED`` collection earlier in the search path would be silently ignored in favor of a later ``CALIBRATION`` collection.
|
|
48
|
+
It also changes the value of timespan columns for these collection types via the ``Query.general`` interface.
|
|
49
|
+
The behavior of ``queryDatasetAssociations`` has *not* been changed for backwards-compatibility; it continues to return ``timespan=None`` for non-``CALIBRATION``` collections. (`DM-52895 <https://rubinobs.atlassian.net/browse/DM-52895>`_)
|
|
50
|
+
- The unit tests will no longer fail due to file descriptor exhaustion.
|
|
51
|
+
All `ResourceWarning` messages in the unit test suite have been fixed.
|
|
52
|
+
Butler instances are now garbage-collected immediately when they are no longer referenced, although their database connections still might not be released until mark-and-sweep garbage collection runs. (`DM-53233 <https://rubinobs.atlassian.net/browse/DM-53233>`_)
|
|
53
|
+
- Fixed compatibility of the unit test suite with pytest v9. (`DM-53266 <https://rubinobs.atlassian.net/browse/DM-53266>`_)
|
|
54
|
+
- Storage classes are no longer loaded implicitly when using ``Butler.registry.queryDatasets()``.
|
|
55
|
+
A warning about the ``datasetType`` parameter being deprecated is no longer issued when calling ``Butler.registry.queryDatasetAssociations``. (`DM-53342 <https://rubinobs.atlassian.net/browse/DM-53342>`_)
|
|
56
|
+
- ``FileDatastore.export_records()`` will no longer fail with ``sqlalchemy.exc.InternalError`` when given a large number of dataset IDs.
|
|
57
|
+
``Butler.get_many_datasets()`` will no longer fail with ``sqlalchemy.exc.InternalError`` when given a large number of dataset IDs. (`DM-53610 <https://rubinobs.atlassian.net/browse/DM-53610>`_)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
Performance Enhancement
|
|
61
|
+
-----------------------
|
|
62
|
+
|
|
63
|
+
- Fewer database queries are now used when inserting/exporting datasets, in cases where the datasets do not have "expanded data ID" values known in advance. (`DM-51593 <https://rubinobs.atlassian.net/browse/DM-51593>`_)
|
|
64
|
+
- ``Butler.transfer_from(transfer_dimensions = True)``, ``Butler.transfer_dimension_records_from()``, and ``butler transfer-datasets`` are now significantly faster. (`DM-51681 <https://rubinobs.atlassian.net/browse/DM-51681>`_)
|
|
65
|
+
- New dataset UUIDs are now generated using UUIDv7 instead of UUIDv4, to improve Postgres insert performance. (`DM-52719 <https://rubinobs.atlassian.net/browse/DM-52719>`_)
|
|
66
|
+
- Removed unnecessary directory existence checks when writing files to the datastore.
|
|
67
|
+
We no longer create zero-byte files to represent "directories" when writing files to an S3 datastore. (`DM-53580 <https://rubinobs.atlassian.net/browse/DM-53580>`_)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
Other Changes and Additions
|
|
71
|
+
---------------------------
|
|
72
|
+
|
|
73
|
+
- Updated the storage class definitions for scarlet lite models to be Zip archives that can be accessed as single blends. (`DM-49537 <https://rubinobs.atlassian.net/browse/DM-49537>`_)
|
|
74
|
+
- Made some registry test data available to downstream packages via `importlib.resources`. (`DM-51363 <https://rubinobs.atlassian.net/browse/DM-51363>`_)
|
|
75
|
+
- Added support for ``obs_publisher_did`` value in ObsCore config file. (`DM-51383 <https://rubinobs.atlassian.net/browse/DM-51383>`_)
|
|
76
|
+
- * Modified ``ObsCore`` records to place "exposure" in any visit fields if there is an exposure but no visit defined.
|
|
77
|
+
This required the addition of a new method to the ``RecordFactory`` which can be subclassed by other plugins.
|
|
78
|
+
* Added ability to hard code the ``s_xel1`` and ``s_xel2`` ObsCore fields per dataset type. (`DM-51495 <https://rubinobs.atlassian.net/browse/DM-51495>`_)
|
|
79
|
+
- Drop incomplete support for case-insensitive handling of identifiers in query expressions.
|
|
80
|
+
|
|
81
|
+
Some code in the query generation system was trying to allow dimension names to be case-insensitive, but was actually just inadvertently requiring all dimension names to be defined as lowercase.
|
|
82
|
+
Our Python-flavored user base probably expects case-sensitive dimension and dataset type names anyway.
|
|
83
|
+
|
|
84
|
+
Constants (e.g., ``AND`` or ``OVERLAPS``) in the query system are still case insensitive. (`DM-52339 <https://rubinobs.atlassian.net/browse/DM-52339>`_)
|
|
85
|
+
- ``Butler.registry.queryDatasets``, ``Butler.registry.queryDataIds``, and ``Butler.registry.queryDimensionRecords`` have been re-implemented using the same query framework backing ``Butler.query()`` and the various ``Butler.query_*()`` methods. Though the ``Butler.registry.*`` methods are not yet deprecated, users are encouraged to begin migrating to the equivalent ``Butler.query_*`` functions. The new implementation comes with a number of minor behavior changes:
|
|
86
|
+
- We no longer raise an exception if governor dimension values in a query constraint are not known to the registry. Instead, we return no results.
|
|
87
|
+
- Result rows are now deduplicated.
|
|
88
|
+
- ``findFirst`` searches are now supported in calibration collections. (`DM-52397 <https://rubinobs.atlassian.net/browse/DM-52397>`_)
|
|
89
|
+
- ``Butler.find_dataset()`` / ``Butler.registry.findDataset()`` have been re-implemented using the same query framework backing ``Butler.query()``. These methods now always return ``DatasetRef`` instances with ``dataId.hasFull() = True``. (`DM-52398 <https://rubinobs.atlassian.net/browse/DM-52398>`_)
|
|
90
|
+
- For EUPS users we now set the ``ARROW_DEFAULT_MEMORY_POOL`` environment variable to ``jemalloc``.
|
|
91
|
+
This works around a memory leak reported in https://github.com/apache/arrow/issues/45882 for pyarrow v18 and newer. (`DM-52412 <https://rubinobs.atlassian.net/browse/DM-52412>`_)
|
|
92
|
+
- Added a new ``Datastore`` API for retrieving the datastore records for datasets that might not have been written yet.
|
|
93
|
+
There is also a related API added to ``QuantumBackedButler``. (`DM-52653 <https://rubinobs.atlassian.net/browse/DM-52653>`_)
|
|
94
|
+
- Rewrote the default compression write recipes to match the new interfaces for FITS compression in ``afw`` and ``obs_base``. (`DM-52879 <https://rubinobs.atlassian.net/browse/DM-52879>`_)
|
|
95
|
+
- Added new options to ``DatasetProvenance`` to prevent excessive numbers of input datasets being recorded in file metadata.
|
|
96
|
+
The limit for parquet datasets was set to 2,000 inputs. (`DM-53326 <https://rubinobs.atlassian.net/browse/DM-53326>`_)
|
|
97
|
+
- Added ``lossy16`` compression recipe to replace ``lossyBasic`` (`DM-53420 <https://rubinobs.atlassian.net/browse/DM-53420>`_)
|
|
98
|
+
- Added a storage class and formatter declaration for the ``ProvenanceQuantumGraph`` class.
|
|
99
|
+
|
|
100
|
+
Allowed a ``ButlerLogRecords`` container to be passed to the log handler at construction. (`DM-53622 <https://rubinobs.atlassian.net/browse/DM-53622>`_)
|
|
101
|
+
- Added metrics recording for ``butler.ingest``. (`DM-53679 <https://rubinobs.atlassian.net/browse/DM-53679>`_)
|
|
102
|
+
- Added Butler storage class definitions for ``GuiderROI`` ``VignettingCorrection`` class (`OSW-1064 <https://rubinobs.atlassian.net/browse/OSW-1064>`_)
|
|
103
|
+
|
|
104
|
+
An API Removal or Deprecation
|
|
105
|
+
-----------------------------
|
|
106
|
+
|
|
107
|
+
- ``daf_butler`` no longer depends on the ``daf_relation`` library.
|
|
108
|
+
``daf_relation``-related internal classes are no longer exported from the top-level module.
|
|
109
|
+
Butler query expression classes have moved from ``lsst.daf.butler.registry.queries`` to ``lsst.daf.butler.queries``. (`DM-52345 <https://rubinobs.atlassian.net/browse/DM-52345>`_)
|
|
110
|
+
- Removed deprecated ``DatasetQueryResults.materialize()`` method.
|
|
111
|
+
Removed deprecated ``offset`` parameter from the ``limit`` method in the ``DataCoordinateQueryResults``, ``DatasetQueryResults``, and ``DimensionRecordQueryResults`` classes.
|
|
112
|
+
Removed the deprecated feature where HTM and HEALPix spatial dimensions like ``htm11`` or ``healpix10`` could be used in data ID constraints passed to queries. The exception is ``htm7``, which will continue to work. Users should instead use region ``OVERLAPS`` constraints in query ``where`` expressions.
|
|
113
|
+
Removed support for ``<`` and ``>`` operators in ``Butler.registry.query*()`` ``where`` strings for comparisons of ``Timespan`` vs ``Timespan``, or ``Timespan`` vs ``Time``. Instead, use ``timespan.begin < ts`` or ``timespan.end > ts`` to explicitly indicate which timespan bound you are comparing with. (`DM-52397 <https://rubinobs.atlassian.net/browse/DM-52397>`_)
|
|
114
|
+
|
|
115
|
+
|
|
1
116
|
Butler v29.1.0 (2025-06-13)
|
|
2
117
|
===========================
|
|
3
118
|
|
|
@@ -62,8 +62,8 @@ Example of a command or subcommand definition:
|
|
|
62
62
|
if __name__ == "__main__":
|
|
63
63
|
git()
|
|
64
64
|
|
|
65
|
-
This creates a command that is called by
|
|
66
|
-
It automatically has a
|
|
65
|
+
This creates a command that is called by ``main``, which has a subcommand ``pull``.
|
|
66
|
+
It automatically has a ``--help`` option:
|
|
67
67
|
|
|
68
68
|
.. code-block:: text
|
|
69
69
|
|
|
@@ -75,7 +75,7 @@ It automatically has a `--help` option:
|
|
|
75
75
|
Options:
|
|
76
76
|
--help Show this message and exit.
|
|
77
77
|
|
|
78
|
-
And
|
|
78
|
+
And ``pull`` can be called as a subcommand:
|
|
79
79
|
|
|
80
80
|
.. code-block:: text
|
|
81
81
|
|
|
@@ -98,7 +98,7 @@ For example, the function
|
|
|
98
98
|
def register_instrument():
|
|
99
99
|
...
|
|
100
100
|
|
|
101
|
-
Becomes a subcommand of
|
|
101
|
+
Becomes a subcommand of ``butler`` called ``register-instrument``.
|
|
102
102
|
|
|
103
103
|
Butler Subcommands
|
|
104
104
|
~~~~~~~~~~~~~~~~~~
|
|
@@ -39,6 +39,7 @@ dependencies = [
|
|
|
39
39
|
dynamic = ["version"]
|
|
40
40
|
[project.urls]
|
|
41
41
|
"Homepage" = "https://github.com/lsst/daf_butler"
|
|
42
|
+
"Source" = "https://github.com/lsst/daf_butler"
|
|
42
43
|
|
|
43
44
|
[project.optional-dependencies]
|
|
44
45
|
postgres = ["psycopg2"]
|
|
@@ -56,7 +57,7 @@ test = [
|
|
|
56
57
|
"pytest >= 3.2",
|
|
57
58
|
"numpy >= 1.17",
|
|
58
59
|
"matplotlib >= 3.0.3",
|
|
59
|
-
"pandas >= 1.0",
|
|
60
|
+
"pandas >= 1.0, < 3.0",
|
|
60
61
|
]
|
|
61
62
|
# Also expose the optional dependencies of lsst-resources as optional
|
|
62
63
|
# dependencies of lsst-daf-butler. lsst-daf-butler itself doesn't care what
|
|
@@ -233,6 +234,7 @@ checks = [
|
|
|
233
234
|
"RT01", # Unfortunately our @property trigger this.
|
|
234
235
|
"RT02", # Does not want named return value. DM style says we do.
|
|
235
236
|
"SS05", # pydocstyle is better at finding infinitive verb.
|
|
237
|
+
"RT03", # Temporarily disable for sphinx empty returns.
|
|
236
238
|
]
|
|
237
239
|
exclude = [
|
|
238
240
|
"^test_.*", # Do not test docstrings in test code.
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_butler.py
RENAMED
|
@@ -138,7 +138,10 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
|
|
|
138
138
|
without_datastore : `bool`, optional
|
|
139
139
|
If `True` do not attach a datastore to this butler. Any attempts
|
|
140
140
|
to use a datastore will fail.
|
|
141
|
-
|
|
141
|
+
metrics : `ButlerMetrics` or `None`
|
|
142
|
+
External metrics object to be used for tracking butler usage. If `None`
|
|
143
|
+
a new metrics object is created.
|
|
144
|
+
**kwargs : `typing.Any`
|
|
142
145
|
Additional keyword arguments passed to a constructor of actual butler
|
|
143
146
|
class.
|
|
144
147
|
|
|
@@ -240,7 +243,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
|
|
|
240
243
|
to use a datastore will fail.
|
|
241
244
|
metrics : `ButlerMetrics` or `None`, optional
|
|
242
245
|
Metrics object to record butler usage statistics.
|
|
243
|
-
**kwargs : `Any`
|
|
246
|
+
**kwargs : `typing.Any`
|
|
244
247
|
Default data ID key-value pairs. These may only identify
|
|
245
248
|
"governor" dimensions like ``instrument`` and ``skymap``.
|
|
246
249
|
|
|
@@ -1390,6 +1393,10 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
|
|
|
1390
1393
|
raised if any datasets with the same dataset ID already exist
|
|
1391
1394
|
in the datastore.
|
|
1392
1395
|
|
|
1396
|
+
Returns
|
|
1397
|
+
-------
|
|
1398
|
+
None
|
|
1399
|
+
|
|
1393
1400
|
Raises
|
|
1394
1401
|
------
|
|
1395
1402
|
TypeError
|
|
@@ -2024,7 +2031,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
|
|
|
2024
2031
|
|
|
2025
2032
|
Returns
|
|
2026
2033
|
-------
|
|
2027
|
-
records : `list`[`DimensionRecord`]
|
|
2034
|
+
records : `list` [`DimensionRecord`]
|
|
2028
2035
|
Dimension records matching the given query parameters.
|
|
2029
2036
|
|
|
2030
2037
|
Raises
|
|
@@ -360,10 +360,10 @@ class ButlerCollections(ABC, Sequence):
|
|
|
360
360
|
name : `str`
|
|
361
361
|
The name of the collection of interest.
|
|
362
362
|
include_parents : `bool`, optional
|
|
363
|
-
|
|
363
|
+
If `True` any parents of this collection will be included.
|
|
364
364
|
include_summary : `bool`, optional
|
|
365
|
-
|
|
366
|
-
|
|
365
|
+
If `True` dataset type names and governor dimensions of datasets
|
|
366
|
+
stored in this collection will be included in the result.
|
|
367
367
|
|
|
368
368
|
Returns
|
|
369
369
|
-------
|
|
@@ -464,7 +464,7 @@ class ButlerCollections(ABC, Sequence):
|
|
|
464
464
|
|
|
465
465
|
Returns
|
|
466
466
|
-------
|
|
467
|
-
filtered : `~collections.abc.Mapping` [`str`, `list`[`str`]]
|
|
467
|
+
filtered : `~collections.abc.Mapping` [`str`, `list` [`str`]]
|
|
468
468
|
Mapping of the dataset type name to its corresponding list of
|
|
469
469
|
collection names.
|
|
470
470
|
"""
|
|
@@ -267,7 +267,7 @@ class DatasetProvenance(pydantic.BaseModel):
|
|
|
267
267
|
use_upper : `bool` or `None`
|
|
268
268
|
If `True` use upper case for provenance keys, if `False` use lower
|
|
269
269
|
case, if `None` match the case of the prefix.
|
|
270
|
-
keys : `tuple` of `str` | `int`
|
|
270
|
+
*keys : `tuple` of `str` | `int`
|
|
271
271
|
Components of key to combine with prefix and separator.
|
|
272
272
|
|
|
273
273
|
Returns
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
@@ -479,7 +479,7 @@ class DatasetRef:
|
|
|
479
479
|
|
|
480
480
|
Parameters
|
|
481
481
|
----------
|
|
482
|
-
simple : `dict` of [`str`, `Any`]
|
|
482
|
+
simple : `dict` of [`str`, `typing.Any`]
|
|
483
483
|
The value returned by `to_simple()`.
|
|
484
484
|
universe : `DimensionUniverse`
|
|
485
485
|
The special graph of all known dimensions.
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_exceptions.py
RENAMED
|
@@ -196,8 +196,8 @@ class ValidationError(RuntimeError):
|
|
|
196
196
|
|
|
197
197
|
|
|
198
198
|
class EmptyQueryResultError(Exception):
|
|
199
|
-
"""Exception raised when query methods return an empty result and
|
|
200
|
-
flag is set.
|
|
199
|
+
"""Exception raised when query methods return an empty result and
|
|
200
|
+
``explain`` flag is set.
|
|
201
201
|
|
|
202
202
|
Parameters
|
|
203
203
|
----------
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_file_dataset.py
RENAMED
|
@@ -129,7 +129,8 @@ class FileDataset:
|
|
|
129
129
|
----------
|
|
130
130
|
dataset : `SerializedFileDataset`
|
|
131
131
|
Object to deserialize.
|
|
132
|
-
dataset_type_loader :
|
|
132
|
+
dataset_type_loader : `~collections.abc.Callable` \
|
|
133
|
+
[[ `str` ], `DatasetType` ]
|
|
133
134
|
Function that takes a string dataset type name as its
|
|
134
135
|
only parameter, and returns an instance of `DatasetType`.
|
|
135
136
|
Used to deserialize the `DatasetRef` instances contained
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/_formatter.py
RENAMED
|
@@ -910,6 +910,10 @@ class FormatterV2:
|
|
|
910
910
|
provenance : `DatasetProvenance` | `None`, optional
|
|
911
911
|
Provenance to attach to the file being written.
|
|
912
912
|
|
|
913
|
+
Returns
|
|
914
|
+
-------
|
|
915
|
+
None
|
|
916
|
+
|
|
913
917
|
Raises
|
|
914
918
|
------
|
|
915
919
|
FormatterNotImplementedError
|
|
@@ -1137,6 +1141,10 @@ class FormatterV2:
|
|
|
1137
1141
|
location : `Location`
|
|
1138
1142
|
Location from which to extract a file extension.
|
|
1139
1143
|
|
|
1144
|
+
Returns
|
|
1145
|
+
-------
|
|
1146
|
+
None
|
|
1147
|
+
|
|
1140
1148
|
Raises
|
|
1141
1149
|
------
|
|
1142
1150
|
ValueError
|
|
@@ -1583,6 +1591,10 @@ class Formatter(metaclass=ABCMeta):
|
|
|
1583
1591
|
location : `Location`
|
|
1584
1592
|
Location from which to extract a file extension.
|
|
1585
1593
|
|
|
1594
|
+
Returns
|
|
1595
|
+
-------
|
|
1596
|
+
None
|
|
1597
|
+
|
|
1586
1598
|
Raises
|
|
1587
1599
|
------
|
|
1588
1600
|
NotImplementedError
|
|
@@ -114,18 +114,7 @@ def remove_runs(context: click.Context, confirm: bool, force: bool, **kwargs: An
|
|
|
114
114
|
|
|
115
115
|
This command can be used to remove RUN collections and the datasets within
|
|
116
116
|
them.
|
|
117
|
-
|
|
118
|
-
Parameters
|
|
119
|
-
----------
|
|
120
|
-
context : `click.Context`
|
|
121
|
-
Context provided by Click.
|
|
122
|
-
confirm : `bool`
|
|
123
|
-
Confirmation for removal of the run.
|
|
124
|
-
force : `bool`
|
|
125
|
-
Force removal.
|
|
126
|
-
**kwargs : `dict` [`str`, `str`]
|
|
127
|
-
The parameters to pass to `~lsst.daf.butler.script.removeRuns`.
|
|
128
|
-
"""
|
|
117
|
+
""" # numpydoc ignore=PR01
|
|
129
118
|
result = script.removeRuns(**kwargs)
|
|
130
119
|
canRemoveRuns = len(result.runs)
|
|
131
120
|
if not canRemoveRuns:
|
{lsst_daf_butler-30.2026.300 → lsst_daf_butler-30.2026.500}/python/lsst/daf/butler/column_spec.py
RENAMED
|
@@ -109,12 +109,12 @@ class ColumnValueSerializer(ABC):
|
|
|
109
109
|
|
|
110
110
|
Parameters
|
|
111
111
|
----------
|
|
112
|
-
value : `Any`
|
|
112
|
+
value : `typing.Any`
|
|
113
113
|
Column value to be serialized.
|
|
114
114
|
|
|
115
115
|
Returns
|
|
116
116
|
-------
|
|
117
|
-
value : `Any`
|
|
117
|
+
value : `typing.Any`
|
|
118
118
|
Column value in serializable format.
|
|
119
119
|
"""
|
|
120
120
|
raise NotImplementedError
|
|
@@ -125,12 +125,12 @@ class ColumnValueSerializer(ABC):
|
|
|
125
125
|
|
|
126
126
|
Parameters
|
|
127
127
|
----------
|
|
128
|
-
value : `Any`
|
|
128
|
+
value : `typing.Any`
|
|
129
129
|
Serialized column value.
|
|
130
130
|
|
|
131
131
|
Returns
|
|
132
132
|
-------
|
|
133
|
-
value : `Any`
|
|
133
|
+
value : `typing.Any`
|
|
134
134
|
Deserialized column value.
|
|
135
135
|
"""
|
|
136
136
|
raise NotImplementedError
|
|
@@ -284,6 +284,14 @@ class DatasetRefURIs(abc.Sequence):
|
|
|
284
284
|
def __repr__(self) -> str:
|
|
285
285
|
return f"DatasetRefURIs({repr(self.primaryURI)}, {repr(self.componentURIs)})"
|
|
286
286
|
|
|
287
|
+
def iter_all(self) -> Iterator[ResourcePath]:
|
|
288
|
+
"""Iterate over all URIs without regard to whether they are primary
|
|
289
|
+
or component.
|
|
290
|
+
"""
|
|
291
|
+
if self.primaryURI is not None:
|
|
292
|
+
yield self.primaryURI
|
|
293
|
+
yield from self.componentURIs.values()
|
|
294
|
+
|
|
287
295
|
|
|
288
296
|
class Datastore(FileTransferSource, metaclass=ABCMeta):
|
|
289
297
|
"""Datastore interface.
|
|
@@ -536,7 +544,7 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
|
|
|
536
544
|
|
|
537
545
|
Returns
|
|
538
546
|
-------
|
|
539
|
-
exists : `dict`[`DatasetRef`, `bool`]
|
|
547
|
+
exists : `dict` [`DatasetRef`, `bool`]
|
|
540
548
|
Mapping of dataset to boolean indicating whether the dataset
|
|
541
549
|
is known to the datastore.
|
|
542
550
|
"""
|
|
@@ -825,6 +833,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
|
|
|
825
833
|
in an external system or if the file is to be compressed in place.
|
|
826
834
|
It is up to the datastore whether this parameter is relevant.
|
|
827
835
|
|
|
836
|
+
Returns
|
|
837
|
+
-------
|
|
838
|
+
None
|
|
839
|
+
|
|
828
840
|
Raises
|
|
829
841
|
------
|
|
830
842
|
NotImplementedError
|
|
@@ -1143,6 +1155,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
|
|
|
1143
1155
|
Determine whether errors should be ignored. When multiple
|
|
1144
1156
|
refs are being trashed there will be no per-ref check.
|
|
1145
1157
|
|
|
1158
|
+
Returns
|
|
1159
|
+
-------
|
|
1160
|
+
None
|
|
1161
|
+
|
|
1146
1162
|
Raises
|
|
1147
1163
|
------
|
|
1148
1164
|
FileNotFoundError
|
|
@@ -1278,6 +1294,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
|
|
|
1278
1294
|
Entity to compare with configuration retrieved using the
|
|
1279
1295
|
specified lookup key.
|
|
1280
1296
|
|
|
1297
|
+
Returns
|
|
1298
|
+
-------
|
|
1299
|
+
None
|
|
1300
|
+
|
|
1281
1301
|
Raises
|
|
1282
1302
|
------
|
|
1283
1303
|
DatastoreValidationError
|
|
@@ -423,8 +423,8 @@ def make_datastore_path_relative(path: str) -> str:
|
|
|
423
423
|
path : `str`
|
|
424
424
|
The file path from a `StoredFileInfo`.
|
|
425
425
|
|
|
426
|
-
|
|
427
|
-
|
|
426
|
+
Returns
|
|
427
|
+
-------
|
|
428
428
|
normalized_path : `str`
|
|
429
429
|
The original path, if it was relative. Otherwise, a version of it that
|
|
430
430
|
was converted to a relative path, stripping URI scheme and netloc from
|
|
@@ -97,12 +97,12 @@ def generate_datastore_get_information(
|
|
|
97
97
|
|
|
98
98
|
Parameters
|
|
99
99
|
----------
|
|
100
|
-
fileLocations : `list`[`DatasetLocationInformation`]
|
|
100
|
+
fileLocations : `list` [`DatasetLocationInformation`]
|
|
101
101
|
List of file locations for this artifact and their associated datastore
|
|
102
102
|
records.
|
|
103
103
|
ref : `DatasetRef`
|
|
104
104
|
The registry information associated with this artifact.
|
|
105
|
-
parameters :
|
|
105
|
+
parameters : `~collections.abc.Mapping` [`str`, `typing.Any`]
|
|
106
106
|
`StorageClass` and `Formatter` parameters.
|
|
107
107
|
readStorageClass : `StorageClass` | `None`, optional
|
|
108
108
|
The StorageClass to use when ultimately returning the resulting object
|
|
@@ -255,12 +255,12 @@ def get_dataset_as_python_object_from_get_info(
|
|
|
255
255
|
|
|
256
256
|
Parameters
|
|
257
257
|
----------
|
|
258
|
-
allGetInfo : `list`[`DatastoreFileGetInformation`]
|
|
258
|
+
allGetInfo : `list` [`DatastoreFileGetInformation`]
|
|
259
259
|
Pre-processed information about each file associated with this
|
|
260
260
|
artifact.
|
|
261
261
|
ref : `DatasetRef`
|
|
262
262
|
The registry information associated with this artifact.
|
|
263
|
-
parameters :
|
|
263
|
+
parameters : `~collections.abc.Mapping` [`str`, `typing.Any`]
|
|
264
264
|
`StorageClass` and `Formatter` parameters.
|
|
265
265
|
cache_manager : `AbstractDatastoreCacheManager`
|
|
266
266
|
The cache manager to use for caching retrieved files.
|
|
@@ -55,8 +55,8 @@ def retrieve_file_transfer_records(
|
|
|
55
55
|
Cache mapping datastore artifact to existence. Updated by
|
|
56
56
|
this method with details of all artifacts tested.
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
Returns
|
|
59
|
+
-------
|
|
60
60
|
files : `FileTransferMap`
|
|
61
61
|
A dictionary from `DatasetId` to a list of `FileTransferRecord`,
|
|
62
62
|
containing information about the files that were found for these
|
|
@@ -590,6 +590,10 @@ class InMemoryDatastore(GenericBaseDatastore[StoredMemoryItemInfo]):
|
|
|
590
590
|
ignore_errors : `bool`, optional
|
|
591
591
|
Indicate that errors should be ignored.
|
|
592
592
|
|
|
593
|
+
Returns
|
|
594
|
+
-------
|
|
595
|
+
None
|
|
596
|
+
|
|
593
597
|
Raises
|
|
594
598
|
------
|
|
595
599
|
FileNotFoundError
|
|
@@ -721,6 +725,10 @@ class InMemoryDatastore(GenericBaseDatastore[StoredMemoryItemInfo]):
|
|
|
721
725
|
If `True`, output a log message for every validation error
|
|
722
726
|
detected.
|
|
723
727
|
|
|
728
|
+
Returns
|
|
729
|
+
-------
|
|
730
|
+
None
|
|
731
|
+
|
|
724
732
|
Raises
|
|
725
733
|
------
|
|
726
734
|
DatastoreValidationError
|
|
@@ -537,7 +537,7 @@ class IndexSpec:
|
|
|
537
537
|
----------
|
|
538
538
|
*columns : `str`
|
|
539
539
|
Names of the columns to index.
|
|
540
|
-
**kwargs : `Any`
|
|
540
|
+
**kwargs : `typing.Any`
|
|
541
541
|
Additional keyword arguments to pass directly to
|
|
542
542
|
`sqlalchemy.schema.Index` constructor. This could be used to provide
|
|
543
543
|
backend-specific options, e.g. to create a ``GIST`` index in PostgreSQL
|
|
@@ -556,7 +556,7 @@ class IndexSpec:
|
|
|
556
556
|
|
|
557
557
|
kwargs: dict[str, Any]
|
|
558
558
|
"""Additional keyword arguments passed directly to
|
|
559
|
-
`sqlalchemy.schema.Index` constructor (`dict` [ `str`, `Any` ]).
|
|
559
|
+
`sqlalchemy.schema.Index` constructor (`dict` [ `str`, `typing.Any` ]).
|
|
560
560
|
"""
|
|
561
561
|
|
|
562
562
|
|
|
@@ -35,8 +35,6 @@ from __future__ import annotations
|
|
|
35
35
|
__all__ = (
|
|
36
36
|
"DataCoordinate",
|
|
37
37
|
"DataId",
|
|
38
|
-
"DataIdKey",
|
|
39
|
-
"DataIdValue",
|
|
40
38
|
"SerializedDataCoordinate",
|
|
41
39
|
"SerializedDataId",
|
|
42
40
|
)
|
|
@@ -55,7 +53,7 @@ from .._timespan import Timespan
|
|
|
55
53
|
from ..json import from_json_pydantic, to_json_pydantic
|
|
56
54
|
from ..persistence_context import PersistenceContextVars
|
|
57
55
|
from ._group import DimensionGroup
|
|
58
|
-
from ._records import
|
|
56
|
+
from ._records import DataIdValue, DimensionRecord, SerializedDimensionRecord
|
|
59
57
|
|
|
60
58
|
if TYPE_CHECKING: # Imports needed only for type annotations; may be circular.
|
|
61
59
|
from ..registry import Registry
|
|
@@ -559,11 +557,11 @@ class DataCoordinate:
|
|
|
559
557
|
Returns
|
|
560
558
|
-------
|
|
561
559
|
state : `bool`
|
|
562
|
-
If `True`,
|
|
563
|
-
|
|
564
|
-
for implied dimensions, and the
|
|
560
|
+
If `True`, ``__getitem__``, `get`, and ``__contains__`` (but not
|
|
561
|
+
``keys``!) will act as though the mapping includes key-value pairs
|
|
562
|
+
for implied dimensions, and the ``full`` property may be used. If
|
|
565
563
|
`False`, these operations only include key-value pairs for required
|
|
566
|
-
dimensions, and accessing
|
|
564
|
+
dimensions, and accessing ``full`` is an error. Always `True` if
|
|
567
565
|
there are no implied dimensions.
|
|
568
566
|
"""
|
|
569
567
|
raise NotImplementedError()
|
|
@@ -718,7 +716,7 @@ class DataCoordinate:
|
|
|
718
716
|
|
|
719
717
|
Parameters
|
|
720
718
|
----------
|
|
721
|
-
simple : `dict` of [`str`, `Any`]
|
|
719
|
+
simple : `dict` of [`str`, `typing.Any`]
|
|
722
720
|
The `dict` returned by `to_simple()`.
|
|
723
721
|
universe : `DimensionUniverse`
|
|
724
722
|
Object that manages all known dimensions.
|