lsst-daf-butler 29.2025.3900__tar.gz → 29.2025.4000__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.
Files changed (452) hide show
  1. {lsst_daf_butler-29.2025.3900/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.4000}/PKG-INFO +2 -3
  2. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/pyproject.toml +2 -3
  3. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_quantum_backed.py +28 -0
  4. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/datastores/formatters.yaml +1 -0
  5. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/storageClasses.yaml +2 -0
  6. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/_datastore.py +18 -0
  7. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/chainedDatastore.py +19 -0
  8. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/fileDatastore.py +18 -0
  9. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +6 -0
  10. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_expression_strings.py +0 -3
  11. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_identifiers.py +1 -5
  12. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_base.py +1 -1
  13. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/utils.py +7 -2
  14. lsst_daf_butler-29.2025.4000/python/lsst/daf/butler/version.py +2 -0
  15. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000/python/lsst_daf_butler.egg-info}/PKG-INFO +2 -3
  16. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_datastore.py +27 -0
  17. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_quantumBackedButler.py +13 -0
  18. lsst_daf_butler-29.2025.3900/python/lsst/daf/butler/version.py +0 -2
  19. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/COPYRIGHT +0 -0
  20. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/LICENSE +0 -0
  21. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/MANIFEST.in +0 -0
  22. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/README.md +0 -0
  23. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/bsd_license.txt +0 -0
  24. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/CHANGES.rst +0 -0
  25. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
  26. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/configuring.rst +0 -0
  27. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/datastores.rst +0 -0
  28. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/dimensions.rst +0 -0
  29. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/formatters.rst +0 -0
  30. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/index.rst +0 -0
  31. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/organizing.rst +0 -0
  32. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/queries.rst +0 -0
  33. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
  34. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
  35. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/gpl-v3.0.txt +0 -0
  36. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/__init__.py +0 -0
  37. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/__init__.py +0 -0
  38. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/__init__.py +0 -0
  39. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler.py +0 -0
  40. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler_collections.py +0 -0
  41. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler_config.py +0 -0
  42. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
  43. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler_metrics.py +0 -0
  44. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
  45. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_collection_type.py +0 -0
  46. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_column_categorization.py +0 -0
  47. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_column_tags.py +0 -0
  48. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_column_type_info.py +0 -0
  49. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_config.py +0 -0
  50. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_config_support.py +0 -0
  51. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_dataset_association.py +0 -0
  52. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_dataset_existence.py +0 -0
  53. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
  54. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_dataset_ref.py +0 -0
  55. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_dataset_type.py +0 -0
  56. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
  57. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_exceptions.py +0 -0
  58. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
  59. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_file_dataset.py +0 -0
  60. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_file_descriptor.py +0 -0
  61. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_formatter.py +0 -0
  62. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
  63. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_limited_butler.py +0 -0
  64. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_location.py +0 -0
  65. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_named.py +0 -0
  66. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_quantum.py +0 -0
  67. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
  68. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_registry_shim.py +0 -0
  69. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
  70. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
  71. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
  72. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_storage_class.py +0 -0
  73. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
  74. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_timespan.py +0 -0
  75. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_topology.py +0 -0
  76. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
  77. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
  78. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
  79. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
  80. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/arrow_utils.py +0 -0
  81. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/__init__.py +0 -0
  82. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/butler.py +0 -0
  83. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/cliLog.py +0 -0
  84. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
  85. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
  86. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
  87. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
  88. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
  89. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
  90. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
  91. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/opt/options.py +0 -0
  92. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/progress.py +0 -0
  93. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/cli/utils.py +0 -0
  94. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/column_spec.py +0 -0
  95. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
  96. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
  97. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
  98. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
  99. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
  100. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
  101. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
  102. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
  103. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
  104. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
  105. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
  106. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
  107. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
  108. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/registry.yaml +0 -0
  109. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
  110. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/__init__.py +0 -0
  111. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
  112. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
  113. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/composites.py +0 -0
  114. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/constraints.py +0 -0
  115. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
  116. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
  117. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/record_data.py +0 -0
  118. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
  119. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/__init__.py +0 -0
  120. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
  121. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
  122. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
  123. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
  124. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/ddl.py +0 -0
  125. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/delegates/__init__.py +0 -0
  126. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
  127. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
  128. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_config.py +0 -0
  129. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
  130. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
  131. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_database.py +0 -0
  132. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
  133. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
  134. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_group.py +0 -0
  135. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
  136. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
  137. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
  138. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_records.py +0 -0
  139. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
  140. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
  141. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
  142. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/construction.py +0 -0
  143. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
  144. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
  145. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
  146. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
  147. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
  148. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
  149. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
  150. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
  151. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
  152. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
  153. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
  154. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
  155. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/__init__.py +0 -0
  156. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
  157. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/file.py +0 -0
  158. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/json.py +0 -0
  159. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/logs.py +0 -0
  160. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
  161. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/packages.py +0 -0
  162. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/parquet.py +0 -0
  163. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/pickle.py +0 -0
  164. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/typeless.py +0 -0
  165. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/formatters/yaml.py +0 -0
  166. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/json.py +0 -0
  167. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/logging.py +0 -0
  168. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/mapping_factory.py +0 -0
  169. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/name_shrinker.py +0 -0
  170. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
  171. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/persistence_context.py +0 -0
  172. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/progress.py +0 -0
  173. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/py.typed +0 -0
  174. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/pydantic_utils.py +0 -0
  175. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/__init__.py +0 -0
  176. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_base.py +0 -0
  177. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
  178. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
  179. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
  180. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
  181. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/_query.py +0 -0
  182. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/convert_args.py +0 -0
  183. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/driver.py +0 -0
  184. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
  185. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/overlaps.py +0 -0
  186. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
  187. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/result_specs.py +0 -0
  188. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
  189. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
  190. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
  191. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
  192. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
  193. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
  194. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
  195. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/queries/visitors.py +0 -0
  196. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/__init__.py +0 -0
  197. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
  198. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
  199. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
  200. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
  201. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_config.py +0 -0
  202. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_defaults.py +0 -0
  203. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
  204. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_registry.py +0 -0
  205. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
  206. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/attributes.py +0 -0
  207. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
  208. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
  209. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
  210. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
  211. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
  212. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
  213. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
  214. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/connectionString.py +0 -0
  215. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
  216. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
  217. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
  218. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
  219. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
  220. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
  221. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
  222. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
  223. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
  224. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
  225. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
  226. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
  227. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
  228. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
  229. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
  230. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
  231. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
  232. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
  233. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
  234. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
  235. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
  236. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
  237. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/managers.py +0 -0
  238. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
  239. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
  240. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
  241. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
  242. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
  243. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
  244. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
  245. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
  246. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
  247. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/opaque.py +0 -0
  248. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
  249. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_builder.py +0 -0
  250. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_query.py +0 -0
  251. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -0
  252. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
  253. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
  254. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
  255. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -0
  256. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
  257. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/_structs.py +0 -0
  258. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
  259. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
  260. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
  261. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
  262. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
  263. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
  264. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
  265. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
  266. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
  267. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
  268. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
  269. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
  270. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
  271. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
  272. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
  273. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
  274. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
  275. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
  276. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
  277. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
  278. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/versions.py +0 -0
  279. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/registry/wildcards.py +0 -0
  280. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
  281. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
  282. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
  283. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
  284. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
  285. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
  286. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
  287. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
  288. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
  289. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
  290. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
  291. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
  292. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
  293. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
  294. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
  295. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
  296. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
  297. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
  298. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
  299. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
  300. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/registry/_query_common.py +0 -0
  301. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/registry/_query_data_coordinates.py +0 -0
  302. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/registry/_query_datasets.py +0 -0
  303. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/registry/_query_dimension_records.py +0 -0
  304. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
  305. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
  306. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
  307. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
  308. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
  309. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
  310. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
  311. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
  312. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
  313. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
  314. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
  315. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
  316. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
  317. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
  318. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
  319. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
  320. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/repo_relocation.py +0 -0
  321. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/__init__.py +0 -0
  322. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/_associate.py +0 -0
  323. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
  324. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/butlerImport.py +0 -0
  325. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
  326. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/collectionChain.py +0 -0
  327. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/configDump.py +0 -0
  328. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/configValidate.py +0 -0
  329. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/createRepo.py +0 -0
  330. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
  331. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/ingest_files.py +0 -0
  332. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
  333. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/queryCollections.py +0 -0
  334. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
  335. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
  336. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
  337. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
  338. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
  339. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/removeCollections.py +0 -0
  340. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
  341. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/removeRuns.py +0 -0
  342. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
  343. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
  344. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/__init__.py +0 -0
  345. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
  346. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
  347. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
  348. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
  349. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
  350. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
  351. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
  352. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
  353. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
  354. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
  355. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
  356. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
  357. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/postgresql.py +0 -0
  358. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
  359. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
  360. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
  361. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
  362. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
  363. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
  364. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/spatial.py +0 -0
  365. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
  366. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/server.py +0 -0
  367. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/server_utils.py +0 -0
  368. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
  369. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/time_utils.py +0 -0
  370. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
  371. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/transfers/__init__.py +0 -0
  372. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/transfers/_context.py +0 -0
  373. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
  374. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
  375. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst/daf/butler/utils.py +0 -0
  376. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
  377. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
  378. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
  379. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
  380. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
  381. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
  382. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/setup.cfg +0 -0
  383. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_astropyTableFormatter.py +0 -0
  384. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_authentication.py +0 -0
  385. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_butler.py +0 -0
  386. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_butler_factory.py +0 -0
  387. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdAssociate.py +0 -0
  388. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdConfigDump.py +0 -0
  389. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdConfigValidate.py +0 -0
  390. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdCreate.py +0 -0
  391. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdImport.py +0 -0
  392. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdIngestFiles.py +0 -0
  393. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdPruneDatasets.py +0 -0
  394. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdQueryCollections.py +0 -0
  395. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdQueryDataIds.py +0 -0
  396. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
  397. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdQueryDatasets.py +0 -0
  398. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
  399. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdRemoveCollections.py +0 -0
  400. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdRemoveRuns.py +0 -0
  401. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
  402. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliLog.py +0 -0
  403. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliPluginLoader.py +0 -0
  404. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliUtilSplitCommas.py +0 -0
  405. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliUtilSplitKv.py +0 -0
  406. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliUtilToUpper.py +0 -0
  407. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_cliUtils.py +0 -0
  408. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_column_spec.py +0 -0
  409. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_composites.py +0 -0
  410. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_config.py +0 -0
  411. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_connectionString.py +0 -0
  412. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_constraints.py +0 -0
  413. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_datasets.py +0 -0
  414. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_ddl.py +0 -0
  415. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_dimension_record_containers.py +0 -0
  416. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_dimensions.py +0 -0
  417. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_exprParserLex.py +0 -0
  418. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_exprParserYacc.py +0 -0
  419. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_expressions.py +0 -0
  420. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_formatter.py +0 -0
  421. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_gafaelfawr.py +0 -0
  422. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_location.py +0 -0
  423. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_logFormatter.py +0 -0
  424. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_logging.py +0 -0
  425. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_matplotlibFormatter.py +0 -0
  426. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_nonempty_mapping.py +0 -0
  427. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_normalFormExpression.py +0 -0
  428. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_obscore.py +0 -0
  429. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_packages.py +0 -0
  430. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_parquet.py +0 -0
  431. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_postgresql.py +0 -0
  432. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_progress.py +0 -0
  433. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_pydantic_utils.py +0 -0
  434. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_quantum.py +0 -0
  435. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_direct_postgresql.py +0 -0
  436. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_direct_sqlite.py +0 -0
  437. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_interface.py +0 -0
  438. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_relations.py +0 -0
  439. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_remote.py +0 -0
  440. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_query_utilities.py +0 -0
  441. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_remote_butler.py +0 -0
  442. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_server.py +0 -0
  443. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_simpleButler.py +0 -0
  444. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_sqlite.py +0 -0
  445. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_storageClass.py +0 -0
  446. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_templates.py +0 -0
  447. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_testRepo.py +0 -0
  448. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_thread_utils.py +0 -0
  449. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_time_utils.py +0 -0
  450. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_timespan.py +0 -0
  451. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_utils.py +0 -0
  452. {lsst_daf_butler-29.2025.3900 → lsst_daf_butler-29.2025.4000}/tests/test_versioning.py +0 -0
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.3900
3
+ Version: 29.2025.4000
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
- License: BSD 3-Clause License
6
+ License-Expression: BSD-3-Clause OR GPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/lsst/daf_butler
8
8
  Keywords: lsst
9
9
  Classifier: Intended Audience :: Science/Research
10
- Classifier: License :: OSI Approved :: BSD License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
13
12
  Classifier: Programming Language :: Python :: 3.12
@@ -6,14 +6,14 @@ build-backend = "setuptools.build_meta"
6
6
  name = "lsst-daf-butler"
7
7
  requires-python = ">=3.11.0"
8
8
  description = "An abstraction layer for reading and writing astronomical data to datastores."
9
- license = {text = "BSD 3-Clause License"}
9
+ license = "BSD-3-Clause OR GPL-3.0-or-later"
10
+ license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
10
11
  readme = "README.md"
11
12
  authors = [
12
13
  {name="Rubin Observatory Data Management", email="dm-admin@lists.lsst.org"},
13
14
  ]
14
15
  classifiers = [
15
16
  "Intended Audience :: Science/Research",
16
- "License :: OSI Approved :: BSD License",
17
17
  "Operating System :: OS Independent",
18
18
  "Programming Language :: Python :: 3",
19
19
  "Programming Language :: Python :: 3.12",
@@ -74,7 +74,6 @@ where = ["python"]
74
74
 
75
75
  [tool.setuptools]
76
76
  zip-safe = true
77
- license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
78
77
 
79
78
  [tool.setuptools.package-data]
80
79
  "lsst.daf.butler" = ["py.typed", "configs/*.yaml", "configs/*/*.yaml", "tests/registry_data/*.yaml"]
@@ -614,6 +614,34 @@ class QuantumBackedButler(LimitedButler):
614
614
  datastore_records=provenance_records,
615
615
  )
616
616
 
617
+ def export_predicted_datastore_records(
618
+ self, refs: Iterable[DatasetRef]
619
+ ) -> dict[str, DatastoreRecordData]:
620
+ """Export datastore records for a set of predicted output dataset
621
+ references.
622
+
623
+ Parameters
624
+ ----------
625
+ refs : `~collections.abc.Iterable` [ `DatasetRef` ]
626
+ Dataset references for which to export datastore records. These
627
+ refs must be known to this butler.
628
+
629
+ Returns
630
+ -------
631
+ records : `dict` [ `str`, `DatastoreRecordData` ]
632
+ Predicted datastore records indexed by datastore name. No attempt
633
+ is made to ensure that the associated datasets exist on disk.
634
+ """
635
+ unknowns = [
636
+ ref
637
+ for ref in refs
638
+ if (ref.id not in self._predicted_outputs and ref.id not in self._predicted_inputs)
639
+ ]
640
+ if unknowns:
641
+ raise ValueError(f"Cannot export datastore records for unknown outputs: {unknowns}")
642
+
643
+ return self._datastore.export_predicted_records(refs)
644
+
617
645
 
618
646
  class QuantumProvenanceData(pydantic.BaseModel):
619
647
  """A serializable struct for per-quantum provenance information and
@@ -95,3 +95,4 @@ RegionTimeInfo: lsst.daf.butler.formatters.json.JsonFormatter
95
95
  QPEnsemble: lsst.meas.pz.qp_formatter.QPFormatter
96
96
  PZModel: lsst.meas.pz.model_formatter.ModelFormatter
97
97
  VisitBackgroundModel: lsst.daf.butler.formatters.json.JsonFormatter
98
+ VignettingCorrection: lsst.ts.observatory.control.utils.extras.vignetting_storage.VignettingCorrectionFormatter
@@ -428,3 +428,5 @@ storageClasses:
428
428
  pytype: rail.core.model.Model
429
429
  VisitBackgroundModel:
430
430
  pytype: lsst.drp.tasks.fit_visit_background.VisitBackgroundModel
431
+ VignettingCorrection:
432
+ pytype: lsst.ts.observatory.control.utils.extras.vignetting_correction.VignettingCorrection
@@ -1381,6 +1381,24 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
1381
1381
  """
1382
1382
  raise NotImplementedError()
1383
1383
 
1384
+ def export_predicted_records(self, refs: Iterable[DatasetRef]) -> dict[str, DatastoreRecordData]:
1385
+ """Export predicted datastore records and locations to an in-memory
1386
+ data structure.
1387
+
1388
+ Parameters
1389
+ ----------
1390
+ refs : `~collections.abc.Iterable` [ `DatasetRef` ]
1391
+ Datastore records that would be used if the given refs were to
1392
+ exist in this datastore. No attempt is made to determine if these
1393
+ datasets actually exist.
1394
+
1395
+ Returns
1396
+ -------
1397
+ data : `~collections.abc.Mapping` [ `str`, `DatastoreRecordData` ]
1398
+ Exported datastore records indexed by datastore name.
1399
+ """
1400
+ raise NotImplementedError()
1401
+
1384
1402
  def set_retrieve_dataset_type_method(self, method: Callable[[str], DatasetType | None] | None) -> None:
1385
1403
  """Specify a method that can be used by datastore to retrieve
1386
1404
  registry-defined dataset type.
@@ -1165,6 +1165,25 @@ class ChainedDatastore(Datastore):
1165
1165
 
1166
1166
  return all_records
1167
1167
 
1168
+ def export_predicted_records(self, refs: Iterable[DatasetRef]) -> dict[str, DatastoreRecordData]:
1169
+ # Docstring inherited from the base class.
1170
+
1171
+ all_records: dict[str, DatastoreRecordData] = {}
1172
+
1173
+ # Filter out datasets that this datastore is not allowed to contain.
1174
+ refs = [ref for ref in refs if self.constraints.isAcceptable(ref)]
1175
+
1176
+ # Merge all sub-datastore records into one structure
1177
+ for datastore in self.datastores:
1178
+ sub_records = datastore.export_predicted_records(refs)
1179
+ for name, record_data in sub_records.items():
1180
+ # All datastore names must be unique in a chain.
1181
+ if name in all_records:
1182
+ raise ValueError("Non-unique datastore name found in datastore {datastore}")
1183
+ all_records[name] = record_data
1184
+
1185
+ return all_records
1186
+
1168
1187
  def export(
1169
1188
  self,
1170
1189
  refs: Iterable[DatasetRef],
@@ -3188,6 +3188,24 @@ class FileDatastore(GenericBaseDatastore[StoredFileInfo]):
3188
3188
  record_data = DatastoreRecordData(records=records)
3189
3189
  return {self.name: record_data}
3190
3190
 
3191
+ def export_predicted_records(self, refs: Iterable[DatasetRef]) -> dict[str, DatastoreRecordData]:
3192
+ # Docstring inherited from the base class.
3193
+ refs = [self._cast_storage_class(ref) for ref in refs]
3194
+ records: dict[DatasetId, dict[str, list[StoredDatastoreItemInfo]]] = {}
3195
+ for ref in refs:
3196
+ if not self.constraints.isAcceptable(ref):
3197
+ continue
3198
+ fileLocations = self._get_expected_dataset_locations_info(ref)
3199
+ if not fileLocations:
3200
+ continue
3201
+ dataset_records = records.setdefault(ref.id, {})
3202
+ dataset_records.setdefault(self._table.name, [])
3203
+ for _, storedFileInfo in fileLocations:
3204
+ dataset_records[self._table.name].append(storedFileInfo)
3205
+
3206
+ record_data = DatastoreRecordData(records=records)
3207
+ return {self.name: record_data}
3208
+
3191
3209
  def set_retrieve_dataset_type_method(self, method: Callable[[str], DatasetType | None] | None) -> None:
3192
3210
  # Docstring inherited from the base class.
3193
3211
  self._retrieve_dataset_method = method
@@ -763,6 +763,12 @@ class InMemoryDatastore(GenericBaseDatastore[StoredMemoryItemInfo]):
763
763
  # In-memory Datastore records cannot be exported or imported
764
764
  return {}
765
765
 
766
+ def export_predicted_records(self, refs: Iterable[DatasetIdRef]) -> dict[str, DatastoreRecordData]:
767
+ # Docstring inherited from the base class.
768
+
769
+ # In-memory Datastore records cannot be exported or imported
770
+ return {}
771
+
766
772
  def get_opaque_table_definitions(self) -> Mapping[str, DatastoreOpaqueTable]:
767
773
  # Docstring inherited from the base class.
768
774
  return {}
@@ -204,8 +204,6 @@ class _ConversionVisitor(TreeVisitor[_VisitorResult]):
204
204
  return result
205
205
 
206
206
  def visitIdentifier(self, name: str, node: Node) -> _VisitorResult:
207
- name = name.lower()
208
-
209
207
  if name in self.context.bind:
210
208
  value = self.context.bind[name]
211
209
  # Lists of values do not have a direct representation in the new
@@ -242,7 +240,6 @@ class _ConversionVisitor(TreeVisitor[_VisitorResult]):
242
240
  return _ColExpr(column_expression)
243
241
 
244
242
  def visitBind(self, name: str, node: Node) -> _VisitorResult:
245
- name = name.lower()
246
243
  if name not in self.context.bind:
247
244
  raise InvalidQueryError("Name {name!r} is not in the bind map.")
248
245
  # Logic in visitIdentifier handles binds.
@@ -71,8 +71,7 @@ class IdentifierContext: # numpydoc ignore=PR01
71
71
  if bind is None:
72
72
  self.bind = {}
73
73
  else:
74
- # Make bind names case-insensitive.
75
- self.bind = {k.lower(): v for k, v in bind.items()}
74
+ self.bind = dict(bind)
76
75
  if len(self.bind.keys()) != len(bind.keys()):
77
76
  raise ValueError(f"Duplicate keys present in bind: {bind.keys()}")
78
77
 
@@ -96,9 +95,6 @@ def interpret_identifier(context: IdentifierContext, identifier: str) -> ColumnE
96
95
  dimensions = context.dimensions
97
96
  datasets = context.datasets
98
97
  bind = context.bind
99
- # Make identifiers case-insensitive.
100
- identifier = identifier.lower()
101
-
102
98
  if identifier in bind:
103
99
  return make_column_literal(bind[identifier])
104
100
  terms = identifier.split(".")
@@ -110,7 +110,7 @@ def is_dataset_field(s: str) -> TypeGuard[DatasetFieldName]:
110
110
  class QueryTreeBase(pydantic.BaseModel):
111
111
  """Base class for all non-primitive types in a query tree."""
112
112
 
113
- model_config = pydantic.ConfigDict(frozen=True, extra="forbid", strict=True)
113
+ model_config = pydantic.ConfigDict(frozen=True, strict=True)
114
114
 
115
115
 
116
116
  class ColumnExpressionBase(QueryTreeBase, ABC):
@@ -46,6 +46,7 @@ from lsst.resources import ResourcePathExpression
46
46
  from .. import Butler, ButlerConfig, Config, DatasetRef, StorageClassFactory, Timespan
47
47
  from .._collection_type import CollectionType
48
48
  from ..datastore import NullDatastore
49
+ from ..dimensions import DimensionConfig
49
50
  from ..direct_butler import DirectButler
50
51
  from ..registry.sql_registry import RegistryConfig, SqlRegistry
51
52
  from ..tests import MetricsExample, addDatasetType
@@ -130,7 +131,9 @@ def safeTestTempDir(default_base: str) -> Iterator[str]:
130
131
 
131
132
 
132
133
  def create_populated_sqlite_registry(
133
- *args: ResourcePathExpression, registry_config: RegistryConfig | None = None
134
+ *args: ResourcePathExpression,
135
+ registry_config: RegistryConfig | None = None,
136
+ dimension_config: DimensionConfig | None = None,
134
137
  ) -> Butler:
135
138
  """Create an in-memory registry-only sqlite butler and populate it.
136
139
 
@@ -141,6 +144,8 @@ def create_populated_sqlite_registry(
141
144
  registry_config : ``RegistryConfig``, optional
142
145
  Registry configuration to use as the basis for the Butler
143
146
  configuration.
147
+ dimension_config : ``DimensionConfig``, optional
148
+ Dimension universe configuration.
144
149
 
145
150
  Returns
146
151
  -------
@@ -151,7 +156,7 @@ def create_populated_sqlite_registry(
151
156
  if registry_config is not None:
152
157
  config["registry"] = registry_config
153
158
  config[".registry.db"] = "sqlite://"
154
- registry = SqlRegistry.createFromConfig(config["registry"])
159
+ registry = SqlRegistry.createFromConfig(config["registry"], dimension_config)
155
160
  butler = DirectButler(
156
161
  config=config,
157
162
  registry=registry,
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "29.2025.4000"
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.3900
3
+ Version: 29.2025.4000
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
- License: BSD 3-Clause License
6
+ License-Expression: BSD-3-Clause OR GPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/lsst/daf_butler
8
8
  Keywords: lsst
9
9
  Classifier: Intended Audience :: Science/Research
10
- Classifier: License :: OSI Approved :: BSD License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
13
12
  Classifier: Programming Language :: Python :: 3.12
@@ -988,6 +988,30 @@ class DatastoreTests(DatastoreTestsBase):
988
988
  data = datastore2.get(refs[2])
989
989
  self.assertIsNotNone(data)
990
990
 
991
+ def testExportPredictedRecords(self):
992
+ if self.isEphemeral:
993
+ raise unittest.SkipTest("in-memory datastore does not support record export/import")
994
+ sc = self.storageClassFactory.getStorageClass("ThingOne")
995
+ dimensions = self.universe.conform(("visit", "physical_filter"))
996
+ dataId = {
997
+ "instrument": "dummy",
998
+ "visit": 52,
999
+ "physical_filter": "V",
1000
+ "band": "v",
1001
+ "day_obs": 20250101,
1002
+ }
1003
+ ref = self.makeDatasetRef("metric", dimensions, sc, dataId)
1004
+
1005
+ datastore = self.makeDatastore("test_datastore")
1006
+ names = {n for n in datastore.names if not n.startswith("InMemory")}
1007
+ records = datastore.export_predicted_records([ref])
1008
+
1009
+ # Expect predicted records from all datastores.
1010
+ self.assertEqual(set(records.keys()), names)
1011
+
1012
+ for record_data in records.values():
1013
+ self.assertEqual(len(record_data.records), 1)
1014
+
991
1015
  def testExport(self) -> None:
992
1016
  datastore, refs = self._populate_export_datastore("test_datastore")
993
1017
 
@@ -1414,6 +1438,7 @@ class ChainedDatastoreMemoryTestCase(InMemoryDatastoreTestCase):
1414
1438
 
1415
1439
  configFile = os.path.join(TESTDIR, "config/basic/chainedDatastore2.yaml")
1416
1440
  validationCanFail = False
1441
+ isEphemeral = True
1417
1442
 
1418
1443
 
1419
1444
  class DatastoreConstraintsTests(DatastoreTestsBase):
@@ -2124,6 +2149,8 @@ class NullDatastoreTestCase(DatasetTestHelper, unittest.TestCase):
2124
2149
  null.import_records({})
2125
2150
  with self.assertRaises(NotImplementedError):
2126
2151
  null.export_records([])
2152
+ with self.assertRaises(NotImplementedError):
2153
+ null.export_predicted_records([])
2127
2154
  with self.assertRaises(NotImplementedError):
2128
2155
  null.export([ref])
2129
2156
  with self.assertRaises(NotImplementedError):
@@ -416,6 +416,19 @@ class QuantumBackedButlerTestCase(unittest.TestCase):
416
416
  for dataset_data in datastore_records.records[class_name].values():
417
417
  self.assertEqual(set(dataset_data), {table_name})
418
418
 
419
+ def test_export_predicted_datastore_records(self) -> None:
420
+ """Test for export_predicted_datastore_records method"""
421
+ quantum = self.make_quantum()
422
+ qbb = QuantumBackedButler.initialize(
423
+ config=self.config, quantum=quantum, dimensions=self.universe, dataset_types=self.dataset_types
424
+ )
425
+
426
+ records = qbb.export_predicted_datastore_records(self.output_refs)
427
+ self.assertEqual(len(records["FileDatastore@<butlerRoot>/datastore"].records), len(self.output_refs))
428
+
429
+ with self.assertRaises(ValueError):
430
+ qbb.export_predicted_datastore_records(self.missing_refs)
431
+
419
432
  def test_collect_and_transfer(self) -> None:
420
433
  """Test for collect_and_transfer method"""
421
434
  quantum1 = self.make_quantum(1)
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "29.2025.3900"