lsst-daf-butler 30.0.0rc3__tar.gz → 30.0.1__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 (439) hide show
  1. {lsst_daf_butler-30.0.0rc3/python/lsst_daf_butler.egg-info → lsst_daf_butler-30.0.1}/PKG-INFO +3 -2
  2. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/CHANGES.rst +23 -0
  3. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/writing-subcommands.rst +4 -4
  4. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/pyproject.toml +3 -1
  5. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler.py +19 -3
  6. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler_collections.py +4 -4
  7. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler_metrics.py +2 -0
  8. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_dataset_provenance.py +1 -1
  9. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_dataset_ref.py +1 -1
  10. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_exceptions.py +2 -2
  11. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_file_dataset.py +2 -1
  12. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_formatter.py +12 -0
  13. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_query_all_datasets.py +2 -0
  14. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/cmd/_remove_runs.py +1 -12
  15. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/column_spec.py +4 -4
  16. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/_datastore.py +21 -1
  17. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/stored_file_info.py +2 -2
  18. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/chainedDatastore.py +4 -0
  19. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/fileDatastore.py +11 -1
  20. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/file_datastore/get.py +4 -4
  21. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py +5 -1
  22. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/file_datastore/transfer.py +2 -2
  23. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/inMemoryDatastore.py +8 -0
  24. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/ddl.py +2 -2
  25. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_coordinate.py +6 -8
  26. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_record_set.py +1 -1
  27. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_records.py +9 -3
  28. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_butler/_direct_butler.py +40 -23
  29. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_driver.py +5 -4
  30. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_result_page_converter.py +1 -1
  31. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/parquet.py +6 -6
  32. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/nonempty_mapping.py +1 -1
  33. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/persistence_context.py +8 -5
  34. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_general_query_results.py +1 -1
  35. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/driver.py +1 -1
  36. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expression_factory.py +2 -2
  37. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/exprTree.py +1 -1
  38. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/parserYacc.py +1 -1
  39. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/overlaps.py +2 -2
  40. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_column_set.py +1 -1
  41. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_collection_record_cache.py +1 -1
  42. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_collection_summary_cache.py +5 -4
  43. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_registry.py +4 -0
  44. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/databases/postgresql.py +2 -1
  45. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py +1 -1
  46. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py +4 -2
  47. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py +3 -2
  48. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_datasets.py +2 -1
  49. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_obscore.py +1 -1
  50. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/_records.py +1 -1
  51. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/_spatial.py +2 -2
  52. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/_results.py +2 -2
  53. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/sql_registry.py +1 -1
  54. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/wildcards.py +5 -5
  55. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_get.py +1 -1
  56. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_remote_butler.py +1 -0
  57. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py +4 -0
  58. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/authentication/cadc.py +4 -3
  59. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/_pruneDatasets.py +4 -2
  60. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/configValidate.py +2 -2
  61. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/queryCollections.py +2 -2
  62. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/removeCollections.py +2 -0
  63. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/removeRuns.py +2 -0
  64. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/cliCmdTestBase.py +2 -0
  65. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/cliLogTestBase.py +2 -0
  66. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/hybrid_butler.py +6 -1
  67. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/spatial.py +4 -2
  68. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/utils.py +1 -1
  69. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/timespan_database_representation.py +3 -3
  70. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/version.py +1 -1
  71. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1/python/lsst_daf_butler.egg-info}/PKG-INFO +3 -2
  72. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/requires.txt +1 -1
  73. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_butler.py +18 -0
  74. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdPruneDatasets.py +2 -2
  75. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdRemoveCollections.py +3 -3
  76. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_datastore.py +4 -1
  77. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_quantumBackedButler.py +7 -0
  78. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_simpleButler.py +10 -0
  79. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/COPYRIGHT +0 -0
  80. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/LICENSE +0 -0
  81. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/MANIFEST.in +0 -0
  82. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/README.md +0 -0
  83. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/bsd_license.txt +0 -0
  84. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/concreteStorageClasses.rst +0 -0
  85. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/configuring.rst +0 -0
  86. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/datastores.rst +0 -0
  87. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/dimensions.rst +0 -0
  88. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/formatters.rst +0 -0
  89. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/index.rst +0 -0
  90. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/organizing.rst +0 -0
  91. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/queries.rst +0 -0
  92. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/doc/lsst.daf.butler/use-in-tests.rst +0 -0
  93. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/gpl-v3.0.txt +0 -0
  94. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/__init__.py +0 -0
  95. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/__init__.py +0 -0
  96. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/__init__.py +0 -0
  97. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler_config.py +0 -0
  98. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler_instance_options.py +0 -0
  99. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_butler_repo_index.py +0 -0
  100. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_collection_type.py +0 -0
  101. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_config.py +0 -0
  102. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_config_support.py +0 -0
  103. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_dataset_association.py +0 -0
  104. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_dataset_existence.py +0 -0
  105. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_dataset_type.py +0 -0
  106. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_deferredDatasetHandle.py +0 -0
  107. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_exceptions_legacy.py +0 -0
  108. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_file_descriptor.py +0 -0
  109. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_labeled_butler_factory.py +0 -0
  110. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_limited_butler.py +0 -0
  111. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_location.py +0 -0
  112. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_named.py +0 -0
  113. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_quantum.py +0 -0
  114. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_quantum_backed.py +0 -0
  115. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_registry_shim.py +0 -0
  116. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_rubin/__init__.py +0 -0
  117. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_rubin/file_datasets.py +0 -0
  118. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_rubin/temporary_for_ingest.py +0 -0
  119. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_standalone_datastore.py +0 -0
  120. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_storage_class.py +0 -0
  121. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_storage_class_delegate.py +0 -0
  122. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_timespan.py +0 -0
  123. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_topology.py +0 -0
  124. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_utilities/__init__.py +0 -0
  125. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_utilities/locked_object.py +0 -0
  126. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_utilities/named_locks.py +0 -0
  127. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_utilities/thread_safe_cache.py +0 -0
  128. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/_uuid.py +0 -0
  129. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/arrow_utils.py +0 -0
  130. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/__init__.py +0 -0
  131. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/butler.py +0 -0
  132. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/cliLog.py +0 -0
  133. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/cmd/__init__.py +0 -0
  134. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/cmd/_remove_collections.py +0 -0
  135. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/cmd/commands.py +0 -0
  136. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/opt/__init__.py +0 -0
  137. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/opt/arguments.py +0 -0
  138. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/opt/optionGroups.py +0 -0
  139. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/opt/options.py +0 -0
  140. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/progress.py +0 -0
  141. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/cli/utils.py +0 -0
  142. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/datastore.yaml +0 -0
  143. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/datastores/composites.yaml +0 -0
  144. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/datastores/fileDatastore.yaml +0 -0
  145. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/datastores/formatters.yaml +0 -0
  146. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/datastores/writeRecipes.yaml +0 -0
  147. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/dimensions.yaml +0 -0
  148. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe0.yaml +0 -0
  149. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe1.yaml +0 -0
  150. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe2.yaml +0 -0
  151. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe3.yaml +0 -0
  152. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe4.yaml +0 -0
  153. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe5.yaml +0 -0
  154. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe6.yaml +0 -0
  155. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/old_dimensions/daf_butler_universe7.yaml +0 -0
  156. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/registry.yaml +0 -0
  157. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/repo_transfer_formats.yaml +0 -0
  158. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/configs/storageClasses.yaml +0 -0
  159. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/__init__.py +0 -0
  160. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/_transfer.py +0 -0
  161. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/cache_manager.py +0 -0
  162. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/composites.py +0 -0
  163. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/constraints.py +0 -0
  164. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/file_templates.py +0 -0
  165. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/generic_base.py +0 -0
  166. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastore/record_data.py +0 -0
  167. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/__init__.py +0 -0
  168. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/datastores/file_datastore/__init__.py +0 -0
  169. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/delegates/__init__.py +0 -0
  170. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/delegates/arrowtable.py +0 -0
  171. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/__init__.py +0 -0
  172. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_config.py +0 -0
  173. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py +0 -0
  174. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_database.py +0 -0
  175. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_elements.py +0 -0
  176. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_governor.py +0 -0
  177. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_group.py +0 -0
  178. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_packer.py +0 -0
  179. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_record_table.py +0 -0
  180. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_schema.py +0 -0
  181. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_skypix.py +0 -0
  182. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/_universe.py +0 -0
  183. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/construction.py +0 -0
  184. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/dimensions/record_cache.py +0 -0
  185. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_butler/__init__.py +0 -0
  186. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_butler/_direct_butler_collections.py +0 -0
  187. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/__init__.py +0 -0
  188. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_postprocessing.py +0 -0
  189. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_query_analysis.py +0 -0
  190. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_query_builder.py +0 -0
  191. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_sql_builders.py +0 -0
  192. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py +0 -0
  193. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/__init__.py +0 -0
  194. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/astropyTable.py +0 -0
  195. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/file.py +0 -0
  196. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/json.py +0 -0
  197. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/logs.py +0 -0
  198. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/matplotlib.py +0 -0
  199. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/packages.py +0 -0
  200. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/pickle.py +0 -0
  201. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/typeless.py +0 -0
  202. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/formatters/yaml.py +0 -0
  203. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/json.py +0 -0
  204. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/logging.py +0 -0
  205. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/mapping_factory.py +0 -0
  206. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/name_shrinker.py +0 -0
  207. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/progress.py +0 -0
  208. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/py.typed +0 -0
  209. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/pydantic_utils.py +0 -0
  210. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/__init__.py +0 -0
  211. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_base.py +0 -0
  212. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_data_coordinate_query_results.py +0 -0
  213. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_dataset_query_results.py +0 -0
  214. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_dimension_record_query_results.py +0 -0
  215. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_expression_strings.py +0 -0
  216. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_identifiers.py +0 -0
  217. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/_query.py +0 -0
  218. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/convert_args.py +0 -0
  219. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/__init__.py +0 -0
  220. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/categorize.py +0 -0
  221. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/__init__.py +0 -0
  222. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/parser.py +0 -0
  223. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/parserLex.py +0 -0
  224. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/ply/__init__.py +0 -0
  225. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/ply/lex.py +0 -0
  226. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py +0 -0
  227. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py +0 -0
  228. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/predicate_constraints_summary.py +0 -0
  229. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/result_specs.py +0 -0
  230. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/__init__.py +0 -0
  231. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_base.py +0 -0
  232. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_column_expression.py +0 -0
  233. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_column_literal.py +0 -0
  234. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_column_reference.py +0 -0
  235. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_predicate.py +0 -0
  236. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/tree/_query_tree.py +0 -0
  237. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/queries/visitors.py +0 -0
  238. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/__init__.py +0 -0
  239. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_caching_context.py +0 -0
  240. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_collection_summary.py +0 -0
  241. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_config.py +0 -0
  242. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_defaults.py +0 -0
  243. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_exceptions.py +0 -0
  244. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_registry_base.py +0 -0
  245. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/_registry_factory.py +0 -0
  246. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/attributes.py +0 -0
  247. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/bridge/__init__.py +0 -0
  248. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/bridge/ephemeral.py +0 -0
  249. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/bridge/monolithic.py +0 -0
  250. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/collections/__init__.py +0 -0
  251. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/collections/_base.py +0 -0
  252. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/collections/nameKey.py +0 -0
  253. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/collections/synthIntKey.py +0 -0
  254. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/connectionString.py +0 -0
  255. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/databases/__init__.py +0 -0
  256. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/databases/sqlite.py +0 -0
  257. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/__init__.py +0 -0
  258. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py +0 -0
  259. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/datasets/byDimensions/tables.py +0 -0
  260. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/dimensions/__init__.py +0 -0
  261. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/dimensions/static.py +0 -0
  262. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/expand_data_ids.py +0 -0
  263. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/__init__.py +0 -0
  264. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_attributes.py +0 -0
  265. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_bridge.py +0 -0
  266. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_collections.py +0 -0
  267. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_database.py +0 -0
  268. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_database_explain.py +0 -0
  269. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_dimensions.py +0 -0
  270. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_opaque.py +0 -0
  271. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/interfaces/_versioning.py +0 -0
  272. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/managers.py +0 -0
  273. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/nameShrinker.py +0 -0
  274. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/__init__.py +0 -0
  275. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/_config.py +0 -0
  276. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/_manager.py +0 -0
  277. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/_schema.py +0 -0
  278. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/default_spatial.py +0 -0
  279. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/obscore/pgsphere.py +0 -0
  280. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/opaque.py +0 -0
  281. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/__init__.py +0 -0
  282. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/_query_common.py +0 -0
  283. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/_query_data_coordinates.py +0 -0
  284. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/_query_datasets.py +0 -0
  285. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/queries/_query_dimension_records.py +0 -0
  286. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/tests/__init__.py +0 -0
  287. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/tests/_database.py +0 -0
  288. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/tests/_registry.py +0 -0
  289. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/registry/versions.py +0 -0
  290. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/__init__.py +0 -0
  291. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_collection_args.py +0 -0
  292. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_config.py +0 -0
  293. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_defaults.py +0 -0
  294. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_errors.py +0 -0
  295. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_factory.py +0 -0
  296. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_http_connection.py +0 -0
  297. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_query_driver.py +0 -0
  298. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_query_results.py +0 -0
  299. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_ref_utils.py +0 -0
  300. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_registry.py +0 -0
  301. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/_remote_butler_collections.py +0 -0
  302. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/authentication/__init__.py +0 -0
  303. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/authentication/interface.py +0 -0
  304. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/authentication/rubin.py +0 -0
  305. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/registry/__init__.py +0 -0
  306. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/__init__.py +0 -0
  307. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_config.py +0 -0
  308. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_dependencies.py +0 -0
  309. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_factory.py +0 -0
  310. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py +0 -0
  311. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_server.py +0 -0
  312. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/_telemetry.py +0 -0
  313. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_external.py +0 -0
  314. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_external_query.py +0 -0
  315. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_file_info.py +0 -0
  316. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_internal.py +0 -0
  317. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_query_limits.py +0 -0
  318. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_query_serialization.py +0 -0
  319. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_query_streaming.py +0 -0
  320. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server/handlers/_utils.py +0 -0
  321. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/remote_butler/server_models.py +0 -0
  322. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/repo_relocation.py +0 -0
  323. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/__init__.py +0 -0
  324. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/_associate.py +0 -0
  325. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/butlerImport.py +0 -0
  326. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/certifyCalibrations.py +0 -0
  327. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/collectionChain.py +0 -0
  328. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/configDump.py +0 -0
  329. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/createRepo.py +0 -0
  330. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/exportCalibs.py +0 -0
  331. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/ingest_files.py +0 -0
  332. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/ingest_zip.py +0 -0
  333. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/queryDataIds.py +0 -0
  334. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/queryDatasetTypes.py +0 -0
  335. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/queryDatasets.py +0 -0
  336. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/queryDimensionRecords.py +0 -0
  337. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/register_dataset_type.py +0 -0
  338. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/removeDatasetType.py +0 -0
  339. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/retrieveArtifacts.py +0 -0
  340. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/script/transferDatasets.py +0 -0
  341. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/__init__.py +0 -0
  342. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/_datasetsHelper.py +0 -0
  343. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/_dummyRegistry.py +0 -0
  344. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/_examplePythonTypes.py +0 -0
  345. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/_testRepo.py +0 -0
  346. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/butler_queries.py +0 -0
  347. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/deferredFormatter.py +0 -0
  348. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/dict_convertible_model.py +0 -0
  349. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/hybrid_butler_collections.py +0 -0
  350. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/hybrid_butler_registry.py +0 -0
  351. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/postgresql.py +0 -0
  352. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/__init__.py +0 -0
  353. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/base.yaml +0 -0
  354. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset-skymap.yaml +0 -0
  355. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/ci_hsc-subset.yaml +0 -0
  356. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/datasets.yaml +0 -0
  357. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/hsc-rc2-subset-v0.yaml +0 -0
  358. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/lsstcam-subset.yaml +0 -0
  359. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/registry_data/spatial.yaml +0 -0
  360. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/server.py +0 -0
  361. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/server_available.py +0 -0
  362. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/server_utils.py +0 -0
  363. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/tests/testFormatters.py +0 -0
  364. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/time_utils.py +0 -0
  365. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/transfers/__init__.py +0 -0
  366. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/transfers/_context.py +0 -0
  367. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/transfers/_interfaces.py +0 -0
  368. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/transfers/_yaml.py +0 -0
  369. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst/daf/butler/utils.py +0 -0
  370. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/SOURCES.txt +0 -0
  371. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/dependency_links.txt +0 -0
  372. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/entry_points.txt +0 -0
  373. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/top_level.txt +0 -0
  374. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/python/lsst_daf_butler.egg-info/zip-safe +0 -0
  375. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/setup.cfg +0 -0
  376. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_astropyTableFormatter.py +0 -0
  377. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_authentication.py +0 -0
  378. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_butler_factory.py +0 -0
  379. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdAssociate.py +0 -0
  380. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdConfigDump.py +0 -0
  381. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdConfigValidate.py +0 -0
  382. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdCreate.py +0 -0
  383. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdImport.py +0 -0
  384. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdIngestFiles.py +0 -0
  385. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdQueryCollections.py +0 -0
  386. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdQueryDataIds.py +0 -0
  387. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdQueryDatasetTypes.py +0 -0
  388. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdQueryDatasets.py +0 -0
  389. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdQueryDimensionRecords.py +0 -0
  390. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdRemoveRuns.py +0 -0
  391. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliCmdRetrieveArtifacts.py +0 -0
  392. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliLog.py +0 -0
  393. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliPluginLoader.py +0 -0
  394. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliUtilSplitCommas.py +0 -0
  395. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliUtilSplitKv.py +0 -0
  396. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliUtilToUpper.py +0 -0
  397. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_cliUtils.py +0 -0
  398. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_column_spec.py +0 -0
  399. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_composites.py +0 -0
  400. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_config.py +0 -0
  401. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_connectionString.py +0 -0
  402. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_constraints.py +0 -0
  403. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_datasets.py +0 -0
  404. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_ddl.py +0 -0
  405. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_dimension_record_containers.py +0 -0
  406. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_dimensions.py +0 -0
  407. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_exprParserLex.py +0 -0
  408. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_exprParserYacc.py +0 -0
  409. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_formatter.py +0 -0
  410. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_gafaelfawr.py +0 -0
  411. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_location.py +0 -0
  412. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_logFormatter.py +0 -0
  413. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_logging.py +0 -0
  414. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_matplotlibFormatter.py +0 -0
  415. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_nonempty_mapping.py +0 -0
  416. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_obscore.py +0 -0
  417. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_packages.py +0 -0
  418. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_parquet.py +0 -0
  419. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_postgresql.py +0 -0
  420. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_progress.py +0 -0
  421. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_pydantic_utils.py +0 -0
  422. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_quantum.py +0 -0
  423. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_query_direct_postgresql.py +0 -0
  424. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_query_direct_sqlite.py +0 -0
  425. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_query_interface.py +0 -0
  426. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_query_remote.py +0 -0
  427. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_query_utilities.py +0 -0
  428. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_remote_butler.py +0 -0
  429. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_server.py +0 -0
  430. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_sqlite.py +0 -0
  431. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_storageClass.py +0 -0
  432. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_templates.py +0 -0
  433. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_testRepo.py +0 -0
  434. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_thread_utils.py +0 -0
  435. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_time_utils.py +0 -0
  436. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_timespan.py +0 -0
  437. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_utils.py +0 -0
  438. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_uuid.py +0 -0
  439. {lsst_daf_butler-30.0.0rc3 → lsst_daf_butler-30.0.1}/tests/test_versioning.py +0 -0
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-daf-butler
3
- Version: 30.0.0rc3
3
+ Version: 30.0.1
4
4
  Summary: An abstraction layer for reading and writing astronomical data to datastores.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License-Expression: BSD-3-Clause OR GPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/lsst/daf_butler
8
+ Project-URL: Source, https://github.com/lsst/daf_butler
8
9
  Keywords: lsst
9
10
  Classifier: Intended Audience :: Science/Research
10
11
  Classifier: Operating System :: OS Independent
@@ -42,7 +43,7 @@ Provides-Extra: test
42
43
  Requires-Dist: pytest>=3.2; extra == "test"
43
44
  Requires-Dist: numpy>=1.17; extra == "test"
44
45
  Requires-Dist: matplotlib>=3.0.3; extra == "test"
45
- Requires-Dist: pandas>=1.0; extra == "test"
46
+ Requires-Dist: pandas<3.0,>=1.0; extra == "test"
46
47
  Provides-Extra: s3
47
48
  Requires-Dist: lsst-resources[s3]; extra == "s3"
48
49
  Provides-Extra: https
@@ -1,3 +1,25 @@
1
+ Butler v30.0.1 (2026-02-02)
2
+ ===========================
3
+
4
+ API Changes
5
+ -----------
6
+
7
+ - * Added ``ZipIndex.from_open_zip()`` method to allow the index to be read from a previously opened zip file.
8
+ * Added ``skip_existing`` parameter to ``Butler.ingest_zip`` to allow the command to ignore any previously ingested datasets. (`DM-52925 <https://rubinobs.atlassian.net/browse/DM-52925>`_)
9
+
10
+
11
+ Bug Fixes
12
+ ---------
13
+
14
+ - Fixed a bug that caused datastore checksums to be read back in as UUIDs, which would then break task execution with the ``QuantumBackedButler``. (`DM-53631 <https://rubinobs.atlassian.net/browse/DM-53631>`_)
15
+
16
+
17
+ Other Changes and Additions
18
+ ---------------------------
19
+
20
+ - Added metrics recording to ``Butler.ingest_zip()``. (`DM-52925 <https://rubinobs.atlassian.net/browse/DM-52925>`_)
21
+
22
+
1
23
  Butler v30.0.0 (2026-01-15)
2
24
  ===========================
3
25
 
@@ -76,6 +98,7 @@ Other Changes and Additions
76
98
  - * Modified ``ObsCore`` records to place "exposure" in any visit fields if there is an exposure but no visit defined.
77
99
  This required the addition of a new method to the ``RecordFactory`` which can be subclassed by other plugins.
78
100
  * Added ability to hard code the ``s_xel1`` and ``s_xel2`` ObsCore fields per dataset type. (`DM-51495 <https://rubinobs.atlassian.net/browse/DM-51495>`_)
101
+ - Added ``PhotozModel`` as an alternate name for the ``PZModel`` storage class. (`DM-51660 <https://rubinobs.atlassian.net/browse/DM-51660>`_)
79
102
  - Drop incomplete support for case-insensitive handling of identifiers in query expressions.
80
103
 
81
104
  Some code in the query generation system was trying to allow dimension names to be case-insensitive, but was actually just inadvertently requiring all dimension names to be defined as lowercase.
@@ -62,8 +62,8 @@ Example of a command or subcommand definition:
62
62
  if __name__ == "__main__":
63
63
  git()
64
64
 
65
- This creates a command that is called by `main`, which has a subcommand `pull`.
66
- It automatically has a `--help` option:
65
+ This creates a command that is called by ``main``, which has a subcommand ``pull``.
66
+ It automatically has a ``--help`` option:
67
67
 
68
68
  .. code-block:: text
69
69
 
@@ -75,7 +75,7 @@ It automatically has a `--help` option:
75
75
  Options:
76
76
  --help Show this message and exit.
77
77
 
78
- And `pull` can be called as a subcommand:
78
+ And ``pull`` can be called as a subcommand:
79
79
 
80
80
  .. code-block:: text
81
81
 
@@ -98,7 +98,7 @@ For example, the function
98
98
  def register_instrument():
99
99
  ...
100
100
 
101
- Becomes a subcommand of `butler` called ``register-instrument``.
101
+ Becomes a subcommand of ``butler`` called ``register-instrument``.
102
102
 
103
103
  Butler Subcommands
104
104
  ~~~~~~~~~~~~~~~~~~
@@ -39,6 +39,7 @@ dependencies = [
39
39
  dynamic = ["version"]
40
40
  [project.urls]
41
41
  "Homepage" = "https://github.com/lsst/daf_butler"
42
+ "Source" = "https://github.com/lsst/daf_butler"
42
43
 
43
44
  [project.optional-dependencies]
44
45
  postgres = ["psycopg2"]
@@ -56,7 +57,7 @@ test = [
56
57
  "pytest >= 3.2",
57
58
  "numpy >= 1.17",
58
59
  "matplotlib >= 3.0.3",
59
- "pandas >= 1.0",
60
+ "pandas >= 1.0, < 3.0",
60
61
  ]
61
62
  # Also expose the optional dependencies of lsst-resources as optional
62
63
  # dependencies of lsst-daf-butler. lsst-daf-butler itself doesn't care what
@@ -233,6 +234,7 @@ checks = [
233
234
  "RT01", # Unfortunately our @property trigger this.
234
235
  "RT02", # Does not want named return value. DM style says we do.
235
236
  "SS05", # pydocstyle is better at finding infinitive verb.
237
+ "RT03", # Temporarily disable for sphinx empty returns.
236
238
  ]
237
239
  exclude = [
238
240
  "^test_.*", # Do not test docstrings in test code.
@@ -138,7 +138,10 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
138
138
  without_datastore : `bool`, optional
139
139
  If `True` do not attach a datastore to this butler. Any attempts
140
140
  to use a datastore will fail.
141
- **kwargs : `Any`
141
+ metrics : `ButlerMetrics` or `None`
142
+ External metrics object to be used for tracking butler usage. If `None`
143
+ a new metrics object is created.
144
+ **kwargs : `typing.Any`
142
145
  Additional keyword arguments passed to a constructor of actual butler
143
146
  class.
144
147
 
@@ -240,7 +243,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
240
243
  to use a datastore will fail.
241
244
  metrics : `ButlerMetrics` or `None`, optional
242
245
  Metrics object to record butler usage statistics.
243
- **kwargs : `Any`
246
+ **kwargs : `typing.Any`
244
247
  Default data ID key-value pairs. These may only identify
245
248
  "governor" dimensions like ``instrument`` and ``skymap``.
246
249
 
@@ -1390,6 +1393,10 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1390
1393
  raised if any datasets with the same dataset ID already exist
1391
1394
  in the datastore.
1392
1395
 
1396
+ Returns
1397
+ -------
1398
+ None
1399
+
1393
1400
  Raises
1394
1401
  ------
1395
1402
  TypeError
@@ -1429,6 +1436,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1429
1436
  *,
1430
1437
  transfer_dimensions: bool = False,
1431
1438
  dry_run: bool = False,
1439
+ skip_existing: bool = False,
1432
1440
  ) -> None:
1433
1441
  """Ingest a Zip file into this butler.
1434
1442
 
@@ -1447,6 +1455,14 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
1447
1455
  If `True` the ingest will be processed without any modifications
1448
1456
  made to the target butler and as if the target butler did not
1449
1457
  have any of the datasets.
1458
+ skip_existing : `bool`, optional
1459
+ If `True`, a zip will not be ingested if the dataset entries listed
1460
+ in the index with the same dataset ID already exists in the butler.
1461
+ If `False` (the default), a `ConflictingDefinitionError` will be
1462
+ raised if any datasets with the same dataset ID already exist
1463
+ in the repository. If, somehow, some datasets are known to the
1464
+ butler and some are not, this is currently treated as an error
1465
+ rather than attempting to do a partial ingest.
1450
1466
 
1451
1467
  Notes
1452
1468
  -----
@@ -2024,7 +2040,7 @@ class Butler(LimitedButler): # numpydoc ignore=PR02
2024
2040
 
2025
2041
  Returns
2026
2042
  -------
2027
- records : `list`[`DimensionRecord`]
2043
+ records : `list` [`DimensionRecord`]
2028
2044
  Dimension records matching the given query parameters.
2029
2045
 
2030
2046
  Raises
@@ -360,10 +360,10 @@ class ButlerCollections(ABC, Sequence):
360
360
  name : `str`
361
361
  The name of the collection of interest.
362
362
  include_parents : `bool`, optional
363
- If `True` any parents of this collection will be included.
363
+ If `True` any parents of this collection will be included.
364
364
  include_summary : `bool`, optional
365
- If `True` dataset type names and governor dimensions of datasets
366
- stored in this collection will be included in the result.
365
+ If `True` dataset type names and governor dimensions of datasets
366
+ stored in this collection will be included in the result.
367
367
 
368
368
  Returns
369
369
  -------
@@ -464,7 +464,7 @@ class ButlerCollections(ABC, Sequence):
464
464
 
465
465
  Returns
466
466
  -------
467
- filtered : `~collections.abc.Mapping` [`str`, `list`[`str`]]
467
+ filtered : `~collections.abc.Mapping` [`str`, `list` [`str`]]
468
468
  Mapping of the dataset type name to its corresponding list of
469
469
  collection names.
470
470
  """
@@ -27,6 +27,8 @@
27
27
 
28
28
  from __future__ import annotations
29
29
 
30
+ __all__ = ["ButlerMetrics"]
31
+
30
32
  from collections.abc import Callable, Iterator
31
33
  from contextlib import contextmanager
32
34
  from typing import Concatenate, ParamSpec
@@ -267,7 +267,7 @@ class DatasetProvenance(pydantic.BaseModel):
267
267
  use_upper : `bool` or `None`
268
268
  If `True` use upper case for provenance keys, if `False` use lower
269
269
  case, if `None` match the case of the prefix.
270
- keys : `tuple` of `str` | `int`
270
+ *keys : `tuple` of `str` | `int`
271
271
  Components of key to combine with prefix and separator.
272
272
 
273
273
  Returns
@@ -479,7 +479,7 @@ class DatasetRef:
479
479
 
480
480
  Parameters
481
481
  ----------
482
- simple : `dict` of [`str`, `Any`]
482
+ simple : `dict` of [`str`, `typing.Any`]
483
483
  The value returned by `to_simple()`.
484
484
  universe : `DimensionUniverse`
485
485
  The special graph of all known dimensions.
@@ -196,8 +196,8 @@ class ValidationError(RuntimeError):
196
196
 
197
197
 
198
198
  class EmptyQueryResultError(Exception):
199
- """Exception raised when query methods return an empty result and `explain`
200
- flag is set.
199
+ """Exception raised when query methods return an empty result and
200
+ ``explain`` flag is set.
201
201
 
202
202
  Parameters
203
203
  ----------
@@ -129,7 +129,8 @@ class FileDataset:
129
129
  ----------
130
130
  dataset : `SerializedFileDataset`
131
131
  Object to deserialize.
132
- dataset_type_loader : `Callable` [[ `str` ], `DatasetType` ]
132
+ dataset_type_loader : `~collections.abc.Callable` \
133
+ [[ `str` ], `DatasetType` ]
133
134
  Function that takes a string dataset type name as its
134
135
  only parameter, and returns an instance of `DatasetType`.
135
136
  Used to deserialize the `DatasetRef` instances contained
@@ -910,6 +910,10 @@ class FormatterV2:
910
910
  provenance : `DatasetProvenance` | `None`, optional
911
911
  Provenance to attach to the file being written.
912
912
 
913
+ Returns
914
+ -------
915
+ None
916
+
913
917
  Raises
914
918
  ------
915
919
  FormatterNotImplementedError
@@ -1137,6 +1141,10 @@ class FormatterV2:
1137
1141
  location : `Location`
1138
1142
  Location from which to extract a file extension.
1139
1143
 
1144
+ Returns
1145
+ -------
1146
+ None
1147
+
1140
1148
  Raises
1141
1149
  ------
1142
1150
  ValueError
@@ -1583,6 +1591,10 @@ class Formatter(metaclass=ABCMeta):
1583
1591
  location : `Location`
1584
1592
  Location from which to extract a file extension.
1585
1593
 
1594
+ Returns
1595
+ -------
1596
+ None
1597
+
1586
1598
  Raises
1587
1599
  ------
1588
1600
  NotImplementedError
@@ -151,6 +151,8 @@ def _filter_collections_and_dataset_types(
151
151
 
152
152
  Parameters
153
153
  ----------
154
+ butler
155
+ Butler repository to use.
154
156
  collections
155
157
  List of collection names or collection search globs.
156
158
  dataset_type_query
@@ -114,18 +114,7 @@ def remove_runs(context: click.Context, confirm: bool, force: bool, **kwargs: An
114
114
 
115
115
  This command can be used to remove RUN collections and the datasets within
116
116
  them.
117
-
118
- Parameters
119
- ----------
120
- context : `click.Context`
121
- Context provided by Click.
122
- confirm : `bool`
123
- Confirmation for removal of the run.
124
- force : `bool`
125
- Force removal.
126
- **kwargs : `dict` [`str`, `str`]
127
- The parameters to pass to `~lsst.daf.butler.script.removeRuns`.
128
- """
117
+ """ # numpydoc ignore=PR01
129
118
  result = script.removeRuns(**kwargs)
130
119
  canRemoveRuns = len(result.runs)
131
120
  if not canRemoveRuns:
@@ -109,12 +109,12 @@ class ColumnValueSerializer(ABC):
109
109
 
110
110
  Parameters
111
111
  ----------
112
- value : `Any`
112
+ value : `typing.Any`
113
113
  Column value to be serialized.
114
114
 
115
115
  Returns
116
116
  -------
117
- value : `Any`
117
+ value : `typing.Any`
118
118
  Column value in serializable format.
119
119
  """
120
120
  raise NotImplementedError
@@ -125,12 +125,12 @@ class ColumnValueSerializer(ABC):
125
125
 
126
126
  Parameters
127
127
  ----------
128
- value : `Any`
128
+ value : `typing.Any`
129
129
  Serialized column value.
130
130
 
131
131
  Returns
132
132
  -------
133
- value : `Any`
133
+ value : `typing.Any`
134
134
  Deserialized column value.
135
135
  """
136
136
  raise NotImplementedError
@@ -284,6 +284,14 @@ class DatasetRefURIs(abc.Sequence):
284
284
  def __repr__(self) -> str:
285
285
  return f"DatasetRefURIs({repr(self.primaryURI)}, {repr(self.componentURIs)})"
286
286
 
287
+ def iter_all(self) -> Iterator[ResourcePath]:
288
+ """Iterate over all URIs without regard to whether they are primary
289
+ or component.
290
+ """
291
+ if self.primaryURI is not None:
292
+ yield self.primaryURI
293
+ yield from self.componentURIs.values()
294
+
287
295
 
288
296
  class Datastore(FileTransferSource, metaclass=ABCMeta):
289
297
  """Datastore interface.
@@ -536,7 +544,7 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
536
544
 
537
545
  Returns
538
546
  -------
539
- exists : `dict`[`DatasetRef`, `bool`]
547
+ exists : `dict` [`DatasetRef`, `bool`]
540
548
  Mapping of dataset to boolean indicating whether the dataset
541
549
  is known to the datastore.
542
550
  """
@@ -825,6 +833,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
825
833
  in an external system or if the file is to be compressed in place.
826
834
  It is up to the datastore whether this parameter is relevant.
827
835
 
836
+ Returns
837
+ -------
838
+ None
839
+
828
840
  Raises
829
841
  ------
830
842
  NotImplementedError
@@ -1143,6 +1155,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
1143
1155
  Determine whether errors should be ignored. When multiple
1144
1156
  refs are being trashed there will be no per-ref check.
1145
1157
 
1158
+ Returns
1159
+ -------
1160
+ None
1161
+
1146
1162
  Raises
1147
1163
  ------
1148
1164
  FileNotFoundError
@@ -1278,6 +1294,10 @@ class Datastore(FileTransferSource, metaclass=ABCMeta):
1278
1294
  Entity to compare with configuration retrieved using the
1279
1295
  specified lookup key.
1280
1296
 
1297
+ Returns
1298
+ -------
1299
+ None
1300
+
1281
1301
  Raises
1282
1302
  ------
1283
1303
  DatastoreValidationError
@@ -423,8 +423,8 @@ def make_datastore_path_relative(path: str) -> str:
423
423
  path : `str`
424
424
  The file path from a `StoredFileInfo`.
425
425
 
426
- Return
427
- ------
426
+ Returns
427
+ -------
428
428
  normalized_path : `str`
429
429
  The original path, if it was relative. Otherwise, a version of it that
430
430
  was converted to a relative path, stripping URI scheme and netloc from
@@ -1077,6 +1077,10 @@ class ChainedDatastore(Datastore):
1077
1077
  If `True`, output a log message for every validation error
1078
1078
  detected.
1079
1079
 
1080
+ Returns
1081
+ -------
1082
+ None
1083
+
1080
1084
  Raises
1081
1085
  ------
1082
1086
  DatastoreValidationError
@@ -2152,7 +2152,13 @@ class FileDatastore(GenericBaseDatastore[StoredFileInfo]):
2152
2152
 
2153
2153
  return artifact_map
2154
2154
 
2155
- def ingest_zip(self, zip_path: ResourcePath, transfer: str | None, *, dry_run: bool = False) -> None:
2155
+ def ingest_zip(
2156
+ self,
2157
+ zip_path: ResourcePath,
2158
+ transfer: str | None,
2159
+ *,
2160
+ dry_run: bool = False,
2161
+ ) -> None:
2156
2162
  """Ingest an indexed Zip file and contents.
2157
2163
 
2158
2164
  The Zip file must have an index file as created by `retrieveArtifacts`.
@@ -2976,6 +2982,10 @@ class FileDatastore(GenericBaseDatastore[StoredFileInfo]):
2976
2982
  If `True`, output a log message for every validation error
2977
2983
  detected.
2978
2984
 
2985
+ Returns
2986
+ -------
2987
+ None
2988
+
2979
2989
  Raises
2980
2990
  ------
2981
2991
  DatastoreValidationError
@@ -97,12 +97,12 @@ def generate_datastore_get_information(
97
97
 
98
98
  Parameters
99
99
  ----------
100
- fileLocations : `list`[`DatasetLocationInformation`]
100
+ fileLocations : `list` [`DatasetLocationInformation`]
101
101
  List of file locations for this artifact and their associated datastore
102
102
  records.
103
103
  ref : `DatasetRef`
104
104
  The registry information associated with this artifact.
105
- parameters : `Mapping`[`str`, `Any`]
105
+ parameters : `~collections.abc.Mapping` [`str`, `typing.Any`]
106
106
  `StorageClass` and `Formatter` parameters.
107
107
  readStorageClass : `StorageClass` | `None`, optional
108
108
  The StorageClass to use when ultimately returning the resulting object
@@ -255,12 +255,12 @@ def get_dataset_as_python_object_from_get_info(
255
255
 
256
256
  Parameters
257
257
  ----------
258
- allGetInfo : `list`[`DatastoreFileGetInformation`]
258
+ allGetInfo : `list` [`DatastoreFileGetInformation`]
259
259
  Pre-processed information about each file associated with this
260
260
  artifact.
261
261
  ref : `DatasetRef`
262
262
  The registry information associated with this artifact.
263
- parameters : `Mapping`[`str`, `Any`]
263
+ parameters : `~collections.abc.Mapping` [`str`, `typing.Any`]
264
264
  `StorageClass` and `Formatter` parameters.
265
265
  cache_manager : `AbstractDatastoreCacheManager`
266
266
  The cache manager to use for caching retrieved files.
@@ -274,7 +274,11 @@ class ZipIndex(BaseModel):
274
274
  Path to the Zip file.
275
275
  """
276
276
  with zip_path.open("rb") as fd, zipfile.ZipFile(fd) as zf:
277
- json_data = zf.read(cls.index_name)
277
+ return cls.from_open_zip(zf)
278
+
279
+ @classmethod
280
+ def from_open_zip(cls, zf: zipfile.ZipFile) -> Self:
281
+ json_data = zf.read(cls.index_name)
278
282
  return cls.model_validate_json(json_data)
279
283
 
280
284
 
@@ -55,8 +55,8 @@ def retrieve_file_transfer_records(
55
55
  Cache mapping datastore artifact to existence. Updated by
56
56
  this method with details of all artifacts tested.
57
57
 
58
- Return
59
- ------
58
+ Returns
59
+ -------
60
60
  files : `FileTransferMap`
61
61
  A dictionary from `DatasetId` to a list of `FileTransferRecord`,
62
62
  containing information about the files that were found for these
@@ -590,6 +590,10 @@ class InMemoryDatastore(GenericBaseDatastore[StoredMemoryItemInfo]):
590
590
  ignore_errors : `bool`, optional
591
591
  Indicate that errors should be ignored.
592
592
 
593
+ Returns
594
+ -------
595
+ None
596
+
593
597
  Raises
594
598
  ------
595
599
  FileNotFoundError
@@ -721,6 +725,10 @@ class InMemoryDatastore(GenericBaseDatastore[StoredMemoryItemInfo]):
721
725
  If `True`, output a log message for every validation error
722
726
  detected.
723
727
 
728
+ Returns
729
+ -------
730
+ None
731
+
724
732
  Raises
725
733
  ------
726
734
  DatastoreValidationError
@@ -537,7 +537,7 @@ class IndexSpec:
537
537
  ----------
538
538
  *columns : `str`
539
539
  Names of the columns to index.
540
- **kwargs : `Any`
540
+ **kwargs : `typing.Any`
541
541
  Additional keyword arguments to pass directly to
542
542
  `sqlalchemy.schema.Index` constructor. This could be used to provide
543
543
  backend-specific options, e.g. to create a ``GIST`` index in PostgreSQL
@@ -556,7 +556,7 @@ class IndexSpec:
556
556
 
557
557
  kwargs: dict[str, Any]
558
558
  """Additional keyword arguments passed directly to
559
- `sqlalchemy.schema.Index` constructor (`dict` [ `str`, `Any` ]).
559
+ `sqlalchemy.schema.Index` constructor (`dict` [ `str`, `typing.Any` ]).
560
560
  """
561
561
 
562
562
 
@@ -35,8 +35,6 @@ from __future__ import annotations
35
35
  __all__ = (
36
36
  "DataCoordinate",
37
37
  "DataId",
38
- "DataIdKey",
39
- "DataIdValue",
40
38
  "SerializedDataCoordinate",
41
39
  "SerializedDataId",
42
40
  )
@@ -55,7 +53,7 @@ from .._timespan import Timespan
55
53
  from ..json import from_json_pydantic, to_json_pydantic
56
54
  from ..persistence_context import PersistenceContextVars
57
55
  from ._group import DimensionGroup
58
- from ._records import DataIdKey, DataIdValue, DimensionRecord, SerializedDimensionRecord
56
+ from ._records import DataIdValue, DimensionRecord, SerializedDimensionRecord
59
57
 
60
58
  if TYPE_CHECKING: # Imports needed only for type annotations; may be circular.
61
59
  from ..registry import Registry
@@ -559,11 +557,11 @@ class DataCoordinate:
559
557
  Returns
560
558
  -------
561
559
  state : `bool`
562
- If `True`, `__getitem__`, `get`, and `__contains__` (but not
563
- `keys`!) will act as though the mapping includes key-value pairs
564
- for implied dimensions, and the `full` property may be used. If
560
+ If `True`, ``__getitem__``, `get`, and ``__contains__`` (but not
561
+ ``keys``!) will act as though the mapping includes key-value pairs
562
+ for implied dimensions, and the ``full`` property may be used. If
565
563
  `False`, these operations only include key-value pairs for required
566
- dimensions, and accessing `full` is an error. Always `True` if
564
+ dimensions, and accessing ``full`` is an error. Always `True` if
567
565
  there are no implied dimensions.
568
566
  """
569
567
  raise NotImplementedError()
@@ -718,7 +716,7 @@ class DataCoordinate:
718
716
 
719
717
  Parameters
720
718
  ----------
721
- simple : `dict` of [`str`, `Any`]
719
+ simple : `dict` of [`str`, `typing.Any`]
722
720
  The `dict` returned by `to_simple()`.
723
721
  universe : `DimensionUniverse`
724
722
  Object that manages all known dimensions.
@@ -97,7 +97,7 @@ def fail_record_lookup(
97
97
 
98
98
  Returns
99
99
  -------
100
- record : `DimensionRecord`
100
+ record : `DimensionRecord`
101
101
  Never returned; this function always raises `LookupError`.
102
102
  """
103
103
  raise LookupError(
@@ -27,7 +27,13 @@
27
27
 
28
28
  from __future__ import annotations
29
29
 
30
- __all__ = ("DimensionRecord", "SerializedDimensionRecord", "SerializedKeyValueDimensionRecord")
30
+ __all__ = (
31
+ "DataIdKey",
32
+ "DataIdValue",
33
+ "DimensionRecord",
34
+ "SerializedDimensionRecord",
35
+ "SerializedKeyValueDimensionRecord",
36
+ )
31
37
 
32
38
  import itertools
33
39
  from collections.abc import Callable, Hashable
@@ -451,8 +457,8 @@ class DimensionRecord:
451
457
  registry : `lsst.daf.butler.Registry`, optional
452
458
  Registry from which a universe can be extracted. Can be `None`
453
459
  if universe is provided explicitly.
454
- cacheKey : `Hashable` or `None`
455
- If this is not None, it will be used as a key for any cached
460
+ cacheKey : `collections.abc.Hashable` or `None`
461
+ If this is not `None`, it will be used as a key for any cached
456
462
  reconstruction instead of calculating a value from the serialized
457
463
  format.
458
464