lsst-daf-butler 30.2025.5000__tar.gz → 30.2025.5100__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.2025.5000/python/lsst_daf_butler.egg-info → lsst_daf_butler-30.2025.5100}/PKG-INFO +1 -1
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/record_data.py +1 -1
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/fileDatastore.py +14 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/bridge/monolithic.py +17 -13
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +49 -45
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_database.py +6 -1
- lsst_daf_butler-30.2025.5100/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -1
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_datastore.py +40 -0
- lsst_daf_butler-30.2025.5000/python/lsst/daf/butler/version.py +0 -2
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/COPYRIGHT +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/LICENSE +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/MANIFEST.in +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/README.md +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/bsd_license.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/CHANGES.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/pyproject.toml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler_metrics.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_ref.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_type.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_exceptions.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_file_dataset.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_formatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_registry_shim.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_uuid.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/column_spec.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/ddl.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_records.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/parquet.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/logging.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/persistence_context.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/_query.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/driver.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/exprTree.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/parserYacc.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/overlaps.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_registry_base.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/_query_common.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/_query_data_coordinates.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/_query_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/_query_dimension_records.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/registry/wildcards.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/configValidate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/queryCollections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/removeCollections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/removeRuns.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/spatial.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/server_available.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/tests/utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/setup.cfg +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdPruneDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdRemoveCollections.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_composites.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_config.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_location.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_logging.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_packages.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_parquet.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_progress.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_remote_butler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_server.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_simpleButler.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_templates.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_utils.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_uuid.py +0 -0
- {lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/tests/test_versioning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 30.2025.
|
|
3
|
+
Version: 30.2025.5100
|
|
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
|
|
@@ -49,7 +49,7 @@ if TYPE_CHECKING:
|
|
|
49
49
|
# Pydantic requires the possible value types to be explicitly enumerated in
|
|
50
50
|
# order for `uuid.UUID` in particular to work. `typing.Any` does not work
|
|
51
51
|
# here.
|
|
52
|
-
_Record: TypeAlias = dict[str, int | str |
|
|
52
|
+
_Record: TypeAlias = dict[str, int | str | None]
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class SerializedDatastoreRecordData(pydantic.BaseModel):
|
|
@@ -3166,6 +3166,20 @@ class FileDatastore(GenericBaseDatastore[StoredFileInfo]):
|
|
|
3166
3166
|
|
|
3167
3167
|
def export_records(self, refs: Iterable[DatasetIdRef]) -> Mapping[str, DatastoreRecordData]:
|
|
3168
3168
|
# Docstring inherited from the base class.
|
|
3169
|
+
|
|
3170
|
+
# This call to 'bridge.check' filters out "partially deleted" datasets.
|
|
3171
|
+
# Specifically, ones in the unusual edge state that:
|
|
3172
|
+
# 1. They have an entry in the registry dataset tables
|
|
3173
|
+
# 2. They were "trashed" from the datastore, so they are not
|
|
3174
|
+
# present in the "dataset_location" table.)
|
|
3175
|
+
# 3. But the trash has not been "emptied", so there are still entries
|
|
3176
|
+
# in the "opaque" datastore records table.
|
|
3177
|
+
#
|
|
3178
|
+
# As far as I can tell, this can only occur in the case of a concurrent
|
|
3179
|
+
# or aborted call to `Butler.pruneDatasets(unstore=True, purge=False)`.
|
|
3180
|
+
# Datasets (with or without files existing on disk) can persist in
|
|
3181
|
+
# this zombie state indefinitely, until someone manually empties
|
|
3182
|
+
# the trash.
|
|
3169
3183
|
exported_refs = list(self._bridge.check(refs))
|
|
3170
3184
|
ids = {ref.id for ref in exported_refs}
|
|
3171
3185
|
records: dict[DatasetId, dict[str, list[StoredDatastoreItemInfo]]] = {id: {} for id in ids}
|
|
@@ -215,20 +215,24 @@ class MonolithicDatastoreRegistryBridge(DatastoreRegistryBridge):
|
|
|
215
215
|
def check(self, refs: Iterable[DatasetIdRef]) -> Iterable[DatasetIdRef]:
|
|
216
216
|
# Docstring inherited from DatastoreRegistryBridge
|
|
217
217
|
byId = {ref.id: ref for ref in refs}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
.
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
self._tables.dataset_location
|
|
224
|
-
|
|
218
|
+
found: list[DatasetIdRef] = []
|
|
219
|
+
with self._db.session():
|
|
220
|
+
for batch in chunk_iterable(byId.keys(), 50000):
|
|
221
|
+
sql = (
|
|
222
|
+
sqlalchemy.sql.select(self._tables.dataset_location.columns.dataset_id)
|
|
223
|
+
.select_from(self._tables.dataset_location)
|
|
224
|
+
.where(
|
|
225
|
+
sqlalchemy.sql.and_(
|
|
226
|
+
self._tables.dataset_location.columns.datastore_name == self.datastoreName,
|
|
227
|
+
self._tables.dataset_location.columns.dataset_id.in_(batch),
|
|
228
|
+
)
|
|
229
|
+
)
|
|
225
230
|
)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
yield byId[row.dataset_id]
|
|
231
|
+
with self._db.query(sql) as sql_result:
|
|
232
|
+
sql_ids = sql_result.scalars().all()
|
|
233
|
+
found.extend(byId[id] for id in sql_ids)
|
|
234
|
+
|
|
235
|
+
return found
|
|
232
236
|
|
|
233
237
|
@contextmanager
|
|
234
238
|
def emptyTrash(
|
|
@@ -12,6 +12,8 @@ from typing import TYPE_CHECKING, Any, ClassVar
|
|
|
12
12
|
import astropy.time
|
|
13
13
|
import sqlalchemy
|
|
14
14
|
|
|
15
|
+
from lsst.utils.iteration import chunk_iterable
|
|
16
|
+
|
|
15
17
|
from .... import ddl
|
|
16
18
|
from ...._collection_type import CollectionType
|
|
17
19
|
from ...._dataset_ref import DatasetId, DatasetIdFactory, DatasetIdGenEnum, DatasetRef
|
|
@@ -424,17 +426,18 @@ class ByDimensionsDatasetRecordStorageManagerUUID(DatasetRecordStorageManager):
|
|
|
424
426
|
return result
|
|
425
427
|
|
|
426
428
|
def get_dataset_refs(self, ids: list[DatasetId]) -> list[DatasetRef]:
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
id_col
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
429
|
+
dataset_type_map: dict[DatasetId, DatasetType] = {}
|
|
430
|
+
for batch in chunk_iterable(set(ids), 50000):
|
|
431
|
+
# Look up the dataset types corresponding to the given Dataset IDs.
|
|
432
|
+
id_col = self._static.dataset.columns["id"]
|
|
433
|
+
sql = sqlalchemy.sql.select(
|
|
434
|
+
id_col,
|
|
435
|
+
self._static.dataset.columns["dataset_type_id"],
|
|
436
|
+
).where(id_col.in_(batch))
|
|
437
|
+
with self._db.query(sql) as sql_result:
|
|
438
|
+
dataset_rows = sql_result.mappings().all()
|
|
439
|
+
for row in dataset_rows:
|
|
440
|
+
dataset_type_map[row["id"]] = self._get_dataset_type_by_id(row["dataset_type_id"])
|
|
438
441
|
|
|
439
442
|
# Group the given dataset IDs by the DimensionGroup of their dataset
|
|
440
443
|
# types -- there is a separate tags table for each DimensionGroup.
|
|
@@ -448,40 +451,41 @@ class ByDimensionsDatasetRecordStorageManagerUUID(DatasetRecordStorageManager):
|
|
|
448
451
|
# data IDs corresponding to the UUIDs found from the dataset table.
|
|
449
452
|
dynamic_tables = self._get_dynamic_tables(dimension_group)
|
|
450
453
|
tags_table = self._get_tags_table(dynamic_tables)
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
454
|
+
for batch in chunk_iterable(datasets, 50000):
|
|
455
|
+
tags_sql = tags_table.select().where(tags_table.columns["dataset_id"].in_(batch))
|
|
456
|
+
# Join in the collection table to fetch the run name.
|
|
457
|
+
collection_column = tags_table.columns[self._collections.getCollectionForeignKeyName()]
|
|
458
|
+
joined_collections = self._collections.join_collections_sql(collection_column, tags_sql)
|
|
459
|
+
tags_sql = joined_collections.joined_sql
|
|
460
|
+
run_name_column = joined_collections.name_column
|
|
461
|
+
tags_sql = tags_sql.add_columns(run_name_column)
|
|
462
|
+
# Tags table includes run collections and tagged
|
|
463
|
+
# collections.
|
|
464
|
+
# In theory the data ID for a given dataset should be the
|
|
465
|
+
# same in both, but nothing actually guarantees this.
|
|
466
|
+
# So skip any tagged collections, using the run collection
|
|
467
|
+
# as the definitive definition.
|
|
468
|
+
tags_sql = tags_sql.where(joined_collections.type_column == int(CollectionType.RUN))
|
|
469
|
+
|
|
470
|
+
with self._db.query(tags_sql) as sql_result:
|
|
471
|
+
data_id_rows = sql_result.mappings().all()
|
|
472
|
+
|
|
473
|
+
assert run_name_column.key is not None
|
|
474
|
+
for data_id_row in data_id_rows:
|
|
475
|
+
id = data_id_row["dataset_id"]
|
|
476
|
+
dataset_type = dataset_type_map[id]
|
|
477
|
+
run_name = data_id_row[run_name_column.key]
|
|
478
|
+
data_id = DataCoordinate.from_required_values(
|
|
479
|
+
dimension_group,
|
|
480
|
+
tuple(data_id_row[dimension] for dimension in dimension_group.required),
|
|
481
|
+
)
|
|
482
|
+
ref = DatasetRef(
|
|
483
|
+
datasetType=dataset_type,
|
|
484
|
+
dataId=data_id,
|
|
485
|
+
id=id,
|
|
486
|
+
run=run_name,
|
|
487
|
+
)
|
|
488
|
+
output_refs.append(ref)
|
|
485
489
|
|
|
486
490
|
return output_refs
|
|
487
491
|
|
|
@@ -1562,7 +1562,12 @@ class Database(ABC):
|
|
|
1562
1562
|
return None
|
|
1563
1563
|
else:
|
|
1564
1564
|
sql = table.insert()
|
|
1565
|
-
|
|
1565
|
+
ids = []
|
|
1566
|
+
for row in rows:
|
|
1567
|
+
key = connection.execute(sql, row).inserted_primary_key
|
|
1568
|
+
assert key is not None
|
|
1569
|
+
ids.append(key[0])
|
|
1570
|
+
return ids
|
|
1566
1571
|
|
|
1567
1572
|
@abstractmethod
|
|
1568
1573
|
def replace(self, table: sqlalchemy.schema.Table, *rows: dict) -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 30.2025.
|
|
3
|
+
Version: 30.2025.5100
|
|
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
|
|
@@ -61,6 +61,7 @@ from lsst.daf.butler.datastore.cache_manager import (
|
|
|
61
61
|
DatastoreCacheManagerConfig,
|
|
62
62
|
DatastoreDisabledCacheManager,
|
|
63
63
|
)
|
|
64
|
+
from lsst.daf.butler.datastore.record_data import DatastoreRecordData, SerializedDatastoreRecordData
|
|
64
65
|
from lsst.daf.butler.datastore.stored_file_info import StoredFileInfo, make_datastore_path_relative
|
|
65
66
|
from lsst.daf.butler.formatters.yaml import YamlFormatter
|
|
66
67
|
from lsst.daf.butler.tests import (
|
|
@@ -77,6 +78,7 @@ from lsst.daf.butler.tests.dict_convertible_model import DictConvertibleModel
|
|
|
77
78
|
from lsst.daf.butler.tests.utils import TestCaseMixin
|
|
78
79
|
from lsst.resources import ResourcePath
|
|
79
80
|
from lsst.utils import doImport
|
|
81
|
+
from lsst.utils.introspection import get_full_type_name
|
|
80
82
|
|
|
81
83
|
TESTDIR = os.path.dirname(__file__)
|
|
82
84
|
|
|
@@ -2252,6 +2254,44 @@ class StoredFileInfoTestCase(DatasetTestHelper, unittest.TestCase):
|
|
|
2252
2254
|
self.assertEqual(make_datastore_path_relative("http://server.com/some/path"), "some/path")
|
|
2253
2255
|
self.assertEqual(make_datastore_path_relative("http://server.com/some/path#frag"), "some/path#frag")
|
|
2254
2256
|
|
|
2257
|
+
def test_datastore_record_data_json_types(self):
|
|
2258
|
+
"""Test that we don't round-trip checksums to UUIDs when deserializing
|
|
2259
|
+
datastore record data.
|
|
2260
|
+
"""
|
|
2261
|
+
test_json = """
|
|
2262
|
+
{
|
|
2263
|
+
"dataset_ids": [
|
|
2264
|
+
"74478304-abf1-4a9c-9eb2-926090a84446"
|
|
2265
|
+
],
|
|
2266
|
+
"records": {
|
|
2267
|
+
"lsst.daf.butler.datastore.stored_file_info.StoredFileInfo": {
|
|
2268
|
+
"74478304abf14a9c9eb2926090a84446": {
|
|
2269
|
+
"file_datastore_records": [
|
|
2270
|
+
{
|
|
2271
|
+
"formatter": "lsst.daf.butler.formatters.yaml.YamlFormatter",
|
|
2272
|
+
"path": "gain_factors/base-2025-158/gain_factors_spx_base-2025-158.yaml",
|
|
2273
|
+
"storage_class": "GainFactors",
|
|
2274
|
+
"component": "__NULL_STRING__",
|
|
2275
|
+
"checksum": "cab515f6-ab67-0484-393f-aaa525dd526f",
|
|
2276
|
+
"file_size": 5412
|
|
2277
|
+
}
|
|
2278
|
+
]
|
|
2279
|
+
}
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
"""
|
|
2284
|
+
id_str = "74478304abf14a9c9eb2926090a84446"
|
|
2285
|
+
s = SerializedDatastoreRecordData.model_validate_json(test_json)
|
|
2286
|
+
self.assertIsInstance(
|
|
2287
|
+
s.records[get_full_type_name(StoredFileInfo)][id_str]["file_datastore_records"][0]["checksum"],
|
|
2288
|
+
str,
|
|
2289
|
+
)
|
|
2290
|
+
id = uuid.UUID(id_str)
|
|
2291
|
+
d = DatastoreRecordData.from_simple(s)
|
|
2292
|
+
self.assertIsInstance(d.records[id]["file_datastore_records"][0], StoredFileInfo)
|
|
2293
|
+
self.assertIsInstance(d.records[id]["file_datastore_records"][0].checksum, str)
|
|
2294
|
+
|
|
2255
2295
|
|
|
2256
2296
|
@contextlib.contextmanager
|
|
2257
2297
|
def _temp_yaml_file(data: Any) -> Iterator[str]:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/CHANGES.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/configuring.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/datastores.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/dimensions.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/formatters.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/organizing.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/queries.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/doc/lsst.daf.butler/use-in-tests.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_butler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_location.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_named.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_quantum.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_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_timespan.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_topology.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/_uuid.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/arrow_utils.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/butler.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/cliLog.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_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/progress.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/cli/utils.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5000 → lsst_daf_butler-30.2025.5100}/python/lsst/daf/butler/column_spec.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
|
|
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
|