lsst-daf-butler 29.2025.4000__tar.gz → 29.2025.4100__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.4000/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.4100}/PKG-INFO +1 -1
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_ref.py +10 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_type.py +2 -2
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_registry_shim.py +9 -96
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_rubin/__init__.py +3 -0
- lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/_uuid.py +79 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_coordinate.py +3 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_elements.py +3 -2
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_records.py +3 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_driver.py +5 -1
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_query.py +4 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +8 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_query_tree.py +5 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_registry.py +6 -3
- lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/registry/_registry_base.py +265 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/dimensions/static.py +0 -120
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -40
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/__init__.py +0 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -65
- {lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/remote_butler/registry → lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/registry/queries}/_query_common.py +73 -31
- {lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/remote_butler/registry → lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/registry/queries}/_query_data_coordinates.py +51 -14
- {lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/remote_butler/registry → lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/registry/queries}/_query_datasets.py +8 -11
- {lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/remote_butler/registry → lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/registry/queries}/_query_dimension_records.py +7 -8
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_results.py +2 -316
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +1 -147
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/sql_registry.py +1 -606
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/tests/_registry.py +109 -451
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_registry.py +3 -219
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +3 -94
- lsst_daf_butler-29.2025.4100/python/lsst/daf/butler/version.py +2 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -1
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/SOURCES.txt +7 -8
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_postgresql.py +6 -3
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_remote_butler.py +0 -26
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_sqlite.py +0 -6
- lsst_daf_butler-29.2025.4100/tests/test_uuid.py +53 -0
- lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/registry/queries/_builder.py +0 -276
- lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/registry/queries/_query.py +0 -1087
- lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/registry/queries/_structs.py +0 -525
- lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/version.py +0 -2
- lsst_daf_butler-29.2025.4000/tests/test_query_relations.py +0 -361
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/COPYRIGHT +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/LICENSE +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/MANIFEST.in +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/README.md +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/bsd_license.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/CHANGES.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/configuring.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/datastores.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/dimensions.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/formatters.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/index.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/organizing.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/queries.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/gpl-v3.0.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/pyproject.toml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler_metrics.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_collection_type.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_column_categorization.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_column_tags.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_column_type_info.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_config_support.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_association.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_existence.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_file_dataset.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_file_descriptor.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_formatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_limited_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_location.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_named.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_quantum.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_quantum_backed.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_storage_class.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_timespan.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_topology.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/arrow_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/cliLog.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/opt/options.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/progress.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/cli/utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/column_spec.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/registry.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/composites.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/constraints.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/record_data.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/ddl.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/delegates/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_database.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_group.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/construction.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/file.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/json.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/logs.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/packages.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/parquet.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/pickle.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/typeless.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/formatters/yaml.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/json.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/logging.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/mapping_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/name_shrinker.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/persistence_context.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/progress.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/py.typed +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_base.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/convert_args.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/driver.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/overlaps.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/result_specs.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/queries/visitors.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/attributes.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/connectionString.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/managers.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/opaque.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/versions.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/registry/wildcards.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/repo_relocation.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/_associate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/butlerImport.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/collectionChain.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/configDump.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/configValidate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/createRepo.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/ingest_files.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/queryCollections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/removeCollections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/removeRuns.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/postgresql.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/spatial.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/server.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/server_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/tests/utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/time_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/transfers/__init__.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/transfers/_context.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/setup.cfg +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_astropyTableFormatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_authentication.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_butler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_butler_factory.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdAssociate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdConfigDump.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdConfigValidate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdCreate.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdImport.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdIngestFiles.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdPruneDatasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdQueryCollections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdQueryDataIds.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdQueryDatasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdRemoveCollections.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdRemoveRuns.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliLog.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliPluginLoader.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliUtilSplitCommas.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliUtilSplitKv.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliUtilToUpper.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_cliUtils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_column_spec.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_composites.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_config.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_connectionString.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_constraints.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_datasets.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_datastore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_ddl.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_dimension_record_containers.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_dimensions.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_exprParserLex.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_exprParserYacc.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_expressions.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_formatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_gafaelfawr.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_location.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_logFormatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_logging.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_matplotlibFormatter.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_nonempty_mapping.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_normalFormExpression.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_obscore.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_packages.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_parquet.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_progress.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_pydantic_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_quantum.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_quantumBackedButler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_query_direct_postgresql.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_query_direct_sqlite.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_query_interface.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_query_remote.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_query_utilities.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_server.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_simpleButler.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_storageClass.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_templates.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_testRepo.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_thread_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_time_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_timespan.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/tests/test_utils.py +0 -0
- {lsst_daf_butler-29.2025.4000 → lsst_daf_butler-29.2025.4100}/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.4100
|
|
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-29.2025.4000 → lsst_daf_butler-29.2025.4100}/python/lsst/daf/butler/_dataset_ref.py
RENAMED
|
@@ -42,7 +42,7 @@ import enum
|
|
|
42
42
|
import logging
|
|
43
43
|
import sys
|
|
44
44
|
import uuid
|
|
45
|
-
from collections.abc import Iterable, Mapping
|
|
45
|
+
from collections.abc import Callable, Iterable, Mapping
|
|
46
46
|
from typing import (
|
|
47
47
|
TYPE_CHECKING,
|
|
48
48
|
Annotated,
|
|
@@ -52,6 +52,7 @@ from typing import (
|
|
|
52
52
|
Protocol,
|
|
53
53
|
Self,
|
|
54
54
|
TypeAlias,
|
|
55
|
+
cast,
|
|
55
56
|
runtime_checkable,
|
|
56
57
|
)
|
|
57
58
|
|
|
@@ -63,6 +64,7 @@ from lsst.utils.classes import immutable
|
|
|
63
64
|
from ._config_support import LookupKey
|
|
64
65
|
from ._dataset_type import DatasetType, SerializedDatasetType
|
|
65
66
|
from ._named import NamedKeyDict
|
|
67
|
+
from ._uuid import generate_uuidv7
|
|
66
68
|
from .datastore.stored_file_info import StoredDatastoreItemInfo
|
|
67
69
|
from .dimensions import (
|
|
68
70
|
DataCoordinate,
|
|
@@ -181,7 +183,12 @@ class DatasetIdFactory:
|
|
|
181
183
|
Dataset identifier.
|
|
182
184
|
"""
|
|
183
185
|
if idGenerationMode is DatasetIdGenEnum.UNIQUE:
|
|
184
|
-
|
|
186
|
+
# Earlier versions of this code used UUIDv4. However, totally
|
|
187
|
+
# random IDs create problems for Postgres insert performance,
|
|
188
|
+
# because it scatters index updates randomly around the disk.
|
|
189
|
+
# UUIDv7 has similar uniqueness properties to v4, but IDs generated
|
|
190
|
+
# at the same time are close together in the index.
|
|
191
|
+
return generate_uuidv7()
|
|
185
192
|
else:
|
|
186
193
|
# WARNING: If you modify this code make sure that the order of
|
|
187
194
|
# items in the `items` list below never changes.
|
|
@@ -559,7 +566,7 @@ class DatasetRef:
|
|
|
559
566
|
return ref
|
|
560
567
|
|
|
561
568
|
to_json = to_json_pydantic
|
|
562
|
-
from_json: ClassVar = classmethod(from_json_pydantic)
|
|
569
|
+
from_json: ClassVar[Callable[..., Self]] = cast(Callable[..., Self], classmethod(from_json_pydantic))
|
|
563
570
|
|
|
564
571
|
@classmethod
|
|
565
572
|
def _unpickle(
|
|
@@ -33,7 +33,7 @@ import re
|
|
|
33
33
|
from collections.abc import Callable, Iterable, Mapping
|
|
34
34
|
from copy import deepcopy
|
|
35
35
|
from types import MappingProxyType
|
|
36
|
-
from typing import TYPE_CHECKING, Any, ClassVar
|
|
36
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Self, cast
|
|
37
37
|
|
|
38
38
|
from pydantic import BaseModel, StrictBool, StrictStr
|
|
39
39
|
|
|
@@ -756,7 +756,7 @@ class DatasetType:
|
|
|
756
756
|
return newType
|
|
757
757
|
|
|
758
758
|
to_json = to_json_pydantic
|
|
759
|
-
from_json: ClassVar = classmethod(from_json_pydantic)
|
|
759
|
+
from_json: ClassVar[Callable[..., Self]] = cast(Callable[..., Self], classmethod(from_json_pydantic))
|
|
760
760
|
|
|
761
761
|
def __reduce__(
|
|
762
762
|
self,
|
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
|
|
28
28
|
from __future__ import annotations
|
|
29
29
|
|
|
30
|
-
__all__ = ("
|
|
30
|
+
__all__ = ("RegistryShim",)
|
|
31
31
|
|
|
32
32
|
import contextlib
|
|
33
33
|
from collections.abc import Iterable, Iterator, Mapping, Sequence
|
|
34
34
|
from typing import TYPE_CHECKING, Any
|
|
35
35
|
|
|
36
36
|
from ._collection_type import CollectionType
|
|
37
|
-
from ._dataset_association import DatasetAssociation
|
|
38
37
|
from ._dataset_ref import DatasetId, DatasetIdGenEnum, DatasetRef
|
|
39
38
|
from ._dataset_type import DatasetType
|
|
39
|
+
from ._storage_class import StorageClassFactory
|
|
40
40
|
from ._timespan import Timespan
|
|
41
41
|
from .dimensions import (
|
|
42
42
|
DataCoordinate,
|
|
@@ -46,10 +46,9 @@ from .dimensions import (
|
|
|
46
46
|
DimensionRecord,
|
|
47
47
|
DimensionUniverse,
|
|
48
48
|
)
|
|
49
|
-
from .registry import Registry
|
|
50
49
|
from .registry._collection_summary import CollectionSummary
|
|
51
50
|
from .registry._defaults import RegistryDefaults
|
|
52
|
-
from .registry.
|
|
51
|
+
from .registry._registry_base import RegistryBase
|
|
53
52
|
|
|
54
53
|
if TYPE_CHECKING:
|
|
55
54
|
from .direct_butler import DirectButler
|
|
@@ -57,7 +56,7 @@ if TYPE_CHECKING:
|
|
|
57
56
|
from .registry.interfaces import ObsCoreTableManager
|
|
58
57
|
|
|
59
58
|
|
|
60
|
-
class RegistryShim(
|
|
59
|
+
class RegistryShim(RegistryBase):
|
|
61
60
|
"""Implementation of `Registry` interface exposed to clients by `Butler`.
|
|
62
61
|
|
|
63
62
|
Parameters
|
|
@@ -74,7 +73,7 @@ class RegistryShim(Registry):
|
|
|
74
73
|
"""
|
|
75
74
|
|
|
76
75
|
def __init__(self, butler: DirectButler):
|
|
77
|
-
|
|
76
|
+
super().__init__(butler)
|
|
78
77
|
self._registry = butler._registry
|
|
79
78
|
|
|
80
79
|
def isWriteable(self) -> bool:
|
|
@@ -299,97 +298,11 @@ class RegistryShim(Registry):
|
|
|
299
298
|
expression, datasetType, collectionTypes, flattenChains, includeChains
|
|
300
299
|
)
|
|
301
300
|
|
|
302
|
-
def queryDatasets(
|
|
303
|
-
self,
|
|
304
|
-
datasetType: Any,
|
|
305
|
-
*,
|
|
306
|
-
collections: CollectionArgType | None = None,
|
|
307
|
-
dimensions: Iterable[str] | None = None,
|
|
308
|
-
dataId: DataId | None = None,
|
|
309
|
-
where: str = "",
|
|
310
|
-
findFirst: bool = False,
|
|
311
|
-
bind: Mapping[str, Any] | None = None,
|
|
312
|
-
check: bool = True,
|
|
313
|
-
**kwargs: Any,
|
|
314
|
-
) -> DatasetQueryResults:
|
|
315
|
-
# Docstring inherited from a base class.
|
|
316
|
-
return self._registry.queryDatasets(
|
|
317
|
-
datasetType,
|
|
318
|
-
collections=collections,
|
|
319
|
-
dimensions=dimensions,
|
|
320
|
-
dataId=dataId,
|
|
321
|
-
where=where,
|
|
322
|
-
findFirst=findFirst,
|
|
323
|
-
bind=bind,
|
|
324
|
-
check=check,
|
|
325
|
-
**kwargs,
|
|
326
|
-
)
|
|
327
|
-
|
|
328
|
-
def queryDataIds(
|
|
329
|
-
self,
|
|
330
|
-
dimensions: DimensionGroup | Iterable[str] | str,
|
|
331
|
-
*,
|
|
332
|
-
dataId: DataId | None = None,
|
|
333
|
-
datasets: Any = None,
|
|
334
|
-
collections: CollectionArgType | None = None,
|
|
335
|
-
where: str = "",
|
|
336
|
-
bind: Mapping[str, Any] | None = None,
|
|
337
|
-
check: bool = True,
|
|
338
|
-
**kwargs: Any,
|
|
339
|
-
) -> DataCoordinateQueryResults:
|
|
340
|
-
# Docstring inherited from a base class.
|
|
341
|
-
return self._registry.queryDataIds(
|
|
342
|
-
dimensions,
|
|
343
|
-
dataId=dataId,
|
|
344
|
-
datasets=datasets,
|
|
345
|
-
collections=collections,
|
|
346
|
-
where=where,
|
|
347
|
-
bind=bind,
|
|
348
|
-
check=check,
|
|
349
|
-
**kwargs,
|
|
350
|
-
)
|
|
351
|
-
|
|
352
|
-
def queryDimensionRecords(
|
|
353
|
-
self,
|
|
354
|
-
element: DimensionElement | str,
|
|
355
|
-
*,
|
|
356
|
-
dataId: DataId | None = None,
|
|
357
|
-
datasets: Any = None,
|
|
358
|
-
collections: CollectionArgType | None = None,
|
|
359
|
-
where: str = "",
|
|
360
|
-
bind: Mapping[str, Any] | None = None,
|
|
361
|
-
check: bool = True,
|
|
362
|
-
**kwargs: Any,
|
|
363
|
-
) -> DimensionRecordQueryResults:
|
|
364
|
-
# Docstring inherited from a base class.
|
|
365
|
-
return self._registry.queryDimensionRecords(
|
|
366
|
-
element,
|
|
367
|
-
dataId=dataId,
|
|
368
|
-
datasets=datasets,
|
|
369
|
-
collections=collections,
|
|
370
|
-
where=where,
|
|
371
|
-
bind=bind,
|
|
372
|
-
check=check,
|
|
373
|
-
**kwargs,
|
|
374
|
-
)
|
|
375
|
-
|
|
376
|
-
def queryDatasetAssociations(
|
|
377
|
-
self,
|
|
378
|
-
datasetType: str | DatasetType,
|
|
379
|
-
collections: CollectionArgType | None = ...,
|
|
380
|
-
*,
|
|
381
|
-
collectionTypes: Iterable[CollectionType] = CollectionType.all(),
|
|
382
|
-
flattenChains: bool = False,
|
|
383
|
-
) -> Iterator[DatasetAssociation]:
|
|
384
|
-
# Docstring inherited from a base class.
|
|
385
|
-
return self._registry.queryDatasetAssociations(
|
|
386
|
-
datasetType,
|
|
387
|
-
collections,
|
|
388
|
-
collectionTypes=collectionTypes,
|
|
389
|
-
flattenChains=flattenChains,
|
|
390
|
-
)
|
|
391
|
-
|
|
392
301
|
@property
|
|
393
302
|
def obsCoreTableManager(self) -> ObsCoreTableManager | None:
|
|
394
303
|
# Docstring inherited from a base class.
|
|
395
304
|
return self._registry.obsCoreTableManager
|
|
305
|
+
|
|
306
|
+
@property
|
|
307
|
+
def storageClasses(self) -> StorageClassFactory:
|
|
308
|
+
return self._registry.storageClasses
|
|
@@ -0,0 +1,79 @@
|
|
|
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__ = ("generate_uuidv7",)
|
|
31
|
+
|
|
32
|
+
import time
|
|
33
|
+
from uuid import UUID, uuid4
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def generate_uuidv7() -> UUID:
|
|
37
|
+
"""Generate a v7 UUID compliant with IETF RFC-9562.
|
|
38
|
+
|
|
39
|
+
Returns
|
|
40
|
+
-------
|
|
41
|
+
uuid : `uuid.UUID`
|
|
42
|
+
Version 7 UUID.
|
|
43
|
+
"""
|
|
44
|
+
# Python 3.14 will include an implementation of UUIDv7 that can replace
|
|
45
|
+
# this, but at the time of writing 3.14 hasn't been released and we're
|
|
46
|
+
# still supporting 3.12. There are a few libraries on PyPI with an
|
|
47
|
+
# implementation of v7 UUIDs, but none of them look well-maintained.
|
|
48
|
+
#
|
|
49
|
+
# This is the format of a v7 UUID:
|
|
50
|
+
# 0 1 2 3
|
|
51
|
+
# 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
52
|
+
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
53
|
+
# | unix_ts_ms |
|
|
54
|
+
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
55
|
+
# | unix_ts_ms | ver | rand_a |
|
|
56
|
+
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
57
|
+
# |var| rand_b |
|
|
58
|
+
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
59
|
+
# | rand_b |
|
|
60
|
+
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
61
|
+
#
|
|
62
|
+
# It's basically identical to a UUID v4, but with the top 6 bytes
|
|
63
|
+
# replaced with a millisecond UNIX timestamp.
|
|
64
|
+
|
|
65
|
+
# Generate a UUIDv4 for the random portion of the data.
|
|
66
|
+
# A little wasteful, but means we inherit the best practices from
|
|
67
|
+
# the standard library for generating this random data.
|
|
68
|
+
byte_data = bytearray(uuid4().bytes)
|
|
69
|
+
|
|
70
|
+
# Replace high 6 bytes with millisecond UNIX timestamp.
|
|
71
|
+
timestamp = time.time_ns() // 1_000_000
|
|
72
|
+
timestamp_bytes = timestamp.to_bytes(length=6, byteorder="big")
|
|
73
|
+
byte_data[0:6] = timestamp_bytes
|
|
74
|
+
|
|
75
|
+
# Set 4-bit version field to 7.
|
|
76
|
+
byte_data[6] &= 0x0F
|
|
77
|
+
byte_data[6] |= 0x70
|
|
78
|
+
|
|
79
|
+
return UUID(bytes=bytes(byte_data))
|
|
@@ -43,8 +43,8 @@ __all__ = (
|
|
|
43
43
|
|
|
44
44
|
import numbers
|
|
45
45
|
from abc import abstractmethod
|
|
46
|
-
from collections.abc import Iterable, Iterator, Mapping
|
|
47
|
-
from typing import TYPE_CHECKING, Any, ClassVar, TypeAlias, overload
|
|
46
|
+
from collections.abc import Callable, Iterable, Iterator, Mapping
|
|
47
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Self, TypeAlias, cast, overload
|
|
48
48
|
|
|
49
49
|
import pydantic
|
|
50
50
|
|
|
@@ -753,7 +753,7 @@ class DataCoordinate:
|
|
|
753
753
|
return dataId
|
|
754
754
|
|
|
755
755
|
to_json = to_json_pydantic
|
|
756
|
-
from_json: ClassVar = classmethod(from_json_pydantic)
|
|
756
|
+
from_json: ClassVar[Callable[..., Self]] = cast(Callable[..., Self], classmethod(from_json_pydantic))
|
|
757
757
|
|
|
758
758
|
|
|
759
759
|
DataId = DataCoordinate | Mapping[str, Any]
|
|
@@ -34,7 +34,8 @@ __all__ = (
|
|
|
34
34
|
)
|
|
35
35
|
|
|
36
36
|
from abc import abstractmethod
|
|
37
|
-
from
|
|
37
|
+
from collections.abc import Callable
|
|
38
|
+
from typing import TYPE_CHECKING, Annotated, Any, ClassVar, Self, TypeAlias, Union, cast
|
|
38
39
|
|
|
39
40
|
import pydantic
|
|
40
41
|
from pydantic_core import core_schema
|
|
@@ -212,7 +213,7 @@ class DimensionElement(TopologicalRelationshipEndpoint):
|
|
|
212
213
|
return universe[simple]
|
|
213
214
|
|
|
214
215
|
to_json = to_json_generic
|
|
215
|
-
from_json: ClassVar = classmethod(from_json_generic)
|
|
216
|
+
from_json: ClassVar[Callable[..., Self]] = cast(Callable[..., Self], classmethod(from_json_generic))
|
|
216
217
|
|
|
217
218
|
def hasTable(self) -> bool:
|
|
218
219
|
"""Indicate if this element is associated with a table.
|
|
@@ -30,8 +30,8 @@ from __future__ import annotations
|
|
|
30
30
|
__all__ = ("DimensionRecord", "SerializedDimensionRecord", "SerializedKeyValueDimensionRecord")
|
|
31
31
|
|
|
32
32
|
import itertools
|
|
33
|
-
from collections.abc import Hashable
|
|
34
|
-
from typing import TYPE_CHECKING, Any, ClassVar, TypeAlias
|
|
33
|
+
from collections.abc import Callable, Hashable
|
|
34
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Self, TypeAlias, cast
|
|
35
35
|
|
|
36
36
|
import pydantic
|
|
37
37
|
from pydantic import BaseModel, Field, StrictBool, StrictFloat, StrictInt, StrictStr, create_model
|
|
@@ -505,7 +505,7 @@ class DimensionRecord:
|
|
|
505
505
|
return dimRec
|
|
506
506
|
|
|
507
507
|
to_json = to_json_pydantic
|
|
508
|
-
from_json: ClassVar = classmethod(from_json_pydantic)
|
|
508
|
+
from_json: ClassVar[Callable[..., Self]] = cast(Callable[..., Self], classmethod(from_json_pydantic))
|
|
509
509
|
|
|
510
510
|
def toDict(self, splitTimespan: bool = False) -> dict[str, Any]:
|
|
511
511
|
"""Return a vanilla `dict` representation of this record.
|
|
@@ -641,7 +641,11 @@ class DirectQueryDriver(QueryDriver):
|
|
|
641
641
|
# datasets later.
|
|
642
642
|
predicate_constraints = PredicateConstraintsSummary(tree.predicate)
|
|
643
643
|
# Use the default data ID to apply additional constraints where needed.
|
|
644
|
-
predicate_constraints.apply_default_data_id(
|
|
644
|
+
predicate_constraints.apply_default_data_id(
|
|
645
|
+
self._default_data_id,
|
|
646
|
+
tree.dimensions,
|
|
647
|
+
validate_governor_constraints=tree.validateGovernorConstraints,
|
|
648
|
+
)
|
|
645
649
|
predicate = predicate_constraints.predicate
|
|
646
650
|
# Delegate to the dimensions manager to rewrite the predicate and start
|
|
647
651
|
# a SqlSelectBuilder to cover any spatial overlap joins or constraints.
|
|
@@ -746,6 +746,10 @@ class Query(QueryBase):
|
|
|
746
746
|
driver=self._driver,
|
|
747
747
|
)
|
|
748
748
|
|
|
749
|
+
def _skip_governor_validation(self) -> Query:
|
|
750
|
+
tree = self._tree.model_copy(update={"validateGovernorConstraints": False})
|
|
751
|
+
return Query(tree=tree, driver=self._driver)
|
|
752
|
+
|
|
749
753
|
def _join_dataset_search_impl(
|
|
750
754
|
self,
|
|
751
755
|
dataset_type: str | DatasetType,
|
|
@@ -71,7 +71,10 @@ class PredicateConstraintsSummary:
|
|
|
71
71
|
)
|
|
72
72
|
|
|
73
73
|
def apply_default_data_id(
|
|
74
|
-
self,
|
|
74
|
+
self,
|
|
75
|
+
default_data_id: DataCoordinate,
|
|
76
|
+
query_dimensions: DimensionGroup,
|
|
77
|
+
validate_governor_constraints: bool,
|
|
75
78
|
) -> None:
|
|
76
79
|
"""Augment the predicate and summary by adding missing constraints for
|
|
77
80
|
governor dimensions using a default data ID.
|
|
@@ -81,9 +84,11 @@ class PredicateConstraintsSummary:
|
|
|
81
84
|
default_data_id : `DataCoordinate`
|
|
82
85
|
Data ID values that will be used to constrain the query if governor
|
|
83
86
|
dimensions have not already been constrained by the predicate.
|
|
84
|
-
|
|
85
87
|
query_dimensions : `DimensionGroup`
|
|
86
88
|
The set of dimensions returned in result rows from the query.
|
|
89
|
+
validate_governor_constraints : `bool`
|
|
90
|
+
If `True`, enforce the requirement that governor dimensions must be
|
|
91
|
+
constrained if any dimensions that depend on them have constraints.
|
|
87
92
|
"""
|
|
88
93
|
# Find governor dimensions required by the predicate.
|
|
89
94
|
# If these are not constrained by the predicate or the default data ID,
|
|
@@ -108,7 +113,7 @@ class PredicateConstraintsSummary:
|
|
|
108
113
|
self.predicate = self.predicate.logical_and(
|
|
109
114
|
_create_data_id_predicate(governor, data_id_value, query_dimensions.universe)
|
|
110
115
|
)
|
|
111
|
-
elif governor in where_governors:
|
|
116
|
+
elif governor in where_governors and validate_governor_constraints:
|
|
112
117
|
# Check that the predicate doesn't reference any dimensions
|
|
113
118
|
# without constraining their governor dimensions, since
|
|
114
119
|
# that's a particularly easy mistake to make and it's
|
|
@@ -146,6 +146,11 @@ class QueryTree(QueryTreeBase):
|
|
|
146
146
|
predicate: Predicate = Predicate.from_bool(True)
|
|
147
147
|
"""Boolean expression trees whose logical AND defines a row filter."""
|
|
148
148
|
|
|
149
|
+
validateGovernorConstraints: bool = True
|
|
150
|
+
"""If True, enforce the requirement that governor dimensions must be
|
|
151
|
+
constrained if any dimensions that depend on them have constraints.
|
|
152
|
+
"""
|
|
153
|
+
|
|
149
154
|
def iter_all_dataset_searches(self) -> Iterator[tuple[str | AnyDatasetType, DatasetSearch]]:
|
|
150
155
|
yield from self.datasets.items()
|
|
151
156
|
if self.any_dataset is not None:
|
|
@@ -1449,6 +1449,9 @@ class Registry(ABC):
|
|
|
1449
1449
|
"""
|
|
1450
1450
|
return None
|
|
1451
1451
|
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1452
|
+
@property
|
|
1453
|
+
def storageClasses(self) -> StorageClassFactory:
|
|
1454
|
+
"""All storage classes known to the registry
|
|
1455
|
+
(`StorageClassFactory`).
|
|
1456
|
+
"""
|
|
1457
|
+
raise NotImplementedError()
|