lsst-daf-butler 29.2025.4400__tar.gz → 29.2025.4700__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 (455) hide show
  1. {lsst_daf_butler-29.2025.4400/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.4700}/PKG-INFO +1 -2
  2. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/pyproject.toml +1 -2
  3. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/__init__.py +0 -3
  4. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler.py +23 -2
  5. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_dataset_provenance.py +44 -9
  6. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/datastores/formatters.yaml +1 -0
  7. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +8 -21
  8. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/storageClasses.yaml +2 -0
  9. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/delegates/arrowtable.py +3 -1
  10. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_schema.py +2 -24
  11. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_butler/_direct_butler.py +19 -15
  12. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_driver.py +3 -3
  13. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +1 -1
  14. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/logs.py +2 -2
  15. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/logging.py +289 -109
  16. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_expression_strings.py +3 -3
  17. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_general_query_results.py +9 -1
  18. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_query.py +11 -3
  19. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/__init__.py +0 -2
  20. lsst_daf_butler-29.2025.4700/python/lsst/daf/butler/queries/expressions/categorize.py +59 -0
  21. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/result_specs.py +2 -2
  22. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_base.py +3 -0
  23. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_column_set.py +3 -3
  24. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_registry.py +1 -2
  25. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_registry_base.py +1 -2
  26. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/collections/nameKey.py +20 -3
  27. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/collections/synthIntKey.py +20 -6
  28. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +12 -52
  29. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +145 -366
  30. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +17 -12
  31. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/dimensions/static.py +1 -72
  32. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_collections.py +45 -8
  33. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_datasets.py +23 -59
  34. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -42
  35. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_obscore.py +15 -5
  36. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/managers.py +0 -22
  37. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/_manager.py +50 -42
  38. lsst_daf_butler-29.2025.4700/python/lsst/daf/butler/registry/queries/__init__.py +31 -0
  39. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/queries/_query_datasets.py +2 -2
  40. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/sql_registry.py +17 -18
  41. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/tests/_database.py +2 -2
  42. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/tests/_registry.py +110 -3
  43. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_remote_butler.py +14 -1
  44. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +11 -0
  45. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server_models.py +8 -0
  46. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/hybrid_butler.py +4 -1
  47. lsst_daf_butler-29.2025.4700/python/lsst/daf/butler/version.py +2 -0
  48. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -2
  49. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/SOURCES.txt +11 -26
  50. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/requires.txt +0 -1
  51. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_butler.py +6 -2
  52. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_datasets.py +39 -0
  53. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_datastore.py +1 -1
  54. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_dimensions.py +8 -6
  55. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_exprParserLex.py +1 -1
  56. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_exprParserYacc.py +2 -2
  57. lsst_daf_butler-29.2025.4700/tests/test_logFormatter.py +209 -0
  58. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_logging.py +3 -3
  59. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_parquet.py +3 -0
  60. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_versioning.py +1 -1
  61. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/_column_categorization.py +0 -83
  62. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/_column_tags.py +0 -210
  63. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/_column_type_info.py +0 -180
  64. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/__init__.py +0 -36
  65. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -711
  66. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/_query_context.py +0 -474
  67. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/_readers.py +0 -348
  68. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -217
  69. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -555
  70. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -226
  71. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -538
  72. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -339
  73. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -540
  74. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -1186
  75. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -102
  76. lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/version.py +0 -2
  77. lsst_daf_butler-29.2025.4400/tests/test_expressions.py +0 -395
  78. lsst_daf_butler-29.2025.4400/tests/test_logFormatter.py +0 -103
  79. lsst_daf_butler-29.2025.4400/tests/test_normalFormExpression.py +0 -238
  80. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/COPYRIGHT +0 -0
  81. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/LICENSE +0 -0
  82. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/MANIFEST.in +0 -0
  83. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/README.md +0 -0
  84. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/bsd_license.txt +0 -0
  85. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/CHANGES.rst +0 -0
  86. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
  87. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/configuring.rst +0 -0
  88. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/datastores.rst +0 -0
  89. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/dimensions.rst +0 -0
  90. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/formatters.rst +0 -0
  91. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/index.rst +0 -0
  92. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/organizing.rst +0 -0
  93. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/queries.rst +0 -0
  94. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
  95. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
  96. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/gpl-v3.0.txt +0 -0
  97. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/__init__.py +0 -0
  98. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/__init__.py +0 -0
  99. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler_collections.py +0 -0
  100. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler_config.py +0 -0
  101. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
  102. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler_metrics.py +0 -0
  103. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
  104. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_collection_type.py +0 -0
  105. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_config.py +0 -0
  106. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_config_support.py +0 -0
  107. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_dataset_association.py +0 -0
  108. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_dataset_existence.py +0 -0
  109. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_dataset_ref.py +0 -0
  110. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_dataset_type.py +0 -0
  111. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
  112. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_exceptions.py +0 -0
  113. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
  114. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_file_dataset.py +0 -0
  115. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_file_descriptor.py +0 -0
  116. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_formatter.py +0 -0
  117. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
  118. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_limited_butler.py +0 -0
  119. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_location.py +0 -0
  120. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_named.py +0 -0
  121. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_quantum.py +0 -0
  122. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_quantum_backed.py +0 -0
  123. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
  124. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_registry_shim.py +0 -0
  125. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
  126. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
  127. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
  128. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_storage_class.py +0 -0
  129. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
  130. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_timespan.py +0 -0
  131. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_topology.py +0 -0
  132. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
  133. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
  134. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
  135. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
  136. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/_uuid.py +0 -0
  137. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/arrow_utils.py +0 -0
  138. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/__init__.py +0 -0
  139. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/butler.py +0 -0
  140. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/cliLog.py +0 -0
  141. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
  142. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
  143. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
  144. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
  145. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
  146. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
  147. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
  148. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/opt/options.py +0 -0
  149. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/progress.py +0 -0
  150. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/cli/utils.py +0 -0
  151. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/column_spec.py +0 -0
  152. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
  153. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
  154. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
  155. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
  156. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
  157. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
  158. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
  159. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
  160. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
  161. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
  162. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
  163. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
  164. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/registry.yaml +0 -0
  165. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
  166. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/__init__.py +0 -0
  167. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
  168. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
  169. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
  170. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/composites.py +0 -0
  171. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/constraints.py +0 -0
  172. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
  173. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
  174. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/record_data.py +0 -0
  175. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
  176. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/__init__.py +0 -0
  177. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
  178. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
  179. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
  180. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
  181. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
  182. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
  183. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
  184. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/ddl.py +0 -0
  185. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/delegates/__init__.py +0 -0
  186. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
  187. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_config.py +0 -0
  188. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
  189. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
  190. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_database.py +0 -0
  191. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
  192. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
  193. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_group.py +0 -0
  194. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
  195. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
  196. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
  197. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_records.py +0 -0
  198. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
  199. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
  200. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/construction.py +0 -0
  201. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
  202. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
  203. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
  204. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
  205. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
  206. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
  207. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
  208. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
  209. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
  210. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/__init__.py +0 -0
  211. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
  212. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/file.py +0 -0
  213. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/json.py +0 -0
  214. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
  215. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/packages.py +0 -0
  216. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/parquet.py +0 -0
  217. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/pickle.py +0 -0
  218. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/typeless.py +0 -0
  219. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/formatters/yaml.py +0 -0
  220. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/json.py +0 -0
  221. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/mapping_factory.py +0 -0
  222. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/name_shrinker.py +0 -0
  223. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
  224. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/persistence_context.py +0 -0
  225. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/progress.py +0 -0
  226. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/py.typed +0 -0
  227. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/pydantic_utils.py +0 -0
  228. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/__init__.py +0 -0
  229. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_base.py +0 -0
  230. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
  231. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
  232. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
  233. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
  234. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/convert_args.py +0 -0
  235. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/driver.py +0 -0
  236. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
  237. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/__init__.py +0 -0
  238. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/exprTree.py +0 -0
  239. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/parser.py +0 -0
  240. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/parserLex.py +0 -0
  241. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/parserYacc.py +0 -0
  242. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/ply/__init__.py +0 -0
  243. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/ply/lex.py +0 -0
  244. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/ply/yacc.py +0 -0
  245. {lsst_daf_butler-29.2025.4400/python/lsst/daf/butler/registry → lsst_daf_butler-29.2025.4700/python/lsst/daf/butler}/queries/expressions/parser/treeVisitor.py +0 -0
  246. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/overlaps.py +0 -0
  247. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
  248. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
  249. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
  250. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
  251. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
  252. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
  253. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
  254. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/queries/visitors.py +0 -0
  255. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/__init__.py +0 -0
  256. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
  257. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
  258. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
  259. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
  260. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_config.py +0 -0
  261. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_defaults.py +0 -0
  262. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
  263. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
  264. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/attributes.py +0 -0
  265. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
  266. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
  267. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
  268. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
  269. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
  270. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/connectionString.py +0 -0
  271. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
  272. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
  273. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
  274. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
  275. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
  276. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
  277. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
  278. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
  279. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
  280. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
  281. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
  282. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
  283. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
  284. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
  285. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
  286. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
  287. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
  288. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
  289. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
  290. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
  291. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
  292. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
  293. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/opaque.py +0 -0
  294. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/queries/_query_common.py +0 -0
  295. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/queries/_query_data_coordinates.py +0 -0
  296. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/queries/_query_dimension_records.py +0 -0
  297. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
  298. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
  299. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/versions.py +0 -0
  300. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/registry/wildcards.py +0 -0
  301. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
  302. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
  303. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
  304. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
  305. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
  306. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
  307. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
  308. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
  309. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
  310. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
  311. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
  312. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
  313. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
  314. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
  315. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
  316. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
  317. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
  318. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
  319. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
  320. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
  321. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
  322. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
  323. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
  324. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
  325. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
  326. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
  327. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
  328. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
  329. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
  330. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
  331. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
  332. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
  333. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
  334. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/repo_relocation.py +0 -0
  335. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/__init__.py +0 -0
  336. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/_associate.py +0 -0
  337. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
  338. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/butlerImport.py +0 -0
  339. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
  340. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/collectionChain.py +0 -0
  341. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/configDump.py +0 -0
  342. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/configValidate.py +0 -0
  343. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/createRepo.py +0 -0
  344. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
  345. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/ingest_files.py +0 -0
  346. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
  347. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/queryCollections.py +0 -0
  348. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
  349. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
  350. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
  351. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
  352. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
  353. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/removeCollections.py +0 -0
  354. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
  355. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/removeRuns.py +0 -0
  356. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
  357. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
  358. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/__init__.py +0 -0
  359. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
  360. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
  361. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
  362. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
  363. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
  364. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
  365. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
  366. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
  367. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
  368. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
  369. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
  370. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/postgresql.py +0 -0
  371. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
  372. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
  373. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
  374. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
  375. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
  376. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
  377. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/spatial.py +0 -0
  378. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
  379. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/server.py +0 -0
  380. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/server_available.py +0 -0
  381. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/server_utils.py +0 -0
  382. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
  383. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/tests/utils.py +0 -0
  384. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/time_utils.py +0 -0
  385. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
  386. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/transfers/__init__.py +0 -0
  387. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/transfers/_context.py +0 -0
  388. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
  389. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
  390. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst/daf/butler/utils.py +0 -0
  391. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
  392. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
  393. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
  394. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
  395. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/setup.cfg +0 -0
  396. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_astropyTableFormatter.py +0 -0
  397. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_authentication.py +0 -0
  398. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_butler_factory.py +0 -0
  399. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdAssociate.py +0 -0
  400. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdConfigDump.py +0 -0
  401. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdConfigValidate.py +0 -0
  402. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdCreate.py +0 -0
  403. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdImport.py +0 -0
  404. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdIngestFiles.py +0 -0
  405. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdPruneDatasets.py +0 -0
  406. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdQueryCollections.py +0 -0
  407. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdQueryDataIds.py +0 -0
  408. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
  409. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdQueryDatasets.py +0 -0
  410. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
  411. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdRemoveCollections.py +0 -0
  412. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdRemoveRuns.py +0 -0
  413. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
  414. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliLog.py +0 -0
  415. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliPluginLoader.py +0 -0
  416. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliUtilSplitCommas.py +0 -0
  417. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliUtilSplitKv.py +0 -0
  418. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliUtilToUpper.py +0 -0
  419. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_cliUtils.py +0 -0
  420. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_column_spec.py +0 -0
  421. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_composites.py +0 -0
  422. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_config.py +0 -0
  423. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_connectionString.py +0 -0
  424. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_constraints.py +0 -0
  425. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_ddl.py +0 -0
  426. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_dimension_record_containers.py +0 -0
  427. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_formatter.py +0 -0
  428. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_gafaelfawr.py +0 -0
  429. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_location.py +0 -0
  430. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_matplotlibFormatter.py +0 -0
  431. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_nonempty_mapping.py +0 -0
  432. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_obscore.py +0 -0
  433. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_packages.py +0 -0
  434. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_postgresql.py +0 -0
  435. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_progress.py +0 -0
  436. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_pydantic_utils.py +0 -0
  437. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_quantum.py +0 -0
  438. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_quantumBackedButler.py +0 -0
  439. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_query_direct_postgresql.py +0 -0
  440. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_query_direct_sqlite.py +0 -0
  441. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_query_interface.py +0 -0
  442. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_query_remote.py +0 -0
  443. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_query_utilities.py +0 -0
  444. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_remote_butler.py +0 -0
  445. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_server.py +0 -0
  446. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_simpleButler.py +0 -0
  447. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_sqlite.py +0 -0
  448. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_storageClass.py +0 -0
  449. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_templates.py +0 -0
  450. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_testRepo.py +0 -0
  451. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_thread_utils.py +0 -0
  452. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_time_utils.py +0 -0
  453. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_timespan.py +0 -0
  454. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_utils.py +0 -0
  455. {lsst_daf_butler-29.2025.4400 → lsst_daf_butler-29.2025.4700}/tests/test_uuid.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.4400
3
+ Version: 29.2025.4700
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
@@ -26,7 +26,6 @@ Requires-Dist: click>=7.0
26
26
  Requires-Dist: lsst-sphgeom
27
27
  Requires-Dist: lsst-utils
28
28
  Requires-Dist: lsst-resources
29
- Requires-Dist: lsst-daf-relation
30
29
  Requires-Dist: deprecated>=1.2
31
30
  Requires-Dist: pydantic<3.0,>=2
32
31
  Requires-Dist: pyarrow>=0.16
@@ -30,7 +30,6 @@ dependencies = [
30
30
  "lsst-sphgeom",
31
31
  "lsst-utils",
32
32
  "lsst-resources",
33
- "lsst-daf-relation",
34
33
  "deprecated >= 1.2",
35
34
  "pydantic >=2,<3.0",
36
35
  "pyarrow >= 0.16",
@@ -205,7 +204,7 @@ extend-select = [
205
204
 
206
205
  [tool.ruff.lint.per-file-ignores]
207
206
  # parserYacc docstrings can not be fixed. Docstrings are used to define grammar.
208
- "python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py" = ["D401", "D403"]
207
+ "python/lsst/daf/butler/queries/expressions/parser/parserYacc.py" = ["D401", "D403"]
209
208
 
210
209
  [tool.ruff.lint.isort]
211
210
  known-first-party = ["lsst"]
@@ -41,9 +41,6 @@ from ._butler_config import *
41
41
  from ._butler_metrics import *
42
42
  from ._butler_repo_index import *
43
43
  from ._collection_type import CollectionType
44
- from ._column_categorization import *
45
- from ._column_tags import *
46
- from ._column_type_info import *
47
44
  from ._config import *
48
45
  from ._config_support import LookupKey
49
46
  from ._dataset_association import *
@@ -1012,7 +1012,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1012
1012
  @abstractmethod
1013
1013
  def get_dataset(
1014
1014
  self,
1015
- id: DatasetId,
1015
+ id: DatasetId | str,
1016
1016
  *,
1017
1017
  storage_class: str | StorageClass | None = None,
1018
1018
  dimension_records: bool = False,
@@ -1023,7 +1023,8 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1023
1023
  Parameters
1024
1024
  ----------
1025
1025
  id : `DatasetId`
1026
- The unique identifier for the dataset.
1026
+ The unique identifier for the dataset, as an instance of
1027
+ `uuid.UUID` or a string containing a hexadecimal number.
1027
1028
  storage_class : `str` or `StorageClass` or `None`
1028
1029
  A storage class to use when creating the returned entry. If given
1029
1030
  it must be compatible with the default storage class.
@@ -1040,6 +1041,26 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1040
1041
  """
1041
1042
  raise NotImplementedError()
1042
1043
 
1044
+ @abstractmethod
1045
+ def get_many_datasets(self, ids: Iterable[DatasetId | str]) -> list[DatasetRef]:
1046
+ """Retrieve a list of dataset entries.
1047
+
1048
+ Parameters
1049
+ ----------
1050
+ ids : `~collections.abc.Iterable` [ `DatasetId` or `str` ]
1051
+ The unique identifiers for the datasets, as instances of
1052
+ `uuid.UUID` or strings containing a hexadecimal number.
1053
+
1054
+ Returns
1055
+ -------
1056
+ refs : `list` [ `DatasetRef` ]
1057
+ A list containing a `DatasetRef` for each of the given dataset IDs.
1058
+ If a dataset was not found, no error is thrown -- it is just not
1059
+ included in the list. The returned datasets are in no particular
1060
+ order.
1061
+ """
1062
+ raise NotImplementedError()
1063
+
1043
1064
  @abstractmethod
1044
1065
  def find_dataset(
1045
1066
  self,
@@ -112,6 +112,8 @@ class DatasetProvenance(pydantic.BaseModel):
112
112
  sep: str = ".",
113
113
  simple_types: bool = False,
114
114
  use_upper: bool | None = None,
115
+ max_inputs: int | None = None,
116
+ store_minimalist_inputs: bool = False,
115
117
  ) -> dict[str, _PROV_TYPES]:
116
118
  """Return provenance as a flattened dictionary.
117
119
 
@@ -137,6 +139,13 @@ class DatasetProvenance(pydantic.BaseModel):
137
139
  character of the prefix (defined by whether `str.isupper()` returns
138
140
  true, else they will be lower case). If `False` the case will be
139
141
  lower case, and if `True` the case will be upper case.
142
+ max_inputs : `int` or `None`, optional
143
+ Maximum number of inputs to be recorded in provenance. `None`
144
+ results in all inputs being recorded. If the number of inputs
145
+ exceeds this value no input provenance will be recorded.
146
+ store_minimalist_inputs : `bool`, optional
147
+ If `True` only the ID of the input is stored along with explicit
148
+ extras. If `False` the run and dataset type are also recorded.
140
149
 
141
150
  Returns
142
151
  -------
@@ -155,7 +164,13 @@ class DatasetProvenance(pydantic.BaseModel):
155
164
 
156
165
  Each input dataset will have the ``id``, ``run``, and ``datasettype``
157
166
  keys as defined above (but no ``dataid`` key) with an ``input N``
158
- prefix where ``N`` starts counting at 0.
167
+ prefix where ``N`` starts counting at 0. It is possible to drop
168
+ the ``datasettype`` and ``run`` to save space by using the
169
+ ``store_minimalist_inputs`` flag.
170
+
171
+ If there are too many inputs (see the ``max_inputs`` parameters)
172
+ no inputs will be recorded. The number of inputs is always recorded
173
+ to indicate that the inputs were dropped.
159
174
 
160
175
  The quantum ID, if present, will use key ``quantum``.
161
176
 
@@ -171,6 +186,7 @@ class DatasetProvenance(pydantic.BaseModel):
171
186
  "lsst.butler.dataid.detector": 10,
172
187
  "lsst.butler.dataid.instrument": "LSSTCam",
173
188
  "lsst.butler.quantum": "d93a735b-08f0-477d-bc95-2cc32d6d898b",
189
+ "lsst.butler.n_inputs": 2,
174
190
  "lsst.butler.input.0.id": "3dfd7ba5-5e35-4565-9d87-4b33880ed06c",
175
191
  "lsst.butler.input.0.run": "other_run",
176
192
  "lsst.butler.input.0.datasettype": "astropy_parquet",
@@ -206,12 +222,28 @@ class DatasetProvenance(pydantic.BaseModel):
206
222
  if self.quantum_id is not None:
207
223
  prov[_make_key("quantum")] = self.quantum_id if not simple_types else str(self.quantum_id)
208
224
 
209
- for i, input in enumerate(self.inputs):
225
+ # Record the number of inputs so that people can determine how many
226
+ # there were even if they were dropped because they exceeded the
227
+ # allowed maximum. Do not record the count if we have a null provenance
228
+ # state with no ref and no inputs.
229
+ if ref is not None or len(self.inputs) > 0:
230
+ prov[_make_key("n_inputs")] = len(self.inputs)
231
+
232
+ # Remove all inputs if the maximum is found. Truncating to the
233
+ # maximum (or auto switching to minimalist mode and increasing the
234
+ # maximum by 3) is not preferred.
235
+ inputs = (
236
+ self.inputs
237
+ if max_inputs is None or (max_inputs is not None and len(self.inputs) <= max_inputs)
238
+ else []
239
+ )
240
+ for i, input in enumerate(inputs):
210
241
  prov[_make_key("input", i, "id")] = input.id if not simple_types else str(input.id)
211
- if input.run is not None: # for mypy
212
- prov[_make_key("input", i, "run")] = input.run
213
- if input.datasetType is not None: # for mypy
214
- prov[_make_key("input", i, "datasettype")] = input.datasetType.name
242
+ if not store_minimalist_inputs:
243
+ if input.run is not None: # for mypy
244
+ prov[_make_key("input", i, "run")] = input.run
245
+ if input.datasetType is not None: # for mypy
246
+ prov[_make_key("input", i, "datasettype")] = input.datasetType.name
215
247
 
216
248
  if input.id in self.extras:
217
249
  for xk, xv in self.extras[input.id].items():
@@ -369,7 +401,9 @@ class DatasetProvenance(pydantic.BaseModel):
369
401
  # Prefix will always include the separator if it is defined.
370
402
  prefix += sep
371
403
 
372
- core_provenance = tuple(f"{prefix}{k}".lower() for k in ("run", "id", "datasettype", "quantum"))
404
+ core_provenance = tuple(
405
+ f"{prefix}{k}".lower() for k in ("run", "id", "datasettype", "quantum", "n_inputs")
406
+ )
373
407
 
374
408
  # Need to escape the prefix and separator for regex usage.
375
409
  esc_sep = re.escape(sep)
@@ -445,7 +479,7 @@ class DatasetProvenance(pydantic.BaseModel):
445
479
 
446
480
  quantum_id = None
447
481
  ref_id = None
448
- input_ids = {}
482
+ input_ids: dict[int, uuid.UUID] = {}
449
483
  extras: dict[int, dict[str, Any]] = {}
450
484
 
451
485
  for k, standard in prov_keys.items():
@@ -475,8 +509,9 @@ class DatasetProvenance(pydantic.BaseModel):
475
509
 
476
510
  provenance = cls(quantum_id=quantum_id)
477
511
 
512
+ input_refs = {ref.id: ref for ref in butler.get_many_datasets(input_ids.values())}
478
513
  for i in sorted(input_ids):
479
- input_ref = butler.get_dataset(input_ids[i])
514
+ input_ref = input_refs.get(input_ids[i])
480
515
  if input_ref is None:
481
516
  raise ValueError(f"Input dataset ({input_ids[i]}) is not known to this butler.")
482
517
  provenance.add_input(input_ref)
@@ -97,3 +97,4 @@ QPEnsemble: lsst.meas.pz.qp_formatter.QPFormatter
97
97
  PZModel: lsst.meas.pz.model_formatter.ModelFormatter
98
98
  VisitBackgroundModel: lsst.daf.butler.formatters.json.JsonFormatter
99
99
  VignettingCorrection: lsst.ts.observatory.control.utils.extras.vignetting_storage.VignettingCorrectionFormatter
100
+ SSPAuxiliaryFile: lsst.pipe.tasks.sspAuxiliaryFile.SSPAuxiliaryFileFormatter
@@ -1,23 +1,12 @@
1
1
  lsst.obs.base.formatters.fitsExposure.StandardFitsImageFormatterBase: &StandardFitsImageFormatterBase
2
2
  # No compression
3
3
  noCompression: &noCompression
4
- image: &noCompressionOptions
5
- compression:
6
- algorithm: NONE
7
- scaling:
8
- algorithm: NONE
9
- mask:
10
- <<: *noCompressionOptions
11
- variance:
12
- <<: *noCompressionOptions
4
+ null
13
5
 
14
6
  # Lossless compression
15
7
  lossless: &lossless
16
8
  image: &losslessOptions
17
- compression:
18
- algorithm: GZIP_SHUFFLE
19
- scaling:
20
- algorithm: NONE
9
+ algorithm: GZIP_2
21
10
  mask:
22
11
  <<: *losslessOptions
23
12
  variance:
@@ -26,14 +15,12 @@ lsst.obs.base.formatters.fitsExposure.StandardFitsImageFormatterBase: &StandardF
26
15
  # Basic lossy (quantizing) compression
27
16
  lossyBasic: &lossyBasic
28
17
  image: &lossyBasicOptions
29
- compression:
30
- algorithm: RICE
31
- scaling:
32
- algorithm: STDEV_POSITIVE
33
- maskPlanes: ["NO_DATA"]
34
- bitpix: 32
35
- quantizeLevel: 10.0
36
- quantizePad: 10.0
18
+ algorithm: RICE_1
19
+ quantization:
20
+ dither: SUBTRACTIVE_DITHER_2
21
+ scaling: STDEV_MASKED
22
+ mask_planes: ["NO_DATA"]
23
+ level: 10.0
37
24
  mask:
38
25
  <<: *losslessOptions
39
26
  variance:
@@ -437,3 +437,5 @@ storageClasses:
437
437
  pytype: lsst.drp.tasks.fit_visit_background.VisitBackgroundModel
438
438
  VignettingCorrection:
439
439
  pytype: lsst.ts.observatory.control.utils.extras.vignetting_correction.VignettingCorrection
440
+ SSPAuxiliaryFile:
441
+ pytype: lsst.pipe.tasks.sspAuxiliaryFile.SSPAuxiliaryFile
@@ -229,7 +229,9 @@ def _add_arrow_provenance(
229
229
  type_string = _checkArrowCompatibleType(in_memory_dataset)
230
230
  if type_string == "astropy":
231
231
  provenance = provenance if provenance is not None else DatasetProvenance()
232
- prov_dict = provenance.to_flat_dict(ref, prefix="LSST.BUTLER", sep=".", simple_types=True)
232
+ prov_dict = provenance.to_flat_dict(
233
+ ref, prefix="LSST.BUTLER", sep=".", simple_types=True, max_inputs=2000
234
+ )
233
235
 
234
236
  # Strip any previous provenance.
235
237
  DatasetProvenance.strip_provenance_from_flat_dict(in_memory_dataset.meta)
@@ -29,20 +29,17 @@ from __future__ import annotations
29
29
  __all__ = ("DimensionRecordSchema", "addDimensionForeignKey")
30
30
 
31
31
  import copy
32
- from collections.abc import Mapping, Set
32
+ from collections.abc import Set
33
33
  from typing import TYPE_CHECKING
34
34
 
35
- from lsst.utils.classes import cached_getter, immutable
35
+ from lsst.utils.classes import immutable
36
36
 
37
37
  from .. import arrow_utils, ddl
38
- from .._column_tags import DimensionKeyColumnTag, DimensionRecordColumnTag
39
38
  from .._named import NamedValueAbstractSet, NamedValueSet
40
39
  from ..column_spec import RegionColumnSpec, TimespanColumnSpec
41
40
  from ..timespan_database_representation import TimespanDatabaseRepresentation
42
41
 
43
42
  if TYPE_CHECKING: # Imports needed only for type annotations; may be circular.
44
- from lsst.daf.relation import ColumnTag
45
-
46
43
  from ._elements import Dimension, DimensionElement, KeyColumnSpec, MetadataColumnSpec
47
44
  from ._group import DimensionGroup
48
45
 
@@ -387,25 +384,6 @@ class DimensionElementFields:
387
384
  lines.append(" timespan: lsst.daf.butler.Timespan")
388
385
  return "\n".join(lines)
389
386
 
390
- @property
391
- @cached_getter
392
- def columns(self) -> Mapping[ColumnTag, str]:
393
- """A mapping from `ColumnTag` to field name for all fields in this
394
- element's records (`~collections.abc.Mapping`).
395
- """
396
- result: dict[ColumnTag, str] = {}
397
- for dimension_name, field_name in zip(
398
- self.element.dimensions.names, self.dimensions.names, strict=True
399
- ):
400
- result[DimensionKeyColumnTag(dimension_name)] = field_name
401
- for field_name in self.facts.names:
402
- result[DimensionRecordColumnTag(self.element.name, field_name)] = field_name
403
- if self.element.spatial:
404
- result[DimensionRecordColumnTag(self.element.name, "region")] = "region"
405
- if self.element.temporal:
406
- result[DimensionRecordColumnTag(self.element.name, "timespan")] = "timespan"
407
- return result
408
-
409
387
  element: DimensionElement
410
388
  """The dimension element these fields correspond to.
411
389
 
@@ -1256,12 +1256,13 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1256
1256
 
1257
1257
  def get_dataset(
1258
1258
  self,
1259
- id: DatasetId,
1259
+ id: DatasetId | str,
1260
1260
  *,
1261
1261
  storage_class: str | StorageClass | None = None,
1262
1262
  dimension_records: bool = False,
1263
1263
  datastore_records: bool = False,
1264
1264
  ) -> DatasetRef | None:
1265
+ id = _to_uuid(id)
1265
1266
  ref = self._registry.getDataset(id)
1266
1267
  if ref is not None:
1267
1268
  if dimension_records:
@@ -1274,6 +1275,10 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1274
1275
  ref = self._registry.get_datastore_records(ref)
1275
1276
  return ref
1276
1277
 
1278
+ def get_many_datasets(self, ids: Iterable[DatasetId | str]) -> list[DatasetRef]:
1279
+ uuids = [_to_uuid(id) for id in ids]
1280
+ return self._registry._managers.datasets.get_dataset_refs(uuids)
1281
+
1277
1282
  def find_dataset(
1278
1283
  self,
1279
1284
  dataset_type: DatasetType | str,
@@ -1411,20 +1416,12 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1411
1416
  # Docstring inherited.
1412
1417
  existence = {ref: DatasetExistence.UNRECOGNIZED for ref in refs}
1413
1418
 
1414
- # Registry does not have a bulk API to check for a ref.
1415
- for ref in refs:
1416
- registry_ref = self._registry.getDataset(ref.id)
1417
- if registry_ref is not None:
1418
- # It is possible, albeit unlikely, that the given ref does
1419
- # not match the one in registry even though the UUID matches.
1420
- # When checking a single ref we raise, but it's impolite to
1421
- # do that when potentially hundreds of refs are being checked.
1422
- # We could change the API to only accept UUIDs and that would
1423
- # remove the ability to even check and remove the worry
1424
- # about differing storage classes. Given the ongoing discussion
1425
- # on refs vs UUIDs and whether to raise or have a new
1426
- # private flag, treat this as a private API for now.
1427
- existence[ref] |= DatasetExistence.RECORDED
1419
+ # Check which refs exist in the registry.
1420
+ id_map = {ref.id: ref for ref in existence.keys()}
1421
+ for registry_ref in self.get_many_datasets(id_map.keys()):
1422
+ # Consistency between the given DatasetRef and the information
1423
+ # recorded in the registry is not verified.
1424
+ existence[id_map[registry_ref.id]] |= DatasetExistence.RECORDED
1428
1425
 
1429
1426
  # Ask datastore if it knows about these refs.
1430
1427
  knows = self._datastore.knows_these(refs)
@@ -2610,3 +2607,10 @@ class _ImportDatasetsInfo(NamedTuple):
2610
2607
 
2611
2608
  grouped_refs: defaultdict[_RefGroup, list[DatasetRef]]
2612
2609
  dimension_records: dict[DimensionElement, dict[DataCoordinate, DimensionRecord]]
2610
+
2611
+
2612
+ def _to_uuid(id: DatasetId | str) -> uuid.UUID:
2613
+ if isinstance(id, uuid.UUID):
2614
+ return id
2615
+ else:
2616
+ return uuid.UUID(id)
@@ -1437,7 +1437,7 @@ class DirectQueryDriver(QueryDriver):
1437
1437
  self,
1438
1438
  joins_builder: SqlJoinsBuilder,
1439
1439
  resolved_search: ResolvedDatasetSearch[list[str]],
1440
- fields: Set[str],
1440
+ fields: Set[qt.AnyDatasetFieldName],
1441
1441
  union_dataset_type_name: str,
1442
1442
  ) -> None: ...
1443
1443
 
@@ -1446,14 +1446,14 @@ class DirectQueryDriver(QueryDriver):
1446
1446
  self,
1447
1447
  joins_builder: SqlJoinsBuilder,
1448
1448
  resolved_search: ResolvedDatasetSearch[str],
1449
- fields: Set[str],
1449
+ fields: Set[qt.AnyDatasetFieldName],
1450
1450
  ) -> None: ...
1451
1451
 
1452
1452
  def join_dataset_search(
1453
1453
  self,
1454
1454
  joins_builder: SqlJoinsBuilder,
1455
1455
  resolved_search: ResolvedDatasetSearch[Any],
1456
- fields: Set[str],
1456
+ fields: Set[qt.AnyDatasetFieldName],
1457
1457
  union_dataset_type_name: str | None = None,
1458
1458
  ) -> None:
1459
1459
  """Join a dataset search into an under-construction query.
@@ -284,7 +284,7 @@ class QueryBuilder(ABC):
284
284
  raise NotImplementedError()
285
285
 
286
286
  def _needs_collection_key_field(
287
- self, dataset_search: ResolvedDatasetSearch, fields_for_dataset: set[str]
287
+ self, dataset_search: ResolvedDatasetSearch, fields_for_dataset: set[qt.AnyDatasetFieldName]
288
288
  ) -> bool:
289
289
  """Return `True` if the ``collection_key`` dataset field is needed to
290
290
  provide uniqueness for rows.
@@ -66,5 +66,5 @@ class ButlerLogRecordsFormatter(FormatterV2):
66
66
  # over pre-downloading the whole file (which can be very large).
67
67
  return self._get_read_pytype().from_file(path)
68
68
 
69
- def to_bytes(self, in_memory_dataset: Any) -> bytes:
70
- return in_memory_dataset.model_dump_json(exclude_unset=True, exclude_defaults=True).encode()
69
+ def to_bytes(self, in_memory_dataset: ButlerLogRecords) -> bytes:
70
+ return in_memory_dataset.to_json_data().encode()