lsst-daf-butler 29.2025.1600__tar.gz → 29.2025.1700__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-29.2025.1600/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.1700}/PKG-INFO +1 -1
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_universe.py +12 -8
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/_direct_butler.py +142 -120
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_remote_butler.py +1 -8
- lsst_daf_butler-29.2025.1700/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -1
- lsst_daf_butler-29.2025.1600/python/lsst/daf/butler/version.py +0 -2
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/COPYRIGHT +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/LICENSE +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/MANIFEST.in +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/README.md +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/bsd_license.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/CHANGES.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/pyproject.toml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_categorization.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_tags.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_type_info.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_ref.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_type.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_file_dataset.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_formatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_registry_shim.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/column_spec.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/record_data.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/fileDatastoreClient.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/ddl.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_records.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/parquet.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/logging.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/persistence_context.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_query.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/driver.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/overlaps.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_registry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_builder.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_structs.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/wildcards.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_authentication.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_common.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_data_coordinates.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_datasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_dimension_records.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/configValidate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryCollections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeCollections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeRuns.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/setup.cfg +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdPruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRemoveCollections.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_composites.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_config.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_datastore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_expressions.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_location.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_logging.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_normalFormExpression.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_packages.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_parquet.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_postgresql.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_progress.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_relations.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_remote_butler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_server.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_simpleButler.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_sqlite.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_templates.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_utils.py +0 -0
- {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_versioning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.1700
|
|
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: BSD 3-Clause License
|
|
@@ -31,6 +31,7 @@ __all__ = ["DimensionUniverse"]
|
|
|
31
31
|
|
|
32
32
|
import logging
|
|
33
33
|
import pickle
|
|
34
|
+
import warnings
|
|
34
35
|
from collections import defaultdict
|
|
35
36
|
from collections.abc import Iterable, Mapping, Sequence
|
|
36
37
|
from typing import TYPE_CHECKING, Any, ClassVar, TypeVar, overload
|
|
@@ -117,6 +118,13 @@ class DimensionUniverse: # numpydoc ignore=PR02
|
|
|
117
118
|
else:
|
|
118
119
|
version = builder.version
|
|
119
120
|
|
|
121
|
+
if use_cache is not True:
|
|
122
|
+
warnings.warn(
|
|
123
|
+
"use_cache parameter is no longer supported and is ignored. Will be removed after v30.",
|
|
124
|
+
category=FutureWarning,
|
|
125
|
+
stacklevel=2,
|
|
126
|
+
)
|
|
127
|
+
|
|
120
128
|
# Then a namespace.
|
|
121
129
|
if namespace is None:
|
|
122
130
|
if builder is None:
|
|
@@ -129,10 +137,9 @@ class DimensionUniverse: # numpydoc ignore=PR02
|
|
|
129
137
|
namespace = _DEFAULT_NAMESPACE
|
|
130
138
|
|
|
131
139
|
# See if an equivalent instance already exists.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return existing_instance
|
|
140
|
+
existing_instance = cls._instances.get((version, namespace))
|
|
141
|
+
if existing_instance is not None:
|
|
142
|
+
return existing_instance
|
|
136
143
|
|
|
137
144
|
# Ensure we have a builder, building one from config if necessary.
|
|
138
145
|
if builder is None:
|
|
@@ -183,10 +190,7 @@ class DimensionUniverse: # numpydoc ignore=PR02
|
|
|
183
190
|
if element.populated_by is not None:
|
|
184
191
|
self._populates[element.populated_by.name].add(element)
|
|
185
192
|
|
|
186
|
-
|
|
187
|
-
return cls._instances.set_or_get((self._version, self._namespace), self)
|
|
188
|
-
else:
|
|
189
|
-
return self
|
|
193
|
+
return cls._instances.set_or_get((self._version, self._namespace), self)
|
|
190
194
|
|
|
191
195
|
@property
|
|
192
196
|
def version(self) -> int:
|
|
@@ -1587,30 +1587,24 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
1587
1587
|
def _ingest_file_datasets(
|
|
1588
1588
|
self,
|
|
1589
1589
|
datasets: Sequence[FileDataset],
|
|
1590
|
+
*,
|
|
1591
|
+
dry_run: bool = False,
|
|
1590
1592
|
) -> None:
|
|
1591
|
-
# Docstring inherited.
|
|
1592
1593
|
if not datasets:
|
|
1593
1594
|
return
|
|
1594
1595
|
|
|
1595
1596
|
progress = Progress("lsst.daf.butler.Butler.ingest", level=logging.DEBUG)
|
|
1596
1597
|
|
|
1597
|
-
# We need to reorganize all the inputs so that they are grouped
|
|
1598
|
-
# by dataset type and run. Multiple refs in a single FileDataset
|
|
1599
|
-
# are required to share the run and dataset type.
|
|
1600
|
-
groupedData: MutableMapping[tuple[DatasetType, str], list[FileDataset]] = defaultdict(list)
|
|
1601
|
-
|
|
1602
1598
|
# Track DataIDs that are being ingested so we can spot issues early
|
|
1603
1599
|
# with duplication. Retain previous FileDataset so we can report it.
|
|
1604
1600
|
groupedDataIds: MutableMapping[tuple[DatasetType, str], dict[DataCoordinate, FileDataset]] = (
|
|
1605
1601
|
defaultdict(dict)
|
|
1606
1602
|
)
|
|
1607
1603
|
|
|
1608
|
-
#
|
|
1609
|
-
|
|
1610
|
-
# Somewhere to store pre-existing refs if we have an
|
|
1611
|
-
# execution butler.
|
|
1612
|
-
existingRefs: list[DatasetRef] = []
|
|
1604
|
+
# All the refs we need to import.
|
|
1605
|
+
refs: list[DatasetRef] = []
|
|
1613
1606
|
|
|
1607
|
+
for dataset in progress.wrap(datasets, desc="Validating dataIDs"):
|
|
1614
1608
|
for ref in dataset.refs:
|
|
1615
1609
|
group_key = (ref.datasetType, ref.run)
|
|
1616
1610
|
|
|
@@ -1623,54 +1617,29 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
1623
1617
|
)
|
|
1624
1618
|
|
|
1625
1619
|
groupedDataIds[group_key][ref.dataId] = dataset
|
|
1620
|
+
refs.extend(dataset.refs)
|
|
1626
1621
|
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
# Store expanded form in the original FileDataset.
|
|
1638
|
-
dataset.refs = existingRefs
|
|
1639
|
-
else:
|
|
1640
|
-
groupedData[group_key].append(dataset)
|
|
1641
|
-
|
|
1642
|
-
# Now we can bulk-insert into Registry for each DatasetType.
|
|
1643
|
-
for (datasetType, this_run), grouped_datasets in progress.iter_item_chunks(
|
|
1644
|
-
groupedData.items(), desc="Bulk-inserting datasets by type"
|
|
1645
|
-
):
|
|
1646
|
-
refs_to_import = []
|
|
1647
|
-
for dataset in grouped_datasets:
|
|
1648
|
-
refs_to_import.extend(dataset.refs)
|
|
1649
|
-
|
|
1650
|
-
n_refs = len(refs_to_import)
|
|
1651
|
-
_LOG.verbose(
|
|
1652
|
-
"Importing %d ref%s of dataset type %r into run %r",
|
|
1653
|
-
n_refs,
|
|
1654
|
-
"" if n_refs == 1 else "s",
|
|
1655
|
-
datasetType.name,
|
|
1656
|
-
this_run,
|
|
1657
|
-
)
|
|
1622
|
+
# Bulk insert.
|
|
1623
|
+
import_info = self._prepare_for_import_refs(
|
|
1624
|
+
self,
|
|
1625
|
+
refs,
|
|
1626
|
+
skip_missing=False,
|
|
1627
|
+
register_dataset_types=True,
|
|
1628
|
+
dry_run=dry_run,
|
|
1629
|
+
transfer_dimensions=False,
|
|
1630
|
+
)
|
|
1658
1631
|
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1632
|
+
self._import_dimension_records(import_info.dimension_records, dry_run=dry_run)
|
|
1633
|
+
imported_refs = self._import_grouped_refs(
|
|
1634
|
+
import_info.grouped_refs, self, progress, dry_run=dry_run, expand_refs=True
|
|
1635
|
+
)
|
|
1663
1636
|
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1637
|
+
# The expanded refs need to be attached back to the original
|
|
1638
|
+
# FileDatasets for datastore to use.
|
|
1639
|
+
id_to_ref = {ref.id: ref for ref in imported_refs}
|
|
1667
1640
|
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
for dataset in grouped_datasets:
|
|
1671
|
-
n_dataset_refs = len(dataset.refs)
|
|
1672
|
-
dataset.refs = imported_refs[:n_dataset_refs]
|
|
1673
|
-
del imported_refs[:n_dataset_refs]
|
|
1641
|
+
for dataset in progress.wrap(datasets, desc="Re-attaching expanded refs"):
|
|
1642
|
+
dataset.refs = [id_to_ref[ref.id] for ref in dataset.refs]
|
|
1674
1643
|
|
|
1675
1644
|
@transactional
|
|
1676
1645
|
def ingest(
|
|
@@ -1933,20 +1902,19 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
1933
1902
|
|
|
1934
1903
|
return dimension_records
|
|
1935
1904
|
|
|
1936
|
-
def
|
|
1905
|
+
def _prepare_for_import_refs(
|
|
1937
1906
|
self,
|
|
1938
1907
|
source_butler: LimitedButler,
|
|
1939
1908
|
source_refs: Iterable[DatasetRef],
|
|
1940
|
-
|
|
1909
|
+
*,
|
|
1941
1910
|
skip_missing: bool = True,
|
|
1942
1911
|
register_dataset_types: bool = False,
|
|
1943
1912
|
transfer_dimensions: bool = False,
|
|
1944
1913
|
dry_run: bool = False,
|
|
1945
|
-
) ->
|
|
1914
|
+
) -> _ImportDatasetsInfo:
|
|
1946
1915
|
# Docstring inherited.
|
|
1947
1916
|
if not self.isWriteable():
|
|
1948
1917
|
raise TypeError("Butler is read-only.")
|
|
1949
|
-
progress = Progress("lsst.daf.butler.Butler.transfer_from", level=VERBOSE)
|
|
1950
1918
|
|
|
1951
1919
|
# Will iterate through the refs multiple times so need to convert
|
|
1952
1920
|
# to a list if this isn't a collection.
|
|
@@ -1954,7 +1922,7 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
1954
1922
|
source_refs = list(source_refs)
|
|
1955
1923
|
|
|
1956
1924
|
original_count = len(source_refs)
|
|
1957
|
-
_LOG.info("
|
|
1925
|
+
_LOG.info("Importing %d datasets into %s", original_count, str(self))
|
|
1958
1926
|
|
|
1959
1927
|
# In some situations the datastore artifact may be missing
|
|
1960
1928
|
# and we do not want that registry entry to be imported.
|
|
@@ -1996,7 +1964,7 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
1996
1964
|
# might result in additional unwanted dataset types being
|
|
1997
1965
|
# registered.
|
|
1998
1966
|
try:
|
|
1999
|
-
if self._registry.registerDatasetType(datasetType):
|
|
1967
|
+
if not dry_run and self._registry.registerDatasetType(datasetType):
|
|
2000
1968
|
newly_registered_dataset_types.add(datasetType)
|
|
2001
1969
|
except ConflictingDefinitionError as e:
|
|
2002
1970
|
# Be safe and require that conversions be bidirectional
|
|
@@ -2076,86 +2044,132 @@ class DirectButler(Butler): # numpydoc ignore=PR02
|
|
|
2076
2044
|
dimension_records = self._extract_all_dimension_records_from_data_ids(
|
|
2077
2045
|
source_butler, dataIds, elements
|
|
2078
2046
|
)
|
|
2047
|
+
return _ImportDatasetsInfo(grouped_refs, dimension_records, artifact_existence)
|
|
2079
2048
|
|
|
2049
|
+
def _import_dimension_records(
|
|
2050
|
+
self,
|
|
2051
|
+
dimension_records: dict[DimensionElement, dict[DataCoordinate, DimensionRecord]],
|
|
2052
|
+
*,
|
|
2053
|
+
dry_run: bool,
|
|
2054
|
+
) -> None:
|
|
2055
|
+
"""Import dimension records collected during import pre-process."""
|
|
2056
|
+
if dimension_records and not dry_run:
|
|
2057
|
+
_LOG.verbose("Ensuring that dimension records exist for transferred datasets.")
|
|
2058
|
+
# Order matters.
|
|
2059
|
+
for element in self.dimensions.sorted(dimension_records.keys()):
|
|
2060
|
+
records = list(dimension_records[element].values())
|
|
2061
|
+
# Assume that if the record is already present that we can
|
|
2062
|
+
# use it without having to check that the record metadata
|
|
2063
|
+
# is consistent.
|
|
2064
|
+
self._registry.insertDimensionData(element, *records, skip_existing=True)
|
|
2065
|
+
|
|
2066
|
+
def _import_grouped_refs(
|
|
2067
|
+
self,
|
|
2068
|
+
grouped_refs: defaultdict[_RefGroup, list[DatasetRef]],
|
|
2069
|
+
source_butler: LimitedButler,
|
|
2070
|
+
progress: Progress,
|
|
2071
|
+
*,
|
|
2072
|
+
dry_run: bool = False,
|
|
2073
|
+
expand_refs: bool = False,
|
|
2074
|
+
) -> list[DatasetRef]:
|
|
2080
2075
|
handled_collections: set[str] = set()
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
# same order between different processes, to mitigate an issue
|
|
2098
|
-
# where Postgres can deadlock due to the unique index on collection
|
|
2099
|
-
# name. (See DM-47543).
|
|
2100
|
-
groups = sorted(grouped_refs.items(), key=lambda item: item[0].run)
|
|
2101
|
-
for (dimension_group, run), refs_to_import in progress.iter_item_chunks(
|
|
2102
|
-
groups, desc="Importing to registry by run and dataset type"
|
|
2103
|
-
):
|
|
2104
|
-
if run not in handled_collections:
|
|
2105
|
-
# May need to create output collection. If source butler
|
|
2106
|
-
# has a registry, ask for documentation string.
|
|
2107
|
-
run_doc = None
|
|
2108
|
-
if registry := getattr(source_butler, "registry", None):
|
|
2109
|
-
run_doc = registry.getCollectionDocumentation(run)
|
|
2110
|
-
if not dry_run:
|
|
2111
|
-
registered = self.collections.register(run, doc=run_doc)
|
|
2112
|
-
else:
|
|
2113
|
-
registered = True
|
|
2114
|
-
handled_collections.add(run)
|
|
2115
|
-
if registered:
|
|
2116
|
-
_LOG.verbose("Creating output run %s", run)
|
|
2117
|
-
|
|
2118
|
-
n_refs = len(refs_to_import)
|
|
2119
|
-
_LOG.verbose(
|
|
2120
|
-
"Importing %d ref%s with dimensions %s into run %s",
|
|
2121
|
-
n_refs,
|
|
2122
|
-
"" if n_refs == 1 else "s",
|
|
2123
|
-
dimension_group.names,
|
|
2124
|
-
run,
|
|
2125
|
-
)
|
|
2126
|
-
|
|
2127
|
-
# Assume we are using UUIDs and the source refs will match
|
|
2128
|
-
# those imported.
|
|
2076
|
+
n_to_import = 0
|
|
2077
|
+
all_imported_refs: list[DatasetRef] = []
|
|
2078
|
+
# Sort by run collection name to ensure Postgres takes locks in the
|
|
2079
|
+
# same order between different processes, to mitigate an issue
|
|
2080
|
+
# where Postgres can deadlock due to the unique index on collection
|
|
2081
|
+
# name. (See DM-47543).
|
|
2082
|
+
groups = sorted(grouped_refs.items(), key=lambda item: item[0].run)
|
|
2083
|
+
for (dimension_group, run), refs_to_import in progress.iter_item_chunks(
|
|
2084
|
+
groups, desc="Importing to registry by run and dataset type"
|
|
2085
|
+
):
|
|
2086
|
+
if run not in handled_collections:
|
|
2087
|
+
# May need to create output collection. If source butler
|
|
2088
|
+
# has a registry, ask for documentation string.
|
|
2089
|
+
run_doc = None
|
|
2090
|
+
if registry := getattr(source_butler, "registry", None):
|
|
2091
|
+
run_doc = registry.getCollectionDocumentation(run)
|
|
2129
2092
|
if not dry_run:
|
|
2130
|
-
|
|
2093
|
+
registered = self.collections.register(run, doc=run_doc)
|
|
2131
2094
|
else:
|
|
2132
|
-
|
|
2095
|
+
registered = True
|
|
2096
|
+
handled_collections.add(run)
|
|
2097
|
+
if registered:
|
|
2098
|
+
_LOG.verbose("Creating output run %s", run)
|
|
2099
|
+
|
|
2100
|
+
n_refs = len(refs_to_import)
|
|
2101
|
+
n_to_import += n_refs
|
|
2102
|
+
_LOG.verbose(
|
|
2103
|
+
"Importing %d ref%s with dimensions %s into run %s",
|
|
2104
|
+
n_refs,
|
|
2105
|
+
"" if n_refs == 1 else "s",
|
|
2106
|
+
dimension_group.names,
|
|
2107
|
+
run,
|
|
2108
|
+
)
|
|
2109
|
+
|
|
2110
|
+
# Assume we are using UUIDs and the source refs will match
|
|
2111
|
+
# those imported.
|
|
2112
|
+
if not dry_run:
|
|
2113
|
+
imported_refs = self._registry._importDatasets(refs_to_import, expand=expand_refs)
|
|
2114
|
+
else:
|
|
2115
|
+
imported_refs = refs_to_import
|
|
2116
|
+
|
|
2117
|
+
all_imported_refs.extend(imported_refs)
|
|
2118
|
+
|
|
2119
|
+
assert n_to_import == len(all_imported_refs)
|
|
2120
|
+
_LOG.verbose("Imported %d datasets into destination butler", n_to_import)
|
|
2121
|
+
return all_imported_refs
|
|
2122
|
+
|
|
2123
|
+
def transfer_from(
|
|
2124
|
+
self,
|
|
2125
|
+
source_butler: LimitedButler,
|
|
2126
|
+
source_refs: Iterable[DatasetRef],
|
|
2127
|
+
transfer: str = "auto",
|
|
2128
|
+
skip_missing: bool = True,
|
|
2129
|
+
register_dataset_types: bool = False,
|
|
2130
|
+
transfer_dimensions: bool = False,
|
|
2131
|
+
dry_run: bool = False,
|
|
2132
|
+
) -> collections.abc.Collection[DatasetRef]:
|
|
2133
|
+
# Docstring inherited.
|
|
2134
|
+
if not self.isWriteable():
|
|
2135
|
+
raise TypeError("Butler is read-only.")
|
|
2133
2136
|
|
|
2134
|
-
|
|
2137
|
+
progress = Progress("lsst.daf.butler.Butler.transfer_from", level=VERBOSE)
|
|
2135
2138
|
|
|
2136
|
-
|
|
2137
|
-
|
|
2139
|
+
import_info = self._prepare_for_import_refs(
|
|
2140
|
+
source_butler,
|
|
2141
|
+
source_refs,
|
|
2142
|
+
skip_missing=skip_missing,
|
|
2143
|
+
register_dataset_types=register_dataset_types,
|
|
2144
|
+
dry_run=dry_run,
|
|
2145
|
+
transfer_dimensions=transfer_dimensions,
|
|
2146
|
+
)
|
|
2147
|
+
|
|
2148
|
+
# Do all the importing in a single transaction.
|
|
2149
|
+
with self.transaction():
|
|
2150
|
+
self._import_dimension_records(import_info.dimension_records, dry_run=dry_run)
|
|
2151
|
+
imported_refs = self._import_grouped_refs(
|
|
2152
|
+
import_info.grouped_refs, source_butler, progress, dry_run=dry_run
|
|
2153
|
+
)
|
|
2138
2154
|
|
|
2139
2155
|
# Ask the datastore to transfer. The datastore has to check that
|
|
2140
2156
|
# the source datastore is compatible with the target datastore.
|
|
2141
2157
|
accepted, rejected = self._datastore.transfer_from(
|
|
2142
2158
|
source_butler._datastore,
|
|
2143
|
-
|
|
2159
|
+
imported_refs,
|
|
2144
2160
|
transfer=transfer,
|
|
2145
|
-
artifact_existence=artifact_existence,
|
|
2161
|
+
artifact_existence=import_info.artifact_existence,
|
|
2146
2162
|
dry_run=dry_run,
|
|
2147
2163
|
)
|
|
2148
2164
|
if rejected:
|
|
2149
2165
|
# For now, accept the registry entries but not the files.
|
|
2150
2166
|
_LOG.warning(
|
|
2151
|
-
"%d datasets were rejected and %d accepted for
|
|
2167
|
+
"%d datasets were rejected and %d accepted for transfer.",
|
|
2152
2168
|
len(rejected),
|
|
2153
2169
|
len(accepted),
|
|
2154
|
-
datasetType,
|
|
2155
|
-
run,
|
|
2156
2170
|
)
|
|
2157
2171
|
|
|
2158
|
-
return
|
|
2172
|
+
return imported_refs
|
|
2159
2173
|
|
|
2160
2174
|
def validateConfiguration(
|
|
2161
2175
|
self,
|
|
@@ -2382,3 +2396,11 @@ class _RefGroup(NamedTuple):
|
|
|
2382
2396
|
|
|
2383
2397
|
dimensions: DimensionGroup
|
|
2384
2398
|
run: str
|
|
2399
|
+
|
|
2400
|
+
|
|
2401
|
+
class _ImportDatasetsInfo(NamedTuple):
|
|
2402
|
+
"""Information extracted from datasets to be imported."""
|
|
2403
|
+
|
|
2404
|
+
grouped_refs: defaultdict[_RefGroup, list[DatasetRef]]
|
|
2405
|
+
dimension_records: dict[DimensionElement, dict[DataCoordinate, DimensionRecord]]
|
|
2406
|
+
artifact_existence: dict[ResourcePath, bool]
|
|
@@ -187,14 +187,7 @@ class RemoteButler(Butler): # numpydoc ignore=PR02
|
|
|
187
187
|
model = parse_model(response, GetUniverseResponseModel)
|
|
188
188
|
|
|
189
189
|
config = DimensionConfig.from_simple(model.universe)
|
|
190
|
-
universe = DimensionUniverse(
|
|
191
|
-
config,
|
|
192
|
-
# The process-global cache internal to DimensionUniverse can mask
|
|
193
|
-
# problems in unit tests, since client and server live in the same
|
|
194
|
-
# process for these tests. We are doing our own caching, so we
|
|
195
|
-
# don't benefit from it. So just disable it.
|
|
196
|
-
use_cache=False,
|
|
197
|
-
)
|
|
190
|
+
universe = DimensionUniverse(config)
|
|
198
191
|
with self._cache.access() as cache:
|
|
199
192
|
if cache.dimensions is None:
|
|
200
193
|
cache.dimensions = universe
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.1700
|
|
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: BSD 3-Clause License
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/CHANGES.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/configuring.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/datastores.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/dimensions.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/formatters.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/organizing.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/queries.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_location.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_named.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_timespan.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/arrow_utils.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/butler.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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
|