py-rattler 0.13.1__tar.gz → 0.14.0__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.

Potentially problematic release.


This version of py-rattler might be problematic. Click here for more details.

Files changed (733) hide show
  1. {py_rattler-0.13.1 → py_rattler-0.14.0}/Cargo.toml +16 -16
  2. {py_rattler-0.13.1 → py_rattler-0.14.0}/PKG-INFO +1 -1
  3. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/CHANGELOG.md +6 -0
  4. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/Cargo.toml +1 -1
  5. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/CHANGELOG.md +6 -0
  6. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/Cargo.toml +1 -1
  7. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/CHANGELOG.md +13 -0
  8. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/Cargo.toml +1 -1
  9. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/sharded.rs +1 -1
  10. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/CHANGELOG.md +6 -0
  11. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/Cargo.toml +7 -1
  12. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/src/lib.rs +265 -49
  13. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/src/main.rs +27 -15
  14. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/tests/test_index.rs +27 -11
  15. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/CHANGELOG.md +6 -0
  16. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/Cargo.toml +1 -1
  17. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/CHANGELOG.md +6 -0
  18. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/Cargo.toml +1 -1
  19. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/CHANGELOG.md +6 -0
  20. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/Cargo.toml +1 -1
  21. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/CHANGELOG.md +6 -0
  22. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/Cargo.toml +1 -1
  23. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/CHANGELOG.md +13 -0
  24. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/Cargo.toml +1 -1
  25. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/CHANGELOG.md +6 -0
  26. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/Cargo.toml +1 -1
  27. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/CHANGELOG.md +6 -0
  28. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/Cargo.toml +1 -1
  29. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/CHANGELOG.md +6 -0
  30. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/Cargo.toml +1 -1
  31. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/Cargo.lock +28 -22
  32. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/Cargo.toml +2 -2
  33. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/index/index.py +13 -1
  34. {py_rattler-0.13.1 → py_rattler-0.14.0/py-rattler}/rattler/repo_data/gateway.py +1 -4
  35. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/index.rs +21 -12
  36. py_rattler-0.14.0/py-rattler/tests/unit/test_gateway.py +29 -0
  37. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/index/index.py +13 -1
  38. {py_rattler-0.13.1/py-rattler → py_rattler-0.14.0}/rattler/repo_data/gateway.py +1 -4
  39. py_rattler-0.13.1/py-rattler/tests/unit/test_gateway.py +0 -13
  40. {py_rattler-0.13.1 → py_rattler-0.14.0}/README.md +0 -0
  41. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/file_url/.gitignore +0 -0
  42. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/file_url/CHANGELOG.md +0 -0
  43. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/file_url/Cargo.toml +0 -0
  44. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/file_url/src/lib.rs +0 -0
  45. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/.gitignore +0 -0
  46. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/README.md +0 -0
  47. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/resources/launcher64.exe +0 -0
  48. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/resources/versions.txt +0 -0
  49. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/cli/auth.rs +0 -0
  50. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/cli/mod.rs +0 -0
  51. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/apple_codesign.rs +0 -0
  52. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/clobber_registry.rs +0 -0
  53. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/driver.rs +0 -0
  54. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/entry_point.rs +0 -0
  55. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/installer/error.rs +0 -0
  56. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/installer/indicatif.rs +0 -0
  57. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/installer/mod.rs +0 -0
  58. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/installer/reporter.rs +0 -0
  59. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/link.rs +0 -0
  60. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/link_script.rs +0 -0
  61. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/mod.rs +0 -0
  62. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/python.rs +0 -0
  63. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-2.snap +0 -0
  64. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-3.snap +0 -0
  65. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-4.snap +0 -0
  66. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-5.snap +0 -0
  67. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-6.snap +0 -0
  68. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber-7.snap +0 -0
  69. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__clobber_registry__tests__transaction_with_clobber.snap +0 -0
  70. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__entry_point__test__entry_point_script.snap +0 -0
  71. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__entry_point__test__windows.snap +0 -0
  72. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__link__test__replace_long_prefix_in_text_file.snap +0 -0
  73. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__link__test__replace_python_shebang-2.snap +0 -0
  74. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__link__test__replace_python_shebang.snap +0 -0
  75. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/snapshots/rattler__install__test__prefix_paths.snap +0 -0
  76. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/test_utils.rs +0 -0
  77. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/transaction.rs +0 -0
  78. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/install/unlink.rs +0 -0
  79. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/lib.rs +0 -0
  80. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler/src/range.rs +0 -0
  81. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/README.md +0 -0
  82. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/consts.rs +0 -0
  83. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/lib.rs +0 -0
  84. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/package_cache/cache_key.rs +0 -0
  85. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/package_cache/cache_lock.rs +0 -0
  86. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/package_cache/mod.rs +0 -0
  87. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/package_cache/reporter.rs +0 -0
  88. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/run_exports_cache/cache_key.rs +0 -0
  89. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/run_exports_cache/download.rs +0 -0
  90. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/run_exports_cache/mod.rs +0 -0
  91. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_cache/src/validation.rs +0 -0
  92. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/README.md +0 -0
  93. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/benches/parse.rs +0 -0
  94. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/benches/prefix_record_from_path.rs +0 -0
  95. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/build_spec/mod.rs +0 -0
  96. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/build_spec/parse.rs +0 -0
  97. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/channel/channel_url.rs +0 -0
  98. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/channel/mod.rs +0 -0
  99. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/channel_data.rs +0 -0
  100. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/environment_yaml.rs +0 -0
  101. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/explicit_environment_spec.rs +0 -0
  102. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/generic_virtual_package.rs +0 -0
  103. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/lib.rs +0 -0
  104. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/matcher.rs +0 -0
  105. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/mod.rs +0 -0
  106. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/parse.rs +0 -0
  107. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__matchspec_to_string.snap +0 -0
  108. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__test_from_string.snap +0 -0
  109. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__test_from_string_Lenient.snap +0 -0
  110. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__test_from_string_Strict.snap +0 -0
  111. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__test_nameless_from_string_Lenient.snap +0 -0
  112. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__parse__tests__test_nameless_from_string_Strict.snap +0 -0
  113. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__tests__serialize_json_matchspec.snap +0 -0
  114. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/match_spec/snapshots/rattler_conda_types__match_spec__tests__serialize_matchspec.snap +0 -0
  115. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/menuinst/mod.rs +0 -0
  116. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/no_arch_type.rs +0 -0
  117. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/about.rs +0 -0
  118. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/archive_identifier.rs +0 -0
  119. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/archive_type.rs +0 -0
  120. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/entry_point.rs +0 -0
  121. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/files.rs +0 -0
  122. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/has_prefix.rs +0 -0
  123. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/index.rs +0 -0
  124. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/link.rs +0 -0
  125. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/mod.rs +0 -0
  126. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/no_link.rs +0 -0
  127. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/no_softlink.rs +0 -0
  128. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/package_metadata.rs +0 -0
  129. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/paths.rs +0 -0
  130. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/run_exports.rs +0 -0
  131. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__about__test__extra_field_is_recorded_when_present.snap +0 -0
  132. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__about__test__extra_field_is_skipped.snap +0 -0
  133. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__about__test__reconstruct_about_json.snap +0 -0
  134. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__about__test__reconstruct_about_json_mamba.snap +0 -0
  135. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__entry_point__test__entry_point.snap +0 -0
  136. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__index__test__reconstruct_index_json.snap +0 -0
  137. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__index__test__reconstruct_index_json_with_symlinks.snap +0 -0
  138. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__link__test__link-json__jupyterlab-link.json.snap +0 -0
  139. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__link__test__link-json__setuptools-link.json.snap +0 -0
  140. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__link__test__link-json__tzdata-link.json.snap +0 -0
  141. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__paths__test__paths_sorted.snap +0 -0
  142. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__paths__test__reconstruct_paths_json.snap +0 -0
  143. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__paths__test__reconstruct_paths_json_with_symlinks.snap +0 -0
  144. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__paths__test__roundtrip_paths_json.snap +0 -0
  145. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package/snapshots/rattler_conda_types__package__run_exports__test__reconstruct_run_exports_json_with_symlinks.snap +0 -0
  146. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/package_name.rs +0 -0
  147. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/parse_mode.rs +0 -0
  148. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/platform.rs +0 -0
  149. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/prefix.rs +0 -0
  150. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/prefix_record.rs +0 -0
  151. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/mod.rs +0 -0
  152. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/patches.rs +0 -0
  153. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__patches__test__null_values.snap +0 -0
  154. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__patches__test__patch_purl.snap +0 -0
  155. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__patches__test__patching.snap +0 -0
  156. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__patches__test__removing_1.snap +0 -0
  157. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__patches__test__removing_2.snap +0 -0
  158. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__test__base_url_packages.snap +0 -0
  159. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__test__deserialize_no_packages_conda.snap +0 -0
  160. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__test__serialize.snap +0 -0
  161. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__test__serialize_packages-2.snap +0 -0
  162. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/snapshots/rattler_conda_types__repo_data__test__serialize_packages.snap +0 -0
  163. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data/topological_sort.rs +0 -0
  164. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/repo_data_record.rs +0 -0
  165. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/run_export.rs +0 -0
  166. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__deserialize_environment_yaml@asymmetric_vqgan.environment.yaml.snap +0 -0
  167. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__deserialize_environment_yaml@channel_inversion.environment.yaml.snap +0 -0
  168. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__deserialize_environment_yaml@conda_lock_dev.environment.yaml.snap +0 -0
  169. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__deserialize_environment_yaml@mamba_dev_extra.environment.yaml.snap +0 -0
  170. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__deserialize_environment_yaml@variables.environment.yaml.snap +0 -0
  171. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__environment_yaml__tests__pip_section.snap +0 -0
  172. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__explicit_environment_spec__test__explicit-envs__ros-noetic_linux-64.txt.snap +0 -0
  173. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__explicit_environment_spec__test__explicit-envs__vs2015_runtime_win-64.txt.snap +0 -0
  174. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__explicit_environment_spec__test__explicit-envs__xtensor_linux-64.txt.snap +0 -0
  175. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__libsqlite-3_40_0-hcfcfb64_0_json.snap +0 -0
  176. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__menuinst-1_4_19-py311h1ea47a8_1_json.snap +0 -0
  177. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__pip-23_0-pyhd8ed1ab_0_json.snap +0 -0
  178. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__pysocks-1_7_1-pyh0701188_6_json.snap +0 -0
  179. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__requests-2_28_2-pyhd8ed1ab_0_json.snap +0 -0
  180. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__tk-8_6_12-h8ffe710_0_json.snap +0 -0
  181. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__urllib3-1_26_14-pyhd8ed1ab_0_json.snap +0 -0
  182. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__vc-14_3-hb6edc58_10_json.snap +0 -0
  183. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__wheel-0_38_4-pyhd8ed1ab_0_json.snap +0 -0
  184. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/snapshots/rattler_conda_types__prefix_record__test__xz-5_2_6-h8d14728_0_json.snap +0 -0
  185. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/utils/mod.rs +0 -0
  186. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/utils/path.rs +0 -0
  187. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/utils/serde.rs +0 -0
  188. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/utils/url.rs +0 -0
  189. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/utils/url_with_trailing_slash.rs +0 -0
  190. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/bump.rs +0 -0
  191. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/flags.rs +0 -0
  192. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/mod.rs +0 -0
  193. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/parse.rs +0 -0
  194. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/segment.rs +0 -0
  195. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/snapshots/rattler_conda_types__version__parse__test__parse.snap +0 -0
  196. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version/with_source.rs +0 -0
  197. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version_spec/constraint.rs +0 -0
  198. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version_spec/mod.rs +0 -0
  199. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version_spec/parse.rs +0 -0
  200. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version_spec/snapshots/rattler_conda_types__version_spec__parse__test__exact_strict.snap +0 -0
  201. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_conda_types/src/version_spec/version_tree.rs +0 -0
  202. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/CHANGELOG.md +0 -0
  203. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/Cargo.toml +0 -0
  204. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/README.md +0 -0
  205. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/src/lib.rs +0 -0
  206. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/src/serde.rs +0 -0
  207. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_digest/src/tokio.rs +0 -0
  208. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_index/README.md +0 -0
  209. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/README.md +0 -0
  210. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/builder.rs +0 -0
  211. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/channel.rs +0 -0
  212. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/conda.rs +0 -0
  213. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/file_format_version.rs +0 -0
  214. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/hash.rs +0 -0
  215. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/lib.rs +0 -0
  216. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/options.rs +0 -0
  217. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/deserialize.rs +0 -0
  218. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/mod.rs +0 -0
  219. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/mod.rs +0 -0
  220. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v5/conda_package_data.rs +0 -0
  221. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v5/mod.rs +0 -0
  222. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v5/pypi_package_data.rs +0 -0
  223. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v6/conda_package_data.rs +0 -0
  224. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v6/mod.rs +0 -0
  225. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v6/pypi_package_data.rs +0 -0
  226. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/models/v6/source_data.rs +0 -0
  227. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/serialize.rs +0 -0
  228. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/parse/v3.rs +0 -0
  229. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/pypi.rs +0 -0
  230. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/pypi_indexes.rs +0 -0
  231. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__builder__test__merge_records_and_purls.snap +0 -0
  232. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__packages_for_platform-2.snap +0 -0
  233. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__packages_for_platform.snap +0 -0
  234. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v0__numpy-conda-lock.yml.snap +0 -0
  235. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v0__pypi-matplotlib-conda-lock.yml.snap +0 -0
  236. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v0__python-conda-lock.yml.snap +0 -0
  237. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v3__robostack-turtlesim-conda-lock.yml.snap +0 -0
  238. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__absolute-path-lock.yml.snap +0 -0
  239. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__numpy-lock.yml.snap +0 -0
  240. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__path-based-lock.yml.snap +0 -0
  241. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__pypi-matplotlib-lock.yml.snap +0 -0
  242. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__python-lock.yml.snap +0 -0
  243. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v4__turtlesim-lock.yml.snap +0 -0
  244. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v5__flat-index-lock.yml.snap +0 -0
  245. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v5__similar-with-and-without-purl.yml.snap +0 -0
  246. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v6__conda-path-lock.yml.snap +0 -0
  247. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v6__derived-channel-lock.yml.snap +0 -0
  248. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v6__options-lock.yml.snap +0 -0
  249. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__test__v6__sources-lock.yml.snap +0 -0
  250. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/snapshots/rattler_lock__url_or_path__test__order.snap +0 -0
  251. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/source.rs +0 -0
  252. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/url_or_path.rs +0 -0
  253. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/derived_fields.rs +0 -0
  254. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/mod.rs +0 -0
  255. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/match_spec_map_or_vec.rs +0 -0
  256. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/mod.rs +0 -0
  257. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/ordered.rs +0 -0
  258. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/pep440_map_or_vec.rs +0 -0
  259. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/timestamp.rs +0 -0
  260. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/serde/url_or_path.rs +0 -0
  261. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__file +0 -0
  262. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__https +0 -0
  263. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-1.snap +0 -0
  264. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-2.snap +0 -0
  265. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-3.snap +0 -0
  266. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-4.snap +0 -0
  267. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-5.snap +0 -0
  268. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-6.snap +0 -0
  269. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_lock/src/utils/snapshots/rattler_lock__utils__derived_fields__test__location_derived_fields-7.snap +0 -0
  270. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/CHANGELOG.md +0 -0
  271. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/Cargo.toml +0 -0
  272. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/README.md +0 -0
  273. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/src/lib.rs +0 -0
  274. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/01-sorted-enum.rs +0 -0
  275. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/02-sorted-struct.rs +0 -0
  276. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/03-out-of-order-enum.rs +0 -0
  277. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/03-out-of-order-enum.stderr +0 -0
  278. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/04-out-of-order-struct.rs +0 -0
  279. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/04-out-of-order-struct.stderr +0 -0
  280. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_macros/tests/tests.rs +0 -0
  281. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/README.md +0 -0
  282. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/data/appkit_launcher_arm64 +0 -0
  283. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/data/appkit_launcher_x86_64 +0 -0
  284. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/data/osx_launcher_arm64 +0 -0
  285. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/data/osx_launcher_x86_64 +0 -0
  286. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/lib.rs +0 -0
  287. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux/mime_config.rs +0 -0
  288. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux/snapshots/rattler_menuinst__linux__mime_config__tests__existing_mimeapps-2.snap +0 -0
  289. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux/snapshots/rattler_menuinst__linux__mime_config__tests__existing_mimeapps-3.snap +0 -0
  290. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux/snapshots/rattler_menuinst__linux__mime_config__tests__existing_mimeapps-4.snap +0 -0
  291. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux/snapshots/rattler_menuinst__linux__mime_config__tests__existing_mimeapps.snap +0 -0
  292. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/linux.rs +0 -0
  293. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/macos.rs +0 -0
  294. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/render.rs +0 -0
  295. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/schema.rs +0 -0
  296. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__linux__tests__installation-2.snap +0 -0
  297. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__linux__tests__installation-3.snap +0 -0
  298. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__linux__tests__installation.snap +0 -0
  299. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__macos__tests__macos_menu_installation.snap +0 -0
  300. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__render__test__render_gnuradio.snap +0 -0
  301. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__schema__test__deserialize_defaults.snap +0 -0
  302. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__schema__test__deserialize_gnuradio.snap +0 -0
  303. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__schema__test__deserialize_grx.snap +0 -0
  304. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__schema__test__deserialize_mne.snap +0 -0
  305. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/snapshots/rattler_menuinst__schema__test__deserialize_spyder.snap +0 -0
  306. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/utils/mod.rs +0 -0
  307. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/utils/slugify.rs +0 -0
  308. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/utils/terminal.rs +0 -0
  309. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows/create_shortcut.rs +0 -0
  310. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows/knownfolders.rs +0 -0
  311. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows/lex.rs +0 -0
  312. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows/registry.rs +0 -0
  313. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows/terminal.rs +0 -0
  314. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/src/windows.rs +0 -0
  315. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/defaults/defaults.json +0 -0
  316. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/gnuradio/gnuradio-grc.json +0 -0
  317. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/gnuradio/grc.ico +0 -0
  318. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/gqrx/gqrx-menu.json +0 -0
  319. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/linux-menu/example.menu +0 -0
  320. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/linux-menu/mimeapps.list +0 -0
  321. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/mne/menu.json +0 -0
  322. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_menuinst/test-data/spyder/menu.json +0 -0
  323. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/README.md +0 -0
  324. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_middleware.rs +0 -0
  325. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/authentication.rs +0 -0
  326. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/file.rs +0 -0
  327. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/keyring.rs +0 -0
  328. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/memory.rs +0 -0
  329. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/mod.rs +0 -0
  330. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/netrc.rs +0 -0
  331. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/backends/snapshots/rattler_networking__authentication_storage__backends__file__tests__file_storage.snap +0 -0
  332. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/mod.rs +0 -0
  333. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/authentication_storage/storage.rs +0 -0
  334. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/gcs_middleware.rs +0 -0
  335. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/lib.rs +0 -0
  336. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/mirror_middleware.rs +0 -0
  337. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/oci_middleware.rs +0 -0
  338. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/retry_policies.rs +0 -0
  339. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/src/s3_middleware.rs +0 -0
  340. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_networking/tests/s3_integration_test.rs +0 -0
  341. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/README.md +0 -0
  342. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/fs.rs +0 -0
  343. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/lib.rs +0 -0
  344. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/read.rs +0 -0
  345. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/reqwest/mod.rs +0 -0
  346. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/reqwest/tokio.rs +0 -0
  347. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/seek.rs +0 -0
  348. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/tokio/async_read.rs +0 -0
  349. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/tokio/fs.rs +0 -0
  350. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/tokio/mod.rs +0 -0
  351. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/src/write.rs +0 -0
  352. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/tests/extract.rs +0 -0
  353. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/tests/resources/ca-certificates-2024.7.4-hbcca054_0.conda +0 -0
  354. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_package_streaming/tests/write.rs +0 -0
  355. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/CHANGELOG.md +0 -0
  356. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/Cargo.toml +0 -0
  357. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/README.md +0 -0
  358. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/src/lib.rs +0 -0
  359. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/src/unix/mod.rs +0 -0
  360. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/src/unix/pty_process.rs +0 -0
  361. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/src/unix/pty_session.rs +0 -0
  362. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_pty/tests/integration_test.rs +0 -0
  363. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_redaction/CHANGELOG.md +0 -0
  364. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_redaction/Cargo.toml +0 -0
  365. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_redaction/README.md +0 -0
  366. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_redaction/src/lib.rs +0 -0
  367. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/README.md +0 -0
  368. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/cache/cache_headers.rs +0 -0
  369. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/cache/mod.rs +0 -0
  370. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/cache/snapshots/rattler_repodata_gateway__fetch__cache__test__parse_repo_data_state.snap +0 -0
  371. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/cache/snapshots/rattler_repodata_gateway__fetch__cache__test__parse_repo_data_state_one.snap +0 -0
  372. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/cache/snapshots/rattler_repodata_gateway__fetch__cache__test__parse_repo_data_state_two.snap +0 -0
  373. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/jlap/mod.rs +0 -0
  374. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/mod.rs +0 -0
  375. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/no_cache.rs +0 -0
  376. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/fetch/with_cache.rs +0 -0
  377. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/barrier_cell.rs +0 -0
  378. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/builder.rs +0 -0
  379. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/channel_config.rs +0 -0
  380. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/direct_url_query.rs +0 -0
  381. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/error.rs +0 -0
  382. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/local_subdir.rs +0 -0
  383. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/mod.rs +0 -0
  384. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/query.rs +0 -0
  385. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/remote_subdir/mod.rs +0 -0
  386. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/remote_subdir/tokio.rs +0 -0
  387. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/remote_subdir/wasm.rs +0 -0
  388. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/repo_data.rs +0 -0
  389. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/sharded_subdir/mod.rs +0 -0
  390. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/sharded_subdir/tokio/index.rs +0 -0
  391. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/sharded_subdir/tokio/mod.rs +0 -0
  392. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/sharded_subdir/wasm/index.rs +0 -0
  393. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/sharded_subdir/wasm/mod.rs +0 -0
  394. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/subdir.rs +0 -0
  395. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/gateway/subdir_builder.rs +0 -0
  396. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/lib.rs +0 -0
  397. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/reporter.rs +0 -0
  398. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/sparse/mod.rs +0 -0
  399. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/sparse/snapshots/rattler_repodata_gateway__sparse__test__package_format_selection@both.snap +0 -0
  400. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/sparse/snapshots/rattler_repodata_gateway__sparse__test__package_format_selection@only-conda.snap +0 -0
  401. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/sparse/snapshots/rattler_repodata_gateway__sparse__test__package_format_selection@only-tar-bz2.snap +0 -0
  402. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/sparse/snapshots/rattler_repodata_gateway__sparse__test__package_format_selection@prefer-conda.snap +0 -0
  403. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/utils/body.rs +0 -0
  404. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/utils/encoding.rs +0 -0
  405. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/utils/flock.rs +0 -0
  406. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/utils/mod.rs +0 -0
  407. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_repodata_gateway/src/utils/simple_channel_server.rs +0 -0
  408. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/README.md +0 -0
  409. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/activation.rs +0 -0
  410. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/lib.rs +0 -0
  411. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/run/mod.rs +0 -0
  412. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/shell/mod.rs +0 -0
  413. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/shell/snapshots/rattler_shell__shell__tests__bash.snap +0 -0
  414. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/shell/snapshots/rattler_shell__shell__tests__fish.snap +0 -0
  415. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/shell/snapshots/rattler_shell__shell__tests__xonsh_bash.snap +0 -0
  416. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/shell/snapshots/rattler_shell__shell__tests__xonsh_xsh.snap +0 -0
  417. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_bash.snap +0 -0
  418. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_cmd.snap +0 -0
  419. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_fish.snap +0 -0
  420. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_powershell.snap +0 -0
  421. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_xonsh.snap +0 -0
  422. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__activation_script_zsh.snap +0 -0
  423. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__after_activation.snap +0 -0
  424. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_bash_append.snap +0 -0
  425. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_bash_prepend.snap +0 -0
  426. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_bash_replace.snap +0 -0
  427. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_cmd_append.snap +0 -0
  428. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_cmd_prepend.snap +0 -0
  429. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_cmd_replace.snap +0 -0
  430. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_powershell_append.snap +0 -0
  431. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_powershell_prepend.snap +0 -0
  432. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_shell/src/snapshots/rattler_shell__activation__tests__test_activation_script_powershell_replace.snap +0 -0
  433. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/README.md +0 -0
  434. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/benches/bench.rs +0 -0
  435. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/benches/sorting_bench.rs +0 -0
  436. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/lib.rs +0 -0
  437. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/input.rs +0 -0
  438. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/libc_byte_slice.rs +0 -0
  439. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/mod.rs +0 -0
  440. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/output.rs +0 -0
  441. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/flags.rs +0 -0
  442. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/keys.rs +0 -0
  443. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/mod.rs +0 -0
  444. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/pool.rs +0 -0
  445. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/queue.rs +0 -0
  446. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/repo.rs +0 -0
  447. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/repodata.rs +0 -0
  448. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/solvable.rs +0 -0
  449. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/solve_goal.rs +0 -0
  450. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/solve_problem.rs +0 -0
  451. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/solver.rs +0 -0
  452. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/libsolv_c/wrapper/transaction.rs +0 -0
  453. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/resolvo/conda_sorting.rs +0 -0
  454. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/src/resolvo/mod.rs +0 -0
  455. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/backends.rs +0 -0
  456. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_dummy_repo_install_non_existent.snap +0 -0
  457. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_python.snap +0 -0
  458. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_python_numpy.snap +0 -0
  459. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_quetz.snap +0 -0
  460. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_tensorboard.snap +0 -0
  461. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_tensorflow.snap +0 -0
  462. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_with_error.snap +0 -0
  463. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__solve_xtensor_xsimd.snap +0 -0
  464. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__libsolv_c__virtual_package_constrains.snap +0 -0
  465. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__exclude_newer_error.snap +0 -0
  466. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__issue_717.snap +0 -0
  467. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__panic_on_constraint.snap +0 -0
  468. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_dummy_repo_extra_depends_conflict_resolvo.snap +0 -0
  469. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_dummy_repo_extra_depends_feature_conflict.snap +0 -0
  470. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_dummy_repo_extra_depends_recursive_feature.snap +0 -0
  471. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_dummy_repo_install_non_existent.snap +0 -0
  472. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_locked.snap +0 -0
  473. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_python.snap +0 -0
  474. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_python_numpy.snap +0 -0
  475. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_quetz.snap +0 -0
  476. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_tensorboard.snap +0 -0
  477. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_tensorflow.snap +0 -0
  478. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_with_error.snap +0 -0
  479. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__solve_xtensor_xsimd.snap +0 -0
  480. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/backends__resolvo__virtual_package_constrains.snap +0 -0
  481. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_abess_highest.snap +0 -0
  482. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_certifi_highest.snap +0 -0
  483. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_libgcc-ng_highest.snap +0 -0
  484. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_libuuid_highest.snap +0 -0
  485. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_python_highest.snap +0 -0
  486. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_pytorch_highest.snap +0 -0
  487. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_pytorch_lowest.snap +0 -0
  488. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/snapshots/sorting__test_ordering_pytorch_lowest_direct.snap +0 -0
  489. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_solve/tests/sorting.rs +0 -0
  490. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/README.md +0 -0
  491. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/cuda.rs +0 -0
  492. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/lib.rs +0 -0
  493. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/libc.rs +0 -0
  494. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/linux.rs +0 -0
  495. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/osx.rs +0 -0
  496. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/rattler_virtual_packages/src/win.rs +0 -0
  497. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/simple_spawn_blocking/CHANGELOG.md +0 -0
  498. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/simple_spawn_blocking/Cargo.toml +0 -0
  499. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/simple_spawn_blocking/src/lib.rs +0 -0
  500. {py_rattler-0.13.1 → py_rattler-0.14.0}/crates/simple_spawn_blocking/src/tokio.rs +0 -0
  501. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/.gitignore +0 -0
  502. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/README.md +0 -0
  503. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/build.rs +0 -0
  504. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/about_json.md +0 -0
  505. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/activate.md +0 -0
  506. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/activation_error.md +0 -0
  507. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/activation_result.md +0 -0
  508. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/activation_variables.md +0 -0
  509. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/arch.md +0 -0
  510. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/cache_dir_error.md +0 -0
  511. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/channel.md +0 -0
  512. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/channel_config.md +0 -0
  513. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/client.md +0 -0
  514. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/conda_locked_binary_package.md +0 -0
  515. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/conda_locked_package.md +0 -0
  516. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/conda_locked_source_package.md +0 -0
  517. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/detect_virtual_package_error.md +0 -0
  518. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/environment.md +0 -0
  519. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/environment_creation_error.md +0 -0
  520. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/fetch_repo_data.md +0 -0
  521. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/fetch_repo_data_error.md +0 -0
  522. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/file_mode.md +0 -0
  523. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/gateway.md +0 -0
  524. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/generic_virtual_package.md +0 -0
  525. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/index.md +0 -0
  526. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/index_.md +0 -0
  527. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/index_json.md +0 -0
  528. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/installer.md +0 -0
  529. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/invalid_channel_error.md +0 -0
  530. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/invalid_match_spec_error.md +0 -0
  531. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/invalid_package_name_error.md +0 -0
  532. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/invalid_url_error.md +0 -0
  533. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/invalid_version_error.md +0 -0
  534. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/io_error.md +0 -0
  535. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/link_error.md +0 -0
  536. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/lock_file.md +0 -0
  537. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/locked_package.md +0 -0
  538. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/match_spec.md +0 -0
  539. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/nameless_match_spec.md +0 -0
  540. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/package_hashes.md +0 -0
  541. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/package_name.md +0 -0
  542. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/package_record.md +0 -0
  543. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/parse_arch_error.md +0 -0
  544. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/parse_platform_error.md +0 -0
  545. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/patch_instructions.md +0 -0
  546. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/path_modification_behavior.md +0 -0
  547. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/path_type.md +0 -0
  548. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/paths_entry.md +0 -0
  549. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/paths_json.md +0 -0
  550. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/platform.md +0 -0
  551. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/prefix_paths.md +0 -0
  552. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/prefix_placeholder.md +0 -0
  553. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/prefix_record.md +0 -0
  554. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/pypi_locked_package.md +0 -0
  555. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/repo_data.md +0 -0
  556. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/repo_data_record.md +0 -0
  557. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/run_exports_json.md +0 -0
  558. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/shell.md +0 -0
  559. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/solver.md +0 -0
  560. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/solver_error.md +0 -0
  561. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/sparse_repo_data.md +0 -0
  562. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/stylesheets/extra.css +0 -0
  563. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/transaction_error.md +0 -0
  564. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/version.md +0 -0
  565. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/version_with_source.md +0 -0
  566. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/docs/virtual_package.md +0 -0
  567. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/examples/cli.py +0 -0
  568. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/examples/install_to_prefix.py +0 -0
  569. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/examples/solve_and_install.py +0 -0
  570. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/mkdocs.yml +0 -0
  571. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/pixi.lock +0 -0
  572. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/pixi.toml +0 -0
  573. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/__init__.py +0 -0
  574. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/channel/__init__.py +0 -0
  575. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/channel/channel.py +0 -0
  576. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/channel/channel_config.py +0 -0
  577. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/channel/channel_priority.py +0 -0
  578. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/exceptions.py +0 -0
  579. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/explicit_environment/__init__.py +0 -0
  580. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/explicit_environment/environment.py +0 -0
  581. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/index/__init__.py +0 -0
  582. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/install/__init__.py +0 -0
  583. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/install/installer.py +0 -0
  584. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/__init__.py +0 -0
  585. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/channel.py +0 -0
  586. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/environment.py +0 -0
  587. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/hash.py +0 -0
  588. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/lock_file.py +0 -0
  589. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/lock/package.py +0 -0
  590. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/match_spec/__init__.py +0 -0
  591. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/match_spec/match_spec.py +0 -0
  592. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/match_spec/nameless_match_spec.py +0 -0
  593. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/networking/__init__.py +0 -0
  594. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/networking/client.py +0 -0
  595. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/networking/fetch_repo_data.py +0 -0
  596. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/networking/middleware.py +0 -0
  597. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/__init__.py +0 -0
  598. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/about_json.py +0 -0
  599. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/index_json.py +0 -0
  600. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/no_arch_type.py +0 -0
  601. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/package_name.py +0 -0
  602. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/paths_json.py +0 -0
  603. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package/run_exports_json.py +0 -0
  604. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/package_streaming/__init__.py +0 -0
  605. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/platform/__init__.py +0 -0
  606. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/platform/arch.py +0 -0
  607. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/platform/platform.py +0 -0
  608. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/prefix/__init__.py +0 -0
  609. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/prefix/prefix_paths.py +0 -0
  610. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/prefix/prefix_record.py +0 -0
  611. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/py.typed +0 -0
  612. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/__init__.py +0 -0
  613. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/package_record.py +0 -0
  614. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/patch_instructions.py +0 -0
  615. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/record.py +0 -0
  616. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/repo_data.py +0 -0
  617. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/repo_data/sparse.py +0 -0
  618. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/shell/__init__.py +0 -0
  619. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/shell/shell.py +0 -0
  620. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/solver/__init__.py +0 -0
  621. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/solver/solver.py +0 -0
  622. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/utils/rattler_version.py +0 -0
  623. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/version/__init__.py +0 -0
  624. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/version/version.py +0 -0
  625. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/version/with_source.py +0 -0
  626. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/virtual_package/__init__.py +0 -0
  627. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/virtual_package/generic.py +0 -0
  628. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/rattler/virtual_package/virtual_package.py +0 -0
  629. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/about_json.rs +0 -0
  630. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/channel/mod.rs +0 -0
  631. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/error.rs +0 -0
  632. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/explicit_environment_spec.rs +0 -0
  633. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/generic_virtual_package.rs +0 -0
  634. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/index_json.rs +0 -0
  635. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/installer.rs +0 -0
  636. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/lib.rs +0 -0
  637. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/lock/mod.rs +0 -0
  638. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/match_spec.rs +0 -0
  639. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/meta.rs +0 -0
  640. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/nameless_match_spec.rs +0 -0
  641. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/networking/cached_repo_data.rs +0 -0
  642. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/networking/client.rs +0 -0
  643. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/networking/middleware.rs +0 -0
  644. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/networking/mod.rs +0 -0
  645. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/no_arch_type.rs +0 -0
  646. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/package_name.rs +0 -0
  647. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/package_streaming/mod.rs +0 -0
  648. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/paths_json.rs +0 -0
  649. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/platform.rs +0 -0
  650. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/prefix_paths.rs +0 -0
  651. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/record.rs +0 -0
  652. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/repo_data/gateway.rs +0 -0
  653. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/repo_data/mod.rs +0 -0
  654. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/repo_data/patch_instructions.rs +0 -0
  655. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/repo_data/sparse.rs +0 -0
  656. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/run_exports_json.rs +0 -0
  657. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/shell.rs +0 -0
  658. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/solver.rs +0 -0
  659. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/utils.rs +0 -0
  660. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/version/component.rs +0 -0
  661. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/version/mod.rs +0 -0
  662. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/src/virtual_package.rs +0 -0
  663. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/__init__.py +0 -0
  664. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/conftest.py +0 -0
  665. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/__init__.py +0 -0
  666. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_explicit_environment.py +0 -0
  667. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_fetch_repo_data.py +0 -0
  668. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_index.py +0 -0
  669. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_install.py +0 -0
  670. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_matchspec.py +0 -0
  671. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_override.py +0 -0
  672. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_package_record.py +0 -0
  673. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_package_streaming.py +0 -0
  674. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_prefix_record.py +0 -0
  675. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_solver.py +0 -0
  676. {py_rattler-0.13.1 → py_rattler-0.14.0}/py-rattler/tests/unit/test_version.py +0 -0
  677. {py_rattler-0.13.1 → py_rattler-0.14.0}/pyproject.toml +0 -0
  678. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/__init__.py +0 -0
  679. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/channel/__init__.py +0 -0
  680. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/channel/channel.py +0 -0
  681. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/channel/channel_config.py +0 -0
  682. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/channel/channel_priority.py +0 -0
  683. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/exceptions.py +0 -0
  684. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/explicit_environment/__init__.py +0 -0
  685. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/explicit_environment/environment.py +0 -0
  686. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/index/__init__.py +0 -0
  687. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/install/__init__.py +0 -0
  688. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/install/installer.py +0 -0
  689. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/__init__.py +0 -0
  690. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/channel.py +0 -0
  691. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/environment.py +0 -0
  692. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/hash.py +0 -0
  693. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/lock_file.py +0 -0
  694. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/lock/package.py +0 -0
  695. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/match_spec/__init__.py +0 -0
  696. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/match_spec/match_spec.py +0 -0
  697. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/match_spec/nameless_match_spec.py +0 -0
  698. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/networking/__init__.py +0 -0
  699. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/networking/client.py +0 -0
  700. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/networking/fetch_repo_data.py +0 -0
  701. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/networking/middleware.py +0 -0
  702. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/__init__.py +0 -0
  703. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/about_json.py +0 -0
  704. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/index_json.py +0 -0
  705. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/no_arch_type.py +0 -0
  706. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/package_name.py +0 -0
  707. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/paths_json.py +0 -0
  708. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package/run_exports_json.py +0 -0
  709. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/package_streaming/__init__.py +0 -0
  710. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/platform/__init__.py +0 -0
  711. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/platform/arch.py +0 -0
  712. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/platform/platform.py +0 -0
  713. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/prefix/__init__.py +0 -0
  714. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/prefix/prefix_paths.py +0 -0
  715. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/prefix/prefix_record.py +0 -0
  716. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/py.typed +0 -0
  717. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/__init__.py +0 -0
  718. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/package_record.py +0 -0
  719. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/patch_instructions.py +0 -0
  720. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/record.py +0 -0
  721. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/repo_data.py +0 -0
  722. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/repo_data/sparse.py +0 -0
  723. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/shell/__init__.py +0 -0
  724. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/shell/shell.py +0 -0
  725. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/solver/__init__.py +0 -0
  726. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/solver/solver.py +0 -0
  727. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/utils/rattler_version.py +0 -0
  728. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/version/__init__.py +0 -0
  729. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/version/version.py +0 -0
  730. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/version/with_source.py +0 -0
  731. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/virtual_package/__init__.py +0 -0
  732. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/virtual_package/generic.py +0 -0
  733. {py_rattler-0.13.1 → py_rattler-0.14.0}/rattler/virtual_package/virtual_package.py +0 -0
@@ -52,7 +52,7 @@ chrono = { version = "0.4.41", default-features = false, features = [
52
52
  "alloc",
53
53
  ] }
54
54
  clap = { version = "4.5.38", features = ["derive"] }
55
- clap-verbosity-flag = "3.0.2"
55
+ clap-verbosity-flag = "3.0.3"
56
56
  cmake = "0.1.54"
57
57
  console = { version = "0.15.11", features = ["windows-console-colors"] }
58
58
  criterion = "0.5"
@@ -105,7 +105,7 @@ memmap2 = "0.9.5"
105
105
  netrc-rs = "0.1.2"
106
106
  nom = "7.1.3"
107
107
  num_cpus = "1.16.0"
108
- opendal = { version = "0.53.2", default-features = false }
108
+ opendal = { version = "0.53.3", default-features = false }
109
109
  once_cell = "1.21.3"
110
110
  parking_lot = "0.12.3"
111
111
  pathdiff = "0.2.3"
@@ -157,7 +157,7 @@ tempfile = "3.20.0"
157
157
  temp-env = { version = "0.3.6", features = ["async_closure"] }
158
158
  test-log = "0.2.17"
159
159
  thiserror = "2.0"
160
- tokio = { version = "1.45.0", default-features = false }
160
+ tokio = { version = "1.45.1", default-features = false }
161
161
  tokio-stream = "0.1.17"
162
162
  tokio-util = "0.7.15"
163
163
  tower = { version = "0.5.2", default-features = false }
@@ -169,7 +169,7 @@ trybuild = { version = "1.0.105" }
169
169
  typed-path = { version = "0.11.0" }
170
170
  url = { version = "2.5.4" }
171
171
  unicode-normalization = "0.1.24"
172
- uuid = { version = "1.16.0", default-features = false }
172
+ uuid = { version = "1.17.0", default-features = false }
173
173
  walkdir = "2.5.0"
174
174
  wasmtimer = "0.4.1"
175
175
  which = "7.0.3"
@@ -180,24 +180,24 @@ zstd = { version = "0.13.3", default-features = false }
180
180
 
181
181
  # These are the all the crates defined in the workspace. We pin all of them together because they are always updated in tendem.
182
182
  file_url = { path = "crates/file_url", version = "=0.2.5", default-features = false }
183
- rattler = { path = "crates/rattler", version = "=0.33.7", default-features = false }
184
- rattler_cache = { path = "crates/rattler_cache", version = "=0.3.19", default-features = false }
185
- rattler_conda_types = { path = "crates/rattler_conda_types", version = "=0.34.0", default-features = false }
183
+ rattler = { path = "crates/rattler", version = "=0.34.0", default-features = false }
184
+ rattler_cache = { path = "crates/rattler_cache", version = "=0.3.20", default-features = false }
185
+ rattler_conda_types = { path = "crates/rattler_conda_types", version = "=0.35.0", default-features = false }
186
186
  rattler_digest = { path = "crates/rattler_digest", version = "=1.1.2", default-features = false }
187
- rattler_index = { path = "crates/rattler_index", version = "=0.22.7", default-features = false }
187
+ rattler_index = { path = "crates/rattler_index", version = "=0.23.0", default-features = false }
188
188
  rattler_libsolv_c = { path = "crates/rattler_libsolv_c", version = "=1.2.1", default-features = false }
189
- rattler_lock = { path = "crates/rattler_lock", version = "=0.23.4", default-features = false }
189
+ rattler_lock = { path = "crates/rattler_lock", version = "=0.23.5", default-features = false }
190
190
  rattler_macros = { path = "crates/rattler_macros", version = "=1.0.9", default-features = false }
191
- rattler_menuinst = { path = "crates/rattler_menuinst", version = "=0.2.9", default-features = false }
192
- rattler_networking = { path = "crates/rattler_networking", version = "=0.24.0", default-features = false }
191
+ rattler_menuinst = { path = "crates/rattler_menuinst", version = "=0.2.10", default-features = false }
192
+ rattler_networking = { path = "crates/rattler_networking", version = "=0.25.0", default-features = false }
193
193
  rattler_pty = { path = "crates/rattler_pty", version = "=0.2.1", default-features = false }
194
194
  rattler_redaction = { path = "crates/rattler_redaction", version = "=0.1.10", default-features = false }
195
- rattler_package_streaming = { path = "crates/rattler_package_streaming", version = "=0.22.38", default-features = false }
196
- rattler_repodata_gateway = { path = "crates/rattler_repodata_gateway", version = "=0.22.7", default-features = false }
195
+ rattler_package_streaming = { path = "crates/rattler_package_streaming", version = "=0.22.39", default-features = false }
196
+ rattler_repodata_gateway = { path = "crates/rattler_repodata_gateway", version = "=0.23.0", default-features = false }
197
197
  rattler_sandbox = { path = "crates/rattler_sandbox", version = "=0.1.8", default-features = false }
198
- rattler_shell = { path = "crates/rattler_shell", version = "=0.23.1", default-features = false }
199
- rattler_solve = { path = "crates/rattler_solve", version = "=2.0.0", default-features = false }
200
- rattler_virtual_packages = { path = "crates/rattler_virtual_packages", version = "=2.0.12", default-features = false }
198
+ rattler_shell = { path = "crates/rattler_shell", version = "=0.23.2", default-features = false }
199
+ rattler_solve = { path = "crates/rattler_solve", version = "=2.1.0", default-features = false }
200
+ rattler_virtual_packages = { path = "crates/rattler_virtual_packages", version = "=2.0.13", default-features = false }
201
201
 
202
202
  # This is also a rattler crate, but we only pin it to minor version
203
203
  simple_spawn_blocking = { path = "crates/simple_spawn_blocking", version = "1.1", default-features = false }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py-rattler
3
- Version: 0.13.1
3
+ Version: 0.14.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: BSD License
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.34.0](https://github.com/conda/rattler/compare/rattler-v0.33.7...rattler-v0.34.0) - 2025-05-23
10
+
11
+ ### Fixed
12
+
13
+ - consistent usage of rustls-tls / native-tls feature ([#1324](https://github.com/conda/rattler/pull/1324))
14
+
9
15
  ## [0.33.7](https://github.com/conda/rattler/compare/rattler-v0.33.6...rattler-v0.33.7) - 2025-05-16
10
16
 
11
17
  ### Other
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rattler"
3
- version = "0.33.7"
3
+ version = "0.34.0"
4
4
  edition.workspace = true
5
5
  authors = ["Bas Zalmstra <zalmstra.bas@gmail.com>"]
6
6
  description = "Rust library to install conda environments"
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.20](https://github.com/conda/rattler/compare/rattler_cache-v0.3.19...rattler_cache-v0.3.20) - 2025-05-23
10
+
11
+ ### Fixed
12
+
13
+ - consistent usage of rustls-tls / native-tls feature ([#1324](https://github.com/conda/rattler/pull/1324))
14
+
9
15
  ## [0.3.19](https://github.com/conda/rattler/compare/rattler_cache-v0.3.18...rattler_cache-v0.3.19) - 2025-05-16
10
16
 
11
17
  ### Other
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rattler_cache"
3
- version = "0.3.19"
3
+ version = "0.3.20"
4
4
  description = "A crate to manage the caching of data in rattler"
5
5
  categories = { workspace = true }
6
6
  homepage = { workspace = true }
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.35.0](https://github.com/conda/rattler/compare/rattler_conda_types-v0.34.0...rattler_conda_types-v0.35.0) - 2025-05-23
10
+
11
+ ### Added
12
+
13
+ - Sharded repodata, zst, add purls and run_exports support ([#1312](https://github.com/conda/rattler/pull/1312))
14
+ - control over selection of .conda and .tar.bz2 ([#1344](https://github.com/conda/rattler/pull/1344))
15
+
16
+ ### Fixed
17
+
18
+ - *(py)* package count was incorrect for prefer-conda ([#1350](https://github.com/conda/rattler/pull/1350))
19
+ - add missing `created_at` in shards ([#1343](https://github.com/conda/rattler/pull/1343))
20
+ - properly dedup package names ([#1342](https://github.com/conda/rattler/pull/1342))
21
+
9
22
  ## [0.34.0](https://github.com/conda/rattler/compare/rattler_conda_types-v0.33.0...rattler_conda_types-v0.34.0) - 2025-05-16
10
23
 
11
24
  ### Added
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rattler_conda_types"
3
- version = "0.34.0"
3
+ version = "0.35.0"
4
4
  edition.workspace = true
5
5
  authors = ["Bas Zalmstra <zalmstra.bas@gmail.com>"]
6
6
  description = "Rust data types for common types used within the Conda ecosystem"
@@ -44,7 +44,7 @@ pub struct ShardedSubdirInfo {
44
44
  }
45
45
 
46
46
  /// An individual shard that contains repodata for a single package name.
47
- #[derive(Debug, Clone, Serialize, Deserialize)]
47
+ #[derive(Debug, Clone, Serialize, Deserialize, Default)]
48
48
  pub struct Shard {
49
49
  /// The records for all `.tar.bz2` packages
50
50
  pub packages: FxHashMap<String, PackageRecord>,
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.23.0](https://github.com/conda/rattler/compare/rattler_index-v0.22.7...rattler_index-v0.23.0) - 2025-05-23
10
+
11
+ ### Added
12
+
13
+ - Sharded repodata, zst, add purls and run_exports support ([#1312](https://github.com/conda/rattler/pull/1312))
14
+
9
15
  ## [0.22.7](https://github.com/conda/rattler/compare/rattler_index-v0.22.6...rattler_index-v0.22.7) - 2025-05-16
10
16
 
11
17
  ### Added
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rattler_index"
3
- version = "0.22.7"
3
+ version = "0.23.0"
4
4
  edition.workspace = true
5
5
  authors = []
6
6
  description = "A crate to index conda channels and create a repodata.json file."
@@ -33,6 +33,7 @@ path = "src/main.rs"
33
33
  [dependencies]
34
34
  anyhow = { workspace = true }
35
35
  bytes = { workspace = true }
36
+ chrono = { workspace = true }
36
37
  clap = { workspace = true, features = ["derive", "env"] }
37
38
  clap-verbosity-flag = { workspace = true, features = ["tracing"] }
38
39
  console = { workspace = true }
@@ -53,11 +54,16 @@ reqwest = { workspace = true, default-features = false, features = [
53
54
  "macos-system-configuration",
54
55
  "charset",
55
56
  ] }
57
+ rmp-serde = { workspace = true }
58
+ serde = { workspace = true }
56
59
  serde_json = { workspace = true }
60
+ sha2 = { workspace = true }
61
+ tar = { workspace = true }
57
62
  tokio = { workspace = true, features = ["full"] }
58
63
  tracing = { workspace = true }
59
64
  tracing-subscriber = { workspace = true, features = ["env-filter", "fmt"] }
60
65
  url = { workspace = true }
66
+ zstd = { workspace = true }
61
67
 
62
68
  [dev-dependencies]
63
69
  tempfile = { workspace = true }
@@ -9,14 +9,18 @@ use futures::{stream::FuturesUnordered, StreamExt};
9
9
  use fxhash::FxHashMap;
10
10
  use indicatif::{MultiProgress, ProgressBar, ProgressStyle};
11
11
  use rattler_conda_types::{
12
- package::{ArchiveType, IndexJson, PackageFile},
13
- ChannelInfo, PackageRecord, PatchInstructions, Platform, RepoData,
12
+ package::{ArchiveIdentifier, ArchiveType, IndexJson, PackageFile, RunExportsJson},
13
+ ChannelInfo, PackageRecord, PatchInstructions, Platform, RepoData, Shard, ShardedRepodata,
14
+ ShardedSubdirInfo,
14
15
  };
16
+ use rattler_digest::Sha256Hash;
15
17
  use rattler_networking::{Authentication, AuthenticationStorage};
16
18
  use rattler_package_streaming::{
17
19
  read,
18
20
  seek::{self, stream_conda_content},
19
21
  };
22
+ use serde::Serialize;
23
+ use sha2::{Digest, Sha256};
20
24
  use std::{
21
25
  collections::{HashMap, HashSet},
22
26
  io::{Cursor, Read, Seek},
@@ -33,6 +37,11 @@ use opendal::{
33
37
  Configurator, Operator,
34
38
  };
35
39
 
40
+ const REPODATA_FROM_PACKAGES: &str = "repodata_from_packages.json";
41
+ const REPODATA: &str = "repodata.json";
42
+ const REPODATA_SHARDS: &str = "repodata_shards.msgpack.zst";
43
+ const ZSTD_REPODATA_COMPRESSION_LEVEL: i32 = 19;
44
+
36
45
  /// Extract the package record from an `index.json` file.
37
46
  pub fn package_record_from_index_json<T: Read>(
38
47
  package_as_bytes: impl AsRef<[u8]>,
@@ -151,43 +160,61 @@ pub fn package_record_from_conda(file: &Path) -> std::io::Result<PackageRecord>
151
160
  package_record_from_conda_reader(reader)
152
161
  }
153
162
 
154
- /// Extract the package record from a `.conda` package file content.
155
- /// This function will look for the `info/index.json` file in the conda package
156
- /// and extract the package record from it.
157
- pub fn package_record_from_conda_reader(reader: impl Read) -> std::io::Result<PackageRecord> {
158
- let bytes = reader.bytes().collect::<Result<Vec<u8>, _>>()?;
159
- let reader = Cursor::new(&bytes);
160
- let mut archive = seek::stream_conda_info(reader).expect("Could not open conda file");
161
-
163
+ fn read_index_json_from_archive(
164
+ bytes: &Vec<u8>,
165
+ archive: &mut tar::Archive<impl Read>,
166
+ ) -> std::io::Result<PackageRecord> {
167
+ let mut index_json = None;
168
+ let mut run_exports_json = None;
162
169
  for entry in archive.entries()?.flatten() {
163
170
  let mut entry = entry;
164
171
  let path = entry.path()?;
165
172
  if path.as_os_str().eq("info/index.json") {
166
- return package_record_from_index_json(&bytes, &mut entry);
173
+ index_json = Some(package_record_from_index_json(bytes, &mut entry)?);
174
+ } else if path.as_os_str().eq("info/run_exports.json") {
175
+ run_exports_json = Some(RunExportsJson::from_reader(&mut entry)?);
167
176
  }
168
177
  }
178
+
179
+ if let Some(mut index_json) = index_json {
180
+ index_json.run_exports = run_exports_json;
181
+ return Ok(index_json);
182
+ }
183
+
169
184
  Err(std::io::Error::new(
170
185
  std::io::ErrorKind::Other,
171
186
  "No index.json found",
172
187
  ))
173
188
  }
174
189
 
190
+ /// Extract the package record from a `.conda` package file content.
191
+ /// This function will look for the `info/index.json` file in the conda package
192
+ /// and extract the package record from it.
193
+ pub fn package_record_from_conda_reader(reader: impl Read) -> std::io::Result<PackageRecord> {
194
+ let bytes = reader.bytes().collect::<Result<Vec<u8>, _>>()?;
195
+ let reader = Cursor::new(&bytes);
196
+ let mut archive = seek::stream_conda_info(reader).expect("Could not open conda file");
197
+ read_index_json_from_archive(&bytes, &mut archive)
198
+ }
199
+
200
+ #[allow(clippy::too_many_arguments)]
175
201
  async fn index_subdir(
176
202
  subdir: Platform,
177
203
  op: Operator,
178
204
  force: bool,
205
+ write_zst: bool,
206
+ write_shards: bool,
179
207
  repodata_patch: Option<PatchInstructions>,
180
208
  progress: Option<MultiProgress>,
181
209
  semaphore: Arc<Semaphore>,
182
210
  ) -> Result<()> {
183
- let repodata_path = if repodata_patch.is_some() {
184
- format!("{subdir}/repodata_from_packages.json")
185
- } else {
186
- format!("{subdir}/repodata.json")
187
- };
188
211
  let mut registered_packages: FxHashMap<String, PackageRecord> = HashMap::default();
189
212
  if !force {
190
- let repodata_bytes = op.read(&repodata_path).await;
213
+ let repodata_bytes = if repodata_patch.is_some() {
214
+ op.read(&format!("{subdir}/{REPODATA_FROM_PACKAGES}")).await
215
+ } else {
216
+ op.read(&format!("{subdir}/{REPODATA}")).await
217
+ };
191
218
  let repodata: RepoData = match repodata_bytes {
192
219
  Ok(bytes) => serde_json::from_slice(&bytes.to_vec())?,
193
220
  Err(e) => {
@@ -368,6 +395,7 @@ async fn index_subdir(
368
395
  }
369
396
  }
370
397
 
398
+ // TODO: don't serialize run_exports and purls but in their own files
371
399
  let repodata = RepoData {
372
400
  info: Some(ChannelInfo {
373
401
  subdir: Some(subdir.to_string()),
@@ -379,41 +407,187 @@ async fn index_subdir(
379
407
  version: Some(2),
380
408
  };
381
409
 
382
- tracing::info!("Writing repodata to {}", repodata_path);
383
- let repodata_bytes = serde_json::to_vec(&repodata)?;
384
- op.write(&repodata_path, repodata_bytes).await?;
410
+ write_repodata(
411
+ repodata,
412
+ repodata_patch,
413
+ write_zst,
414
+ write_shards,
415
+ subdir,
416
+ op,
417
+ )
418
+ .await
419
+ }
420
+
421
+ fn serialize_msgpack_zst<T>(val: &T) -> Result<Vec<u8>>
422
+ where
423
+ T: Serialize + ?Sized,
424
+ {
425
+ let msgpack = rmp_serde::to_vec_named(val)?;
426
+ let encoded = zstd::stream::encode_all(&msgpack[..], 0)?;
427
+ Ok(encoded)
428
+ }
385
429
 
386
- if let Some(instructions) = repodata_patch {
387
- let patched_repodata_path = format!("{subdir}/repodata.json");
388
- tracing::info!("Writing patched repodata to {}", patched_repodata_path);
430
+ /// Write a `repodata.json` for all packages in the given configurator's root.
431
+ pub async fn write_repodata(
432
+ repodata: RepoData,
433
+ repodata_patch: Option<PatchInstructions>,
434
+ write_zst: bool,
435
+ write_shards: bool,
436
+ subdir: Platform,
437
+ op: Operator,
438
+ ) -> Result<()> {
439
+ if repodata_patch.is_some() {
440
+ let unpatched_repodata_path = format!("{subdir}/{REPODATA_FROM_PACKAGES}");
441
+ tracing::info!("Writing unpatched repodata to {unpatched_repodata_path}");
442
+ let unpatched_repodata_bytes = serde_json::to_vec(&repodata)?;
443
+ op.write(&unpatched_repodata_path, unpatched_repodata_bytes)
444
+ .await?;
445
+ }
446
+
447
+ let repodata = if let Some(instructions) = repodata_patch {
448
+ tracing::info!("Patching repodata");
389
449
  let mut patched_repodata = repodata.clone();
390
450
  patched_repodata.apply_patches(&instructions);
391
- let patched_repodata_bytes = serde_json::to_vec(&patched_repodata)?;
392
- op.write(&patched_repodata_path, patched_repodata_bytes)
393
- .await?;
451
+ patched_repodata
452
+ } else {
453
+ repodata
454
+ };
455
+
456
+ let repodata_bytes = serde_json::to_vec(&repodata)?;
457
+ if write_zst {
458
+ tracing::info!("Compressing repodata bytes");
459
+ let repodata_zst_bytes =
460
+ zstd::stream::encode_all(&repodata_bytes[..], ZSTD_REPODATA_COMPRESSION_LEVEL)?;
461
+ let repodata_zst_path = format!("{subdir}/{REPODATA}.zst");
462
+ tracing::info!("Writing zst repodata to {repodata_zst_path}");
463
+ op.write(&repodata_zst_path, repodata_zst_bytes).await?;
394
464
  }
395
- // todo: also write repodata.json.bz2, repodata.json.zst, repodata.json.jlap and sharded repodata once available in rattler
396
- // https://github.com/conda/rattler/issues/1096
397
465
 
466
+ let repodata_path = format!("{subdir}/{REPODATA}");
467
+ tracing::info!("Writing repodata to {repodata_path}");
468
+ op.write(&repodata_path, repodata_bytes).await?;
469
+
470
+ if write_shards {
471
+ // See CEP 16 <https://github.com/conda/ceps/blob/main/cep-0016.md>
472
+ tracing::info!("Creating sharded repodata");
473
+ let mut shards_by_package_names: HashMap<String, Shard> = HashMap::new();
474
+ for (k, package_record) in repodata.conda_packages {
475
+ let package_name = package_record.name.as_normalized();
476
+ let shard = shards_by_package_names
477
+ .entry(package_name.into())
478
+ .or_default();
479
+ shard.conda_packages.insert(k, package_record);
480
+ }
481
+ for (k, package_record) in repodata.packages {
482
+ let package_name = package_record.name.as_normalized();
483
+ let shard = shards_by_package_names
484
+ .entry(package_name.into())
485
+ .or_default();
486
+ shard.packages.insert(k, package_record);
487
+ }
488
+ for package in repodata.removed {
489
+ let package_name = ArchiveIdentifier::try_from_filename(package.as_str())
490
+ .context("Could not determine archive identifier for {package}")?
491
+ .name;
492
+ let shard = shards_by_package_names.entry(package_name).or_default();
493
+ shard.removed.insert(package);
494
+ }
495
+
496
+ // calculate digests for shards
497
+ let shards = shards_by_package_names
498
+ .iter()
499
+ .map(|(k, shard)| {
500
+ serialize_msgpack_zst(shard).map(|encoded| {
501
+ let mut hasher = Sha256::new();
502
+ hasher.update(&encoded);
503
+ let digest: Sha256Hash = hasher.finalize();
504
+ (k, (digest, encoded))
505
+ })
506
+ })
507
+ .collect::<Result<HashMap<_, _>>>()?;
508
+
509
+ let sharded_repodata = ShardedRepodata {
510
+ info: ShardedSubdirInfo {
511
+ subdir: subdir.to_string(),
512
+ base_url: "".into(),
513
+ shards_base_url: "./shards/".into(),
514
+ created_at: Some(chrono::Utc::now()),
515
+ },
516
+ shards: shards
517
+ .iter()
518
+ .map(|(&k, (digest, _))| (k.clone(), *digest))
519
+ .collect(),
520
+ };
521
+
522
+ let mut tasks = FuturesUnordered::new();
523
+ // todo max parallel
524
+ for (_, (digest, encoded_shard)) in shards {
525
+ let op = op.clone();
526
+ let future = async move || {
527
+ let shard_path = format!("{subdir}/shards/{digest:x}.msgpack.zst");
528
+ tracing::trace!("Writing repodata shard to {shard_path}");
529
+ op.write(&shard_path, encoded_shard).await
530
+ };
531
+ tasks.push(tokio::spawn(future()));
532
+ }
533
+ while let Some(join_result) = tasks.next().await {
534
+ match join_result {
535
+ Ok(Ok(_)) => {}
536
+ Ok(Err(e)) => Err(e)?,
537
+ Err(join_err) => Err(join_err)?,
538
+ }
539
+ }
540
+
541
+ let repodata_shards_path = format!("{subdir}/{REPODATA_SHARDS}");
542
+ tracing::trace!("Writing repodata shards to {repodata_shards_path}");
543
+ let sharded_repodata_encoded = serialize_msgpack_zst(&sharded_repodata)?;
544
+ op.write(&repodata_shards_path, sharded_repodata_encoded)
545
+ .await?;
546
+ }
398
547
  Ok(())
399
548
  }
400
549
 
550
+ /// Configuration for `index_fs`
551
+ pub struct IndexFsConfig {
552
+ /// The channel to index.
553
+ pub channel: PathBuf,
554
+ /// The target platform to index.
555
+ pub target_platform: Option<Platform>,
556
+ /// The path to a repodata patch to apply to the index.
557
+ pub repodata_patch: Option<String>,
558
+ /// Whether to write the repodata as a zstd-compressed file.
559
+ pub write_zst: bool,
560
+ /// Whether to write the repodata shards.
561
+ pub write_shards: bool,
562
+ /// Whether to force the index to be written.
563
+ pub force: bool,
564
+ /// The maximum number of parallel tasks to run.
565
+ pub max_parallel: usize,
566
+ /// The multi-progress bar to use for the index.
567
+ pub multi_progress: Option<MultiProgress>,
568
+ }
569
+
401
570
  /// Create a new `repodata.json` for all packages in the channel at the given directory.
402
- #[allow(clippy::too_many_arguments)]
403
571
  pub async fn index_fs(
404
- channel: impl Into<PathBuf>,
405
- target_platform: Option<Platform>,
406
- repodata_patch: Option<String>,
407
- force: bool,
408
- max_parallel: usize,
409
- multi_progress: Option<MultiProgress>,
572
+ IndexFsConfig {
573
+ channel,
574
+ target_platform,
575
+ repodata_patch,
576
+ write_zst,
577
+ write_shards,
578
+ force,
579
+ max_parallel,
580
+ multi_progress,
581
+ }: IndexFsConfig,
410
582
  ) -> anyhow::Result<()> {
411
583
  let mut config = FsConfig::default();
412
- config.root = Some(channel.into().canonicalize()?.to_string_lossy().to_string());
584
+ config.root = Some(channel.canonicalize()?.to_string_lossy().to_string());
413
585
  index(
414
586
  target_platform,
415
587
  config,
416
588
  repodata_patch,
589
+ write_zst,
590
+ write_shards,
417
591
  force,
418
592
  max_parallel,
419
593
  multi_progress,
@@ -421,21 +595,56 @@ pub async fn index_fs(
421
595
  .await
422
596
  }
423
597
 
598
+ /// Configuration for `index_s3`
599
+ pub struct IndexS3Config {
600
+ /// The channel to index.
601
+ pub channel: Url,
602
+ /// The region of the S3 bucket.
603
+ pub region: String,
604
+ /// The endpoint URL of the S3 bucket.
605
+ pub endpoint_url: Url,
606
+ /// Whether to force path style for the S3 bucket.
607
+ pub force_path_style: bool,
608
+ /// The access key ID for the S3 bucket.
609
+ pub access_key_id: Option<String>,
610
+ /// The secret access key for the S3 bucket.
611
+ pub secret_access_key: Option<String>,
612
+ /// The session token for the S3 bucket.
613
+ pub session_token: Option<String>,
614
+ /// The target platform to index.
615
+ pub target_platform: Option<Platform>,
616
+ /// The path to a repodata patch to apply to the index.
617
+ pub repodata_patch: Option<String>,
618
+ /// Whether to write the repodata as a zstd-compressed file.
619
+ pub write_zst: bool,
620
+ /// Whether to write the repodata shards.
621
+ pub write_shards: bool,
622
+ /// Whether to force the index to be written.
623
+ pub force: bool,
624
+ /// The maximum number of parallel tasks to run.
625
+ pub max_parallel: usize,
626
+ /// The multi-progress bar to use for the index.
627
+ pub multi_progress: Option<MultiProgress>,
628
+ }
629
+
424
630
  /// Create a new `repodata.json` for all packages in the channel at the given S3 URL.
425
- #[allow(clippy::too_many_arguments)]
426
631
  pub async fn index_s3(
427
- channel: Url,
428
- region: String,
429
- endpoint_url: Url,
430
- force_path_style: bool,
431
- access_key_id: Option<String>,
432
- secret_access_key: Option<String>,
433
- session_token: Option<String>,
434
- target_platform: Option<Platform>,
435
- repodata_patch: Option<String>,
436
- force: bool,
437
- max_parallel: usize,
438
- multi_progress: Option<MultiProgress>,
632
+ IndexS3Config {
633
+ channel,
634
+ region,
635
+ endpoint_url,
636
+ force_path_style,
637
+ access_key_id,
638
+ secret_access_key,
639
+ session_token,
640
+ target_platform,
641
+ repodata_patch,
642
+ write_zst,
643
+ write_shards,
644
+ force,
645
+ max_parallel,
646
+ multi_progress,
647
+ }: IndexS3Config,
439
648
  ) -> anyhow::Result<()> {
440
649
  let mut s3_config = S3Config::default();
441
650
  s3_config.root = Some(channel.path().to_string());
@@ -473,6 +682,8 @@ pub async fn index_s3(
473
682
  target_platform,
474
683
  s3_config,
475
684
  repodata_patch,
685
+ write_zst,
686
+ write_shards,
476
687
  force,
477
688
  max_parallel,
478
689
  multi_progress,
@@ -492,10 +703,13 @@ pub async fn index_s3(
492
703
  /// 2. Collect all registered packages from `repodata.json` (if exists)
493
704
  /// 3. Determine which packages to add to and to delete from `repodata.json`
494
705
  /// 4. Write `repodata.json` back
706
+ #[allow(clippy::too_many_arguments)]
495
707
  pub async fn index<T: Configurator>(
496
708
  target_platform: Option<Platform>,
497
709
  config: T,
498
710
  repodata_patch: Option<String>,
711
+ write_zst: bool,
712
+ write_shards: bool,
499
713
  force: bool,
500
714
  max_parallel: usize,
501
715
  multi_progress: Option<MultiProgress>,
@@ -569,6 +783,8 @@ pub async fn index<T: Configurator>(
569
783
  *subdir,
570
784
  op.clone(),
571
785
  force,
786
+ write_zst,
787
+ write_shards,
572
788
  repodata_patch
573
789
  .as_ref()
574
790
  .and_then(|p| p.subdirs.get(&subdir.to_string()).cloned()),