voyager 2.2.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.
Files changed (376) hide show
  1. voyager-2.2.0/CMakeLists.txt +86 -0
  2. voyager-2.2.0/MANIFEST.in +5 -0
  3. voyager-2.2.0/PKG-INFO +105 -0
  4. voyager-2.2.0/README.md +84 -0
  5. voyager-2.2.0/__init__.py +15 -0
  6. voyager-2.2.0/dev-requirements.txt +15 -0
  7. voyager-2.2.0/docs/source/_static/favicon-16x16.png +0 -0
  8. voyager-2.2.0/docs/source/_static/favicon-32x32.png +0 -0
  9. voyager-2.2.0/docs/source/_static/favicon.ico +0 -0
  10. voyager-2.2.0/docs/source/conf.py +127 -0
  11. voyager-2.2.0/docs/source/index.rst +40 -0
  12. voyager-2.2.0/docs/source/reference.rst +47 -0
  13. voyager-2.2.0/docs/source/voyager-black-roundrect-icon.png +0 -0
  14. voyager-2.2.0/docs/source/voyager-black-roundrect-rectangle.png +0 -0
  15. voyager-2.2.0/docs/source/voyager-feature.png +0 -0
  16. voyager-2.2.0/docs/source/voyager-outline-color.png +0 -0
  17. voyager-2.2.0/py.typed +1 -0
  18. voyager-2.2.0/pyproject.toml +49 -0
  19. voyager-2.2.0/src/PythonFileLike.h +90 -0
  20. voyager-2.2.0/src/PythonInputStream.h +201 -0
  21. voyager-2.2.0/src/PythonOutputStream.h +72 -0
  22. voyager-2.2.0/src/bindings.cpp +1103 -0
  23. voyager-2.2.0/src/cpp/.clang-format +8 -0
  24. voyager-2.2.0/src/cpp/CMakeLists.txt +29 -0
  25. voyager-2.2.0/src/cpp/Makefile +15 -0
  26. voyager-2.2.0/src/cpp/build/.gitkeep +0 -0
  27. voyager-2.2.0/src/cpp/include/CMakeLists.txt +6 -0
  28. voyager-2.2.0/src/cpp/include/doctest/.clang-format +82 -0
  29. voyager-2.2.0/src/cpp/include/doctest/.clang-tidy +62 -0
  30. voyager-2.2.0/src/cpp/include/doctest/.editorconfig +12 -0
  31. voyager-2.2.0/src/cpp/include/doctest/.gitattributes +1 -0
  32. voyager-2.2.0/src/cpp/include/doctest/.github/FUNDING.yml +4 -0
  33. voyager-2.2.0/src/cpp/include/doctest/.github/issue_template.md +29 -0
  34. voyager-2.2.0/src/cpp/include/doctest/.github/pull_request_template.md +26 -0
  35. voyager-2.2.0/src/cpp/include/doctest/.github/workflows/build_and_test.py +99 -0
  36. voyager-2.2.0/src/cpp/include/doctest/.github/workflows/codeql-analysis.yml +67 -0
  37. voyager-2.2.0/src/cpp/include/doctest/.github/workflows/main.yml +375 -0
  38. voyager-2.2.0/src/cpp/include/doctest/.gitignore +75 -0
  39. voyager-2.2.0/src/cpp/include/doctest/CHANGELOG.md +903 -0
  40. voyager-2.2.0/src/cpp/include/doctest/CMakeLists.txt +168 -0
  41. voyager-2.2.0/src/cpp/include/doctest/CONTRIBUTING.md +30 -0
  42. voyager-2.2.0/src/cpp/include/doctest/LICENSE.txt +21 -0
  43. voyager-2.2.0/src/cpp/include/doctest/README.md +137 -0
  44. voyager-2.2.0/src/cpp/include/doctest/WORKSPACE +0 -0
  45. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/assertions.md +192 -0
  46. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/benchmarks.md +202 -0
  47. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/build-systems.md +93 -0
  48. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/commandline.md +135 -0
  49. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/configuration.md +321 -0
  50. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/extensions.md +170 -0
  51. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/faq.md +178 -0
  52. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/features.md +84 -0
  53. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/logging.md +70 -0
  54. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/main.md +62 -0
  55. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/parameterized-tests.md +177 -0
  56. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/readme.md +36 -0
  57. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/reporters.md +106 -0
  58. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/stringification.md +95 -0
  59. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/testcases.md +172 -0
  60. voyager-2.2.0/src/cpp/include/doctest/doc/markdown/tutorial.md +205 -0
  61. voyager-2.2.0/src/cpp/include/doctest/doctest/BUILD.bazel +32 -0
  62. voyager-2.2.0/src/cpp/include/doctest/doctest/doctest.h +7106 -0
  63. voyager-2.2.0/src/cpp/include/doctest/doctest/extensions/doctest_mpi.h +169 -0
  64. voyager-2.2.0/src/cpp/include/doctest/doctest/extensions/doctest_util.h +37 -0
  65. voyager-2.2.0/src/cpp/include/doctest/doctest/extensions/mpi_reporter.h +271 -0
  66. voyager-2.2.0/src/cpp/include/doctest/doctest/extensions/mpi_sub_comm.h +84 -0
  67. voyager-2.2.0/src/cpp/include/doctest/doctest/parts/doctest.cpp +4016 -0
  68. voyager-2.2.0/src/cpp/include/doctest/doctest/parts/doctest_fwd.h +3082 -0
  69. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/CMakeLists.txt +154 -0
  70. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/alternative_macros.cpp +15 -0
  71. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/assert_returns_disabled.cpp +30 -0
  72. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/assert_returns_disabled_evaluate.cpp +4 -0
  73. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/assertion_macros.cpp +235 -0
  74. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/asserts_used_outside_of_tests.cpp +74 -0
  75. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/concurrency.cpp +71 -0
  76. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/coverage_maxout.cpp +127 -0
  77. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/decomposition.cpp +63 -0
  78. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/doctest_proxy.h +71 -0
  79. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/double_stringification.cpp +18 -0
  80. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/enums.cpp +121 -0
  81. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/header.h +68 -0
  82. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/logging.cpp +81 -0
  83. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/main.cpp +51 -0
  84. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace1.cpp +27 -0
  85. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace2.cpp +24 -0
  86. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace3.cpp +22 -0
  87. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace4.cpp +37 -0
  88. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace5.cpp +39 -0
  89. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace6.cpp +41 -0
  90. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace7.cpp +41 -0
  91. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace8.cpp +45 -0
  92. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/namespace9.cpp +44 -0
  93. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/no_failures.cpp +13 -0
  94. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/reporters_and_listeners.cpp +85 -0
  95. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/stringification.cpp +276 -0
  96. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/subcases.cpp +198 -0
  97. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/templated_test_cases.cpp +78 -0
  98. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_cases_and_suites.cpp +76 -0
  99. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/abort_after.txt +19 -0
  100. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/abort_after_junit.txt +22 -0
  101. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/abort_after_xml.txt +34 -0
  102. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/all_binary.txt +82 -0
  103. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/all_binary_junit.txt +7 -0
  104. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/all_binary_xml.txt +204 -0
  105. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/alternative_macros.cpp.txt +6 -0
  106. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/alternative_macros.cpp_junit.txt +8 -0
  107. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/alternative_macros.cpp_xml.txt +20 -0
  108. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/assertion_macros.cpp.txt +257 -0
  109. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/assertion_macros.cpp_junit.txt +385 -0
  110. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/assertion_macros.cpp_xml.txt +690 -0
  111. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp.txt +16 -0
  112. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp_junit.txt +15 -0
  113. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp_xml.txt +17 -0
  114. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/count.txt +2 -0
  115. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/count_junit.txt +1 -0
  116. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/count_xml.txt +5 -0
  117. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/coverage_maxout.cpp.txt +43 -0
  118. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/coverage_maxout.cpp_junit.txt +44 -0
  119. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/coverage_maxout.cpp_xml.txt +65 -0
  120. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/decomposition.cpp.txt +16 -0
  121. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/decomposition.cpp_junit.txt +21 -0
  122. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/decomposition.cpp_xml.txt +31 -0
  123. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/disabled.txt +1 -0
  124. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/disabled_but_evaluated.txt +0 -0
  125. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/doctest_proxy.h.txt +6 -0
  126. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/doctest_proxy.h_junit.txt +5 -0
  127. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/doctest_proxy.h_xml.txt +7 -0
  128. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/double_stringification.cpp.txt +6 -0
  129. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/double_stringification.cpp_junit.txt +7 -0
  130. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/double_stringification.cpp_xml.txt +12 -0
  131. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/enums.cpp.txt +65 -0
  132. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/enums.cpp_junit.txt +117 -0
  133. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/enums.cpp_xml.txt +159 -0
  134. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_1.txt +6 -0
  135. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_1_junit.txt +5 -0
  136. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_1_xml.txt +7 -0
  137. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_2.txt +6 -0
  138. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_2_junit.txt +5 -0
  139. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_2_xml.txt +155 -0
  140. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_3.txt +45 -0
  141. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_3_junit.txt +23 -0
  142. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_3_xml.txt +72 -0
  143. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_4.txt +22 -0
  144. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_4_junit.txt +8 -0
  145. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/filter_4_xml.txt +26 -0
  146. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/first_last.txt +27 -0
  147. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/first_last_junit.txt +21 -0
  148. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/first_last_xml.txt +27 -0
  149. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/header.h.txt +25 -0
  150. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/header.h_junit.txt +28 -0
  151. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/header.h_xml.txt +32 -0
  152. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/help.txt +63 -0
  153. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/help_junit.txt +1 -0
  154. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/help_xml.txt +4 -0
  155. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_reporters.txt +7 -0
  156. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_reporters_junit.txt +1 -0
  157. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_reporters_xml.txt +9 -0
  158. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_cases.txt +8 -0
  159. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_cases_junit.txt +1 -0
  160. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_cases_xml.txt +9 -0
  161. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_suites.txt +6 -0
  162. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_suites_junit.txt +1 -0
  163. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/list_test_suites_xml.txt +7 -0
  164. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/logging.cpp.txt +84 -0
  165. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/logging.cpp_junit.txt +101 -0
  166. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/logging.cpp_xml.txt +159 -0
  167. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/main.cpp.txt +6 -0
  168. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/main.cpp_junit.txt +7 -0
  169. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/main.cpp_xml.txt +12 -0
  170. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal.txt +100 -0
  171. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal_junit.txt +91 -0
  172. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal_no_fail.txt +9 -0
  173. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal_no_fail_junit.txt +22 -0
  174. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal_no_fail_xml.txt +31 -0
  175. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/minimal_xml.txt +114 -0
  176. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/no_multi_lane_atomics.txt +931 -0
  177. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/no_multithreading.txt +931 -0
  178. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_1.txt +108 -0
  179. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_1_junit.txt +98 -0
  180. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_1_xml.txt +116 -0
  181. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_2.txt +101 -0
  182. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_2_junit.txt +91 -0
  183. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_2_xml.txt +114 -0
  184. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_3.txt +6 -0
  185. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_3_junit.txt +5 -0
  186. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/order_3_xml.txt +7 -0
  187. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/reporters_and_listeners.cpp.txt +6 -0
  188. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/reporters_and_listeners.cpp_junit.txt +5 -0
  189. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/reporters_and_listeners.cpp_xml.txt +7 -0
  190. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/std_headers.txt +931 -0
  191. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/stringification.cpp.txt +96 -0
  192. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/stringification.cpp_junit.txt +103 -0
  193. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/stringification.cpp_xml.txt +219 -0
  194. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/subcases.cpp.txt +294 -0
  195. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/subcases.cpp_junit.txt +162 -0
  196. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/subcases.cpp_xml.txt +402 -0
  197. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/templated_test_cases.cpp.txt +41 -0
  198. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/templated_test_cases.cpp_junit.txt +56 -0
  199. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/templated_test_cases.cpp_xml.txt +94 -0
  200. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/test_cases_and_suites.cpp.txt +101 -0
  201. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/test_cases_and_suites.cpp_junit.txt +91 -0
  202. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/test_cases_and_suites.cpp_xml.txt +114 -0
  203. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/version.txt +1 -0
  204. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/version_junit.txt +1 -0
  205. voyager-2.2.0/src/cpp/include/doctest/examples/all_features/test_output/version_xml.txt +4 -0
  206. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/CMakeLists.txt +63 -0
  207. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/default.cpp +6 -0
  208. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/foo.h +41 -0
  209. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/main.cpp +24 -0
  210. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/return42.cpp +7 -0
  211. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations.txt +45 -0
  212. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations_junit.txt +11 -0
  213. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations_xml.txt +60 -0
  214. voyager-2.2.0/src/cpp/include/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_runner.cpp +5 -0
  215. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/CMakeLists.txt +27 -0
  216. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/doctest_force_link_static_lib_in_target.cmake +131 -0
  217. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/lib_1_src1.cpp +6 -0
  218. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/lib_1_src2.cpp +6 -0
  219. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/lib_2_src.cpp +6 -0
  220. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/main.cpp +4 -0
  221. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs.txt +9 -0
  222. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs_junit.txt +13 -0
  223. voyager-2.2.0/src/cpp/include/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs_xml.txt +24 -0
  224. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/CMakeLists.txt +27 -0
  225. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/dll.cpp +14 -0
  226. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/implementation.cpp +11 -0
  227. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/implementation_2.cpp +10 -0
  228. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/main.cpp +67 -0
  229. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/plugin.cpp +23 -0
  230. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin.txt +31 -0
  231. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin_junit.txt +32 -0
  232. voyager-2.2.0/src/cpp/include/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin_xml.txt +61 -0
  233. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/dll/CMakeLists.txt +14 -0
  234. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/dll/dll.cpp +22 -0
  235. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/dll/dll.h +7 -0
  236. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/dll/exporting.h +15 -0
  237. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/dll/main.cpp +34 -0
  238. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/executable/CMakeLists.txt +9 -0
  239. voyager-2.2.0/src/cpp/include/doctest/examples/installed_doctest_cmake/executable/main.cpp +35 -0
  240. voyager-2.2.0/src/cpp/include/doctest/examples/mpi/CMakeLists.txt +7 -0
  241. voyager-2.2.0/src/cpp/include/doctest/examples/mpi/main.cpp +19 -0
  242. voyager-2.2.0/src/cpp/include/doctest/examples/mpi/mpi.cpp +46 -0
  243. voyager-2.2.0/src/cpp/include/doctest/examples/range_based_execution.py +43 -0
  244. voyager-2.2.0/src/cpp/include/doctest/meson.build +7 -0
  245. voyager-2.2.0/src/cpp/include/doctest/scripts/bench/bench.py +237 -0
  246. voyager-2.2.0/src/cpp/include/doctest/scripts/bench/run_all.py +65 -0
  247. voyager-2.2.0/src/cpp/include/doctest/scripts/bench/tests.json +43 -0
  248. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/Config.cmake.in +6 -0
  249. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/assemble_single_header.cmake +13 -0
  250. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/common.cmake +212 -0
  251. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/doctest.cmake +189 -0
  252. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/doctestAddTests.cmake +120 -0
  253. voyager-2.2.0/src/cpp/include/doctest/scripts/cmake/exec_test.cmake +70 -0
  254. voyager-2.2.0/src/cpp/include/doctest/scripts/data/article.txt +257 -0
  255. voyager-2.2.0/src/cpp/include/doctest/scripts/data/article2.txt +153 -0
  256. voyager-2.2.0/src/cpp/include/doctest/scripts/data/benchmarks/asserts.png +0 -0
  257. voyager-2.2.0/src/cpp/include/doctest/scripts/data/benchmarks/header.png +0 -0
  258. voyager-2.2.0/src/cpp/include/doctest/scripts/data/benchmarks/implement.png +0 -0
  259. voyager-2.2.0/src/cpp/include/doctest/scripts/data/benchmarks/runtime_assert.png +0 -0
  260. voyager-2.2.0/src/cpp/include/doctest/scripts/data/benchmarks/runtime_info.png +0 -0
  261. voyager-2.2.0/src/cpp/include/doctest/scripts/data/cover.png +0 -0
  262. voyager-2.2.0/src/cpp/include/doctest/scripts/data/cover_888px_wide.png +0 -0
  263. voyager-2.2.0/src/cpp/include/doctest/scripts/data/initial_release_traffic.png +0 -0
  264. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_1.svg +27 -0
  265. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_2.svg +32 -0
  266. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_3.svg +37 -0
  267. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_4.svg +25 -0
  268. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_5.svg +32 -0
  269. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/icon_6.svg +32 -0
  270. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_1.svg +35 -0
  271. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_2.svg +33 -0
  272. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_3.svg +33 -0
  273. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_4.svg +33 -0
  274. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_5.svg +34 -0
  275. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_6.svg +34 -0
  276. voyager-2.2.0/src/cpp/include/doctest/scripts/data/logo/logo_7.svg +38 -0
  277. voyager-2.2.0/src/cpp/include/doctest/scripts/data/using_doctest_888px_wide.gif +0 -0
  278. voyager-2.2.0/src/cpp/include/doctest/scripts/data/youtube-cppcon-talk-thumbnail.png +0 -0
  279. voyager-2.2.0/src/cpp/include/doctest/scripts/development_only/doctest/doctest.h +5 -0
  280. voyager-2.2.0/src/cpp/include/doctest/scripts/hello_world.cpp +14 -0
  281. voyager-2.2.0/src/cpp/include/doctest/scripts/how_stuff_works/CMakeLists.txt +6 -0
  282. voyager-2.2.0/src/cpp/include/doctest/scripts/how_stuff_works/how_exception_translators_work.cpp +90 -0
  283. voyager-2.2.0/src/cpp/include/doctest/scripts/how_stuff_works/how_subcases_work.cpp +116 -0
  284. voyager-2.2.0/src/cpp/include/doctest/scripts/how_stuff_works/testing_crash_scenarios.cpp +71 -0
  285. voyager-2.2.0/src/cpp/include/doctest/scripts/playground/CMakeLists.txt +7 -0
  286. voyager-2.2.0/src/cpp/include/doctest/scripts/playground/main.cpp +26 -0
  287. voyager-2.2.0/src/cpp/include/doctest/scripts/playground/test.cpp +6 -0
  288. voyager-2.2.0/src/cpp/include/doctest/scripts/random_dev_notes.md +64 -0
  289. voyager-2.2.0/src/cpp/include/doctest/scripts/release_process.md +18 -0
  290. voyager-2.2.0/src/cpp/include/doctest/scripts/update_stuff.py +44 -0
  291. voyager-2.2.0/src/cpp/include/doctest/scripts/version.txt +1 -0
  292. voyager-2.2.0/src/cpp/src/CMakeLists.txt +6 -0
  293. voyager-2.2.0/src/cpp/src/E4M3.h +419 -0
  294. voyager-2.2.0/src/cpp/src/Enums.h +62 -0
  295. voyager-2.2.0/src/cpp/src/Index.h +110 -0
  296. voyager-2.2.0/src/cpp/src/Metadata.h +142 -0
  297. voyager-2.2.0/src/cpp/src/Spaces/Euclidean.h +290 -0
  298. voyager-2.2.0/src/cpp/src/Spaces/InnerProduct.h +389 -0
  299. voyager-2.2.0/src/cpp/src/Spaces/Space.h +48 -0
  300. voyager-2.2.0/src/cpp/src/StreamUtils.h +180 -0
  301. voyager-2.2.0/src/cpp/src/TypedIndex.h +784 -0
  302. voyager-2.2.0/src/cpp/src/array_utils.h +338 -0
  303. voyager-2.2.0/src/cpp/src/hnswalg.h +1519 -0
  304. voyager-2.2.0/src/cpp/src/hnswlib.h +114 -0
  305. voyager-2.2.0/src/cpp/src/std_utils.h +142 -0
  306. voyager-2.2.0/src/cpp/src/visited_list_pool.h +101 -0
  307. voyager-2.2.0/src/cpp/test/.gitignore +2 -0
  308. voyager-2.2.0/src/cpp/test/CMakeLists.txt +21 -0
  309. voyager-2.2.0/src/cpp/test/doctest_setup.cpp +2 -0
  310. voyager-2.2.0/src/cpp/test/test_main.cpp +218 -0
  311. voyager-2.2.0/src/cpp/test/test_utils.cpp +41 -0
  312. voyager-2.2.0/src/voyager/__init__.py +1 -0
  313. voyager-2.2.0/stubtest.allowlist +7 -0
  314. voyager-2.2.0/test-requirements.txt +5 -0
  315. voyager-2.2.0/tests/__init__.py +14 -0
  316. voyager-2.2.0/tests/indices/v0/cosine_128dim_e4m3.hnsw +0 -0
  317. voyager-2.2.0/tests/indices/v0/cosine_128dim_float32.hnsw +0 -0
  318. voyager-2.2.0/tests/indices/v0/cosine_128dim_float8.hnsw +0 -0
  319. voyager-2.2.0/tests/indices/v0/cosine_16dim_e4m3.hnsw +0 -0
  320. voyager-2.2.0/tests/indices/v0/cosine_16dim_float32.hnsw +0 -0
  321. voyager-2.2.0/tests/indices/v0/cosine_16dim_float8.hnsw +0 -0
  322. voyager-2.2.0/tests/indices/v0/cosine_4dim_e4m3.hnsw +0 -0
  323. voyager-2.2.0/tests/indices/v0/cosine_4dim_float32.hnsw +0 -0
  324. voyager-2.2.0/tests/indices/v0/cosine_4dim_float8.hnsw +0 -0
  325. voyager-2.2.0/tests/indices/v0/euclidean_128dim_e4m3.hnsw +0 -0
  326. voyager-2.2.0/tests/indices/v0/euclidean_128dim_float32.hnsw +0 -0
  327. voyager-2.2.0/tests/indices/v0/euclidean_128dim_float8.hnsw +0 -0
  328. voyager-2.2.0/tests/indices/v0/euclidean_16dim_e4m3.hnsw +0 -0
  329. voyager-2.2.0/tests/indices/v0/euclidean_16dim_float32.hnsw +0 -0
  330. voyager-2.2.0/tests/indices/v0/euclidean_16dim_float8.hnsw +0 -0
  331. voyager-2.2.0/tests/indices/v0/euclidean_4dim_e4m3.hnsw +0 -0
  332. voyager-2.2.0/tests/indices/v0/euclidean_4dim_float32.hnsw +0 -0
  333. voyager-2.2.0/tests/indices/v0/euclidean_4dim_float8.hnsw +0 -0
  334. voyager-2.2.0/tests/indices/v0/innerproduct_128dim_e4m3.hnsw +0 -0
  335. voyager-2.2.0/tests/indices/v0/innerproduct_128dim_float32.hnsw +0 -0
  336. voyager-2.2.0/tests/indices/v0/innerproduct_128dim_float8.hnsw +0 -0
  337. voyager-2.2.0/tests/indices/v0/innerproduct_16dim_e4m3.hnsw +0 -0
  338. voyager-2.2.0/tests/indices/v0/innerproduct_16dim_float32.hnsw +0 -0
  339. voyager-2.2.0/tests/indices/v0/innerproduct_16dim_float8.hnsw +0 -0
  340. voyager-2.2.0/tests/indices/v0/innerproduct_4dim_e4m3.hnsw +0 -0
  341. voyager-2.2.0/tests/indices/v0/innerproduct_4dim_float32.hnsw +0 -0
  342. voyager-2.2.0/tests/indices/v0/innerproduct_4dim_float8.hnsw +0 -0
  343. voyager-2.2.0/tests/indices/v1/cosine_128dim_e4m3.hnsw +0 -0
  344. voyager-2.2.0/tests/indices/v1/cosine_128dim_float32.hnsw +0 -0
  345. voyager-2.2.0/tests/indices/v1/cosine_128dim_float8.hnsw +0 -0
  346. voyager-2.2.0/tests/indices/v1/cosine_16dim_e4m3.hnsw +0 -0
  347. voyager-2.2.0/tests/indices/v1/cosine_16dim_float32.hnsw +0 -0
  348. voyager-2.2.0/tests/indices/v1/cosine_16dim_float8.hnsw +0 -0
  349. voyager-2.2.0/tests/indices/v1/cosine_4dim_e4m3.hnsw +0 -0
  350. voyager-2.2.0/tests/indices/v1/cosine_4dim_float32.hnsw +0 -0
  351. voyager-2.2.0/tests/indices/v1/cosine_4dim_float8.hnsw +0 -0
  352. voyager-2.2.0/tests/indices/v1/euclidean_128dim_e4m3.hnsw +0 -0
  353. voyager-2.2.0/tests/indices/v1/euclidean_128dim_float32.hnsw +0 -0
  354. voyager-2.2.0/tests/indices/v1/euclidean_128dim_float8.hnsw +0 -0
  355. voyager-2.2.0/tests/indices/v1/euclidean_16dim_e4m3.hnsw +0 -0
  356. voyager-2.2.0/tests/indices/v1/euclidean_16dim_float32.hnsw +0 -0
  357. voyager-2.2.0/tests/indices/v1/euclidean_16dim_float8.hnsw +0 -0
  358. voyager-2.2.0/tests/indices/v1/euclidean_4dim_e4m3.hnsw +0 -0
  359. voyager-2.2.0/tests/indices/v1/euclidean_4dim_float32.hnsw +0 -0
  360. voyager-2.2.0/tests/indices/v1/euclidean_4dim_float8.hnsw +0 -0
  361. voyager-2.2.0/tests/indices/v1/innerproduct_128dim_e4m3.hnsw +0 -0
  362. voyager-2.2.0/tests/indices/v1/innerproduct_128dim_float32.hnsw +0 -0
  363. voyager-2.2.0/tests/indices/v1/innerproduct_128dim_float8.hnsw +0 -0
  364. voyager-2.2.0/tests/indices/v1/innerproduct_16dim_e4m3.hnsw +0 -0
  365. voyager-2.2.0/tests/indices/v1/innerproduct_16dim_float32.hnsw +0 -0
  366. voyager-2.2.0/tests/indices/v1/innerproduct_16dim_float8.hnsw +0 -0
  367. voyager-2.2.0/tests/indices/v1/innerproduct_4dim_e4m3.hnsw +0 -0
  368. voyager-2.2.0/tests/indices/v1/innerproduct_4dim_float32.hnsw +0 -0
  369. voyager-2.2.0/tests/indices/v1/innerproduct_4dim_float8.hnsw +0 -0
  370. voyager-2.2.0/tests/test_distances.py +85 -0
  371. voyager-2.2.0/tests/test_e4m3.py +271 -0
  372. voyager-2.2.0/tests/test_index_creation.py +391 -0
  373. voyager-2.2.0/tests/test_index_recreation.py +79 -0
  374. voyager-2.2.0/tests/test_load_indices.py +294 -0
  375. voyager-2.2.0/tox.ini +33 -0
  376. voyager-2.2.0/typenames.h +28 -0
@@ -0,0 +1,86 @@
1
+ cmake_minimum_required(VERSION 3.15...3.27)
2
+ project(voyager LANGUAGES CXX)
3
+
4
+ # Warn if the user invokes CMake directly
5
+ if (NOT SKBUILD)
6
+ message(WARNING "\
7
+ This CMake file is meant to be executed using 'scikit-build-core'.
8
+ Running it directly will almost certainly not produce the desired
9
+ result. If you are a user trying to install this package, use the
10
+ command below, which will install all necessary build dependencies,
11
+ compile the package in an isolated environment, and then install it.
12
+ =====================================================================
13
+ $ pip install .
14
+ =====================================================================
15
+ If you are a software developer, and this is your own package, then
16
+ it is usually much more efficient to install the build dependencies
17
+ in your environment once and use the following command that avoids
18
+ a costly creation of a new virtual environment at every compilation:
19
+ =====================================================================
20
+ $ pip install nanobind scikit-build-core[pyproject]
21
+ $ pip install --no-build-isolation -ve .
22
+ =====================================================================
23
+ You may optionally add -Ceditable.rebuild=true to auto-rebuild when
24
+ the package is imported. Otherwise, you need to rerun the above
25
+ after editing C++ files.")
26
+ endif()
27
+
28
+ if (CMAKE_VERSION VERSION_LESS 3.18)
29
+ set(DEV_MODULE Development)
30
+ else()
31
+ set(DEV_MODULE Development.Module)
32
+ endif()
33
+
34
+ set(IS_UNIX ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
35
+ set(IS_WINDOWS ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
36
+
37
+ find_package(Python 3.9 COMPONENTS Interpreter ${DEV_MODULE})
38
+
39
+ # Import nanobind through CMake's find_package mechanism
40
+ find_package(nanobind CONFIG REQUIRED)
41
+
42
+
43
+ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
44
+ set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
45
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
46
+ endif()
47
+
48
+ # Detect the installed nanobind package and import it into CMake
49
+ execute_process(
50
+ COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
51
+ OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT)
52
+ find_package(nanobind CONFIG REQUIRED)
53
+
54
+ # Allow for some math optimization on unix but not -ffast-math
55
+ # See: https://simonbyrne.github.io/notes/fastmath/#flushing_subnormals_to_zero
56
+ if (IS_UNIX)
57
+ add_compile_options(-fassociative-math -fno-signaling-nans -fno-trapping-math -fno-signed-zeros -freciprocal-math -fno-math-errno)
58
+ endif()
59
+
60
+ # Relase build with all optimizations
61
+ if (CMAKE_BUILD_TYPE STREQUAL "Release" AND IS_UNIX)
62
+ add_compile_options(-O3)
63
+ elseif (CMAKE_BUILD_TYPE STREQUAL "Release" AND IS_WINDOWS)
64
+ add_compile_options(/Ox)
65
+ endif()
66
+
67
+
68
+ # Check the USE_ASAN environment variable, and if set to 1, enable AddressSanitizer
69
+ if (DEFINED ENV{USE_ASAN} AND "$ENV{USE_ASAN}" STREQUAL "1")
70
+ add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
71
+ add_link_options(-fsanitize=address)
72
+ endif()
73
+
74
+
75
+ nanobind_add_module(
76
+ voyager_ext
77
+ # Target the stable ABI for Python 3.12+, which reduces
78
+ # the number of binary wheels that must be built. This
79
+ # does nothing on older Python versions
80
+ NB_STATIC STABLE_ABI LTO FREE_THREADED NOMINSIZE
81
+ # Sources:
82
+ src/bindings.cpp
83
+ )
84
+
85
+ # Install directive for scikit-build-core
86
+ install(TARGETS voyager_ext LIBRARY DESTINATION voyager)
@@ -0,0 +1,5 @@
1
+ include *.txt tox.ini *.md
2
+ recursive-include tests *.py
3
+
4
+ graft src
5
+ graft voyager-headers
voyager-2.2.0/PKG-INFO ADDED
@@ -0,0 +1,105 @@
1
+ Metadata-Version: 2.1
2
+ Name: voyager
3
+ Version: 2.2.0
4
+ Summary: Easy-to-use, fast, simple multi-platform approximate nearest-neighbor search library.
5
+ Author-Email: Peter Sobot <psobot@spotify.com>
6
+ Classifier: Development Status :: 5 - Production/Stable
7
+ Classifier: License :: OSI Approved :: Apache Software License
8
+ Classifier: Operating System :: MacOS
9
+ Classifier: Operating System :: Microsoft :: Windows
10
+ Classifier: Operating System :: POSIX :: Linux
11
+ Classifier: Programming Language :: C++
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Topic :: Database :: Database Engines/Servers
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Project-URL: Homepage, https://github.com/spotify/voyager
19
+ Requires-Python: >=3.9
20
+ Description-Content-Type: text/markdown
21
+
22
+ ![The word Voyager_in blue, with a multicoloured graphic illustrating an orbit to its left.](https://github.com/spotify/voyager/assets/213293/c99cd0e8-cd38-486f-bb61-15f74028ba52)
23
+
24
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/spotify/voyager/blob/master/LICENSE)
25
+ [![Documentation](https://img.shields.io/badge/Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager)
26
+ [![Supported Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Windows%20%7C%20Linux-green)](https://pypi.org/project/voyager)
27
+ [![Apple Silicon support for macOS and Linux (Docker)](https://img.shields.io/badge/Apple%20Silicon-macOS%20and%20Linux-brightgreen)](https://pypi.org/project/voyager)
28
+ [![Test Badge](https://github.com/spotify/voyager/actions/workflows/all.yml/badge.svg)](https://github.com/spotify/voyager/actions/workflows/all.yml)
29
+ <!-- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/voyager)](https://pypi.org/project/voyager) -->
30
+ <!-- [![PyPI - Wheel](https://img.shields.io/pypi/wheel/voyager)](https://pypi.org/project/voyager) -->
31
+ <!-- [![PyPI - Downloads](https://img.shields.io/pypi/dm/voyager)](https://pypistats.org/packages/voyager) -->
32
+ <!-- [![GitHub Repo stars](https://img.shields.io/github/stars/spotify/voyager?style=social)](https://github.com/spotify/voyager/stargazers) -->
33
+
34
+ **_Voyager_** is a library for performing fast approximate nearest-neighbor searches on an in-memory collection of vectors.
35
+
36
+ Voyager features bindings to both Python and Java, with feature parity and index compatibility between both languages. It uses the HNSW algorithm, based on [the open-source `hnswlib` package](https://github.com/nmslib/hnswlib), with numerous features added for convenience and speed. Voyager is used extensively in production at Spotify, and is queried hundreds of millions of times per day to power numerous user-facing features.
37
+
38
+ Think of Voyager like [Sparkey](https://github.com/spotify/sparkey), but for vector/embedding data; or like [Annoy](https://github.com/spotify/annoy), but with [much higher recall](http://ann-benchmarks.com/). It got its name because it searches through (embedding) space(s), much like [the Voyager interstellar probes](https://en.wikipedia.org/wiki/Voyager_program) launched by NASA in 1977.
39
+
40
+ [![Python Documentation](https://img.shields.io/badge/Python%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/python)
41
+ [![Java Documentation](https://img.shields.io/badge/Java%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/java)
42
+
43
+ ### Installation
44
+
45
+ #### Python
46
+
47
+ ```shell
48
+ pip install voyager
49
+ ```
50
+
51
+ #### Java
52
+
53
+ Add the following artifact to your `pom.xml`:
54
+ ```xml
55
+ <dependency>
56
+ <groupId>com.spotify</groupId>
57
+ <artifactId>voyager</artifactId>
58
+ <version>2.2.0</version>
59
+ </dependency>
60
+ ```
61
+ You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).
62
+
63
+ #### Scala
64
+
65
+ Add the following artifact to your `build.sbt`:
66
+ ```sbt
67
+ "com.spotify" % "voyager" % "2.2.0"
68
+ ```
69
+ You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).
70
+
71
+
72
+ ### Compatibility
73
+
74
+ | OS | Language | Version | x86_64 (Intel) | arm64 (ARM) |
75
+ |-----------|----------|---------|---------| --------|
76
+ | Linux | Python | 3.9 | ✅ | ✅ |
77
+ | Linux | Python | 3.10 | ✅ | ✅ |
78
+ | Linux | Python | 3.11 | ✅ | ✅ |
79
+ | Linux | Python | 3.12 | ✅ | ✅ |
80
+ | Linux | Python | 3.13 | ✅ | ✅ |
81
+ | Linux | Java | 8-16+ | ✅ | ✅ |
82
+ | macOS | Python | 3.9 | ✅ | ✅ |
83
+ | macOS | Python | 3.10 | ✅ | ✅ |
84
+ | macOS | Python | 3.11 | ✅ | ✅ |
85
+ | macOS | Python | 3.12 | ✅ | ✅ |
86
+ | macOS | Python | 3.13 | ✅ | ✅ |
87
+ | macOS | Java | 8-16+ | ✅ | ✅ |
88
+ | Windows | Python | 3.9 | ✅ | ❌ |
89
+ | Windows | Python | 3.10 | ✅ | ❌ |
90
+ | Windows | Python | 3.11 | ✅ | ❌ |
91
+ | Windows | Python | 3.12 | ✅ | ❌ |
92
+ | Windows | Python | 3.13 | ✅ | ❌ |
93
+ | Windows | Java | 8-16+ | ✅ | ❌ |
94
+
95
+
96
+ ## Contributing
97
+
98
+ Contributions to `voyager` are welcomed!
99
+ See [CONTRIBUTING.md](https://github.com/spotify/voyager/blob/master/CONTRIBUTING.md) for details.
100
+
101
+
102
+ ### License
103
+ Voyager is copyright 2022-2024 Spotify AB.
104
+
105
+ Voyager is licensed under the [Apache 2 License]([https://www.gnu.org/licenses/gpl-3.0.en.html](https://www.apache.org/licenses/LICENSE-2.0)).
@@ -0,0 +1,84 @@
1
+ ![The word Voyager_in blue, with a multicoloured graphic illustrating an orbit to its left.](https://github.com/spotify/voyager/assets/213293/c99cd0e8-cd38-486f-bb61-15f74028ba52)
2
+
3
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/spotify/voyager/blob/master/LICENSE)
4
+ [![Documentation](https://img.shields.io/badge/Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager)
5
+ [![Supported Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Windows%20%7C%20Linux-green)](https://pypi.org/project/voyager)
6
+ [![Apple Silicon support for macOS and Linux (Docker)](https://img.shields.io/badge/Apple%20Silicon-macOS%20and%20Linux-brightgreen)](https://pypi.org/project/voyager)
7
+ [![Test Badge](https://github.com/spotify/voyager/actions/workflows/all.yml/badge.svg)](https://github.com/spotify/voyager/actions/workflows/all.yml)
8
+ <!-- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/voyager)](https://pypi.org/project/voyager) -->
9
+ <!-- [![PyPI - Wheel](https://img.shields.io/pypi/wheel/voyager)](https://pypi.org/project/voyager) -->
10
+ <!-- [![PyPI - Downloads](https://img.shields.io/pypi/dm/voyager)](https://pypistats.org/packages/voyager) -->
11
+ <!-- [![GitHub Repo stars](https://img.shields.io/github/stars/spotify/voyager?style=social)](https://github.com/spotify/voyager/stargazers) -->
12
+
13
+ **_Voyager_** is a library for performing fast approximate nearest-neighbor searches on an in-memory collection of vectors.
14
+
15
+ Voyager features bindings to both Python and Java, with feature parity and index compatibility between both languages. It uses the HNSW algorithm, based on [the open-source `hnswlib` package](https://github.com/nmslib/hnswlib), with numerous features added for convenience and speed. Voyager is used extensively in production at Spotify, and is queried hundreds of millions of times per day to power numerous user-facing features.
16
+
17
+ Think of Voyager like [Sparkey](https://github.com/spotify/sparkey), but for vector/embedding data; or like [Annoy](https://github.com/spotify/annoy), but with [much higher recall](http://ann-benchmarks.com/). It got its name because it searches through (embedding) space(s), much like [the Voyager interstellar probes](https://en.wikipedia.org/wiki/Voyager_program) launched by NASA in 1977.
18
+
19
+ [![Python Documentation](https://img.shields.io/badge/Python%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/python)
20
+ [![Java Documentation](https://img.shields.io/badge/Java%20Documentation-on%20github.io-brightgreen)](https://spotify.github.io/voyager/java)
21
+
22
+ ### Installation
23
+
24
+ #### Python
25
+
26
+ ```shell
27
+ pip install voyager
28
+ ```
29
+
30
+ #### Java
31
+
32
+ Add the following artifact to your `pom.xml`:
33
+ ```xml
34
+ <dependency>
35
+ <groupId>com.spotify</groupId>
36
+ <artifactId>voyager</artifactId>
37
+ <version>2.2.0</version>
38
+ </dependency>
39
+ ```
40
+ You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).
41
+
42
+ #### Scala
43
+
44
+ Add the following artifact to your `build.sbt`:
45
+ ```sbt
46
+ "com.spotify" % "voyager" % "2.2.0"
47
+ ```
48
+ You can find the latest version on [Voyager's Releases page](https://github.com/spotify/voyager/releases).
49
+
50
+
51
+ ### Compatibility
52
+
53
+ | OS | Language | Version | x86_64 (Intel) | arm64 (ARM) |
54
+ |-----------|----------|---------|---------| --------|
55
+ | Linux | Python | 3.9 | ✅ | ✅ |
56
+ | Linux | Python | 3.10 | ✅ | ✅ |
57
+ | Linux | Python | 3.11 | ✅ | ✅ |
58
+ | Linux | Python | 3.12 | ✅ | ✅ |
59
+ | Linux | Python | 3.13 | ✅ | ✅ |
60
+ | Linux | Java | 8-16+ | ✅ | ✅ |
61
+ | macOS | Python | 3.9 | ✅ | ✅ |
62
+ | macOS | Python | 3.10 | ✅ | ✅ |
63
+ | macOS | Python | 3.11 | ✅ | ✅ |
64
+ | macOS | Python | 3.12 | ✅ | ✅ |
65
+ | macOS | Python | 3.13 | ✅ | ✅ |
66
+ | macOS | Java | 8-16+ | ✅ | ✅ |
67
+ | Windows | Python | 3.9 | ✅ | ❌ |
68
+ | Windows | Python | 3.10 | ✅ | ❌ |
69
+ | Windows | Python | 3.11 | ✅ | ❌ |
70
+ | Windows | Python | 3.12 | ✅ | ❌ |
71
+ | Windows | Python | 3.13 | ✅ | ❌ |
72
+ | Windows | Java | 8-16+ | ✅ | ❌ |
73
+
74
+
75
+ ## Contributing
76
+
77
+ Contributions to `voyager` are welcomed!
78
+ See [CONTRIBUTING.md](https://github.com/spotify/voyager/blob/master/CONTRIBUTING.md) for details.
79
+
80
+
81
+ ### License
82
+ Voyager is copyright 2022-2024 Spotify AB.
83
+
84
+ Voyager is licensed under the [Apache 2 License]([https://www.gnu.org/licenses/gpl-3.0.en.html](https://www.apache.org/licenses/LICENSE-2.0)).
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env python
2
+ #
3
+ # Copyright 2022-2023 Spotify AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
@@ -0,0 +1,15 @@
1
+ -r test-requirements.txt
2
+ # NumPy 2.0 is the last release series supporting Python 3.9.
3
+ numpy==2.0.2; python_version < "3.10"
4
+ numpy==2.2.6; python_version >= "3.10"
5
+ ruff==0.16.1
6
+ psutil
7
+ mypy
8
+ asv==0.6.3
9
+ # Needed for sphinx documentation
10
+ sphinx
11
+ sphinxext-opengraph
12
+ sphinx-copybutton
13
+ m2r2
14
+ furo
15
+ # end sphinx reqs
@@ -0,0 +1,127 @@
1
+ #! /usr/bin/env python
2
+ #
3
+ # Copyright 2022-2023 Spotify AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ # Configuration file for the Sphinx documentation builder.
19
+ #
20
+ # This file only contains a selection of the most common options. For a full
21
+ # list see the documentation:
22
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
23
+
24
+ # -- Path setup --------------------------------------------------------------
25
+
26
+ # If extensions (or modules to document with autodoc) are in another directory,
27
+ # add these directories to sys.path here. If the directory is relative to the
28
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
29
+ #
30
+ # import os
31
+ # import sys
32
+ # sys.path.insert(0, os.path.abspath('.'))
33
+
34
+
35
+ # -- Project information -----------------------------------------------------
36
+
37
+ import datetime
38
+ from importlib.metadata import version as package_version
39
+
40
+ project = "Voyager"
41
+ copyright = f"2022-{datetime.date.today().year}, Spotify AB"
42
+ author = "Peter Sobot"
43
+
44
+ # The full version, including alpha/beta/rc tags
45
+ release = package_version("voyager")
46
+
47
+
48
+ # -- General configuration ---------------------------------------------------
49
+
50
+ # Add any Sphinx extension module names here, as strings. They can be
51
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
52
+ # ones.
53
+ extensions = [
54
+ "sphinx.ext.duration",
55
+ "sphinx.ext.doctest",
56
+ "sphinx.ext.autodoc",
57
+ "sphinx.ext.autosummary",
58
+ "sphinx.ext.napoleon",
59
+ "sphinx_copybutton",
60
+ "sphinxext.opengraph",
61
+ "m2r2",
62
+ ]
63
+
64
+ autosummary_generate = True
65
+ autodoc_docstring_signature = True
66
+ autodoc_member_order = "bysource"
67
+ autodoc_default_options = {
68
+ "autosummary": True,
69
+ }
70
+ autodoc_inherit_docstrings = False
71
+
72
+ # Add any paths that contain templates here, relative to this directory.
73
+ templates_path = ["_templates"]
74
+
75
+ # List of patterns, relative to source directory, that match files and
76
+ # directories to ignore when looking for source files.
77
+ # This pattern also affects html_static_path and html_extra_path.
78
+ exclude_patterns = ["_build"]
79
+
80
+
81
+ # -- Options for HTML output -------------------------------------------------
82
+
83
+ # The theme to use for HTML and HTML Help pages. See the documentation for
84
+ # a list of builtin themes.
85
+ #
86
+ html_theme = "furo"
87
+
88
+ # Add any paths that contain custom static files (such as style sheets) here,
89
+ # relative to this directory. They are copied after the builtin static files,
90
+ # so a file named "default.css" will overwrite the builtin "default.css".
91
+ html_static_path = ["_static"]
92
+
93
+ html_title = f"{project} {release} Python Documentation"
94
+ html_favicon = "_static/favicon.ico"
95
+ html_logo = "voyager-outline-color.png"
96
+ html_baseurl = "voyager/python/"
97
+
98
+ octocat_points = (
99
+ "M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38"
100
+ " 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-."
101
+ "09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01"
102
+ " 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95"
103
+ " 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0"
104
+ " 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0"
105
+ " 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013"
106
+ " 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"
107
+ )
108
+ html_theme_options = {
109
+ "footer_icons": [
110
+ {
111
+ "name": "GitHub",
112
+ "url": "https://github.com/spotify/voyager",
113
+ "html": f"""
114
+ <svg stroke="currentColor" fill="currentColor"
115
+ stroke-width="0" viewBox="0 0 16 16">
116
+ <path fill-rule="evenodd" d="{octocat_points}"></path>
117
+ </svg>
118
+ """,
119
+ "class": "",
120
+ },
121
+ ],
122
+ }
123
+
124
+ ogp_site_url = "https://spotify.github.io/voyager/python/"
125
+ ogp_image = "https://github.com/spotify/voyager/assets/213293/190c07bf-bf43-43d3-a46b-ed71232bbcdd"
126
+ ogp_image_alt = "🛰️ Documentation for Voyager: A nearest-neighbor search library."
127
+ ogp_site_name = html_title
@@ -0,0 +1,40 @@
1
+ :og:title: Voyager Documentation
2
+ :og:description: 🛰️ Documentation for Voyager: A nearest-neighbor search library.
3
+
4
+ .. # define a hard line break for HTML
5
+ .. |br| raw:: html
6
+
7
+ <br />
8
+
9
+ |br|
10
+
11
+ .. image:: voyager-feature.png
12
+ :width: 700
13
+ :alt: The word "Voyager" in white on a black background.
14
+
15
+ **Voyager** is a library for performing fast approximate nearest-neighbor searches on an in-memory collection of vectors.
16
+
17
+ Voyager features bindings to both Python and Java, with feature parity and index compatibility between both languages.
18
+ It uses the HNSW algorithm, based on `the open-source hnswlib package <https://github.com/nmslib/hnswlib>`_,
19
+ with numerous features added for convenience and speed. Voyager is used extensively in production at Spotify,
20
+ and is queried hundreds of millions of times per day to power numerous user-facing features.
21
+
22
+ Think of Voyager like `Sparkey <https://github.com/spotify/sparkey>`_, but for vector/embedding data;
23
+ or like `Annoy <https://github.com/spotify/annoy>`_, but with `much higher recall <https://ann-benchmarks.com>`_.
24
+ It got its name because it searches through (embedding) space(s), much like
25
+ `the Voyager interstellar probes <https://en.wikipedia.org/wiki/Voyager_program>`_ launched by NASA in 1977.
26
+
27
+ Python compatibility
28
+ --------------------
29
+
30
+ Voyager 2.2.0 requires Python 3.9 or newer. Python 3.8 is no longer supported.
31
+
32
+
33
+ .. toctree::
34
+ :maxdepth: 1
35
+
36
+ Python API Reference <reference>
37
+
38
+ .. toctree::
39
+ Java Documentation </voyager/java#http://>
40
+ GitHub Repo <http://github.com/spotify/voyager>
@@ -0,0 +1,47 @@
1
+ The ``voyager`` Python API
2
+ ==========================
3
+
4
+ This module provides classes and functions for creating indices of vector data.
5
+
6
+ A quick example on how to get started::
7
+
8
+ import numpy as np
9
+ from voyager import Index, Space
10
+
11
+ # Create an empty Index object that can store vectors:
12
+ index = Index(Space.Euclidean, num_dimensions=5)
13
+ id_a = index.add_item([1, 2, 3, 4, 5])
14
+ id_b = index.add_item([6, 7, 8, 9, 10])
15
+
16
+ print(id_a) # => 0
17
+ print(id_b) # => 1
18
+
19
+ # Find the two closest elements:
20
+ neighbors, distances = index.query([1, 2, 3, 4, 5], k=2)
21
+ print(neighbors) # => [0, 1]
22
+ print(distances) # => [0.0, 125.0]
23
+
24
+ # Save the index to disk to reload later (or in Java!)
25
+ index.save("output_file.voy")
26
+
27
+
28
+ .. autoclass:: voyager.Index
29
+ :members:
30
+ :inherited-members:
31
+ :special-members: __contains__, __len__
32
+
33
+ Enums
34
+ -----
35
+ .. autoclass:: voyager.Space
36
+ :members:
37
+ :inherited-members:
38
+
39
+ .. autoclass:: voyager.StorageDataType
40
+ :members:
41
+ :inherited-members:
42
+
43
+ Utilities
44
+ ---------
45
+ .. autoclass:: voyager.LabelSetView
46
+ :members:
47
+ :inherited-members:
voyager-2.2.0/py.typed ADDED
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,49 @@
1
+ [build-system]
2
+ requires = ["scikit-build-core >=0.4.3", "nanobind >=1.3.2"]
3
+ build-backend = "scikit_build_core.build"
4
+
5
+ [project]
6
+ name = "voyager"
7
+ version = "2.2.0"
8
+ description = "Easy-to-use, fast, simple multi-platform approximate nearest-neighbor search library."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ authors = [
12
+ { name = "Peter Sobot", email = "psobot@spotify.com" },
13
+ ]
14
+ classifiers = [
15
+ "Development Status :: 5 - Production/Stable",
16
+ "License :: OSI Approved :: Apache Software License",
17
+ "Operating System :: MacOS",
18
+ "Operating System :: Microsoft :: Windows",
19
+ "Operating System :: POSIX :: Linux",
20
+ "Programming Language :: C++",
21
+ "Programming Language :: Python",
22
+ "Topic :: Database :: Database Engines/Servers",
23
+ "Programming Language :: Python :: 3.9",
24
+ "Programming Language :: Python :: 3.10",
25
+ "Programming Language :: Python :: 3.11",
26
+ "Programming Language :: Python :: 3.12",
27
+ ]
28
+ # Optional: runtime dependency specification
29
+ # dependencies = [ "cryptography >=41.0" ]
30
+
31
+ [project.urls]
32
+ Homepage = "https://github.com/spotify/voyager"
33
+
34
+ [tool.scikit-build]
35
+ # Protect the configuration against future changes in scikit-build-core
36
+ minimum-version = "0.4"
37
+
38
+ # Setuptools-style build caching in a local directory
39
+ build-dir = "build/{wheel_tag}"
40
+
41
+ # Build stable ABI wheels for CPython 3.12+
42
+ wheel.py-api = "cp312"
43
+
44
+ [tool.ruff]
45
+ line-length = 120
46
+
47
+ # Needed for full C++17 support on macOS
48
+ [tool.cibuildwheel.macos.environment]
49
+ MACOSX_DEPLOYMENT_TARGET = "10.14"