lsst-daf-butler 29.2025.1600__tar.gz → 29.2025.1700__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 (429) hide show
  1. {lsst_daf_butler-29.2025.1600/python/lsst_daf_butler.egg-info → lsst_daf_butler-29.2025.1700}/PKG-INFO +1 -1
  2. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_universe.py +12 -8
  3. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/_direct_butler.py +142 -120
  4. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_remote_butler.py +1 -8
  5. lsst_daf_butler-29.2025.1700/python/lsst/daf/butler/version.py +2 -0
  6. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700/python/lsst_daf_butler.egg-info}/PKG-INFO +1 -1
  7. lsst_daf_butler-29.2025.1600/python/lsst/daf/butler/version.py +0 -2
  8. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/COPYRIGHT +0 -0
  9. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/LICENSE +0 -0
  10. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/MANIFEST.in +0 -0
  11. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/README.md +0 -0
  12. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/bsd_license.txt +0 -0
  13. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/CHANGES.rst +0 -0
  14. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
  15. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/configuring.rst +0 -0
  16. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/datastores.rst +0 -0
  17. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/dimensions.rst +0 -0
  18. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/formatters.rst +0 -0
  19. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/index.rst +0 -0
  20. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/organizing.rst +0 -0
  21. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/queries.rst +0 -0
  22. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
  23. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/doc/lsst.daf.butler/writing-subcommands.rst +0 -0
  24. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/gpl-v3.0.txt +0 -0
  25. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/pyproject.toml +0 -0
  26. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/__init__.py +0 -0
  27. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/__init__.py +0 -0
  28. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/__init__.py +0 -0
  29. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler.py +0 -0
  30. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_collections.py +0 -0
  31. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_config.py +0 -0
  32. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
  33. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
  34. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_collection_type.py +0 -0
  35. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_categorization.py +0 -0
  36. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_tags.py +0 -0
  37. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_column_type_info.py +0 -0
  38. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_config.py +0 -0
  39. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_config_support.py +0 -0
  40. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_association.py +0 -0
  41. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_existence.py +0 -0
  42. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_provenance.py +0 -0
  43. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_ref.py +0 -0
  44. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_dataset_type.py +0 -0
  45. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
  46. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_exceptions.py +0 -0
  47. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
  48. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_file_dataset.py +0 -0
  49. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_file_descriptor.py +0 -0
  50. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_formatter.py +0 -0
  51. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
  52. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_limited_butler.py +0 -0
  53. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_location.py +0 -0
  54. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_named.py +0 -0
  55. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_quantum.py +0 -0
  56. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_quantum_backed.py +0 -0
  57. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_query_all_datasets.py +0 -0
  58. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_registry_shim.py +0 -0
  59. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_storage_class.py +0 -0
  60. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
  61. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_timespan.py +0 -0
  62. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_topology.py +0 -0
  63. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
  64. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
  65. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
  66. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
  67. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/arrow_utils.py +0 -0
  68. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/__init__.py +0 -0
  69. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/butler.py +0 -0
  70. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cliLog.py +0 -0
  71. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
  72. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
  73. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +0 -0
  74. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
  75. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
  76. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
  77. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
  78. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/opt/options.py +0 -0
  79. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/progress.py +0 -0
  80. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/cli/utils.py +0 -0
  81. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/column_spec.py +0 -0
  82. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
  83. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
  84. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
  85. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
  86. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
  87. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
  88. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
  89. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
  90. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
  91. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
  92. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
  93. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
  94. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
  95. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
  96. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/registry.yaml +0 -0
  97. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
  98. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
  99. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/__init__.py +0 -0
  100. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/_datastore.py +0 -0
  101. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
  102. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/composites.py +0 -0
  103. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/constraints.py +0 -0
  104. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
  105. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
  106. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/record_data.py +0 -0
  107. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastore/stored_file_info.py +0 -0
  108. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/__init__.py +0 -0
  109. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/chainedDatastore.py +0 -0
  110. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/fileDatastore.py +0 -0
  111. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/fileDatastoreClient.py +0 -0
  112. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
  113. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/get.py +0 -0
  114. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +0 -0
  115. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +0 -0
  116. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/ddl.py +0 -0
  117. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/delegates/__init__.py +0 -0
  118. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
  119. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
  120. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_config.py +0 -0
  121. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_coordinate.py +0 -0
  122. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
  123. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_database.py +0 -0
  124. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
  125. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
  126. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_group.py +0 -0
  127. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
  128. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_record_set.py +0 -0
  129. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
  130. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_records.py +0 -0
  131. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
  132. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
  133. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/construction.py +0 -0
  134. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
  135. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
  136. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
  137. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
  138. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_driver.py +0 -0
  139. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
  140. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
  141. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
  142. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +0 -0
  143. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
  144. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
  145. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/__init__.py +0 -0
  146. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
  147. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/file.py +0 -0
  148. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/json.py +0 -0
  149. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/logs.py +0 -0
  150. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
  151. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/packages.py +0 -0
  152. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/parquet.py +0 -0
  153. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/pickle.py +0 -0
  154. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/typeless.py +0 -0
  155. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/formatters/yaml.py +0 -0
  156. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/json.py +0 -0
  157. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/logging.py +0 -0
  158. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/mapping_factory.py +0 -0
  159. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/name_shrinker.py +0 -0
  160. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/nonempty_mapping.py +0 -0
  161. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/persistence_context.py +0 -0
  162. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/progress.py +0 -0
  163. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/py.typed +0 -0
  164. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/pydantic_utils.py +0 -0
  165. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/__init__.py +0 -0
  166. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_base.py +0 -0
  167. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
  168. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
  169. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
  170. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
  171. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_general_query_results.py +0 -0
  172. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
  173. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/_query.py +0 -0
  174. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/convert_args.py +0 -0
  175. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/driver.py +0 -0
  176. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/expression_factory.py +0 -0
  177. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/overlaps.py +0 -0
  178. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
  179. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/result_specs.py +0 -0
  180. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
  181. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
  182. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
  183. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
  184. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
  185. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_column_set.py +0 -0
  186. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
  187. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
  188. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/queries/visitors.py +0 -0
  189. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/__init__.py +0 -0
  190. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
  191. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_record_cache.py +0 -0
  192. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
  193. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_collection_summary_cache.py +0 -0
  194. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_config.py +0 -0
  195. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_defaults.py +0 -0
  196. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
  197. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_registry.py +0 -0
  198. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
  199. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/attributes.py +0 -0
  200. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
  201. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
  202. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
  203. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
  204. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
  205. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
  206. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
  207. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/connectionString.py +0 -0
  208. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
  209. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/postgresql.py +0 -0
  210. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
  211. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
  212. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
  213. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +0 -0
  214. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +0 -0
  215. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +0 -0
  216. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
  217. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
  218. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
  219. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
  220. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
  221. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
  222. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
  223. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
  224. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
  225. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_datasets.py +0 -0
  226. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
  227. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_obscore.py +0 -0
  228. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
  229. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
  230. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/managers.py +0 -0
  231. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
  232. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
  233. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
  234. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
  235. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_records.py +0 -0
  236. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
  237. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/_spatial.py +0 -0
  238. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
  239. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
  240. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/opaque.py +0 -0
  241. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
  242. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_builder.py +0 -0
  243. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query.py +0 -0
  244. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query_backend.py +0 -0
  245. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_query_context.py +0 -0
  246. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_readers.py +0 -0
  247. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_results.py +0 -0
  248. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_sql_query_backend.py +0 -0
  249. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_sql_query_context.py +0 -0
  250. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/_structs.py +0 -0
  251. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/butler_sql_engine.py +0 -0
  252. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/__init__.py +0 -0
  253. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/_predicate.py +0 -0
  254. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/categorize.py +0 -0
  255. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/check.py +0 -0
  256. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/normalForm.py +0 -0
  257. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/__init__.py +0 -0
  258. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/exprTree.py +0 -0
  259. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parser.py +0 -0
  260. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parserLex.py +0 -0
  261. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/parserYacc.py +0 -0
  262. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/__init__.py +0 -0
  263. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/lex.py +0 -0
  264. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/ply/yacc.py +0 -0
  265. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/expressions/parser/treeVisitor.py +0 -0
  266. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/queries/find_first_dataset.py +0 -0
  267. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/sql_registry.py +0 -0
  268. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
  269. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
  270. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
  271. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/versions.py +0 -0
  272. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/registry/wildcards.py +0 -0
  273. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
  274. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_authentication.py +0 -0
  275. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
  276. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
  277. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
  278. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
  279. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
  280. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
  281. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
  282. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
  283. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
  284. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
  285. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
  286. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
  287. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_common.py +0 -0
  288. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_data_coordinates.py +0 -0
  289. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_datasets.py +0 -0
  290. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/registry/_query_dimension_records.py +0 -0
  291. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
  292. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
  293. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
  294. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
  295. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
  296. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
  297. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
  298. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
  299. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
  300. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
  301. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
  302. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
  303. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/repo_relocation.py +0 -0
  304. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/__init__.py +0 -0
  305. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/_associate.py +0 -0
  306. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/_pruneDatasets.py +0 -0
  307. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/butlerImport.py +0 -0
  308. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
  309. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/collectionChain.py +0 -0
  310. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/configDump.py +0 -0
  311. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/configValidate.py +0 -0
  312. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/createRepo.py +0 -0
  313. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
  314. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/ingest_files.py +0 -0
  315. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
  316. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryCollections.py +0 -0
  317. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
  318. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
  319. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
  320. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
  321. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
  322. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeCollections.py +0 -0
  323. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
  324. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/removeRuns.py +0 -0
  325. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
  326. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
  327. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/__init__.py +0 -0
  328. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
  329. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
  330. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
  331. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
  332. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
  333. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/cliCmdTestBase.py +0 -0
  334. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/cliLogTestBase.py +0 -0
  335. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
  336. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
  337. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler.py +0 -0
  338. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
  339. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
  340. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/postgresql.py +0 -0
  341. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/server.py +0 -0
  342. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/server_utils.py +0 -0
  343. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
  344. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/tests/utils.py +0 -0
  345. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/time_utils.py +0 -0
  346. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/timespan_database_representation.py +0 -0
  347. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/__init__.py +0 -0
  348. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_context.py +0 -0
  349. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
  350. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
  351. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst/daf/butler/utils.py +0 -0
  352. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
  353. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
  354. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
  355. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/requires.txt +0 -0
  356. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
  357. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
  358. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/setup.cfg +0 -0
  359. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_astropyTableFormatter.py +0 -0
  360. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_authentication.py +0 -0
  361. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_butler.py +0 -0
  362. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_butler_factory.py +0 -0
  363. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdAssociate.py +0 -0
  364. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdConfigDump.py +0 -0
  365. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdConfigValidate.py +0 -0
  366. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdCreate.py +0 -0
  367. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdImport.py +0 -0
  368. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdIngestFiles.py +0 -0
  369. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdPruneDatasets.py +0 -0
  370. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryCollections.py +0 -0
  371. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDataIds.py +0 -0
  372. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
  373. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDatasets.py +0 -0
  374. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
  375. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRemoveCollections.py +0 -0
  376. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRemoveRuns.py +0 -0
  377. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
  378. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliLog.py +0 -0
  379. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliPluginLoader.py +0 -0
  380. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilSplitCommas.py +0 -0
  381. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilSplitKv.py +0 -0
  382. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtilToUpper.py +0 -0
  383. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_cliUtils.py +0 -0
  384. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_column_spec.py +0 -0
  385. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_composites.py +0 -0
  386. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_config.py +0 -0
  387. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_connectionString.py +0 -0
  388. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_constraints.py +0 -0
  389. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_datasets.py +0 -0
  390. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_datastore.py +0 -0
  391. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_ddl.py +0 -0
  392. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_dimension_record_containers.py +0 -0
  393. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_dimensions.py +0 -0
  394. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_exprParserLex.py +0 -0
  395. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_exprParserYacc.py +0 -0
  396. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_expressions.py +0 -0
  397. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_formatter.py +0 -0
  398. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_location.py +0 -0
  399. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_logFormatter.py +0 -0
  400. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_logging.py +0 -0
  401. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_matplotlibFormatter.py +0 -0
  402. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_nonempty_mapping.py +0 -0
  403. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_normalFormExpression.py +0 -0
  404. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_obscore.py +0 -0
  405. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_packages.py +0 -0
  406. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_parquet.py +0 -0
  407. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_postgresql.py +0 -0
  408. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_progress.py +0 -0
  409. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_pydantic_utils.py +0 -0
  410. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_quantum.py +0 -0
  411. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_quantumBackedButler.py +0 -0
  412. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_direct_postgresql.py +0 -0
  413. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_direct_sqlite.py +0 -0
  414. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_interface.py +0 -0
  415. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_relations.py +0 -0
  416. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_remote.py +0 -0
  417. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_query_utilities.py +0 -0
  418. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_remote_butler.py +0 -0
  419. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_server.py +0 -0
  420. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_simpleButler.py +0 -0
  421. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_sqlite.py +0 -0
  422. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_storageClass.py +0 -0
  423. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_templates.py +0 -0
  424. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_testRepo.py +0 -0
  425. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_thread_utils.py +0 -0
  426. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_time_utils.py +0 -0
  427. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_timespan.py +0 -0
  428. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/tests/test_utils.py +0 -0
  429. {lsst_daf_butler-29.2025.1600 → lsst_daf_butler-29.2025.1700}/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.1600
3
+ Version: 29.2025.1700
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
@@ -31,6 +31,7 @@ __all__ = ["DimensionUniverse"]
31
31
 
32
32
  import logging
33
33
  import pickle
34
+ import warnings
34
35
  from collections import defaultdict
35
36
  from collections.abc import Iterable, Mapping, Sequence
36
37
  from typing import TYPE_CHECKING, Any, ClassVar, TypeVar, overload
@@ -117,6 +118,13 @@ class DimensionUniverse: # numpydoc ignore=PR02
117
118
  else:
118
119
  version = builder.version
119
120
 
121
+ if use_cache is not True:
122
+ warnings.warn(
123
+ "use_cache parameter is no longer supported and is ignored. Will be removed after v30.",
124
+ category=FutureWarning,
125
+ stacklevel=2,
126
+ )
127
+
120
128
  # Then a namespace.
121
129
  if namespace is None:
122
130
  if builder is None:
@@ -129,10 +137,9 @@ class DimensionUniverse: # numpydoc ignore=PR02
129
137
  namespace = _DEFAULT_NAMESPACE
130
138
 
131
139
  # See if an equivalent instance already exists.
132
- if use_cache:
133
- existing_instance = cls._instances.get((version, namespace))
134
- if existing_instance is not None:
135
- return existing_instance
140
+ existing_instance = cls._instances.get((version, namespace))
141
+ if existing_instance is not None:
142
+ return existing_instance
136
143
 
137
144
  # Ensure we have a builder, building one from config if necessary.
138
145
  if builder is None:
@@ -183,10 +190,7 @@ class DimensionUniverse: # numpydoc ignore=PR02
183
190
  if element.populated_by is not None:
184
191
  self._populates[element.populated_by.name].add(element)
185
192
 
186
- if use_cache:
187
- return cls._instances.set_or_get((self._version, self._namespace), self)
188
- else:
189
- return self
193
+ return cls._instances.set_or_get((self._version, self._namespace), self)
190
194
 
191
195
  @property
192
196
  def version(self) -> int:
@@ -1587,30 +1587,24 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1587
1587
  def _ingest_file_datasets(
1588
1588
  self,
1589
1589
  datasets: Sequence[FileDataset],
1590
+ *,
1591
+ dry_run: bool = False,
1590
1592
  ) -> None:
1591
- # Docstring inherited.
1592
1593
  if not datasets:
1593
1594
  return
1594
1595
 
1595
1596
  progress = Progress("lsst.daf.butler.Butler.ingest", level=logging.DEBUG)
1596
1597
 
1597
- # We need to reorganize all the inputs so that they are grouped
1598
- # by dataset type and run. Multiple refs in a single FileDataset
1599
- # are required to share the run and dataset type.
1600
- groupedData: MutableMapping[tuple[DatasetType, str], list[FileDataset]] = defaultdict(list)
1601
-
1602
1598
  # Track DataIDs that are being ingested so we can spot issues early
1603
1599
  # with duplication. Retain previous FileDataset so we can report it.
1604
1600
  groupedDataIds: MutableMapping[tuple[DatasetType, str], dict[DataCoordinate, FileDataset]] = (
1605
1601
  defaultdict(dict)
1606
1602
  )
1607
1603
 
1608
- # And the nested loop that populates it:
1609
- for dataset in progress.wrap(datasets, desc="Grouping by dataset type"):
1610
- # Somewhere to store pre-existing refs if we have an
1611
- # execution butler.
1612
- existingRefs: list[DatasetRef] = []
1604
+ # All the refs we need to import.
1605
+ refs: list[DatasetRef] = []
1613
1606
 
1607
+ for dataset in progress.wrap(datasets, desc="Validating dataIDs"):
1614
1608
  for ref in dataset.refs:
1615
1609
  group_key = (ref.datasetType, ref.run)
1616
1610
 
@@ -1623,54 +1617,29 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1623
1617
  )
1624
1618
 
1625
1619
  groupedDataIds[group_key][ref.dataId] = dataset
1620
+ refs.extend(dataset.refs)
1626
1621
 
1627
- if existingRefs:
1628
- if len(dataset.refs) != len(existingRefs):
1629
- # Keeping track of partially pre-existing datasets is hard
1630
- # and should generally never happen. For now don't allow
1631
- # it.
1632
- raise ConflictingDefinitionError(
1633
- f"For dataset {dataset.path} some dataIds already exist"
1634
- " in registry but others do not. This is not supported."
1635
- )
1636
-
1637
- # Store expanded form in the original FileDataset.
1638
- dataset.refs = existingRefs
1639
- else:
1640
- groupedData[group_key].append(dataset)
1641
-
1642
- # Now we can bulk-insert into Registry for each DatasetType.
1643
- for (datasetType, this_run), grouped_datasets in progress.iter_item_chunks(
1644
- groupedData.items(), desc="Bulk-inserting datasets by type"
1645
- ):
1646
- refs_to_import = []
1647
- for dataset in grouped_datasets:
1648
- refs_to_import.extend(dataset.refs)
1649
-
1650
- n_refs = len(refs_to_import)
1651
- _LOG.verbose(
1652
- "Importing %d ref%s of dataset type %r into run %r",
1653
- n_refs,
1654
- "" if n_refs == 1 else "s",
1655
- datasetType.name,
1656
- this_run,
1657
- )
1622
+ # Bulk insert.
1623
+ import_info = self._prepare_for_import_refs(
1624
+ self,
1625
+ refs,
1626
+ skip_missing=False,
1627
+ register_dataset_types=True,
1628
+ dry_run=dry_run,
1629
+ transfer_dimensions=False,
1630
+ )
1658
1631
 
1659
- # Import the refs and expand the DataCoordinates since we can't
1660
- # guarantee that they are expanded and Datastore will need
1661
- # the records.
1662
- imported_refs = self._registry._importDatasets(refs_to_import, expand=True)
1632
+ self._import_dimension_records(import_info.dimension_records, dry_run=dry_run)
1633
+ imported_refs = self._import_grouped_refs(
1634
+ import_info.grouped_refs, self, progress, dry_run=dry_run, expand_refs=True
1635
+ )
1663
1636
 
1664
- # Since refs can come from an external butler, there is no
1665
- # guarantee that the DatasetType values match. Compare IDs.
1666
- assert {ref.id for ref in imported_refs} == {ref.id for ref in refs_to_import}
1637
+ # The expanded refs need to be attached back to the original
1638
+ # FileDatasets for datastore to use.
1639
+ id_to_ref = {ref.id: ref for ref in imported_refs}
1667
1640
 
1668
- # Replace all the refs in the FileDataset with expanded versions.
1669
- # Pull them off in the order we put them on the list.
1670
- for dataset in grouped_datasets:
1671
- n_dataset_refs = len(dataset.refs)
1672
- dataset.refs = imported_refs[:n_dataset_refs]
1673
- del imported_refs[:n_dataset_refs]
1641
+ for dataset in progress.wrap(datasets, desc="Re-attaching expanded refs"):
1642
+ dataset.refs = [id_to_ref[ref.id] for ref in dataset.refs]
1674
1643
 
1675
1644
  @transactional
1676
1645
  def ingest(
@@ -1933,20 +1902,19 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1933
1902
 
1934
1903
  return dimension_records
1935
1904
 
1936
- def transfer_from(
1905
+ def _prepare_for_import_refs(
1937
1906
  self,
1938
1907
  source_butler: LimitedButler,
1939
1908
  source_refs: Iterable[DatasetRef],
1940
- transfer: str = "auto",
1909
+ *,
1941
1910
  skip_missing: bool = True,
1942
1911
  register_dataset_types: bool = False,
1943
1912
  transfer_dimensions: bool = False,
1944
1913
  dry_run: bool = False,
1945
- ) -> collections.abc.Collection[DatasetRef]:
1914
+ ) -> _ImportDatasetsInfo:
1946
1915
  # Docstring inherited.
1947
1916
  if not self.isWriteable():
1948
1917
  raise TypeError("Butler is read-only.")
1949
- progress = Progress("lsst.daf.butler.Butler.transfer_from", level=VERBOSE)
1950
1918
 
1951
1919
  # Will iterate through the refs multiple times so need to convert
1952
1920
  # to a list if this isn't a collection.
@@ -1954,7 +1922,7 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1954
1922
  source_refs = list(source_refs)
1955
1923
 
1956
1924
  original_count = len(source_refs)
1957
- _LOG.info("Transferring %d datasets into %s", original_count, str(self))
1925
+ _LOG.info("Importing %d datasets into %s", original_count, str(self))
1958
1926
 
1959
1927
  # In some situations the datastore artifact may be missing
1960
1928
  # and we do not want that registry entry to be imported.
@@ -1996,7 +1964,7 @@ class DirectButler(Butler): # numpydoc ignore=PR02
1996
1964
  # might result in additional unwanted dataset types being
1997
1965
  # registered.
1998
1966
  try:
1999
- if self._registry.registerDatasetType(datasetType):
1967
+ if not dry_run and self._registry.registerDatasetType(datasetType):
2000
1968
  newly_registered_dataset_types.add(datasetType)
2001
1969
  except ConflictingDefinitionError as e:
2002
1970
  # Be safe and require that conversions be bidirectional
@@ -2076,86 +2044,132 @@ class DirectButler(Butler): # numpydoc ignore=PR02
2076
2044
  dimension_records = self._extract_all_dimension_records_from_data_ids(
2077
2045
  source_butler, dataIds, elements
2078
2046
  )
2047
+ return _ImportDatasetsInfo(grouped_refs, dimension_records, artifact_existence)
2079
2048
 
2049
+ def _import_dimension_records(
2050
+ self,
2051
+ dimension_records: dict[DimensionElement, dict[DataCoordinate, DimensionRecord]],
2052
+ *,
2053
+ dry_run: bool,
2054
+ ) -> None:
2055
+ """Import dimension records collected during import pre-process."""
2056
+ if dimension_records and not dry_run:
2057
+ _LOG.verbose("Ensuring that dimension records exist for transferred datasets.")
2058
+ # Order matters.
2059
+ for element in self.dimensions.sorted(dimension_records.keys()):
2060
+ records = list(dimension_records[element].values())
2061
+ # Assume that if the record is already present that we can
2062
+ # use it without having to check that the record metadata
2063
+ # is consistent.
2064
+ self._registry.insertDimensionData(element, *records, skip_existing=True)
2065
+
2066
+ def _import_grouped_refs(
2067
+ self,
2068
+ grouped_refs: defaultdict[_RefGroup, list[DatasetRef]],
2069
+ source_butler: LimitedButler,
2070
+ progress: Progress,
2071
+ *,
2072
+ dry_run: bool = False,
2073
+ expand_refs: bool = False,
2074
+ ) -> list[DatasetRef]:
2080
2075
  handled_collections: set[str] = set()
2081
-
2082
- # Do all the importing in a single transaction.
2083
- with self.transaction():
2084
- if dimension_records and not dry_run:
2085
- _LOG.verbose("Ensuring that dimension records exist for transferred datasets.")
2086
- # Order matters.
2087
- for element in self.dimensions.sorted(dimension_records.keys()):
2088
- records = [r for r in dimension_records[element].values()]
2089
- # Assume that if the record is already present that we can
2090
- # use it without having to check that the record metadata
2091
- # is consistent.
2092
- self._registry.insertDimensionData(element, *records, skip_existing=True)
2093
-
2094
- n_imported = 0
2095
-
2096
- # Sort by run collection name to ensure Postgres takes locks in the
2097
- # same order between different processes, to mitigate an issue
2098
- # where Postgres can deadlock due to the unique index on collection
2099
- # name. (See DM-47543).
2100
- groups = sorted(grouped_refs.items(), key=lambda item: item[0].run)
2101
- for (dimension_group, run), refs_to_import in progress.iter_item_chunks(
2102
- groups, desc="Importing to registry by run and dataset type"
2103
- ):
2104
- if run not in handled_collections:
2105
- # May need to create output collection. If source butler
2106
- # has a registry, ask for documentation string.
2107
- run_doc = None
2108
- if registry := getattr(source_butler, "registry", None):
2109
- run_doc = registry.getCollectionDocumentation(run)
2110
- if not dry_run:
2111
- registered = self.collections.register(run, doc=run_doc)
2112
- else:
2113
- registered = True
2114
- handled_collections.add(run)
2115
- if registered:
2116
- _LOG.verbose("Creating output run %s", run)
2117
-
2118
- n_refs = len(refs_to_import)
2119
- _LOG.verbose(
2120
- "Importing %d ref%s with dimensions %s into run %s",
2121
- n_refs,
2122
- "" if n_refs == 1 else "s",
2123
- dimension_group.names,
2124
- run,
2125
- )
2126
-
2127
- # Assume we are using UUIDs and the source refs will match
2128
- # those imported.
2076
+ n_to_import = 0
2077
+ all_imported_refs: list[DatasetRef] = []
2078
+ # Sort by run collection name to ensure Postgres takes locks in the
2079
+ # same order between different processes, to mitigate an issue
2080
+ # where Postgres can deadlock due to the unique index on collection
2081
+ # name. (See DM-47543).
2082
+ groups = sorted(grouped_refs.items(), key=lambda item: item[0].run)
2083
+ for (dimension_group, run), refs_to_import in progress.iter_item_chunks(
2084
+ groups, desc="Importing to registry by run and dataset type"
2085
+ ):
2086
+ if run not in handled_collections:
2087
+ # May need to create output collection. If source butler
2088
+ # has a registry, ask for documentation string.
2089
+ run_doc = None
2090
+ if registry := getattr(source_butler, "registry", None):
2091
+ run_doc = registry.getCollectionDocumentation(run)
2129
2092
  if not dry_run:
2130
- imported_refs = self._registry._importDatasets(refs_to_import)
2093
+ registered = self.collections.register(run, doc=run_doc)
2131
2094
  else:
2132
- imported_refs = refs_to_import
2095
+ registered = True
2096
+ handled_collections.add(run)
2097
+ if registered:
2098
+ _LOG.verbose("Creating output run %s", run)
2099
+
2100
+ n_refs = len(refs_to_import)
2101
+ n_to_import += n_refs
2102
+ _LOG.verbose(
2103
+ "Importing %d ref%s with dimensions %s into run %s",
2104
+ n_refs,
2105
+ "" if n_refs == 1 else "s",
2106
+ dimension_group.names,
2107
+ run,
2108
+ )
2109
+
2110
+ # Assume we are using UUIDs and the source refs will match
2111
+ # those imported.
2112
+ if not dry_run:
2113
+ imported_refs = self._registry._importDatasets(refs_to_import, expand=expand_refs)
2114
+ else:
2115
+ imported_refs = refs_to_import
2116
+
2117
+ all_imported_refs.extend(imported_refs)
2118
+
2119
+ assert n_to_import == len(all_imported_refs)
2120
+ _LOG.verbose("Imported %d datasets into destination butler", n_to_import)
2121
+ return all_imported_refs
2122
+
2123
+ def transfer_from(
2124
+ self,
2125
+ source_butler: LimitedButler,
2126
+ source_refs: Iterable[DatasetRef],
2127
+ transfer: str = "auto",
2128
+ skip_missing: bool = True,
2129
+ register_dataset_types: bool = False,
2130
+ transfer_dimensions: bool = False,
2131
+ dry_run: bool = False,
2132
+ ) -> collections.abc.Collection[DatasetRef]:
2133
+ # Docstring inherited.
2134
+ if not self.isWriteable():
2135
+ raise TypeError("Butler is read-only.")
2133
2136
 
2134
- n_imported += len(imported_refs)
2137
+ progress = Progress("lsst.daf.butler.Butler.transfer_from", level=VERBOSE)
2135
2138
 
2136
- assert len(source_refs) == n_imported
2137
- _LOG.verbose("Imported %d datasets into destination butler", n_imported)
2139
+ import_info = self._prepare_for_import_refs(
2140
+ source_butler,
2141
+ source_refs,
2142
+ skip_missing=skip_missing,
2143
+ register_dataset_types=register_dataset_types,
2144
+ dry_run=dry_run,
2145
+ transfer_dimensions=transfer_dimensions,
2146
+ )
2147
+
2148
+ # Do all the importing in a single transaction.
2149
+ with self.transaction():
2150
+ self._import_dimension_records(import_info.dimension_records, dry_run=dry_run)
2151
+ imported_refs = self._import_grouped_refs(
2152
+ import_info.grouped_refs, source_butler, progress, dry_run=dry_run
2153
+ )
2138
2154
 
2139
2155
  # Ask the datastore to transfer. The datastore has to check that
2140
2156
  # the source datastore is compatible with the target datastore.
2141
2157
  accepted, rejected = self._datastore.transfer_from(
2142
2158
  source_butler._datastore,
2143
- source_refs,
2159
+ imported_refs,
2144
2160
  transfer=transfer,
2145
- artifact_existence=artifact_existence,
2161
+ artifact_existence=import_info.artifact_existence,
2146
2162
  dry_run=dry_run,
2147
2163
  )
2148
2164
  if rejected:
2149
2165
  # For now, accept the registry entries but not the files.
2150
2166
  _LOG.warning(
2151
- "%d datasets were rejected and %d accepted for dataset type %s in run %r.",
2167
+ "%d datasets were rejected and %d accepted for transfer.",
2152
2168
  len(rejected),
2153
2169
  len(accepted),
2154
- datasetType,
2155
- run,
2156
2170
  )
2157
2171
 
2158
- return source_refs
2172
+ return imported_refs
2159
2173
 
2160
2174
  def validateConfiguration(
2161
2175
  self,
@@ -2382,3 +2396,11 @@ class _RefGroup(NamedTuple):
2382
2396
 
2383
2397
  dimensions: DimensionGroup
2384
2398
  run: str
2399
+
2400
+
2401
+ class _ImportDatasetsInfo(NamedTuple):
2402
+ """Information extracted from datasets to be imported."""
2403
+
2404
+ grouped_refs: defaultdict[_RefGroup, list[DatasetRef]]
2405
+ dimension_records: dict[DimensionElement, dict[DataCoordinate, DimensionRecord]]
2406
+ artifact_existence: dict[ResourcePath, bool]
@@ -187,14 +187,7 @@ class RemoteButler(Butler): # numpydoc ignore=PR02
187
187
  model = parse_model(response, GetUniverseResponseModel)
188
188
 
189
189
  config = DimensionConfig.from_simple(model.universe)
190
- universe = DimensionUniverse(
191
- config,
192
- # The process-global cache internal to DimensionUniverse can mask
193
- # problems in unit tests, since client and server live in the same
194
- # process for these tests. We are doing our own caching, so we
195
- # don't benefit from it. So just disable it.
196
- use_cache=False,
197
- )
190
+ universe = DimensionUniverse(config)
198
191
  with self._cache.access() as cache:
199
192
  if cache.dimensions is None:
200
193
  cache.dimensions = universe
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "29.2025.1700"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 29.2025.1600
3
+ Version: 29.2025.1700
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
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "29.2025.1600"