lsst-daf-butler 29.2025.3700__tar.gz → 29.2025.3800__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.3700/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.3800}/PKG-INFO +9 -2
  2. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/README.md +8 -1
  3. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/column_spec.py +1 -2
  4. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/delegates/arrowtable.py +19 -13
  5. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/parquet.py +13 -3
  6. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/logging.py +3 -3
  7. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/spatial.py +1 -1
  8. lsst_daf_butler-29.2025.3800/python/lsst/daf/butler/version.py +2 -0
  9. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800/python/lsst_daf_butler.egg-info}/PKG-INFO +9 -2
  10. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_logging.py +12 -4
  11. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_parquet.py +25 -0
  12. lsst_daf_butler-29.2025.3700/python/lsst/daf/butler/version.py +0 -2
  13. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/COPYRIGHT +0 -0
  14. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/LICENSE +0 -0
  15. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/MANIFEST.in +0 -0
  16. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/bsd_license.txt +0 -0
  17. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/CHANGES.rst +0 -0
  18. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
  19. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/configuring.rst +0 -0
  20. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/datastores.rst +0 -0
  21. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/dimensions.rst +0 -0
  22. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/formatters.rst +0 -0
  23. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/index.rst +0 -0
  24. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/organizing.rst +0 -0
  25. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/queries.rst +0 -0
  26. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
  27. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
  28. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/gpl-v3.0.txt +0 -0
  29. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/pyproject.toml +0 -0
  30. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/__init__.py +0 -0
  31. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/__init__.py +0 -0
  32. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/__init__.py +0 -0
  33. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler.py +0 -0
  34. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler_collections.py +0 -0
  35. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler_config.py +0 -0
  36. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
  37. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler_metrics.py +0 -0
  38. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
  39. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_collection_type.py +0 -0
  40. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_column_categorization.py +0 -0
  41. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_column_tags.py +0 -0
  42. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_column_type_info.py +0 -0
  43. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_config.py +0 -0
  44. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_config_support.py +0 -0
  45. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_dataset_association.py +0 -0
  46. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_dataset_existence.py +0 -0
  47. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
  48. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_dataset_ref.py +0 -0
  49. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_dataset_type.py +0 -0
  50. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
  51. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_exceptions.py +0 -0
  52. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
  53. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_file_dataset.py +0 -0
  54. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_file_descriptor.py +0 -0
  55. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_formatter.py +0 -0
  56. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
  57. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_limited_butler.py +0 -0
  58. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_location.py +0 -0
  59. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_named.py +0 -0
  60. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_quantum.py +0 -0
  61. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_quantum_backed.py +0 -0
  62. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
  63. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_registry_shim.py +0 -0
  64. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
  65. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
  66. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
  67. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_storage_class.py +0 -0
  68. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
  69. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_timespan.py +0 -0
  70. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_topology.py +0 -0
  71. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
  72. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
  73. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
  74. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
  75. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/arrow_utils.py +0 -0
  76. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/__init__.py +0 -0
  77. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/butler.py +0 -0
  78. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/cliLog.py +0 -0
  79. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
  80. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
  81. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
  82. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
  83. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
  84. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
  85. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
  86. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/opt/options.py +0 -0
  87. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/progress.py +0 -0
  88. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/cli/utils.py +0 -0
  89. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
  90. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
  91. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
  92. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
  93. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
  94. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
  95. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
  96. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
  97. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
  98. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
  99. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
  100. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
  101. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
  102. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
  103. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/registry.yaml +0 -0
  104. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
  105. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
  106. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/__init__.py +0 -0
  107. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
  108. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
  109. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
  110. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/composites.py +0 -0
  111. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/constraints.py +0 -0
  112. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
  113. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
  114. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/record_data.py +0 -0
  115. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
  116. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/__init__.py +0 -0
  117. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
  118. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
  119. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
  120. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
  121. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
  122. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +0 -0
  123. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
  124. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/ddl.py +0 -0
  125. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/delegates/__init__.py +0 -0
  126. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
  127. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_config.py +0 -0
  128. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
  129. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
  130. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_database.py +0 -0
  131. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
  132. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
  133. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_group.py +0 -0
  134. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
  135. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
  136. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
  137. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_records.py +0 -0
  138. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
  139. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
  140. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
  141. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/construction.py +0 -0
  142. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
  143. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
  144. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_butler/_direct_butler.py +0 -0
  145. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
  146. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
  147. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
  148. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
  149. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
  150. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
  151. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
  152. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
  153. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
  154. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/__init__.py +0 -0
  155. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
  156. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/file.py +0 -0
  157. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/json.py +0 -0
  158. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/logs.py +0 -0
  159. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
  160. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/packages.py +0 -0
  161. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/pickle.py +0 -0
  162. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/typeless.py +0 -0
  163. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/formatters/yaml.py +0 -0
  164. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/json.py +0 -0
  165. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/mapping_factory.py +0 -0
  166. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/name_shrinker.py +0 -0
  167. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
  168. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/persistence_context.py +0 -0
  169. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/progress.py +0 -0
  170. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/py.typed +0 -0
  171. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/pydantic_utils.py +0 -0
  172. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/__init__.py +0 -0
  173. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_base.py +0 -0
  174. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
  175. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
  176. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
  177. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
  178. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
  179. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
  180. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/_query.py +0 -0
  181. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/convert_args.py +0 -0
  182. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/driver.py +0 -0
  183. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
  184. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/overlaps.py +0 -0
  185. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
  186. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/result_specs.py +0 -0
  187. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
  188. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
  189. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
  190. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
  191. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
  192. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
  193. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
  194. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
  195. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/queries/visitors.py +0 -0
  196. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/__init__.py +0 -0
  197. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
  198. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
  199. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
  200. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
  201. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_config.py +0 -0
  202. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_defaults.py +0 -0
  203. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
  204. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_registry.py +0 -0
  205. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
  206. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/attributes.py +0 -0
  207. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
  208. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
  209. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
  210. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
  211. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
  212. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
  213. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
  214. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/connectionString.py +0 -0
  215. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
  216. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
  217. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
  218. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
  219. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
  220. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
  221. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
  222. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
  223. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
  224. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
  225. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
  226. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
  227. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
  228. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
  229. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
  230. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
  231. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
  232. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
  233. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
  234. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
  235. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
  236. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
  237. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/managers.py +0 -0
  238. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
  239. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
  240. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
  241. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
  242. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
  243. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
  244. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
  245. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
  246. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
  247. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/opaque.py +0 -0
  248. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
  249. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_builder.py +0 -0
  250. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_query.py +0 -0
  251. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -0
  252. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
  253. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
  254. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
  255. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -0
  256. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
  257. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/_structs.py +0 -0
  258. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
  259. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
  260. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
  261. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
  262. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
  263. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
  264. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
  265. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
  266. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
  267. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
  268. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
  269. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
  270. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
  271. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
  272. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
  273. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
  274. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
  275. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
  276. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
  277. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
  278. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/versions.py +0 -0
  279. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/registry/wildcards.py +0 -0
  280. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
  281. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
  282. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
  283. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
  284. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
  285. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
  286. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_get.py +0 -0
  287. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
  288. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
  289. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
  290. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
  291. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
  292. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_remote_butler.py +0 -0
  293. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
  294. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +0 -0
  295. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
  296. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +0 -0
  297. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
  298. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
  299. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
  300. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/registry/_query_common.py +0 -0
  301. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/registry/_query_data_coordinates.py +0 -0
  302. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/registry/_query_datasets.py +0 -0
  303. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/registry/_query_dimension_records.py +0 -0
  304. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
  305. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
  306. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
  307. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
  308. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
  309. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
  310. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
  311. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
  312. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
  313. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
  314. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
  315. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
  316. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
  317. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
  318. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
  319. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
  320. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/repo_relocation.py +0 -0
  321. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/__init__.py +0 -0
  322. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/_associate.py +0 -0
  323. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
  324. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/butlerImport.py +0 -0
  325. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
  326. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/collectionChain.py +0 -0
  327. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/configDump.py +0 -0
  328. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/configValidate.py +0 -0
  329. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/createRepo.py +0 -0
  330. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
  331. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/ingest_files.py +0 -0
  332. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
  333. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/queryCollections.py +0 -0
  334. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
  335. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
  336. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
  337. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
  338. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
  339. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/removeCollections.py +0 -0
  340. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
  341. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/removeRuns.py +0 -0
  342. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
  343. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
  344. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/__init__.py +0 -0
  345. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
  346. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
  347. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
  348. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
  349. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
  350. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
  351. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
  352. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
  353. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
  354. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
  355. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
  356. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
  357. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/postgresql.py +0 -0
  358. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
  359. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
  360. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
  361. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
  362. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
  363. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
  364. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
  365. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/server.py +0 -0
  366. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/server_utils.py +0 -0
  367. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
  368. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/tests/utils.py +0 -0
  369. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/time_utils.py +0 -0
  370. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
  371. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/transfers/__init__.py +0 -0
  372. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/transfers/_context.py +0 -0
  373. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
  374. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
  375. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst/daf/butler/utils.py +0 -0
  376. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
  377. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
  378. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
  379. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
  380. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
  381. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
  382. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/setup.cfg +0 -0
  383. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_astropyTableFormatter.py +0 -0
  384. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_authentication.py +0 -0
  385. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_butler.py +0 -0
  386. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_butler_factory.py +0 -0
  387. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdAssociate.py +0 -0
  388. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdConfigDump.py +0 -0
  389. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdConfigValidate.py +0 -0
  390. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdCreate.py +0 -0
  391. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdImport.py +0 -0
  392. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdIngestFiles.py +0 -0
  393. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdPruneDatasets.py +0 -0
  394. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdQueryCollections.py +0 -0
  395. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdQueryDataIds.py +0 -0
  396. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
  397. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdQueryDatasets.py +0 -0
  398. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
  399. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdRemoveCollections.py +0 -0
  400. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdRemoveRuns.py +0 -0
  401. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
  402. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliLog.py +0 -0
  403. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliPluginLoader.py +0 -0
  404. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliUtilSplitCommas.py +0 -0
  405. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliUtilSplitKv.py +0 -0
  406. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliUtilToUpper.py +0 -0
  407. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_cliUtils.py +0 -0
  408. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_column_spec.py +0 -0
  409. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_composites.py +0 -0
  410. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_config.py +0 -0
  411. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_connectionString.py +0 -0
  412. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_constraints.py +0 -0
  413. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_datasets.py +0 -0
  414. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_datastore.py +0 -0
  415. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_ddl.py +0 -0
  416. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_dimension_record_containers.py +0 -0
  417. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_dimensions.py +0 -0
  418. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_exprParserLex.py +0 -0
  419. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_exprParserYacc.py +0 -0
  420. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_expressions.py +0 -0
  421. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_formatter.py +0 -0
  422. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_gafaelfawr.py +0 -0
  423. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_location.py +0 -0
  424. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_logFormatter.py +0 -0
  425. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_matplotlibFormatter.py +0 -0
  426. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_nonempty_mapping.py +0 -0
  427. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_normalFormExpression.py +0 -0
  428. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_obscore.py +0 -0
  429. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_packages.py +0 -0
  430. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_postgresql.py +0 -0
  431. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_progress.py +0 -0
  432. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_pydantic_utils.py +0 -0
  433. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_quantum.py +0 -0
  434. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_quantumBackedButler.py +0 -0
  435. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_direct_postgresql.py +0 -0
  436. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_direct_sqlite.py +0 -0
  437. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_interface.py +0 -0
  438. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_relations.py +0 -0
  439. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_remote.py +0 -0
  440. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_query_utilities.py +0 -0
  441. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_remote_butler.py +0 -0
  442. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_server.py +0 -0
  443. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_simpleButler.py +0 -0
  444. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_sqlite.py +0 -0
  445. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_storageClass.py +0 -0
  446. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_templates.py +0 -0
  447. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_testRepo.py +0 -0
  448. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_thread_utils.py +0 -0
  449. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_time_utils.py +0 -0
  450. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_timespan.py +0 -0
  451. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_utils.py +0 -0
  452. {lsst_daf_butler-29.2025.3700 → lsst_daf_butler-29.2025.3800}/tests/test_versioning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.3700
3
+ Version: 29.2025.3800
4
4
  Summary: An abstraction layer for reading and writing astronomical data to datastores.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License: BSD 3-Clause License
@@ -63,7 +63,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
63
63
 
64
64
  This is a **Python 3 only** package (we assume Python 3.11 or higher).
65
65
 
66
- * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941))
66
+ * SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
67
+ * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
67
68
  * ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
68
69
  * Early design note: [DMTN-056](https://dmtn-056.lsst.io)
69
70
 
@@ -71,3 +72,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
71
72
 
72
73
  This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
73
74
  Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
75
+
76
+ ## Arrow Memory Leaks
77
+
78
+ From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
79
+ If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
80
+ For EUPS users this variable is automatically set.
@@ -8,7 +8,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
8
8
 
9
9
  This is a **Python 3 only** package (we assume Python 3.11 or higher).
10
10
 
11
- * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941))
11
+ * SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
12
+ * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
12
13
  * ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
13
14
  * Early design note: [DMTN-056](https://dmtn-056.lsst.io)
14
15
 
@@ -16,3 +17,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
16
17
 
17
18
  This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
18
19
  Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
20
+
21
+ ## Arrow Memory Leaks
22
+
23
+ From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
24
+ If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
25
+ For EUPS users this variable is automatically set.
@@ -52,7 +52,6 @@ from typing import (
52
52
  Any,
53
53
  ClassVar,
54
54
  Literal,
55
- Optional,
56
55
  TypeAlias,
57
56
  Union,
58
57
  final,
@@ -254,7 +253,7 @@ class _BaseColumnSpec(pydantic.BaseModel, ABC):
254
253
  """
255
254
  base = self._get_base_annotated_type()
256
255
  if self.nullable:
257
- return Optional[base]
256
+ return base | None
258
257
  return base
259
258
 
260
259
  @abstractmethod
@@ -32,6 +32,7 @@ from __future__ import annotations
32
32
  __all__ = ["ArrowTableDelegate"]
33
33
 
34
34
  from collections.abc import Mapping
35
+ from fnmatch import fnmatchcase
35
36
  from typing import TYPE_CHECKING, Any
36
37
 
37
38
  import pyarrow as pa
@@ -162,28 +163,33 @@ class ArrowTableDelegate(StorageClassDelegate):
162
163
  parameters["columns"],
163
164
  stringify=False,
164
165
  )
166
+ # Ensure uniqueness, keeping order.
167
+ readColumns = list(dict.fromkeys(readColumns))
165
168
  else:
166
- readColumns = list(ensure_iterable(parameters["columns"]))
169
+ readColumnsIn = list(dict.fromkeys(ensure_iterable(parameters["columns"])))
167
170
 
168
- for column in readColumns:
171
+ if typeString == "pandas":
172
+ # Exclude index columns from the subset.
173
+ readColumnsIn = [
174
+ name for name in readColumnsIn if name not in inMemoryDataset.index.names
175
+ ]
176
+
177
+ readColumnsDict = {}
178
+ for column in readColumnsIn:
169
179
  if not isinstance(column, str):
170
180
  raise NotImplementedError(
171
181
  f"InMemoryDataset of a {get_full_type_name(inMemoryDataset)} only "
172
182
  "supports string column names."
173
183
  )
174
- if column not in allColumns:
184
+ found = False
185
+ for allColumn in allColumns:
186
+ if fnmatchcase(allColumn, column):
187
+ found = True
188
+ readColumnsDict[allColumn] = True
189
+ if not found:
175
190
  raise ValueError(f"Unrecognized column name {column!r}.")
176
191
 
177
- if typeString == "pandas":
178
- # Exclude index columns from the subset.
179
- readColumns = [
180
- name
181
- for name in ensure_iterable(parameters["columns"])
182
- if name not in inMemoryDataset.index.names
183
- ]
184
-
185
- # Ensure uniqueness, keeping order.
186
- readColumns = list(dict.fromkeys(readColumns))
192
+ readColumns = list(readColumnsDict.keys())
187
193
 
188
194
  if typeString == "arrow":
189
195
  return inMemoryDataset.select(readColumns)
@@ -54,6 +54,7 @@ import json
54
54
  import logging
55
55
  import re
56
56
  from collections.abc import Iterable, Sequence
57
+ from fnmatch import fnmatchcase
57
58
  from typing import TYPE_CHECKING, Any, cast
58
59
 
59
60
  import pyarrow as pa
@@ -154,14 +155,23 @@ class ParquetFormatter(FormatterV2):
154
155
 
155
156
  if not has_pandas_multi_index:
156
157
  # Ensure uniqueness, keeping order.
157
- par_columns = list(dict.fromkeys(ensure_iterable(par_columns)))
158
+ par_columns_in = list(dict.fromkeys(ensure_iterable(par_columns)))
158
159
  file_columns = [name for name in schema.names if not name.startswith("__")]
159
160
 
160
- for par_column in par_columns:
161
- if par_column not in file_columns:
161
+ # Do case-sensitive glob-style matching, again ensuring
162
+ # uniqueness and ordering.
163
+ par_columns = {}
164
+ for par_column in par_columns_in:
165
+ found = False
166
+ for file_column in file_columns:
167
+ if fnmatchcase(file_column, par_column):
168
+ found = True
169
+ par_columns[file_column] = True
170
+ if not found:
162
171
  raise ValueError(
163
172
  f"Column {par_column} specified in parameters not available in parquet file."
164
173
  )
174
+ par_columns = list(par_columns.keys())
165
175
  else:
166
176
  par_columns = _standardize_multi_index_columns(
167
177
  arrow_schema_to_pandas_index(schema),
@@ -36,7 +36,7 @@ from collections.abc import Callable, Generator, Iterable, Iterator
36
36
  from contextlib import contextmanager
37
37
  from logging import Formatter, LogRecord, StreamHandler
38
38
  from types import TracebackType
39
- from typing import IO, Any, ClassVar, overload
39
+ from typing import IO, Any, ClassVar, Literal, overload
40
40
 
41
41
  from pydantic import BaseModel, ConfigDict, PrivateAttr, RootModel
42
42
 
@@ -174,7 +174,7 @@ class ButlerMDC:
174
174
  lno: int,
175
175
  msg: str,
176
176
  args: tuple,
177
- exc_info: tuple | None,
177
+ exc_info: tuple | None | Literal[False],
178
178
  func: str | None = None,
179
179
  sinfo: TracebackType | None = None,
180
180
  **kwargs: Any,
@@ -182,7 +182,7 @@ class ButlerMDC:
182
182
  record = old_factory(name, level, fn, lno, msg, args, exc_info, func, sinfo, **kwargs)
183
183
  # Make sure we send a copy of the global dict in the record.
184
184
  mdc = MDCDict(cls._MDC)
185
- if exc_info is not None:
185
+ if exc_info is not None and exc_info is not False:
186
186
  _, ex, _ = exc_info
187
187
  # TODO: this doesn't handle chained exceptions, fix on DM-47546
188
188
  if hasattr(ex, "mdc"):
@@ -55,7 +55,7 @@ from astropy.time import Time
55
55
  from astropy.wcs import WCS
56
56
  from matplotlib import pyplot
57
57
 
58
- import lsst.daf.butler # noqa:F401; register Time/YAML conversions.
58
+ import lsst.daf.butler # register Time/YAML conversions. # noqa: F401
59
59
  from lsst.sphgeom import (
60
60
  ConvexPolygon,
61
61
  HealpixPixelization,
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "29.2025.3800"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.3700
3
+ Version: 29.2025.3800
4
4
  Summary: An abstraction layer for reading and writing astronomical data to datastores.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License: BSD 3-Clause License
@@ -63,7 +63,8 @@ Please cite [the SPIE paper](https://doi.org/10.1117/12.2629569) when using this
63
63
 
64
64
  This is a **Python 3 only** package (we assume Python 3.11 or higher).
65
65
 
66
- * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941))
66
+ * SPIE paper from 2024: [Converting Rubin Observatory's data butler to a client/server architecture](https://doi.org/10.1117/12.3019130) ([Tech note](https://dmtn-288.lsst.io))
67
+ * SPIE Paper from 2022: [The Vera C. Rubin Observatory Data Butler and Pipeline Execution System](https://doi.org/10.1117/12.2629569) ([arXiv](https://arxiv.org/abs/2206.14941)) \[Primary reference]
67
68
  * ADASS paper from 2019: [Abstracting the Storage and Retrieval of Image Data at the LSST](https://ui.adsabs.harvard.edu/abs/2019ASPC..523..653J/abstract).
68
69
  * Early design note: [DMTN-056](https://dmtn-056.lsst.io)
69
70
 
@@ -71,3 +72,9 @@ PyPI: [lsst-daf-butler](https://pypi.org/project/lsst-daf-butler/)
71
72
 
72
73
  This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license).
73
74
  Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
75
+
76
+ ## Arrow Memory Leaks
77
+
78
+ From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
79
+ If you see such leaks the workaround is to set the `ARROW_DEFAULT_MEMORY_POOL` environment variable to `jemalloc` following the advice from [apache/arrow#45882](https://github.com/apache/arrow/issues/45882).
80
+ For EUPS users this variable is automatically set.
@@ -118,8 +118,13 @@ class LoggingTestCase(unittest.TestCase):
118
118
  self.log.warning("warning message")
119
119
  self.log.critical("critical message")
120
120
  self.log.verbose("verbose message")
121
+ self.log.error("error message")
122
+ try:
123
+ raise RuntimeError("An error has occurred")
124
+ except RuntimeError:
125
+ self.log.exception("exception message")
121
126
 
122
- self.assertEqual(len(self.handler.records), 4)
127
+ self.assertEqual(len(self.handler.records), 6)
123
128
 
124
129
  format_default = str(self.handler.records)
125
130
 
@@ -128,7 +133,7 @@ class LoggingTestCase(unittest.TestCase):
128
133
  format_override = str(self.handler.records)
129
134
 
130
135
  self.assertNotEqual(format_default, format_override)
131
- self.assertEqual(format_override, "DEBUG\nWARNING\nCRITICAL\nVERBOSE")
136
+ self.assertEqual(format_override, "DEBUG\nWARNING\nCRITICAL\nVERBOSE\nERROR\nERROR")
132
137
 
133
138
  # Reset the log format and it should match the original text.
134
139
  self.handler.records.set_log_format(None)
@@ -284,11 +289,14 @@ class LoggingTestCase(unittest.TestCase):
284
289
  self.log.exception("Exception raised:")
285
290
  self.log.warning("Implied exception", exc_info=True)
286
291
  self.log.critical("Explicit exception", exc_info=e)
292
+ self.log.error("Explicit exception info", exc_info=(Exception, e, e.__traceback__))
287
293
  # Is original context used *only* when logging the exception?
288
294
  self.log.error("Something went wrong")
289
- for i in [-4, -3, -2]:
295
+ self.log.error("Boolean disabled exc info", exc_info=False)
296
+ for i in [-6, -5, -4, -3]:
290
297
  self.assertEqual(self.handler.records[i].MDC, {"foo": "fum", "answer": "42"})
291
- self.assertEqual(self.handler.records[-1].MDC, {"foo": "bar"})
298
+ for i in [-2, -1]:
299
+ self.assertEqual(self.handler.records[i].MDC, {"foo": "bar"})
292
300
 
293
301
  self.log.setLevel(logging.INFO)
294
302
  self.log.info("Normal log")
@@ -400,6 +400,10 @@ class ParquetFormatterDataFrameTestCase(unittest.TestCase):
400
400
  self.assertTrue(df1.loc[:, ["ddd"]].equals(df6))
401
401
  df7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
402
402
  self.assertTrue(df1.loc[:, ["a"]].equals(df7))
403
+ df8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d*"]})
404
+ self.assertTrue(df1.loc[:, ["ddd", "dtn", "dtu"]].equals(df8))
405
+ df9 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d*", "d*"]})
406
+ self.assertTrue(df1.loc[:, ["ddd", "dtn", "dtu"]].equals(df9))
403
407
  # Passing an unrecognized column should be a ValueError.
404
408
  with self.assertRaises(ValueError):
405
409
  self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
@@ -989,6 +993,10 @@ class ParquetFormatterArrowAstropyTestCase(unittest.TestCase):
989
993
  _checkAstropyTableEquality(tab1[("ddd",)], tab6)
990
994
  tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
991
995
  _checkAstropyTableEquality(tab1[("a",)], tab7)
996
+ tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??"]})
997
+ _checkAstropyTableEquality(tab1[("ddd", "dtn", "dtu")], tab8)
998
+ tab9 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
999
+ _checkAstropyTableEquality(tab1[("ddd", "dtn", "dtu", "a")], tab9)
992
1000
  # Passing an unrecognized column should be a ValueError.
993
1001
  with self.assertRaises(ValueError):
994
1002
  self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
@@ -1401,6 +1409,18 @@ class ParquetFormatterArrowNumpyTestCase(unittest.TestCase):
1401
1409
  ],
1402
1410
  tab7,
1403
1411
  )
1412
+ tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
1413
+ _checkNumpyTableEquality(
1414
+ tab1[
1415
+ [
1416
+ "ddd",
1417
+ "dtn",
1418
+ "dtu",
1419
+ "a",
1420
+ ]
1421
+ ],
1422
+ tab8,
1423
+ )
1404
1424
  # Passing an unrecognized column should be a ValueError.
1405
1425
  with self.assertRaises(ValueError):
1406
1426
  self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
@@ -1673,6 +1693,8 @@ class ParquetFormatterArrowTableTestCase(unittest.TestCase):
1673
1693
  self.assertEqual(tab6, tab1.select(("ddd",)))
1674
1694
  tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
1675
1695
  self.assertEqual(tab7, tab1.select(("a",)))
1696
+ tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a*", "d??"]})
1697
+ self.assertEqual(tab8, tab1.select(("a", "ddd", "dtn", "dtu")))
1676
1698
  # Passing an unrecognized column should be a ValueError.
1677
1699
  with self.assertRaises(ValueError):
1678
1700
  self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
@@ -1984,6 +2006,9 @@ class ParquetFormatterArrowNumpyDictTestCase(unittest.TestCase):
1984
2006
  tab7 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["a", "a"]})
1985
2007
  subdict = {key: dict1[key] for key in ["a"]}
1986
2008
  _checkNumpyDictEquality(subdict, tab7)
2009
+ tab8 = self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["d??", "a*"]})
2010
+ subdict = {key: dict1[key] for key in ["ddd", "dtn", "dtu", "a"]}
2011
+ _checkNumpyDictEquality(subdict, tab8)
1987
2012
  # Passing an unrecognized column should be a ValueError.
1988
2013
  with self.assertRaises(ValueError):
1989
2014
  self.butler.get(self.datasetType, dataId={}, parameters={"columns": ["e"]})
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "29.2025.3700"