lsst-daf-butler 30.2025.5100__tar.gz → 30.2026.100__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.5100/python/lsst_daf_butler.egg-info → lsst_daf_butler-30.2026.100}/PKG-INFO +1 -1
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_formatter.py +2 -9
- lsst_daf_butler-30.2026.100/python/lsst/daf/butler/_rubin/temporary_for_ingest.py +207 -0
- lsst_daf_butler-30.2026.100/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -1
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/SOURCES.txt +1 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_butler.py +16 -0
- lsst_daf_butler-30.2025.5100/python/lsst/daf/butler/version.py +0 -2
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/COPYRIGHT +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/LICENSE +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/MANIFEST.in +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/README.md +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/bsd_license.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/CHANGES.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/pyproject.toml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler_metrics.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_ref.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_type.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_exceptions.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_file_dataset.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_registry_shim.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_uuid.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/column_spec.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/record_data.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/ddl.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_records.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/parquet.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/logging.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/persistence_context.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/_query.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/driver.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/exprTree.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/parserYacc.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/overlaps.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_registry_base.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/_query_common.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/_query_data_coordinates.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/_query_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/_query_dimension_records.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/registry/wildcards.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/configValidate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/queryCollections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/removeCollections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/removeRuns.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/spatial.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/server_available.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/tests/utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/setup.cfg +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdPruneDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdRemoveCollections.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_composites.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_config.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_datastore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_gafaelfawr.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_location.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_logging.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_packages.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_parquet.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_progress.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_remote_butler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_server.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_simpleButler.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_sqlite.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_templates.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_utils.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/tests/test_uuid.py +0 -0
- {lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.
|
|
3
|
+
Version: 30.2026.100
|
|
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
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_formatter.py
RENAMED
|
@@ -54,6 +54,7 @@ from ._config import Config
|
|
|
54
54
|
from ._config_support import LookupKey, processLookupConfigs
|
|
55
55
|
from ._file_descriptor import FileDescriptor
|
|
56
56
|
from ._location import Location
|
|
57
|
+
from ._rubin.temporary_for_ingest import TemporaryForIngest
|
|
57
58
|
from .dimensions import DataCoordinate, DimensionUniverse
|
|
58
59
|
from .mapping_factory import MappingFactory
|
|
59
60
|
|
|
@@ -1031,15 +1032,7 @@ class FormatterV2:
|
|
|
1031
1032
|
"""
|
|
1032
1033
|
cache_manager = self._ensure_cache(cache_manager)
|
|
1033
1034
|
|
|
1034
|
-
|
|
1035
|
-
# using a local file system -- that gives us atomic writes.
|
|
1036
|
-
# If a process is killed as the file is being written we do not
|
|
1037
|
-
# want it to remain in the correct place but in corrupt state.
|
|
1038
|
-
# For local files write to the output directory not temporary dir.
|
|
1039
|
-
prefix = uri.dirname() if uri.isLocal else None
|
|
1040
|
-
if prefix is not None:
|
|
1041
|
-
prefix.mkdir()
|
|
1042
|
-
with ResourcePath.temporary_uri(suffix=uri.getExtension(), prefix=prefix) as temporary_uri:
|
|
1035
|
+
with TemporaryForIngest.make_path(uri) as temporary_uri:
|
|
1043
1036
|
# Need to configure the formatter to write to a different
|
|
1044
1037
|
# location and that needs us to overwrite internals
|
|
1045
1038
|
log.debug("Writing dataset to temporary location at %s", temporary_uri)
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# This file is part of daf_butler.
|
|
2
|
+
#
|
|
3
|
+
# Developed for the LSST Data Management System.
|
|
4
|
+
# This product includes software developed by the LSST Project
|
|
5
|
+
# (http://www.lsst.org).
|
|
6
|
+
# See the COPYRIGHT file at the top-level directory of this distribution
|
|
7
|
+
# for details of code ownership.
|
|
8
|
+
#
|
|
9
|
+
# This software is dual licensed under the GNU General Public License and also
|
|
10
|
+
# under a 3-clause BSD license. Recipients may choose which of these licenses
|
|
11
|
+
# to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
|
|
12
|
+
# respectively. If you choose the GPL option then the following text applies
|
|
13
|
+
# (but note that there is still no warranty even if you opt for BSD instead):
|
|
14
|
+
#
|
|
15
|
+
# This program is free software: you can redistribute it and/or modify
|
|
16
|
+
# it under the terms of the GNU General Public License as published by
|
|
17
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
18
|
+
# (at your option) any later version.
|
|
19
|
+
#
|
|
20
|
+
# This program is distributed in the hope that it will be useful,
|
|
21
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
22
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
23
|
+
# GNU General Public License for more details.
|
|
24
|
+
#
|
|
25
|
+
# You should have received a copy of the GNU General Public License
|
|
26
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
27
|
+
|
|
28
|
+
from __future__ import annotations
|
|
29
|
+
|
|
30
|
+
__all__ = ("TemporaryForIngest",)
|
|
31
|
+
|
|
32
|
+
import dataclasses
|
|
33
|
+
import glob
|
|
34
|
+
from contextlib import contextmanager
|
|
35
|
+
from typing import TYPE_CHECKING, Self, cast
|
|
36
|
+
|
|
37
|
+
from lsst.resources import ResourcePath
|
|
38
|
+
|
|
39
|
+
if TYPE_CHECKING:
|
|
40
|
+
from collections.abc import Iterator
|
|
41
|
+
from types import TracebackType
|
|
42
|
+
|
|
43
|
+
from .._butler import Butler
|
|
44
|
+
from .._dataset_ref import DatasetRef
|
|
45
|
+
from .._file_dataset import FileDataset
|
|
46
|
+
from .._limited_butler import LimitedButler
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@dataclasses.dataclass
|
|
50
|
+
class TemporaryForIngest:
|
|
51
|
+
"""A context manager for generating temporary paths that will be ingested
|
|
52
|
+
as butler datasets.
|
|
53
|
+
|
|
54
|
+
Notes
|
|
55
|
+
-----
|
|
56
|
+
Neither this class nor its `make_path` method run ingest automatically when
|
|
57
|
+
their context manager is exited; the `ingest` method must always be called
|
|
58
|
+
explicitly.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
butler: Butler
|
|
62
|
+
"""Full butler to obtain a predicted path from and ingest into."""
|
|
63
|
+
|
|
64
|
+
ref: DatasetRef
|
|
65
|
+
"""Description of the dataset to ingest."""
|
|
66
|
+
|
|
67
|
+
dataset: FileDataset = dataclasses.field(init=False)
|
|
68
|
+
"""The dataset that will be passed to `Butler.ingest`."""
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def path(self) -> ResourcePath:
|
|
72
|
+
"""The temporary path.
|
|
73
|
+
|
|
74
|
+
Guaranteed to be a local POSIX path.
|
|
75
|
+
"""
|
|
76
|
+
return cast(ResourcePath, self.dataset.path)
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def ospath(self) -> str:
|
|
80
|
+
"""The temporary path as a complete filename."""
|
|
81
|
+
return self.path.ospath
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
@contextmanager
|
|
85
|
+
def make_path(cls, final_path: ResourcePath) -> Iterator[ResourcePath]:
|
|
86
|
+
"""Return a temporary path context manager given the predicted final
|
|
87
|
+
path.
|
|
88
|
+
|
|
89
|
+
Parameters
|
|
90
|
+
----------
|
|
91
|
+
final_path : `lsst.resources.ResourcePath`
|
|
92
|
+
Predicted final path.
|
|
93
|
+
|
|
94
|
+
Returns
|
|
95
|
+
-------
|
|
96
|
+
context : `contextlib.AbstractContextManager`
|
|
97
|
+
A context manager that yields the temporary
|
|
98
|
+
`~lsst.resources.ResourcePath` when entered and deletes that file
|
|
99
|
+
when exited.
|
|
100
|
+
"""
|
|
101
|
+
# Always write to a temporary even if using a local file system -- that
|
|
102
|
+
# gives us atomic writes. If a process is killed as the file is being
|
|
103
|
+
# written we do not want it to remain in the correct place but in
|
|
104
|
+
# corrupt state. For local files write to the output directory not
|
|
105
|
+
# temporary dir.
|
|
106
|
+
prefix = final_path.dirname() if final_path.isLocal else None
|
|
107
|
+
if prefix is not None:
|
|
108
|
+
prefix.mkdir()
|
|
109
|
+
with ResourcePath.temporary_uri(
|
|
110
|
+
suffix=cls._get_temporary_suffix(final_path), prefix=prefix
|
|
111
|
+
) as temporary_path:
|
|
112
|
+
yield temporary_path
|
|
113
|
+
|
|
114
|
+
def ingest(self, record_validation_info: bool = True) -> None:
|
|
115
|
+
"""Ingest the file into the butler.
|
|
116
|
+
|
|
117
|
+
Parameters
|
|
118
|
+
----------
|
|
119
|
+
record_validation_info : `bool`, optional
|
|
120
|
+
Whether to- record the file size and checksum upon ingest.
|
|
121
|
+
"""
|
|
122
|
+
self.butler.ingest(self.dataset, transfer="move", record_validation_info=record_validation_info)
|
|
123
|
+
|
|
124
|
+
def __enter__(self) -> Self:
|
|
125
|
+
from .._file_dataset import FileDataset
|
|
126
|
+
|
|
127
|
+
final_path = self.butler.getURI(self.ref, predict=True).replace(fragment="")
|
|
128
|
+
prefix = final_path.dirname() if final_path.isLocal else None
|
|
129
|
+
if prefix is not None:
|
|
130
|
+
prefix.mkdir()
|
|
131
|
+
self._temporary_path_context = self.make_path(final_path)
|
|
132
|
+
temporary_path = self._temporary_path_context.__enter__()
|
|
133
|
+
self.dataset = FileDataset(temporary_path, [self.ref], formatter=None)
|
|
134
|
+
return self
|
|
135
|
+
|
|
136
|
+
def __exit__(
|
|
137
|
+
self,
|
|
138
|
+
exc_type: type[BaseException] | None,
|
|
139
|
+
exc_value: BaseException | None,
|
|
140
|
+
traceback: TracebackType | None,
|
|
141
|
+
) -> bool | None:
|
|
142
|
+
return self._temporary_path_context.__exit__(exc_type, exc_value, traceback)
|
|
143
|
+
|
|
144
|
+
@classmethod
|
|
145
|
+
def find_orphaned_temporaries_by_path(cls, final_path: ResourcePath) -> list[ResourcePath]:
|
|
146
|
+
"""Search for temporary files that were not successfully ingested.
|
|
147
|
+
|
|
148
|
+
Parameters
|
|
149
|
+
----------
|
|
150
|
+
final_path : `lsst.resources.ResourcePath`
|
|
151
|
+
Final path a successfully-ingested file would have.
|
|
152
|
+
|
|
153
|
+
Returns
|
|
154
|
+
-------
|
|
155
|
+
paths : `list` [ `lsst.resources.ResourcePath` ]
|
|
156
|
+
Files that look like temporaries that might have been created while
|
|
157
|
+
trying to write the target dataset.
|
|
158
|
+
|
|
159
|
+
Notes
|
|
160
|
+
-----
|
|
161
|
+
Orphaned files are only possible when a context manager is interrupted
|
|
162
|
+
by a hard error that prevents any cleanup code from running (e.g.
|
|
163
|
+
sudden loss of power).
|
|
164
|
+
"""
|
|
165
|
+
if not final_path.isLocal:
|
|
166
|
+
# We return true tempfile for non-local predicted paths, so orphans
|
|
167
|
+
# are not our problem (the OS etc. will take care of them).
|
|
168
|
+
return []
|
|
169
|
+
return [
|
|
170
|
+
ResourcePath(filename)
|
|
171
|
+
for filename in glob.glob(
|
|
172
|
+
f"{glob.escape(final_path.dirname().ospath)}*{glob.escape(cls._get_temporary_suffix(final_path))}"
|
|
173
|
+
)
|
|
174
|
+
if filename != final_path.ospath
|
|
175
|
+
]
|
|
176
|
+
|
|
177
|
+
@classmethod
|
|
178
|
+
def find_orphaned_temporaries_by_ref(cls, ref: DatasetRef, butler: LimitedButler) -> list[ResourcePath]:
|
|
179
|
+
"""Search for temporary files that were not successfully ingested.
|
|
180
|
+
|
|
181
|
+
Parameters
|
|
182
|
+
----------
|
|
183
|
+
ref : `..DatasetRef`
|
|
184
|
+
A dataset reference the temporaries correspond to.
|
|
185
|
+
butler : `lsst.daf.butler.LimitedButler`
|
|
186
|
+
Butler that can be used to obtain a predicted URI for a dataset.
|
|
187
|
+
|
|
188
|
+
Returns
|
|
189
|
+
-------
|
|
190
|
+
paths : `list` [ `lsst.resources.ResourcePath` ]
|
|
191
|
+
Files that look like temporaries that might have been created while
|
|
192
|
+
trying to write the target dataset.
|
|
193
|
+
|
|
194
|
+
Notes
|
|
195
|
+
-----
|
|
196
|
+
Orphaned files are only possible when a context manager is interrupted
|
|
197
|
+
by a hard error that prevents any cleanup code from running (e.g.
|
|
198
|
+
sudden loss of power).
|
|
199
|
+
"""
|
|
200
|
+
final_path = butler.getURI(ref, predict=True).replace(fragment="")
|
|
201
|
+
return cls.find_orphaned_temporaries_by_path(final_path)
|
|
202
|
+
|
|
203
|
+
@staticmethod
|
|
204
|
+
def _get_temporary_suffix(path: ResourcePath) -> str:
|
|
205
|
+
ext = path.getExtension()
|
|
206
|
+
basename = path.basename().removesuffix(ext)
|
|
207
|
+
return f"{basename}.tmp{ext}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 30.
|
|
3
|
+
Version: 30.2026.100
|
|
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
|
|
@@ -73,6 +73,7 @@ python/lsst/daf/butler/utils.py
|
|
|
73
73
|
python/lsst/daf/butler/version.py
|
|
74
74
|
python/lsst/daf/butler/_rubin/__init__.py
|
|
75
75
|
python/lsst/daf/butler/_rubin/file_datasets.py
|
|
76
|
+
python/lsst/daf/butler/_rubin/temporary_for_ingest.py
|
|
76
77
|
python/lsst/daf/butler/_utilities/__init__.py
|
|
77
78
|
python/lsst/daf/butler/_utilities/locked_object.py
|
|
78
79
|
python/lsst/daf/butler/_utilities/named_locks.py
|
|
@@ -90,6 +90,7 @@ from lsst.daf.butler import (
|
|
|
90
90
|
script,
|
|
91
91
|
)
|
|
92
92
|
from lsst.daf.butler._rubin.file_datasets import transfer_datasets_to_datastore
|
|
93
|
+
from lsst.daf.butler._rubin.temporary_for_ingest import TemporaryForIngest
|
|
93
94
|
from lsst.daf.butler.datastore import NullDatastore
|
|
94
95
|
from lsst.daf.butler.datastore.file_templates import FileTemplate, FileTemplateValidationError
|
|
95
96
|
from lsst.daf.butler.datastores.file_datastore.retrieve_artifacts import ZipIndex
|
|
@@ -2441,6 +2442,21 @@ class PosixDatastoreButlerTestCase(FileDatastoreButlerTests, unittest.TestCase):
|
|
|
2441
2442
|
self.assertIsNotNone(target_butler.get(repo.ref2))
|
|
2442
2443
|
self.assertIsNotNone(target_butler.get(other_ref))
|
|
2443
2444
|
|
|
2445
|
+
def test_temporary_for_ingest(self) -> None:
|
|
2446
|
+
"""Test the `lsst.daf.butler._rubin.ingest_from_temporary` module."""
|
|
2447
|
+
with self.create_empty_butler("example_run") as butler:
|
|
2448
|
+
dataset_type = DatasetType("example", butler.dimensions.empty, "StructuredDataDict")
|
|
2449
|
+
butler.registry.registerDatasetType(dataset_type)
|
|
2450
|
+
ref = DatasetRef(dataset_type, DataCoordinate.make_empty(butler.dimensions), "example_run")
|
|
2451
|
+
with TemporaryForIngest(butler, ref) as temporary:
|
|
2452
|
+
temporary.path.write(b"three: 3")
|
|
2453
|
+
found = TemporaryForIngest.find_orphaned_temporaries_by_ref(ref, butler)
|
|
2454
|
+
self.assertEqual(found, [temporary.path])
|
|
2455
|
+
self.assertIn(".tmp", temporary.ospath)
|
|
2456
|
+
temporary.ingest()
|
|
2457
|
+
loaded = butler.get(ref)
|
|
2458
|
+
self.assertEqual(loaded, {"three": 3})
|
|
2459
|
+
|
|
2444
2460
|
|
|
2445
2461
|
class PostgresPosixDatastoreButlerTestCase(FileDatastoreButlerTests, unittest.TestCase):
|
|
2446
2462
|
"""PosixDatastore specialization of a butler using Postgres"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/CHANGES.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/configuring.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/datastores.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/dimensions.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/formatters.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/organizing.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/doc/lsst.daf.butler/queries.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_dataset_type.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_file_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_location.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_named.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_timespan.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/_uuid.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/arrow_utils.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/butler.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/progress.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/python/lsst/daf/butler/cli/utils.py
RENAMED
|
File without changes
|
{lsst_daf_butler-30.2025.5100 → lsst_daf_butler-30.2026.100}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|