lsst-daf-butler 29.2025.3700__tar.gz → 29.2025.3900__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.3700/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.3900}/PKG-INFO +9 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/README.md +8 -1
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/utils.py +9 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/column_spec.py +1 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/delegates/arrowtable.py +19 -13
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/parquet.py +13 -3
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/logging.py +3 -3
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +27 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +17 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/spatial.py +1 -1
- lsst_daf_butler-29.2025.3900/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900/python/lsst_daf_butler.egg-info}/PKG-INFO +9 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_logging.py +12 -4
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_parquet.py +25 -0
- lsst_daf_butler-29.2025.3700/python/lsst/daf/butler/version.py +0 -2
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/COPYRIGHT +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/LICENSE +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/MANIFEST.in +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/bsd_license.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/CHANGES.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/pyproject.toml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler_metrics.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_column_categorization.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_column_tags.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_column_type_info.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_ref.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_type.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_file_dataset.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_formatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_registry_shim.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/record_data.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/ddl.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_records.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/persistence_context.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/_query.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/driver.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/overlaps.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_registry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_builder.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_query.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/_structs.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/registry/wildcards.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/registry/_query_common.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/registry/_query_data_coordinates.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/registry/_query_datasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/registry/_query_dimension_records.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/configValidate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/queryCollections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/removeCollections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/removeRuns.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/tests/utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/setup.cfg +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdPruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdRemoveCollections.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_composites.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_config.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_datastore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_expressions.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_gafaelfawr.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_location.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_normalFormExpression.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_packages.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_postgresql.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_progress.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_relations.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_remote_butler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_server.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_simpleButler.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_sqlite.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_templates.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/tests/test_utils.py +0 -0
- {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/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.3900
|
|
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
|
|
@@ -63,7 +63,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
|
|
|
63
63
|
|
|
64
64
|
This is a **Python 3 only** package (we assume Python 3.11 or higher).
|
|
65
65
|
|
|
66
|
-
* SPIE
|
|
66
|
+
* SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
|
|
67
|
+
* SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
|
|
67
68
|
* ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
|
|
68
69
|
* Early design note: [DMTN-056](https://dmtn-056.lsst.io)
|
|
69
70
|
|
|
@@ -71,3 +72,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
|
|
|
71
72
|
|
|
72
73
|
This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
|
|
73
74
|
Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
|
|
75
|
+
|
|
76
|
+
## Arrow Memory Leaks
|
|
77
|
+
|
|
78
|
+
From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
|
|
79
|
+
If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
|
|
80
|
+
For EUPS users this variable is automatically set.
|
|
@@ -8,7 +8,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
|
|
|
8
8
|
|
|
9
9
|
This is a **Python 3 only** package (we assume Python 3.11 or higher).
|
|
10
10
|
|
|
11
|
-
* SPIE
|
|
11
|
+
* SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
|
|
12
|
+
* SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
|
|
12
13
|
* ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
|
|
13
14
|
* Early design note: [DMTN-056](https://dmtn-056.lsst.io)
|
|
14
15
|
|
|
@@ -16,3 +17,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
|
|
|
16
17
|
|
|
17
18
|
This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
|
|
18
19
|
Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
|
|
20
|
+
|
|
21
|
+
## Arrow Memory Leaks
|
|
22
|
+
|
|
23
|
+
From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
|
|
24
|
+
If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
|
|
25
|
+
For EUPS users this variable is automatically set.
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/cli/utils.py
RENAMED
|
@@ -74,6 +74,7 @@ from typing import TYPE_CHECKING, Any, cast
|
|
|
74
74
|
from unittest.mock import patch
|
|
75
75
|
|
|
76
76
|
import click
|
|
77
|
+
import click.core
|
|
77
78
|
import click.exceptions
|
|
78
79
|
import click.testing
|
|
79
80
|
import yaml
|
|
@@ -95,6 +96,11 @@ if _click_version >= Version("8.2.0"):
|
|
|
95
96
|
else:
|
|
96
97
|
_click_make_metavar_has_context = False
|
|
97
98
|
|
|
99
|
+
# Starting from Click 8.3.0, a special `UNSET` sentinel value is used to
|
|
100
|
+
# indicate the absence of a default value for a parameter. Prior to 8.3.0,
|
|
101
|
+
# they just used `None`.
|
|
102
|
+
_CLICK_UNSET_SENTINEL = getattr(click.core, "UNSET", None)
|
|
103
|
+
|
|
98
104
|
log = logging.getLogger(__name__)
|
|
99
105
|
|
|
100
106
|
# This is used as the metavar argument to Options that accept multiple string
|
|
@@ -554,7 +560,7 @@ def split_kv(
|
|
|
554
560
|
|
|
555
561
|
if add_to_default:
|
|
556
562
|
default = param.get_default(context)
|
|
557
|
-
if default:
|
|
563
|
+
if default and default != _CLICK_UNSET_SENTINEL:
|
|
558
564
|
vals = tuple(v for v in itertools.chain(default, vals)) # Convert to tuple for mypy
|
|
559
565
|
|
|
560
566
|
ret: RetDict | RetTuple
|
|
@@ -1013,7 +1019,8 @@ class MWCommand(click.Command):
|
|
|
1013
1019
|
captured_args.append(val)
|
|
1014
1020
|
elif isinstance(param, click.Argument):
|
|
1015
1021
|
param_name = cast(str, param.name)
|
|
1016
|
-
|
|
1022
|
+
opt = opts[param_name]
|
|
1023
|
+
if opt is not None and opt != _CLICK_UNSET_SENTINEL:
|
|
1017
1024
|
captured_args.append(opt)
|
|
1018
1025
|
else:
|
|
1019
1026
|
raise AssertionError("All parameters should be an Option or an Argument")
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/column_spec.py
RENAMED
|
@@ -52,7 +52,6 @@ from typing import (
|
|
|
52
52
|
Any,
|
|
53
53
|
ClassVar,
|
|
54
54
|
Literal,
|
|
55
|
-
Optional,
|
|
56
55
|
TypeAlias,
|
|
57
56
|
Union,
|
|
58
57
|
final,
|
|
@@ -254,7 +253,7 @@ class _BaseColumnSpec(pydantic.BaseModel, ABC):
|
|
|
254
253
|
"""
|
|
255
254
|
base = self._get_base_annotated_type()
|
|
256
255
|
if self.nullable:
|
|
257
|
-
return
|
|
256
|
+
return base | None
|
|
258
257
|
return base
|
|
259
258
|
|
|
260
259
|
@abstractmethod
|
|
@@ -32,6 +32,7 @@ from __future__ import annotations
|
|
|
32
32
|
__all__ = ["ArrowTableDelegate"]
|
|
33
33
|
|
|
34
34
|
from collections.abc import Mapping
|
|
35
|
+
from fnmatch import fnmatchcase
|
|
35
36
|
from typing import TYPE_CHECKING, Any
|
|
36
37
|
|
|
37
38
|
import pyarrow as pa
|
|
@@ -162,28 +163,33 @@ class ArrowTableDelegate(StorageClassDelegate):
|
|
|
162
163
|
parameters["columns"],
|
|
163
164
|
stringify=False,
|
|
164
165
|
)
|
|
166
|
+
# Ensure uniqueness, keeping order.
|
|
167
|
+
readColumns = list(dict.fromkeys(readColumns))
|
|
165
168
|
else:
|
|
166
|
-
|
|
169
|
+
readColumnsIn = list(dict.fromkeys(ensure_iterable(parameters["columns"])))
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
if typeString == "pandas":
|
|
172
|
+
# Exclude index columns from the subset.
|
|
173
|
+
readColumnsIn = [
|
|
174
|
+
name for name in readColumnsIn if name not in inMemoryDataset.index.names
|
|
175
|
+
]
|
|
176
|
+
|
|
177
|
+
readColumnsDict = {}
|
|
178
|
+
for column in readColumnsIn:
|
|
169
179
|
if not isinstance(column, str):
|
|
170
180
|
raise NotImplementedError(
|
|
171
181
|
f"InMemoryDataset of a {get_full_type_name(inMemoryDataset)} only "
|
|
172
182
|
"supports string column names."
|
|
173
183
|
)
|
|
174
|
-
|
|
184
|
+
found = False
|
|
185
|
+
for allColumn in allColumns:
|
|
186
|
+
if fnmatchcase(allColumn, column):
|
|
187
|
+
found = True
|
|
188
|
+
readColumnsDict[allColumn] = True
|
|
189
|
+
if not found:
|
|
175
190
|
raise ValueError(f"Unrecognized column name {column!r}.")
|
|
176
191
|
|
|
177
|
-
|
|
178
|
-
# Exclude index columns from the subset.
|
|
179
|
-
readColumns = [
|
|
180
|
-
name
|
|
181
|
-
for name in ensure_iterable(parameters["columns"])
|
|
182
|
-
if name not in inMemoryDataset.index.names
|
|
183
|
-
]
|
|
184
|
-
|
|
185
|
-
# Ensure uniqueness, keeping order.
|
|
186
|
-
readColumns = list(dict.fromkeys(readColumns))
|
|
192
|
+
readColumns = list(readColumnsDict.keys())
|
|
187
193
|
|
|
188
194
|
if typeString == "arrow":
|
|
189
195
|
return inMemoryDataset.select(readColumns)
|
|
@@ -54,6 +54,7 @@ import json
|
|
|
54
54
|
import logging
|
|
55
55
|
import re
|
|
56
56
|
from collections.abc import Iterable, Sequence
|
|
57
|
+
from fnmatch import fnmatchcase
|
|
57
58
|
from typing import TYPE_CHECKING, Any, cast
|
|
58
59
|
|
|
59
60
|
import pyarrow as pa
|
|
@@ -154,14 +155,23 @@ class ParquetFormatter(FormatterV2):
|
|
|
154
155
|
|
|
155
156
|
if not has_pandas_multi_index:
|
|
156
157
|
# Ensure uniqueness, keeping order.
|
|
157
|
-
|
|
158
|
+
par_columns_in = list(dict.fromkeys(ensure_iterable(par_columns)))
|
|
158
159
|
file_columns = [name for name in schema.names if not name.startswith("__")]
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
# Do case-sensitive glob-style matching, again ensuring
|
|
162
|
+
# uniqueness and ordering.
|
|
163
|
+
par_columns = {}
|
|
164
|
+
for par_column in par_columns_in:
|
|
165
|
+
found = False
|
|
166
|
+
for file_column in file_columns:
|
|
167
|
+
if fnmatchcase(file_column, par_column):
|
|
168
|
+
found = True
|
|
169
|
+
par_columns[file_column] = True
|
|
170
|
+
if not found:
|
|
162
171
|
raise ValueError(
|
|
163
172
|
f"Column {par_column} specified in parameters not available in parquet file."
|
|
164
173
|
)
|
|
174
|
+
par_columns = list(par_columns.keys())
|
|
165
175
|
else:
|
|
166
176
|
par_columns = _standardize_multi_index_columns(
|
|
167
177
|
arrow_schema_to_pandas_index(schema),
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/logging.py
RENAMED
|
@@ -36,7 +36,7 @@ from collections.abc import Callable, Generator, Iterable, Iterator
|
|
|
36
36
|
from contextlib import contextmanager
|
|
37
37
|
from logging import Formatter, LogRecord, StreamHandler
|
|
38
38
|
from types import TracebackType
|
|
39
|
-
from typing import IO, Any, ClassVar, overload
|
|
39
|
+
from typing import IO, Any, ClassVar, Literal, overload
|
|
40
40
|
|
|
41
41
|
from pydantic import BaseModel, ConfigDict, PrivateAttr, RootModel
|
|
42
42
|
|
|
@@ -174,7 +174,7 @@ class ButlerMDC:
|
|
|
174
174
|
lno: int,
|
|
175
175
|
msg: str,
|
|
176
176
|
args: tuple,
|
|
177
|
-
exc_info: tuple | None,
|
|
177
|
+
exc_info: tuple | None | Literal[False],
|
|
178
178
|
func: str | None = None,
|
|
179
179
|
sinfo: TracebackType | None = None,
|
|
180
180
|
**kwargs: Any,
|
|
@@ -182,7 +182,7 @@ class ButlerMDC:
|
|
|
182
182
|
record = old_factory(name, level, fn, lno, msg, args, exc_info, func, sinfo, **kwargs)
|
|
183
183
|
# Make sure we send a copy of the global dict in the record.
|
|
184
184
|
mdc = MDCDict(cls._MDC)
|
|
185
|
-
if exc_info is not None:
|
|
185
|
+
if exc_info is not None and exc_info is not False:
|
|
186
186
|
_, ex, _ = exc_info
|
|
187
187
|
# TODO: this doesn't handle chained exceptions, fix on DM-47546
|
|
188
188
|
if hasattr(ex, "mdc"):
|
|
@@ -29,6 +29,8 @@ from typing import Annotated
|
|
|
29
29
|
|
|
30
30
|
from fastapi import Depends, Header, HTTPException
|
|
31
31
|
from safir.dependencies.gafaelfawr import auth_delegated_token_dependency
|
|
32
|
+
from safir.dependencies.logger import logger_dependency as safir_logger_dependency
|
|
33
|
+
from structlog.stdlib import BoundLogger
|
|
32
34
|
|
|
33
35
|
from lsst.daf.butler import LabeledButlerFactory
|
|
34
36
|
|
|
@@ -117,6 +119,31 @@ async def repository_authorization_dependency(
|
|
|
117
119
|
)
|
|
118
120
|
|
|
119
121
|
|
|
122
|
+
async def logger_dependency(
|
|
123
|
+
logger: Annotated[BoundLogger, Depends(safir_logger_dependency)],
|
|
124
|
+
repository: str,
|
|
125
|
+
user_name: Annotated[str | None, Depends(user_name_dependency)],
|
|
126
|
+
x_auth_request_service: Annotated[str | None, Header()] = None,
|
|
127
|
+
) -> BoundLogger:
|
|
128
|
+
"""Return a logger with additional bound context information.
|
|
129
|
+
|
|
130
|
+
Parameters
|
|
131
|
+
----------
|
|
132
|
+
logger : `structlog.stdlib.BoundLogger`
|
|
133
|
+
Logger provided by Safir.
|
|
134
|
+
repository : `str`
|
|
135
|
+
Butler repository that is being accessed.
|
|
136
|
+
user_name : `str` or `None`
|
|
137
|
+
Name of the user accessing the repository, from Gafaelfawr headers.
|
|
138
|
+
x_auth_request_service : `str` or `None`
|
|
139
|
+
Name of the service being used to access the repository, from
|
|
140
|
+
Gafaelfawr headers.
|
|
141
|
+
"""
|
|
142
|
+
return logger.bind(
|
|
143
|
+
butler_repo=repository, requester={"username": user_name, "service": x_auth_request_service}
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
120
147
|
async def factory_dependency(
|
|
121
148
|
repository: str,
|
|
122
149
|
butler_factory: Annotated[LabeledButlerFactory, Depends(butler_factory_dependency)],
|
|
@@ -30,10 +30,11 @@ from __future__ import annotations
|
|
|
30
30
|
__all__ = ()
|
|
31
31
|
|
|
32
32
|
import uuid
|
|
33
|
-
from typing import Any
|
|
33
|
+
from typing import Annotated, Any
|
|
34
34
|
|
|
35
35
|
from fastapi import APIRouter, Depends, HTTPException, Request
|
|
36
36
|
from fastapi.responses import RedirectResponse
|
|
37
|
+
from structlog.stdlib import BoundLogger
|
|
37
38
|
|
|
38
39
|
from ...._butler import Butler
|
|
39
40
|
from ...._collection_type import CollectionType
|
|
@@ -64,7 +65,7 @@ from ...server_models import (
|
|
|
64
65
|
QueryDatasetTypesResponseModel,
|
|
65
66
|
)
|
|
66
67
|
from .._config import load_config
|
|
67
|
-
from .._dependencies import factory_dependency
|
|
68
|
+
from .._dependencies import factory_dependency, logger_dependency
|
|
68
69
|
from .._factory import Factory
|
|
69
70
|
from ._file_info import get_file_info_payload
|
|
70
71
|
from ._utils import generate_file_download_uri, set_default_data_id
|
|
@@ -184,12 +185,14 @@ def expand_data_id(
|
|
|
184
185
|
)
|
|
185
186
|
def get_file(
|
|
186
187
|
dataset_id: uuid.UUID,
|
|
188
|
+
logger: Annotated[BoundLogger, Depends(logger_dependency)],
|
|
187
189
|
factory: Factory = Depends(factory_dependency),
|
|
188
190
|
) -> GetFileResponseModel:
|
|
189
191
|
butler = factory.create_butler()
|
|
190
192
|
ref = butler.get_dataset(dataset_id, datastore_records=True)
|
|
191
193
|
if ref is None:
|
|
192
194
|
raise DatasetNotFoundError(f"Dataset ID {dataset_id} not found")
|
|
195
|
+
_log_file_access(logger, ref, "uuid")
|
|
193
196
|
return _get_file_info_response(butler, ref)
|
|
194
197
|
|
|
195
198
|
|
|
@@ -200,6 +203,7 @@ def get_file(
|
|
|
200
203
|
)
|
|
201
204
|
def get_file_by_data_id(
|
|
202
205
|
request: GetFileByDataIdRequestModel,
|
|
206
|
+
logger: Annotated[BoundLogger, Depends(logger_dependency)],
|
|
203
207
|
factory: Factory = Depends(factory_dependency),
|
|
204
208
|
) -> GetFileResponseModel:
|
|
205
209
|
butler = factory.create_butler()
|
|
@@ -211,6 +215,7 @@ def get_file_by_data_id(
|
|
|
211
215
|
datastore_records=True,
|
|
212
216
|
timespan=request.timespan,
|
|
213
217
|
)
|
|
218
|
+
_log_file_access(logger, ref, "data-id")
|
|
214
219
|
return _get_file_info_response(butler, ref)
|
|
215
220
|
|
|
216
221
|
|
|
@@ -220,12 +225,21 @@ def _get_file_info_response(butler: Butler, ref: DatasetRef) -> GetFileResponseM
|
|
|
220
225
|
)
|
|
221
226
|
|
|
222
227
|
|
|
228
|
+
def _log_file_access(logger: BoundLogger, ref: DatasetRef, access_method: str) -> None:
|
|
229
|
+
logger.info(
|
|
230
|
+
"file-access",
|
|
231
|
+
dataset={"uuid": str(ref.id), "type": ref.datasetType.name, "data_id": dict(ref.dataId.required)},
|
|
232
|
+
file_access_endpoint=access_method,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
|
|
223
236
|
@external_router.get(
|
|
224
237
|
"/v1/dataset/{dataset_id}/download",
|
|
225
238
|
summary="Return an HTTP redirect to a location where you can download the artifact file for the dataset.",
|
|
226
239
|
)
|
|
227
240
|
def redirect_to_dataset_download(
|
|
228
241
|
dataset_id: uuid.UUID,
|
|
242
|
+
logger: Annotated[BoundLogger, Depends(logger_dependency)],
|
|
229
243
|
component: str | None = None,
|
|
230
244
|
factory: Factory = Depends(factory_dependency),
|
|
231
245
|
) -> RedirectResponse:
|
|
@@ -245,6 +259,7 @@ def redirect_to_dataset_download(
|
|
|
245
259
|
# files, and you must specify the component to pick which one you want
|
|
246
260
|
# to download.
|
|
247
261
|
if info.datastoreRecords.component == component:
|
|
262
|
+
_log_file_access(logger, ref, "uuid-redirect")
|
|
248
263
|
return RedirectResponse(status_code=307, url=str(info.url))
|
|
249
264
|
|
|
250
265
|
found_components = [info.datastoreRecords.component for info in payload.file_info]
|
|
@@ -55,7 +55,7 @@ from astropy.time import Time
|
|
|
55
55
|
from astropy.wcs import WCS
|
|
56
56
|
from matplotlib import pyplot
|
|
57
57
|
|
|
58
|
-
import lsst.daf.butler #
|
|
58
|
+
import lsst.daf.butler # register Time/YAML conversions. # noqa: F401
|
|
59
59
|
from lsst.sphgeom import (
|
|
60
60
|
ConvexPolygon,
|
|
61
61
|
HealpixPixelization,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-daf-butler
|
|
3
|
-
Version: 29.2025.
|
|
3
|
+
Version: 29.2025.3900
|
|
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
|
|
@@ -63,7 +63,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
|
|
|
63
63
|
|
|
64
64
|
This is a **Python 3 only** package (we assume Python 3.11 or higher).
|
|
65
65
|
|
|
66
|
-
* SPIE
|
|
66
|
+
* SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
|
|
67
|
+
* SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
|
|
67
68
|
* ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
|
|
68
69
|
* Early design note: [DMTN-056](https://dmtn-056.lsst.io)
|
|
69
70
|
|
|
@@ -71,3 +72,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
|
|
|
71
72
|
|
|
72
73
|
This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
|
|
73
74
|
Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
|
|
75
|
+
|
|
76
|
+
## Arrow Memory Leaks
|
|
77
|
+
|
|
78
|
+
From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
|
|
79
|
+
If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
|
|
80
|
+
For EUPS users this variable is automatically set.
|
|
@@ -118,8 +118,13 @@ class LoggingTestCase(unittest.TestCase):
|
|
|
118
118
|
self.log.warning("warning message")
|
|
119
119
|
self.log.critical("critical message")
|
|
120
120
|
self.log.verbose("verbose message")
|
|
121
|
+
self.log.error("error message")
|
|
122
|
+
try:
|
|
123
|
+
raise RuntimeError("An error has occurred")
|
|
124
|
+
except RuntimeError:
|
|
125
|
+
self.log.exception("exception message")
|
|
121
126
|
|
|
122
|
-
self.assertEqual(len(self.handler.records),
|
|
127
|
+
self.assertEqual(len(self.handler.records), 6)
|
|
123
128
|
|
|
124
129
|
format_default = str(self.handler.records)
|
|
125
130
|
|
|
@@ -128,7 +133,7 @@ class LoggingTestCase(unittest.TestCase):
|
|
|
128
133
|
format_override = str(self.handler.records)
|
|
129
134
|
|
|
130
135
|
self.assertNotEqual(format_default, format_override)
|
|
131
|
-
self.assertEqual(format_override, "DEBUG\nWARNING\nCRITICAL\nVERBOSE")
|
|
136
|
+
self.assertEqual(format_override, "DEBUG\nWARNING\nCRITICAL\nVERBOSE\nERROR\nERROR")
|
|
132
137
|
|
|
133
138
|
# Reset the log format and it should match the original text.
|
|
134
139
|
self.handler.records.set_log_format(None)
|
|
@@ -284,11 +289,14 @@ class LoggingTestCase(unittest.TestCase):
|
|
|
284
289
|
self.log.exception("Exception raised:")
|
|
285
290
|
self.log.warning("Implied exception", exc_info=True)
|
|
286
291
|
self.log.critical("Explicit exception", exc_info=e)
|
|
292
|
+
self.log.error("Explicit exception info", exc_info=(Exception, e, e.__traceback__))
|
|
287
293
|
# Is original context used *only* when logging the exception?
|
|
288
294
|
self.log.error("Something went wrong")
|
|
289
|
-
|
|
295
|
+
self.log.error("Boolean disabled exc info", exc_info=False)
|
|
296
|
+
for i in [-6, -5, -4, -3]:
|
|
290
297
|
self.assertEqual(self.handler.records[i].MDC, {"foo": "fum", "answer": "42"})
|
|
291
|
-
|
|
298
|
+
for i in [-2, -1]:
|
|
299
|
+
self.assertEqual(self.handler.records[i].MDC, {"foo": "bar"})
|
|
292
300
|
|
|
293
301
|
self.log.setLevel(logging.INFO)
|
|
294
302
|
self.log.info("Normal log")
|
|
@@ -400,6 +400,10 @@ class ParquetFormatterDataFrameTestCase(unittest.TestCase):
|
|
|
400
400
|
self.assertTrue(df1.loc[:, ["ddd"]].equals(df6))
|
|
401
401
|
df7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
|
|
402
402
|
self.assertTrue(df1.loc[:, ["a"]].equals(df7))
|
|
403
|
+
df8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d*"]})
|
|
404
|
+
self.assertTrue(df1.loc[:, ["ddd", "dtn", "dtu"]].equals(df8))
|
|
405
|
+
df9 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d*", "d*"]})
|
|
406
|
+
self.assertTrue(df1.loc[:, ["ddd", "dtn", "dtu"]].equals(df9))
|
|
403
407
|
# Passing an unrecognized column should be a ValueError.
|
|
404
408
|
with self.assertRaises(ValueError):
|
|
405
409
|
self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
|
|
@@ -989,6 +993,10 @@ class ParquetFormatterArrowAstropyTestCase(unittest.TestCase):
|
|
|
989
993
|
_checkAstropyTableEquality(tab1[("ddd",)], tab6)
|
|
990
994
|
tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
|
|
991
995
|
_checkAstropyTableEquality(tab1[("a",)], tab7)
|
|
996
|
+
tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??"]})
|
|
997
|
+
_checkAstropyTableEquality(tab1[("ddd", "dtn", "dtu")], tab8)
|
|
998
|
+
tab9 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
|
|
999
|
+
_checkAstropyTableEquality(tab1[("ddd", "dtn", "dtu", "a")], tab9)
|
|
992
1000
|
# Passing an unrecognized column should be a ValueError.
|
|
993
1001
|
with self.assertRaises(ValueError):
|
|
994
1002
|
self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
|
|
@@ -1401,6 +1409,18 @@ class ParquetFormatterArrowNumpyTestCase(unittest.TestCase):
|
|
|
1401
1409
|
],
|
|
1402
1410
|
tab7,
|
|
1403
1411
|
)
|
|
1412
|
+
tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
|
|
1413
|
+
_checkNumpyTableEquality(
|
|
1414
|
+
tab1[
|
|
1415
|
+
[
|
|
1416
|
+
"ddd",
|
|
1417
|
+
"dtn",
|
|
1418
|
+
"dtu",
|
|
1419
|
+
"a",
|
|
1420
|
+
]
|
|
1421
|
+
],
|
|
1422
|
+
tab8,
|
|
1423
|
+
)
|
|
1404
1424
|
# Passing an unrecognized column should be a ValueError.
|
|
1405
1425
|
with self.assertRaises(ValueError):
|
|
1406
1426
|
self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
|
|
@@ -1673,6 +1693,8 @@ class ParquetFormatterArrowTableTestCase(unittest.TestCase):
|
|
|
1673
1693
|
self.assertEqual(tab6, tab1.select(("ddd",)))
|
|
1674
1694
|
tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
|
|
1675
1695
|
self.assertEqual(tab7, tab1.select(("a",)))
|
|
1696
|
+
tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a*", "d??"]})
|
|
1697
|
+
self.assertEqual(tab8, tab1.select(("a", "ddd", "dtn", "dtu")))
|
|
1676
1698
|
# Passing an unrecognized column should be a ValueError.
|
|
1677
1699
|
with self.assertRaises(ValueError):
|
|
1678
1700
|
self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
|
|
@@ -1984,6 +2006,9 @@ class ParquetFormatterArrowNumpyDictTestCase(unittest.TestCase):
|
|
|
1984
2006
|
tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
|
|
1985
2007
|
subdict = {key: dict1[key] for key in ["a"]}
|
|
1986
2008
|
_checkNumpyDictEquality(subdict, tab7)
|
|
2009
|
+
tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
|
|
2010
|
+
subdict = {key: dict1[key] for key in ["ddd", "dtn", "dtu", "a"]}
|
|
2011
|
+
_checkNumpyDictEquality(subdict, tab8)
|
|
1987
2012
|
# Passing an unrecognized column should be a ValueError.
|
|
1988
2013
|
with self.assertRaises(ValueError):
|
|
1989
2014
|
self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/CHANGES.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/configuring.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/datastores.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/dimensions.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/formatters.rst
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/organizing.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/doc/lsst.daf.butler/queries.rst
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/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.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/__init__.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/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
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_column_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/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.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_location.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_named.py
RENAMED
|
File without changes
|
{lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3900}/python/lsst/daf/butler/_quantum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|