qumat 0.0.1__tar.gz → 0.5.0rc1__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 (338) hide show
  1. qumat-0.5.0rc1/.asf.yaml +36 -0
  2. qumat-0.5.0rc1/.claude/settings.local.json +108 -0
  3. qumat-0.5.0rc1/.devcontainer/devcontainer.json +29 -0
  4. qumat-0.5.0rc1/.devcontainer/setup.sh +26 -0
  5. qumat-0.5.0rc1/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  6. qumat-0.5.0rc1/.github/ISSUE_TEMPLATE/documentation_issue.md +19 -0
  7. qumat-0.5.0rc1/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  8. qumat-0.5.0rc1/.github/ISSUE_TEMPLATE/issue_template.md +32 -0
  9. qumat-0.5.0rc1/.github/PULL_REQUEST_TEMPLATE +33 -0
  10. qumat-0.5.0rc1/.github/labeler.yml +13 -0
  11. qumat-0.5.0rc1/.github/scripts/checks/__init__.py +16 -0
  12. qumat-0.5.0rc1/.github/scripts/checks/general_review.py +124 -0
  13. qumat-0.5.0rc1/.github/scripts/review_pr.py +55 -0
  14. qumat-0.5.0rc1/.github/workflows/label.yml +15 -0
  15. qumat-0.5.0rc1/.github/workflows/notebook-testing.yml +44 -0
  16. qumat-0.5.0rc1/.github/workflows/pr_review.yml +47 -0
  17. qumat-0.5.0rc1/.github/workflows/pre-commit.yml +47 -0
  18. qumat-0.5.0rc1/.github/workflows/python-build.yml +61 -0
  19. qumat-0.5.0rc1/.github/workflows/python-testing.yml +56 -0
  20. qumat-0.5.0rc1/.gitignore +54 -0
  21. qumat-0.5.0rc1/.pre-commit-config.yaml +82 -0
  22. qumat-0.5.0rc1/CONTRIBUTING.md +155 -0
  23. qumat-0.5.0rc1/KEYS +1059 -0
  24. {qumat-0.0.1 → qumat-0.5.0rc1}/LICENSE +0 -112
  25. qumat-0.5.0rc1/Makefile +43 -0
  26. qumat-0.5.0rc1/NOTICE +7 -0
  27. qumat-0.5.0rc1/PKG-INFO +111 -0
  28. qumat-0.5.0rc1/README.md +93 -0
  29. qumat-0.5.0rc1/dev/release.md +126 -0
  30. qumat-0.5.0rc1/doap_Mahout.rdf +51 -0
  31. qumat-0.5.0rc1/docs/about/how-to-contribute.md +152 -0
  32. qumat-0.5.0rc1/docs/adr/001-jekyll-to-docusaurus-migration.md +153 -0
  33. qumat-0.5.0rc1/docs/adr/DOCUSAURUS_MIGRATION_PLAN.md +492 -0
  34. qumat-0.5.0rc1/docs/api.md +157 -0
  35. qumat-0.5.0rc1/docs/assets/mascot.png +0 -0
  36. qumat-0.5.0rc1/docs/assets/mascot_with_text.png +0 -0
  37. qumat-0.5.0rc1/docs/basic-gates.md +99 -0
  38. qumat-0.5.0rc1/docs/blog/2017-12-20-new-website.md +13 -0
  39. qumat-0.5.0rc1/docs/blog/2018-06-18-preping-014.md +27 -0
  40. qumat-0.5.0rc1/docs/blog/2019-12-14-version-14-1.md +20 -0
  41. qumat-0.5.0rc1/docs/blog/2020-10-18-version-14-1-released.md +12 -0
  42. qumat-0.5.0rc1/docs/blog/2020-10-30-weekly-meeting-minutes.md +26 -0
  43. qumat-0.5.0rc1/docs/blog/2020-11-13-weekly-meeting-minutes.md +27 -0
  44. qumat-0.5.0rc1/docs/blog/2020-11-20-weekly-meeting-minutes.md +12 -0
  45. qumat-0.5.0rc1/docs/blog/2020-11-6-weekly-meeting-minutes.md +30 -0
  46. qumat-0.5.0rc1/docs/blog/2020-12-15-weekly-meeting-minutes.md +9 -0
  47. qumat-0.5.0rc1/docs/blog/2020-12-8-weekly-meeting-minutes.md +19 -0
  48. qumat-0.5.0rc1/docs/blog/2021-01-05-weekly-meeting-minutes.md +16 -0
  49. qumat-0.5.0rc1/docs/blog/2021-02-02-weekly-meeting-minutes.md +17 -0
  50. qumat-0.5.0rc1/docs/blog/2021-06-01-Zeppelin Quickstart.md +25 -0
  51. qumat-0.5.0rc1/docs/blog/2023-02-22-Meeting-Minutes.md +48 -0
  52. qumat-0.5.0rc1/docs/blog/2023-03-29-Meeting-Minutes.md +58 -0
  53. qumat-0.5.0rc1/docs/blog/2023-07-26-Meeting-Minutes.md +55 -0
  54. qumat-0.5.0rc1/docs/blog/2023-08-30-Meeting-Minutes.md +56 -0
  55. qumat-0.5.0rc1/docs/blog/2023-09-27-Meeting-Minutes.md +54 -0
  56. qumat-0.5.0rc1/docs/blog/2023-10-25-Meeting-Minutes.md +52 -0
  57. qumat-0.5.0rc1/docs/blog/2023-11-29-Meeting-Minutes.md +42 -0
  58. qumat-0.5.0rc1/docs/blog/2024-01-31-Meeting-Minutes.md +34 -0
  59. qumat-0.5.0rc1/docs/blog/2024-02-14-Meeting-Minutes.md +31 -0
  60. qumat-0.5.0rc1/docs/blog/2024-03-07-Meeting-Minutes.md +37 -0
  61. qumat-0.5.0rc1/docs/blog/2024-03-13-Meeting-Minutes.md +29 -0
  62. qumat-0.5.0rc1/docs/blog/2024-03-20-Meeting-Minutes.md +30 -0
  63. qumat-0.5.0rc1/docs/blog/2024-03-27-Meeting-Minutes.md +34 -0
  64. qumat-0.5.0rc1/docs/blog/2024-04-03-Meeting-Minutes.md +43 -0
  65. qumat-0.5.0rc1/docs/blog/2024-04-17-Meeting-Minutes.md +36 -0
  66. qumat-0.5.0rc1/docs/blog/2024-04-24-Meeting-Minutes.md +20 -0
  67. qumat-0.5.0rc1/docs/blog/2024-05-08-Meeting-Minutes.md +39 -0
  68. qumat-0.5.0rc1/docs/blog/2024-07-17-Meeting-Minutes.md +38 -0
  69. qumat-0.5.0rc1/docs/blog/2024-07-24-Meeting-Minutes.md +42 -0
  70. qumat-0.5.0rc1/docs/blog/2024-08-02-Meeting-Minutes.md +44 -0
  71. qumat-0.5.0rc1/docs/blog/2024-08-09-Meeting-Minutes.md +38 -0
  72. qumat-0.5.0rc1/docs/blog/2024-08-30-Meeting-Minutes.md +46 -0
  73. qumat-0.5.0rc1/docs/blog/2024-09-20-Meeting-Minutes.md +43 -0
  74. qumat-0.5.0rc1/docs/blog/2024-09-27-Meeting-Minutes.md +41 -0
  75. qumat-0.5.0rc1/docs/blog/2024-10-04-Meeting-Minutes.md +52 -0
  76. qumat-0.5.0rc1/docs/blog/2024-11-01-Meeting-Minutes.md +47 -0
  77. qumat-0.5.0rc1/docs/blog/2024-11-15-Meeting-Minutes.md +40 -0
  78. qumat-0.5.0rc1/docs/blog/2024-12-06-Meeting-Minutes.md +40 -0
  79. qumat-0.5.0rc1/docs/blog/2025-01-24-FOSDEM-Talk.md +15 -0
  80. qumat-0.5.0rc1/docs/blog/2025-01-24-Meeting-Minutes.md +42 -0
  81. qumat-0.5.0rc1/docs/blog/2025-02-14-Meeting-Minutes.md +44 -0
  82. qumat-0.5.0rc1/docs/blog/2025-03-13-Meeting-Minutes.md +47 -0
  83. qumat-0.5.0rc1/docs/blog/2025-03-21-Meeting-Minutes.md +8 -0
  84. qumat-0.5.0rc1/docs/blog/2025-04-11-Meeting-Minutes.md +8 -0
  85. qumat-0.5.0rc1/docs/blog/2025-04-17-Qumat-0.4-Release.md +8 -0
  86. qumat-0.5.0rc1/docs/blog/2025-05-16-Meeting-Minutes.md +8 -0
  87. qumat-0.5.0rc1/docs/blog/2025-08-01-Meeting-Minutes.md +24 -0
  88. qumat-0.5.0rc1/docs/blog/2025-10-24-Meeting-Minutes.md +23 -0
  89. qumat-0.5.0rc1/docs/blog/authors.yml +6 -0
  90. qumat-0.5.0rc1/docs/community/code-of-conduct.md +51 -0
  91. qumat-0.5.0rc1/docs/community/index.md +97 -0
  92. qumat-0.5.0rc1/docs/community/mailing-lists.md +71 -0
  93. qumat-0.5.0rc1/docs/community/who-we-are.md +66 -0
  94. qumat-0.5.0rc1/docs/download/index.md +42 -0
  95. qumat-0.5.0rc1/docs/download/quickstart.md +58 -0
  96. qumat-0.5.0rc1/docs/getting-started-with-qumat.md +54 -0
  97. qumat-0.5.0rc1/docs/index.md +32 -0
  98. qumat-0.5.0rc1/docs/parameterized-circuits.md +217 -0
  99. qumat-0.5.0rc1/docs/pqc.md +283 -0
  100. qumat-0.5.0rc1/docs/qdp/observability.md +148 -0
  101. qumat-0.5.0rc1/docs/qdp/readers.md +222 -0
  102. qumat-0.5.0rc1/docs/qdp/testing.md +54 -0
  103. qumat-0.5.0rc1/docs/qumat/core/api.md +8 -0
  104. qumat-0.5.0rc1/docs/qumat/core/concepts.md +8 -0
  105. qumat-0.5.0rc1/docs/qumat/core/examples.md +8 -0
  106. qumat-0.5.0rc1/docs/qumat/core/getting-started.md +8 -0
  107. qumat-0.5.0rc1/docs/qumat/core/index.md +14 -0
  108. qumat-0.5.0rc1/docs/qumat/index.md +21 -0
  109. qumat-0.5.0rc1/docs/qumat/papers/An-Efficient-Quantum-Factoring-Algorithm.md +37 -0
  110. qumat-0.5.0rc1/docs/qumat/papers/Quantum-Kernel-Estimation-With-Neutral-Atoms-For-Supervised-Classification.md +43 -0
  111. qumat-0.5.0rc1/docs/qumat/papers/Quantum-machine-learning-beyond-kernel-methods.md +28 -0
  112. qumat-0.5.0rc1/docs/qumat/papers/Unleashing-the-Potential-of-LLMs-for-Quantum-Computing.md +49 -0
  113. qumat-0.5.0rc1/docs/qumat/papers/index.md +12 -0
  114. qumat-0.5.0rc1/docs/qumat/qdp/api.md +132 -0
  115. qumat-0.5.0rc1/docs/qumat/qdp/concepts.md +205 -0
  116. qumat-0.5.0rc1/docs/qumat/qdp/examples.md +8 -0
  117. qumat-0.5.0rc1/docs/qumat/qdp/getting-started.md +8 -0
  118. qumat-0.5.0rc1/docs/qumat/qdp/index.md +12 -0
  119. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/advanced-topics.md +110 -0
  120. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/applications.md +462 -0
  121. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/index.md +49 -0
  122. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/introduction.md +93 -0
  123. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/quantum-algorithms.md +138 -0
  124. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/quantum-circuits.md +126 -0
  125. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/quantum-entanglement.md +111 -0
  126. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/quantum-error-correction.md +81 -0
  127. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/quantum-gates.md +139 -0
  128. qumat-0.5.0rc1/docs/qumat/quantum-computing-primer/qubits.md +97 -0
  129. qumat-0.5.0rc1/docs/qumat-gap-analysis-for-pqc.md +194 -0
  130. qumat-0.5.0rc1/examples/Optimization_Example.ipynb +170 -0
  131. qumat-0.5.0rc1/examples/Simple_Example.ipynb +110 -0
  132. qumat-0.5.0rc1/examples/quantum_teleportation.py +79 -0
  133. qumat-0.5.0rc1/examples/simple_example.py +37 -0
  134. qumat-0.5.0rc1/pyproject.toml +56 -0
  135. qumat-0.5.0rc1/qdp/.claude/settings.local.json +33 -0
  136. qumat-0.5.0rc1/qdp/Cargo.lock +2246 -0
  137. qumat-0.5.0rc1/qdp/Cargo.toml +49 -0
  138. qumat-0.5.0rc1/qdp/DEVELOPMENT.md +208 -0
  139. qumat-0.5.0rc1/qdp/Makefile +39 -0
  140. qumat-0.5.0rc1/qdp/docs/observability/NVTX_USAGE.md +131 -0
  141. qumat-0.5.0rc1/qdp/docs/readers/README.md +222 -0
  142. qumat-0.5.0rc1/qdp/docs/test/README.md +54 -0
  143. qumat-0.5.0rc1/qdp/qdp-core/.gitignore +0 -0
  144. qumat-0.5.0rc1/qdp/qdp-core/Cargo.toml +33 -0
  145. qumat-0.5.0rc1/qdp/qdp-core/build.rs +36 -0
  146. qumat-0.5.0rc1/qdp/qdp-core/examples/dataloader_throughput.rs +145 -0
  147. qumat-0.5.0rc1/qdp/qdp-core/examples/nvtx_profile.rs +86 -0
  148. qumat-0.5.0rc1/qdp/qdp-core/proto/tensor.proto +32 -0
  149. qumat-0.5.0rc1/qdp/qdp-core/src/dlpack.rs +188 -0
  150. qumat-0.5.0rc1/qdp/qdp-core/src/encoding/amplitude.rs +132 -0
  151. qumat-0.5.0rc1/qdp/qdp-core/src/encoding/angle.rs +125 -0
  152. qumat-0.5.0rc1/qdp/qdp-core/src/encoding/basis.rs +178 -0
  153. qumat-0.5.0rc1/qdp/qdp-core/src/encoding/mod.rs +377 -0
  154. qumat-0.5.0rc1/qdp/qdp-core/src/error.rs +65 -0
  155. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/buffer_pool.rs +151 -0
  156. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/cuda_ffi.rs +50 -0
  157. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/encodings/amplitude.rs +477 -0
  158. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/encodings/angle.rs +313 -0
  159. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/encodings/basis.rs +289 -0
  160. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/encodings/iqp.rs +290 -0
  161. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/encodings/mod.rs +119 -0
  162. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/memory.rs +541 -0
  163. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/mod.rs +33 -0
  164. qumat-0.5.0rc1/qdp/qdp-core/src/gpu/pipeline.rs +424 -0
  165. qumat-0.5.0rc1/qdp/qdp-core/src/io.rs +302 -0
  166. qumat-0.5.0rc1/qdp/qdp-core/src/lib.rs +576 -0
  167. qumat-0.5.0rc1/qdp/qdp-core/src/platform/fallback.rs +36 -0
  168. qumat-0.5.0rc1/qdp/qdp-core/src/platform/linux.rs +35 -0
  169. qumat-0.5.0rc1/qdp/qdp-core/src/platform/mod.rs +31 -0
  170. qumat-0.5.0rc1/qdp/qdp-core/src/platform/other.rs +28 -0
  171. qumat-0.5.0rc1/qdp/qdp-core/src/platform/windows.rs +28 -0
  172. qumat-0.5.0rc1/qdp/qdp-core/src/preprocessing.rs +162 -0
  173. qumat-0.5.0rc1/qdp/qdp-core/src/profiling.rs +77 -0
  174. qumat-0.5.0rc1/qdp/qdp-core/src/reader.rs +102 -0
  175. qumat-0.5.0rc1/qdp/qdp-core/src/readers/arrow_ipc.rs +191 -0
  176. qumat-0.5.0rc1/qdp/qdp-core/src/readers/mod.rs +39 -0
  177. qumat-0.5.0rc1/qdp/qdp-core/src/readers/numpy.rs +274 -0
  178. qumat-0.5.0rc1/qdp/qdp-core/src/readers/parquet.rs +566 -0
  179. qumat-0.5.0rc1/qdp/qdp-core/src/readers/tensorflow.rs +268 -0
  180. qumat-0.5.0rc1/qdp/qdp-core/src/readers/torch.rs +184 -0
  181. qumat-0.5.0rc1/qdp/qdp-core/src/tf_proto.rs +23 -0
  182. qumat-0.5.0rc1/qdp/qdp-core/tests/api_workflow.rs +369 -0
  183. qumat-0.5.0rc1/qdp/qdp-core/tests/arrow_ipc_io.rs +226 -0
  184. qumat-0.5.0rc1/qdp/qdp-core/tests/common/mod.rs +21 -0
  185. qumat-0.5.0rc1/qdp/qdp-core/tests/dlpack.rs +85 -0
  186. qumat-0.5.0rc1/qdp/qdp-core/tests/iqp_encoding.rs +660 -0
  187. qumat-0.5.0rc1/qdp/qdp-core/tests/memory_safety.rs +201 -0
  188. qumat-0.5.0rc1/qdp/qdp-core/tests/numpy.rs +143 -0
  189. qumat-0.5.0rc1/qdp/qdp-core/tests/parquet_io.rs +161 -0
  190. qumat-0.5.0rc1/qdp/qdp-core/tests/preprocessing.rs +153 -0
  191. qumat-0.5.0rc1/qdp/qdp-core/tests/tensorflow_io.rs +354 -0
  192. qumat-0.5.0rc1/qdp/qdp-core/tests/torch_io.rs +62 -0
  193. qumat-0.5.0rc1/qdp/qdp-core/tests/validation.rs +227 -0
  194. qumat-0.5.0rc1/qdp/qdp-kernels/Cargo.toml +14 -0
  195. qumat-0.5.0rc1/qdp/qdp-kernels/build.rs +104 -0
  196. qumat-0.5.0rc1/qdp/qdp-kernels/src/amplitude.cu +680 -0
  197. qumat-0.5.0rc1/qdp/qdp-kernels/src/angle.cu +155 -0
  198. qumat-0.5.0rc1/qdp/qdp-kernels/src/basis.cu +166 -0
  199. qumat-0.5.0rc1/qdp/qdp-kernels/src/iqp.cu +232 -0
  200. qumat-0.5.0rc1/qdp/qdp-kernels/src/kernel_config.h +69 -0
  201. qumat-0.5.0rc1/qdp/qdp-kernels/src/lib.rs +396 -0
  202. qumat-0.5.0rc1/qdp/qdp-kernels/tests/amplitude_encode.rs +739 -0
  203. qumat-0.5.0rc1/qdp/qdp-python/.gitignore +72 -0
  204. qumat-0.5.0rc1/qdp/qdp-python/Cargo.toml +18 -0
  205. qumat-0.5.0rc1/qdp/qdp-python/README.md +68 -0
  206. qumat-0.5.0rc1/qdp/qdp-python/benchmark/.claude/settings.local.json +15 -0
  207. qumat-0.5.0rc1/qdp/qdp-python/benchmark/README.md +114 -0
  208. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_e2e.py +559 -0
  209. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_latency.md +80 -0
  210. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_latency.py +350 -0
  211. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_latency_pytorch.py +198 -0
  212. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_numpy_io.py +313 -0
  213. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_throughput.md +77 -0
  214. qumat-0.5.0rc1/qdp/qdp-python/benchmark/benchmark_throughput.py +309 -0
  215. qumat-0.5.0rc1/qdp/qdp-python/benchmark/notebooks/mahout_benchmark.ipynb +177 -0
  216. qumat-0.5.0rc1/qdp/qdp-python/benchmark/utils.py +233 -0
  217. qumat-0.5.0rc1/qdp/qdp-python/pyproject.toml +40 -0
  218. qumat-0.5.0rc1/qdp/qdp-python/src/lib.rs +802 -0
  219. qumat-0.5.0rc1/qdp/qdp-python/uv.lock +2584 -0
  220. qumat-0.5.0rc1/qumat/__init__.py +20 -0
  221. {qumat-0.0.1 → qumat-0.5.0rc1}/qumat/amazon_braket_backend.py +95 -15
  222. {qumat-0.0.1 → qumat-0.5.0rc1}/qumat/cirq_backend.py +100 -16
  223. qumat-0.5.0rc1/qumat/qdp.py +63 -0
  224. qumat-0.5.0rc1/qumat/qiskit_backend.py +210 -0
  225. qumat-0.5.0rc1/qumat/qumat.py +564 -0
  226. qumat-0.5.0rc1/testing/README.md +78 -0
  227. qumat-0.5.0rc1/testing/__init__.py +16 -0
  228. qumat-0.5.0rc1/testing/conftest.py +104 -0
  229. qumat-0.5.0rc1/testing/qdp/__init__.py +16 -0
  230. qumat-0.5.0rc1/testing/qdp/qdp_test_utils.py +37 -0
  231. qumat-0.5.0rc1/testing/qdp/test_bindings.py +1082 -0
  232. qumat-0.5.0rc1/testing/qdp/test_high_fidelity.py +266 -0
  233. qumat-0.5.0rc1/testing/qdp/test_numpy.py +205 -0
  234. qumat-0.5.0rc1/testing/qumat/__init__.py +16 -0
  235. qumat-0.5.0rc1/testing/qumat/test_create_circuit.py +127 -0
  236. qumat-0.5.0rc1/testing/qumat/test_final_quantum_states.py +76 -0
  237. qumat-0.5.0rc1/testing/qumat/test_multi_qubit_gates.py +492 -0
  238. qumat-0.5.0rc1/testing/qumat/test_overlap_measurement.py +157 -0
  239. qumat-0.5.0rc1/testing/qumat/test_parameter_binding.py +222 -0
  240. qumat-0.5.0rc1/testing/qumat/test_rotation_gates.py +453 -0
  241. qumat-0.5.0rc1/testing/qumat/test_single_qubit_gates.py +798 -0
  242. qumat-0.5.0rc1/testing/qumat/test_swap_test.py +193 -0
  243. qumat-0.5.0rc1/testing/utils/.license-header.txt +15 -0
  244. qumat-0.5.0rc1/testing/utils/__init__.py +21 -0
  245. qumat-0.5.0rc1/testing/utils/amazon_braket_helpers.py +74 -0
  246. qumat-0.5.0rc1/testing/utils/cirq_helpers.py +64 -0
  247. qumat-0.5.0rc1/testing/utils/constants.py +21 -0
  248. qumat-0.5.0rc1/testing/utils/qiskit_helpers.py +77 -0
  249. qumat-0.5.0rc1/testing/utils/qumat_helpers.py +165 -0
  250. qumat-0.5.0rc1/uv.lock +2554 -0
  251. qumat-0.5.0rc1/website/.gitignore +20 -0
  252. qumat-0.5.0rc1/website/README.md +289 -0
  253. qumat-0.5.0rc1/website/docs/.gitignore +10 -0
  254. qumat-0.5.0rc1/website/docusaurus.config.ts +287 -0
  255. qumat-0.5.0rc1/website/package-lock.json +18683 -0
  256. qumat-0.5.0rc1/website/package.json +54 -0
  257. qumat-0.5.0rc1/website/scripts/migrate-posts.js +195 -0
  258. qumat-0.5.0rc1/website/scripts/migrate-website-docs.js +231 -0
  259. qumat-0.5.0rc1/website/scripts/sync-docs.js +275 -0
  260. qumat-0.5.0rc1/website/sidebars.ts +125 -0
  261. qumat-0.5.0rc1/website/src/components/WaveAnimation/index.tsx +161 -0
  262. qumat-0.5.0rc1/website/src/components/WaveAnimation/styles.module.css +7 -0
  263. qumat-0.5.0rc1/website/src/css/custom.css +172 -0
  264. qumat-0.5.0rc1/website/src/pages/index.module.css +226 -0
  265. qumat-0.5.0rc1/website/src/pages/index.tsx +177 -0
  266. qumat-0.5.0rc1/website/src/pages/markdown-page.md +7 -0
  267. qumat-0.5.0rc1/website/src/theme/Blog/Components/Author/index.tsx +126 -0
  268. qumat-0.5.0rc1/website/src/theme/Blog/Components/Author/styles.module.css +67 -0
  269. qumat-0.5.0rc1/website/static/.nojekyll +0 -0
  270. qumat-0.5.0rc1/website/static/img/asf_logo.svg +226 -0
  271. qumat-0.5.0rc1/website/static/img/asf_logo_white.svg +238 -0
  272. qumat-0.5.0rc1/website/static/img/asf_new_logo.svg +43 -0
  273. qumat-0.5.0rc1/website/static/img/mahout-favicon-black.svg +10 -0
  274. qumat-0.5.0rc1/website/static/img/mahout-favicon.svg +10 -0
  275. qumat-0.5.0rc1/website/static/img/mahout-icon-black.svg +40 -0
  276. qumat-0.5.0rc1/website/static/img/mahout-icon-white.svg +40 -0
  277. qumat-0.5.0rc1/website/static/img/mahout-logo-blue.svg +64 -0
  278. qumat-0.5.0rc1/website/static/img/mahout-logo-white.svg +64 -0
  279. qumat-0.5.0rc1/website/static/img/mahout-logo.svg +64 -0
  280. qumat-0.5.0rc1/website/static/img/mahout-social-card.svg +10 -0
  281. qumat-0.5.0rc1/website/static/img/mascot_with_text.png +0 -0
  282. qumat-0.5.0rc1/website/tsconfig.json +8 -0
  283. qumat-0.5.0rc1/website/versioned_docs/version-0.4/about/how-to-contribute.md +152 -0
  284. qumat-0.5.0rc1/website/versioned_docs/version-0.4/adr/001-jekyll-to-docusaurus-migration.md +153 -0
  285. qumat-0.5.0rc1/website/versioned_docs/version-0.4/api.md +160 -0
  286. qumat-0.5.0rc1/website/versioned_docs/version-0.4/assets/mascot.png +0 -0
  287. qumat-0.5.0rc1/website/versioned_docs/version-0.4/assets/mascot_with_text.png +0 -0
  288. qumat-0.5.0rc1/website/versioned_docs/version-0.4/basic-gates.md +99 -0
  289. qumat-0.5.0rc1/website/versioned_docs/version-0.4/community/code-of-conduct.md +51 -0
  290. qumat-0.5.0rc1/website/versioned_docs/version-0.4/community/index.md +97 -0
  291. qumat-0.5.0rc1/website/versioned_docs/version-0.4/community/mailing-lists.md +71 -0
  292. qumat-0.5.0rc1/website/versioned_docs/version-0.4/community/who-we-are.md +66 -0
  293. qumat-0.5.0rc1/website/versioned_docs/version-0.4/download/index.md +42 -0
  294. qumat-0.5.0rc1/website/versioned_docs/version-0.4/download/quickstart.md +58 -0
  295. qumat-0.5.0rc1/website/versioned_docs/version-0.4/getting-started-with-qumat.md +57 -0
  296. qumat-0.5.0rc1/website/versioned_docs/version-0.4/getting-started.md +3 -0
  297. qumat-0.5.0rc1/website/versioned_docs/version-0.4/index.md +32 -0
  298. qumat-0.5.0rc1/website/versioned_docs/version-0.4/parameterized-circuits.md +217 -0
  299. qumat-0.5.0rc1/website/versioned_docs/version-0.4/pqc.md +283 -0
  300. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qdp/observability.md +151 -0
  301. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qdp/readers.md +225 -0
  302. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qdp/testing.md +57 -0
  303. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/core/api.md +7 -0
  304. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/core/concepts.md +7 -0
  305. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/core/examples.md +7 -0
  306. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/core/getting-started.md +7 -0
  307. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/core/index.md +14 -0
  308. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/index.md +21 -0
  309. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/papers/An-Efficient-Quantum-Factoring-Algorithm.md +36 -0
  310. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/papers/Quantum-Kernel-Estimation-With-Neutral-Atoms-For-Supervised-Classification.md +42 -0
  311. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/papers/Quantum-machine-learning-beyond-kernel-methods.md +27 -0
  312. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/papers/Unleashing-the-Potential-of-LLMs-for-Quantum-Computing.md +48 -0
  313. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/papers/index.md +12 -0
  314. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/qdp/api.md +7 -0
  315. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/qdp/concepts.md +204 -0
  316. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/qdp/examples.md +7 -0
  317. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/qdp/getting-started.md +7 -0
  318. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/qdp/index.md +12 -0
  319. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/advanced-topics.md +109 -0
  320. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/applications.md +461 -0
  321. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/index.md +49 -0
  322. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/introduction.md +92 -0
  323. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/quantum-algorithms.md +137 -0
  324. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/quantum-circuits.md +125 -0
  325. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/quantum-entanglement.md +110 -0
  326. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/quantum-error-correction.md +80 -0
  327. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/quantum-gates.md +138 -0
  328. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat/quantum-computing-primer/qubits.md +96 -0
  329. qumat-0.5.0rc1/website/versioned_docs/version-0.4/qumat-gap-analysis-for-pqc.md +197 -0
  330. qumat-0.5.0rc1/website/versioned_sidebars/version-0.4-sidebars.json +8 -0
  331. qumat-0.5.0rc1/website/versions.json +3 -0
  332. qumat-0.0.1/NOTICE +0 -41
  333. qumat-0.0.1/PKG-INFO +0 -77
  334. qumat-0.0.1/README.md +0 -56
  335. qumat-0.0.1/pyproject.toml +0 -27
  336. qumat-0.0.1/qumat/qiskit_backend.py +0 -117
  337. qumat-0.0.1/qumat/qumat.py +0 -90
  338. /qumat-0.0.1/qumat/__init__.py → /qumat-0.5.0rc1/docs/getting-started.md +0 -0
@@ -0,0 +1,36 @@
1
+
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+
19
+ # https://cwiki.apache.org/confluence/display/INFRA/Git+-+.asf.yaml+features
20
+
21
+ publish:
22
+ whoami: asf-site
23
+
24
+ notifications:
25
+ discussions: issues@mahout.apache.org
26
+
27
+ github:
28
+ features:
29
+ # Enable wiki for documentation
30
+ wiki: true
31
+ # Enable issue management
32
+ issues: true
33
+ # Enable projects for project management boards
34
+ projects: true
35
+ # Enable discussions
36
+ discussions: true
@@ -0,0 +1,108 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(rustc:*)",
5
+ "Bash(cargo --version:*)",
6
+ "Bash(nvcc:*)",
7
+ "Bash(source ~/.zshrc)",
8
+ "Bash(export PATH=\"$HOME/.cargo/bin:$PATH\")",
9
+ "Bash(export CUDA_HOME=\"$HOME/local/cuda-12.2\")",
10
+ "Bash(export PATH=\"$CUDA_HOME/bin:$PATH\")",
11
+ "Bash(export LD_LIBRARY_PATH:*)",
12
+ "Bash(cargo build:*)",
13
+ "Bash(cargo test:*)",
14
+ "Bash(cargo doc:*)",
15
+ "Bash(gh api:*)",
16
+ "Bash(gh pr diff:*)",
17
+ "Bash(source .venv/bin/activate)",
18
+ "Bash(uv sync:*)",
19
+ "Bash(python:*)",
20
+ "Bash(nvidia-smi:*)",
21
+ "Bash(uv run maturin develop:*)",
22
+ "Bash(git fetch:*)",
23
+ "Bash(git checkout:*)",
24
+ "Bash(git pull:*)",
25
+ "Bash(git stash:*)",
26
+ "Bash(git reset:*)",
27
+ "Bash(git branch:*)",
28
+ "Bash(source:*)",
29
+ "Bash(cargo clippy:*)",
30
+ "Bash(cat:*)",
31
+ "Bash(pre-commit run:*)",
32
+ "Bash(uv run pre-commit run:*)",
33
+ "Bash(pip show:*)",
34
+ "Bash(uv pip show:*)",
35
+ "Bash(uv pip install:*)",
36
+ "Bash(pre-commit --version:*)",
37
+ "Bash(uv run pytest:*)",
38
+ "WebFetch(domain:github.com)",
39
+ "WebFetch(domain:docs.astral.sh)",
40
+ "WebSearch",
41
+ "Bash(uvx ty check:*)",
42
+ "Bash(grep:*)",
43
+ "Bash(python3:*)",
44
+ "Bash(maturin develop:*)",
45
+ "Bash(.venv/bin/python:*)",
46
+ "Bash(PYTHONPATH=/home/gmchiu/Documents/GitHub/mahout /home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/python:*)",
47
+ "Bash(PYTHONPATH=/home/gmchiu/Documents/GitHub/mahout .venv/bin/pytest:*)",
48
+ "Bash(.venv/bin/pytest tests/ -v)",
49
+ "Bash(git add:*)",
50
+ "Bash(git commit --amend -m \"$\\(cat <<''EOF''\nIntegrate Quantum Data Plane \\(QDP\\) into QuMat\n\n- Add qumat/qdp.py as public API for `import qumat.qdp as qdp`\n- Rename native module from mahout_qdp to _qdp\n- Rename package from qdp-python to qumat-qdp\n- Update all imports in tests/benchmarks/docs\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
51
+ "Bash(git commit --amend -m \"$\\(cat <<''EOF''\nIntegrate Quantum Data Plane \\(QDP\\) into QuMat\n\n- Add qumat/qdp.py as public API for `import qumat.qdp as qdp`\n- Rename native module from mahout_qdp to _qdp\n- Rename package from qdp-python to qumat-qdp\n- Add qumat-qdp as optional dependency: `uv sync --group qdp`\n- Update all imports in tests/benchmarks/docs\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
52
+ "Bash(git commit:*)",
53
+ "WebFetch(domain:raw.githubusercontent.com)",
54
+ "Bash(gh pr view:*)",
55
+ "Bash(cargo check:*)",
56
+ "Bash(uv run python:*)",
57
+ "Bash(bundle install:*)",
58
+ "Bash(bundle exec jekyll serve:*)",
59
+ "Bash(pytest:*)",
60
+ "Bash(find:*)",
61
+ "Bash(git push:*)",
62
+ "Bash(git -C /home/gmchiu/Documents/GitHub/mahout log --all --oneline --grep=basis)",
63
+ "Bash(git -C /home/gmchiu/Documents/GitHub/mahout show 63ef825bc --stat)",
64
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/maturin develop)",
65
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/.venv/bin/maturin develop:*)",
66
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/maturin develop:*)",
67
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/maturin build --release)",
68
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/.venv/bin/python -m pytest:*)",
69
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/.venv/bin/python:*)",
70
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/python -m pytest:*)",
71
+ "Bash(VIRTUAL_ENV=/home/gmchiu/Documents/GitHub/mahout/.venv PATH=/home/gmchiu/Documents/GitHub/mahout/.venv/bin:$PATH /home/gmchiu/Documents/GitHub/mahout/qdp/qdp-python/.venv/bin/maturin develop:*)",
72
+ "Bash(export PATH=/home/gmchiu/.cargo/bin:$PATH)",
73
+ "Bash(/home/gmchiu/Documents/GitHub/mahout/.venv/bin/maturin:*)",
74
+ "Bash(.venv/bin/maturin develop:*)",
75
+ "Bash(uv --version:*)",
76
+ "Bash(make install_benchmark:*)",
77
+ "Bash(~/.bashrc)",
78
+ "Bash(export LIBTORCH_USE_PYTORCH=1)",
79
+ "Bash(LIBTORCH_USE_PYTORCH=1 cargo clippy:*)",
80
+ "Bash(~/.profile)",
81
+ "Bash(LIBTORCH_USE_PYTORCH=1 pre-commit run:*)",
82
+ "Bash(pre-commit clean:*)",
83
+ "Bash(uv run:*)",
84
+ "Bash(pip install:*)",
85
+ "Bash(pip uninstall:*)",
86
+ "Bash(.venv/bin/pre-commit run:*)",
87
+ "Bash(LIBTORCH_USE_PYTORCH=1 .venv/bin/pre-commit run clippy:*)",
88
+ "Bash(LIBTORCH_USE_PYTORCH=1 LIBTORCH_BYPASS_VERSION_CHECK=1 .venv/bin/pre-commit run clippy:*)",
89
+ "Bash(pre-commit install:*)",
90
+ "Bash(LIBTORCH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch LD_LIBRARY_PATH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch/lib:$LD_LIBRARY_PATH uv run:*)",
91
+ "Bash(echo:*)",
92
+ "Bash(chmod:*)",
93
+ "Bash(cargo clean:*)",
94
+ "Bash(LIBTORCH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch LD_LIBRARY_PATH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch/lib cargo build:*)",
95
+ "Bash(LIBTORCH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch LD_LIBRARY_PATH=/home/gmchiu/Documents/GitHub/mahout/.venv/lib/python3.11/site-packages/torch/lib uv run pre-commit run:*)",
96
+ "Bash(uv python list:*)",
97
+ "Bash(uv pip list:*)",
98
+ "Bash(gh pr checks:*)",
99
+ "Bash(make install:*)",
100
+ "Bash(ls:*)",
101
+ "WebFetch(domain:pre-commit.com)",
102
+ "WebFetch(domain:pypi.org)",
103
+ "Bash(uv build:*)"
104
+ ],
105
+ "deny": [],
106
+ "ask": []
107
+ }
108
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "CUDA Python + Rust Dev",
3
+ "image": "nvidia/cuda:12.4.1-devel-ubuntu22.04",
4
+ // Give container full GPU access
5
+ "runArgs": [
6
+ "--gpus",
7
+ "all"
8
+ ],
9
+ // Auto mount your GitHub repo as workspace
10
+ "workspaceFolder": "/workspace",
11
+ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
12
+ // Install Python via devcontainers-features
13
+ "features": {
14
+ "ghcr.io/devcontainers/features/python:1": {
15
+ "version": "3.10"
16
+ }
17
+ },
18
+ // Additional setup (Rust, CUDA tools, etc.)
19
+ "postCreateCommand": "bash /workspace/.devcontainer/setup.sh",
20
+ "customizations": {
21
+ "vscode": {
22
+ "extensions": [
23
+ "ms-python.python",
24
+ "tamasfe.even-better-toml",
25
+ "rust-lang.rust-analyzer"
26
+ ]
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env bash
2
+ set -eux
3
+
4
+ # Install Rust + Cargo
5
+ if ! command -v cargo >/dev/null 2>&1; then
6
+ curl https://sh.rustup.rs -sSf | sh -s -- -y
7
+ echo 'source $HOME/.cargo/env' >> ~/.bashrc
8
+ fi
9
+
10
+ # Common dev tools
11
+ apt-get update
12
+ apt-get install -y \
13
+ build-essential \
14
+ pkg-config \
15
+ git \
16
+ vim
17
+
18
+
19
+ # uv
20
+ curl -LsSf https://astral.sh/uv/install.sh | sh
21
+ source $HOME/.local/bin/env
22
+
23
+ # setup pre-commit hooks
24
+ cd /workspaces/mahout
25
+ uv sync --group dev
26
+ uv run pre-commit install
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: "Bug Report"
3
+ about: "Report a bug to help us improve"
4
+ title: "[Bug] "
5
+ labels: ["bug"]
6
+ assignees: []
7
+ ---
8
+
9
+ ### Description
10
+ A clear and concise description of the bug.
11
+
12
+ ### Steps to Reproduce
13
+ 1. Step 1
14
+ 2. Step 2
15
+ 3. Step 3
16
+
17
+ ### Expected Behavior
18
+ What should have happened?
19
+
20
+ ### Actual Behavior
21
+ What actually happened?
22
+
23
+ ### Screenshots or Logs
24
+ Add screenshots or log output if applicable.
25
+
26
+ ### Environment
27
+ - **OS:** e.g., Windows, Linux
28
+ - **Browser/Tool Version:** e.g., Chrome 96, Python 3.8
29
+
30
+ ### Additional Context
31
+ Any other information that may be helpful.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: "Documentation Issue"
3
+ about: "Report issues related to documentation"
4
+ title: "[Docs] "
5
+ labels: ["docs"]
6
+ assignees: []
7
+ ---
8
+
9
+ ### Description
10
+ What is unclear, incorrect, or missing?
11
+
12
+ ### Location of the Issue
13
+ Provide links or file paths where the issue exists.
14
+
15
+ ### Suggested Improvement
16
+ How should this be fixed?
17
+
18
+ ### Additional Context
19
+ Anything else that would help improve the documentation.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: "Feature Request"
3
+ about: "Suggest a new feature"
4
+ title: "[Feature] "
5
+ labels: ["enhancement"]
6
+ assignees: []
7
+ ---
8
+
9
+ ### Summary
10
+ A brief description of the feature.
11
+
12
+ ### Use Case
13
+ Explain why this feature is useful.
14
+
15
+ ### Proposed Implementation
16
+ How do you propose implementing this feature?
17
+
18
+ ### Alternatives Considered
19
+ Have you thought of other ways to solve the same problem?
20
+
21
+ ### Additional Context
22
+ Any other relevant information or resources.
@@ -0,0 +1,32 @@
1
+ ## Issue Title
2
+ Provide a clear and concise title for the issue
3
+
4
+ ### Description
5
+ Describe the issue in detail. Include what the current behavior is and provide any relevant examples or screenshots.
6
+
7
+ ### Steps to Reproduce
8
+ 1. First step
9
+ 2. Second step
10
+ 3. Third step
11
+
12
+ ### Expected Behavior
13
+ What do you expect to happen?
14
+
15
+ ### Actual Behavior
16
+ What actually happens? Include any error messages or logs if applicable.
17
+
18
+ ### Environment
19
+ - **OS:** e.g. Windows, MacOS, Linux
20
+ - **Browser:** e.g. Chrome, Firefox, Safari
21
+ - **Version:** e.g. 1.0.0
22
+
23
+ ### Suggested Fix
24
+ If you have an idea for a fix, please provide details here.
25
+
26
+ ### Additional Context
27
+ Add any other context about the problem here. For example, links to related issues or discussions.
28
+
29
+ ### Checklist
30
+ - [ ] I have searched the existing issues for duplicates.
31
+ - [ ] I have provided the information as detailed as possible.
32
+ - [ ] I provided relevant screenshots or files if necessary.
@@ -0,0 +1,33 @@
1
+ ### Purpose of PR
2
+ <!-- Describe what this PR does. -->
3
+
4
+ ### Related Issues or PRs
5
+ <!-- Add links to related issues or PRs. -->
6
+ <!-- - Closes #123 -->
7
+ <!-- - Related to #123 -->
8
+
9
+ ### Changes Made
10
+ <!-- Please mark one with an "x" -->
11
+ - [ ] Bug fix
12
+ - [ ] New feature
13
+ - [ ] Refactoring
14
+ - [ ] Documentation
15
+ - [ ] Test
16
+ - [ ] CI/CD pipeline
17
+ - [ ] Other
18
+
19
+ ### Breaking Changes
20
+ <!-- Does this PR introduce a breaking change? -->
21
+ - [ ] Yes
22
+ - [ ] No
23
+
24
+ ### Checklist
25
+ <!-- Please mark each item with an "x" when complete -->
26
+ <!-- If not all items are complete, please open this as a **Draft PR**.
27
+ Once all requirements are met, mark as ready for review. -->
28
+
29
+ - [ ] Added or updated unit tests for all changes
30
+ - [ ] Added or updated documentation for all changes
31
+ - [ ] Successfully built and ran all unit tests or manual tests locally
32
+ - [ ] PR title follows "MAHOUT-XXX: Brief Description" format (if related to an issue)
33
+ - [ ] Code follows ASF guidelines
@@ -0,0 +1,13 @@
1
+ # Label configuration for GitHub Actions labeler
2
+
3
+ bug:
4
+ - '/(bug|error|fix|not working|broken)/i'
5
+
6
+ enhancement:
7
+ - '/(feature|enhancement|improvement|add|new)/i'
8
+
9
+ docs:
10
+ - '/(doc|readme|guide|tutorial)/i'
11
+
12
+ question:
13
+ - '/(question|help|how to|\?)/i'
@@ -0,0 +1,16 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one or more
3
+ # contributor license agreements. See the NOTICE file distributed with
4
+ # this work for additional information regarding copyright ownership.
5
+ # The ASF licenses this file to You under the Apache License, Version 2.0
6
+ # (the "License"); you may not use this file except in compliance with
7
+ # the License. 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
+ #
@@ -0,0 +1,124 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one or more
3
+ # contributor license agreements. See the NOTICE file distributed with
4
+ # this work for additional information regarding copyright ownership.
5
+ # The ASF licenses this file to You under the Apache License, Version 2.0
6
+ # (the "License"); you may not use this file except in compliance with
7
+ # the License. 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
+ import ast
18
+
19
+
20
+ class GeneralReviewCheck:
21
+ def __init__(self, client, model_name):
22
+ self.client = client
23
+ self.model_name = model_name
24
+
25
+ def process_pr_file(self, file, repo, pr):
26
+ comments = []
27
+ analyzed = False
28
+
29
+ if file.filename.endswith(".py"):
30
+ analyzed = True
31
+ content = repo.get_contents(
32
+ file.filename, ref=pr.head.sha
33
+ ).decoded_content.decode()
34
+
35
+ # Basic code analysis
36
+ try:
37
+ tree = ast.parse(content)
38
+ analysis = self.analyze_code_structure(tree)
39
+ if analysis:
40
+ comments.append(
41
+ {"path": file.filename, "body": analysis, "line": 1}
42
+ )
43
+ except SyntaxError as e:
44
+ comments.append(
45
+ {
46
+ "path": file.filename,
47
+ "body": f"⚠️ Syntax error found:\n{e}",
48
+ "line": 1,
49
+ }
50
+ )
51
+
52
+ return comments, analyzed
53
+
54
+ def analyze_code_structure(self, tree):
55
+ analysis = []
56
+
57
+ # Check for large classes
58
+ for node in ast.walk(tree):
59
+ if isinstance(node, ast.ClassDef):
60
+ methods = [n for n in node.body if isinstance(n, ast.FunctionDef)]
61
+ if len(methods) > 10:
62
+ analysis.append(
63
+ f"- Class '{node.name}' has {len(methods)} methods. Consider splitting into smaller classes."
64
+ )
65
+
66
+ # Check for long functions
67
+ for node in ast.walk(tree):
68
+ if isinstance(node, ast.FunctionDef):
69
+ lines = node.end_lineno - node.lineno if node.end_lineno else 0
70
+ if lines > 50:
71
+ analysis.append(
72
+ f"- Function '{node.name}' is {lines} lines long. Consider breaking it into smaller functions."
73
+ )
74
+
75
+ # Check for TODO comments
76
+ for node in ast.walk(tree):
77
+ if isinstance(node, ast.Expr) and isinstance(node.value, ast.Constant):
78
+ if (
79
+ isinstance(node.value.value, str)
80
+ and "TODO" in node.value.value.upper()
81
+ ):
82
+ analysis.append(f"- TODO comment found: {node.value.value}")
83
+
84
+ if analysis:
85
+ return "🔍 Code structure analysis:\n" + "\n".join(analysis)
86
+ return None
87
+
88
+ def generate_general_impression(self, pr):
89
+ prompt = f"""Provide a general impression of this pull request. Consider:
90
+ - Overall code quality
91
+ - Code organization
92
+ - Documentation
93
+ - Potential improvements
94
+ - Areas that need special attention
95
+
96
+ Pull Request Details:
97
+ Title: {pr.title}
98
+ Description: {pr.body}
99
+ Files Changed: {pr.changed_files}
100
+ Additions: {pr.additions}
101
+ Deletions: {pr.deletions}
102
+
103
+ Provide your analysis in markdown format with these sections:
104
+ 1. Overall Impression
105
+ 2. Strengths
106
+ 3. Areas for Improvement
107
+ 4. Special Attention Needed"""
108
+
109
+ response = self.client.chat.completions.create(
110
+ model=self.model_name,
111
+ messages=[
112
+ {
113
+ "role": "system",
114
+ "content": "You are an experienced code reviewer. Provide a high-level analysis of pull requests.",
115
+ },
116
+ {"role": "user", "content": prompt},
117
+ ],
118
+ )
119
+
120
+ return response.choices[0].message.content
121
+
122
+ def process_pr(self, pr):
123
+ general_analysis = self.generate_general_impression(pr)
124
+ return [{"path": "GENERAL", "body": general_analysis, "line": 0}], True
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env python3
2
+ #
3
+ # Licensed to the Apache Software Foundation (ASF) under one or more
4
+ # contributor license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright ownership.
6
+ # The ASF licenses this file to You under the Apache License, Version 2.0
7
+ # (the "License"); you may not use this file except in compliance with
8
+ # the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ import os
19
+ import sys
20
+ from github import Github
21
+ from gofannon.github.pr_review_tool import PRReviewTool
22
+
23
+
24
+ def check_env_vars():
25
+ required_vars = [
26
+ "GITHUB_TOKEN",
27
+ "OPENAI_API_KEY",
28
+ "OPENAI_BASE_URL",
29
+ "OPENAI_MODEL_NAME",
30
+ "PR_NUMBER",
31
+ "REPO_NAME",
32
+ ]
33
+ for var in required_vars:
34
+ if not os.environ.get(var):
35
+ sys.exit(f"Error: Required environment variable '{var}' is missing.")
36
+
37
+
38
+ check_env_vars()
39
+
40
+
41
+ def main():
42
+ pr_number = int(os.environ["PR_NUMBER"])
43
+ repo_name = os.environ["REPO_NAME"]
44
+ pr_review_tool = PRReviewTool()
45
+ review_summary = pr_review_tool.fn(pr_number=pr_number, repo_name=repo_name)
46
+
47
+ # Post the review comment to the pull request using PyGithub.
48
+ g = Github(os.environ["GITHUB_TOKEN"])
49
+ repo = g.get_repo(repo_name)
50
+ pr = repo.get_pull(pr_number)
51
+ pr.create_issue_comment(review_summary)
52
+
53
+
54
+ if __name__ == "__main__":
55
+ main()
@@ -0,0 +1,15 @@
1
+ name: "Issue Labeler"
2
+ on:
3
+ issues:
4
+ types: [opened, edited]
5
+
6
+ jobs:
7
+ triage:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: github/issue-labeler@v3.4
11
+ with:
12
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
13
+ configuration-path: .github/labeler.yml
14
+ enable-versioned-regex: 0
15
+ include-title: 1
@@ -0,0 +1,44 @@
1
+ name: CI for Jupyter Notebooks
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "**.py"
8
+ - "**.ipynb"
9
+ - "pyproject.toml"
10
+ - ".github/workflows/notebook-testing.yml"
11
+ pull_request:
12
+ branches: [main]
13
+ paths:
14
+ - "**.py"
15
+ - "**.ipynb"
16
+ - "pyproject.toml"
17
+ - ".github/workflows/notebook-testing.yml"
18
+ workflow_dispatch:
19
+
20
+ jobs:
21
+ test-notebooks:
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v6
27
+
28
+ - name: Set up Python with uv
29
+ uses: astral-sh/setup-uv@v7
30
+ with:
31
+ python-version: "3.12"
32
+ enable-cache: true
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ uv venv
37
+ uv pip install nbclient ipykernel -e .
38
+
39
+ - name: Run Jupyter Notebooks
40
+ run: |
41
+ for nb in $(find . -name '*.ipynb'); do
42
+ echo "Executing $nb"
43
+ uv run jupyter execute "$nb" --inplace
44
+ done
@@ -0,0 +1,47 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one or more
3
+ # contributor license agreements. See the NOTICE file distributed with
4
+ # this work for additional information regarding copyright ownership.
5
+ # The ASF licenses this file to You under the Apache License, Version 2.0
6
+ # (the "License"); you may not use this file except in compliance with
7
+ # the License. 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
+ name: PR Tool Review
18
+ on:
19
+ pull_request_target:
20
+ types: [labeled]
21
+
22
+ jobs:
23
+ review:
24
+ if: github.event.label.name == 'run-tests'
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Check out base repository
28
+ uses: actions/checkout@v6
29
+ with:
30
+ fetch-depth: 0
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v6
33
+ with:
34
+ python-version: '3.10'
35
+ - name: Install Gofannon
36
+ run: |
37
+ pip install gofannon
38
+ - name: Run PR Review Tool
39
+ env:
40
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
42
+ OPENAI_BASE_URL: "https://api.deepinfra.com/v1/openai"
43
+ OPENAI_MODEL_NAME: "meta-llama/Llama-3.3-70B-Instruct-Turbo"
44
+ PR_NUMBER: ${{ github.event.pull_request.number }}
45
+ REPO_NAME: ${{ github.repository }}
46
+ run: |
47
+ python .github/scripts/review_pr.py