quantum-debugger 0.6.0__tar.gz → 0.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. quantum_debugger-0.6.1/CHANGELOG.md +188 -0
  2. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/PKG-INFO +34 -14
  3. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/README.md +32 -13
  4. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/__init__.py +38 -33
  5. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/__init__.py +44 -47
  6. quantum_debugger-0.6.1/quantum_debugger/backends/_cuda_dll.py +69 -0
  7. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/aws_backend.py +89 -86
  8. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/base.py +15 -16
  9. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/base_backend.py +14 -19
  10. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/cupy_backend.py +37 -32
  11. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/gpu_backend.py +71 -71
  12. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/ibm_backend.py +60 -59
  13. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/numba_backend.py +34 -32
  14. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/numpy_backend.py +13 -13
  15. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/sparse_backend.py +32 -32
  16. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/__init__.py +18 -25
  17. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/optimization_benchmarks.py +55 -59
  18. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/qml_benchmarks.py +89 -111
  19. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/report_generator.py +77 -71
  20. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/scalability_benchmarks.py +72 -74
  21. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/circuit.py +222 -133
  22. quantum_debugger-0.6.1/quantum_debugger/core/gates.py +125 -0
  23. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/quantum_state.py +138 -90
  24. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/breakpoints.py +35 -29
  25. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/debugger.py +86 -71
  26. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/inspector.py +82 -76
  27. quantum_debugger-0.6.1/quantum_debugger/gpu/__init__.py +25 -0
  28. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/memory.py +66 -52
  29. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/mixed_precision.py +118 -80
  30. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/multi_gpu.py +119 -132
  31. quantum_debugger-0.6.1/quantum_debugger/integrations/__init__.py +46 -0
  32. quantum_debugger-0.6.1/quantum_debugger/integrations/cirq_adapter.py +288 -0
  33. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/cirq_bridge.py +98 -84
  34. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/pennylane_bridge.py +100 -81
  35. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/qiskit_adapter.py +60 -57
  36. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/qiskit_bridge.py +88 -79
  37. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/__init__.py +7 -7
  38. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/__init__.py +5 -5
  39. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/extrapolator.py +86 -99
  40. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/folder.py +96 -92
  41. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/zne.py +63 -64
  42. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/__init__.py +24 -24
  43. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/composite_noise.py +9 -10
  44. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/hardware_profiles.py +126 -149
  45. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/noise_helpers.py +26 -21
  46. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/noise_models.py +79 -78
  47. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/stochastic_sampler.py +45 -41
  48. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/__init__.py +11 -14
  49. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/circuit_compiler.py +38 -44
  50. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/gate_reduction.py +78 -79
  51. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/optimization_passes.py +47 -41
  52. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/transpiler.py +79 -85
  53. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/parallel/__init__.py +2 -2
  54. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/parallel/executor.py +51 -40
  55. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/metrics.py +49 -45
  56. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/profiler.py +49 -46
  57. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/__init__.py +8 -4
  58. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/__init__.py +1 -7
  59. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/qaoa.py +84 -99
  60. quantum_debugger-0.6.1/quantum_debugger/qml/algorithms/qgan.py +246 -0
  61. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/qrl.py +117 -84
  62. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/vqe.py +72 -44
  63. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/__init__.py +11 -7
  64. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/excitation_preserving.py +50 -44
  65. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/real_amplitudes.py +35 -33
  66. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/strongly_entangling.py +40 -39
  67. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/two_local.py +53 -50
  68. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/__init__.py +8 -11
  69. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/ansatz_selector.py +32 -39
  70. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/architecture_search.py +54 -61
  71. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/auto_qnn.py +128 -76
  72. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/hyperparameter_tuner.py +62 -67
  73. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/dataset.py +47 -47
  74. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/feature_maps.py +57 -57
  75. quantum_debugger-0.6.1/quantum_debugger/qml/error_mitigation/__init__.py +11 -0
  76. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/error_mitigation/zne.py +126 -96
  77. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/gates/__init__.py +1 -1
  78. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/gates/parameterized.py +46 -48
  79. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hamiltonians/__init__.py +1 -1
  80. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hamiltonians/molecular.py +186 -175
  81. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/__init__.py +11 -12
  82. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/layers.py +199 -98
  83. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/pytorch_integration.py +89 -81
  84. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/tensorflow_integration.py +119 -72
  85. quantum_debugger-0.6.1/quantum_debugger/qml/kernels/__init__.py +37 -0
  86. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/kernels/alignment.py +56 -66
  87. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/kernels/qsvm.py +59 -68
  88. quantum_debugger-0.6.1/quantum_debugger/qml/kernels/quantum_kernel.py +256 -0
  89. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/__init__.py +14 -17
  90. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/cdr.py +97 -108
  91. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/error_characterization.py +62 -74
  92. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/noise_models.py +70 -81
  93. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/pec.py +174 -66
  94. quantum_debugger-0.6.1/quantum_debugger/qml/optimizers/__init__.py +30 -0
  95. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/optimizers/advanced.py +190 -142
  96. quantum_debugger-0.6.1/quantum_debugger/qml/optimizers/basics.py +98 -0
  97. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/__init__.py +12 -12
  98. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/base.py +25 -23
  99. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/encoding.py +18 -20
  100. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/losses.py +29 -28
  101. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/network.py +137 -102
  102. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/variational.py +30 -32
  103. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/training/__init__.py +44 -40
  104. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/__init__.py +10 -15
  105. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/fine_tuning.py +43 -57
  106. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/model_zoo.py +93 -90
  107. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/pretrained.py +86 -89
  108. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/serialization.py +65 -65
  109. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/utils/gradients.py +31 -38
  110. quantum_debugger-0.6.1/quantum_debugger/visualization/bloch_sphere.py +187 -0
  111. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/visualization/state_viz.py +91 -87
  112. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/PKG-INFO +34 -14
  113. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/SOURCES.txt +2 -0
  114. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/requires.txt +1 -0
  115. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/setup.py +16 -1
  116. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_advanced.py +155 -154
  117. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_edge_cases.py +131 -129
  118. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_integration.py +117 -108
  119. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/conftest.py +17 -0
  120. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/test_integration.py +115 -109
  121. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/test_qiskit_integration.py +60 -59
  122. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_advanced_algorithms.py +79 -73
  123. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_advanced_optimizers.py +115 -110
  124. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_ansatz_library.py +74 -81
  125. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_automl.py +33 -33
  126. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_dataset.py +129 -117
  127. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_edge_cases.py +149 -148
  128. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_hamiltonians.py +105 -106
  129. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_hybrid.py +114 -150
  130. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_kernels.py +88 -109
  131. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_mitigation.py +108 -112
  132. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qaoa.py +65 -63
  133. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qml_parameterized_gates.py +75 -83
  134. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qnn.py +119 -122
  135. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_transfer.py +96 -105
  136. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_transfer_extended.py +121 -130
  137. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_vqe.py +44 -48
  138. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_zne.py +47 -51
  139. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_backends.py +45 -39
  140. quantum_debugger-0.6.1/tests/test_benchmarks.py +138 -0
  141. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_integrations.py +44 -44
  142. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_optimization.py +123 -123
  143. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_advanced.py +103 -102
  144. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backend_comprehensive.py +80 -54
  145. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backend_integration.py +20 -20
  146. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends.py +15 -15
  147. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_advanced.py +42 -40
  148. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_comprehensive.py +33 -30
  149. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_fast.py +32 -27
  150. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise.py +36 -33
  151. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise_advanced.py +138 -129
  152. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise_unique.py +175 -166
  153. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_compatibility.py +22 -15
  154. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_comprehensive.py +155 -147
  155. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_distribution.py +35 -34
  156. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_docstrings.py +27 -16
  157. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_error_handling.py +57 -58
  158. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_extreme.py +143 -140
  159. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_gpu_quick.py +14 -12
  160. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_hardware_profiles_extended.py +48 -38
  161. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_hardware_profiles_phase3.py +38 -32
  162. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_comprehensive.py +114 -129
  163. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_final.py +53 -65
  164. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_observables.py +60 -59
  165. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_zne.py +47 -46
  166. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise.py +29 -22
  167. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_advanced.py +175 -169
  168. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_extreme.py +145 -139
  169. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_final.py +144 -139
  170. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_performance.py +128 -123
  171. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_quantum_info.py +148 -139
  172. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_ultimate.py +41 -40
  173. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_parallel.py +45 -43
  174. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_performance.py +20 -20
  175. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_production.py +141 -133
  176. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_complex.py +68 -67
  177. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_extreme.py +110 -104
  178. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_ultra.py +76 -73
  179. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_advanced.py +57 -55
  180. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_comprehensive.py +81 -79
  181. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_memory.py +71 -65
  182. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_threading.py +50 -50
  183. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_tricky.py +90 -86
  184. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_quickstart.py +30 -29
  185. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_validation.py +118 -117
  186. quantum_debugger-0.6.0/CHANGELOG.md +0 -110
  187. quantum_debugger-0.6.0/quantum_debugger/core/gates.py +0 -141
  188. quantum_debugger-0.6.0/quantum_debugger/gpu/__init__.py +0 -19
  189. quantum_debugger-0.6.0/quantum_debugger/integrations/__init__.py +0 -55
  190. quantum_debugger-0.6.0/quantum_debugger/integrations/cirq_adapter.py +0 -270
  191. quantum_debugger-0.6.0/quantum_debugger/qml/algorithms/qgan.py +0 -203
  192. quantum_debugger-0.6.0/quantum_debugger/qml/error_mitigation/__init__.py +0 -15
  193. quantum_debugger-0.6.0/quantum_debugger/qml/kernels/__init__.py +0 -40
  194. quantum_debugger-0.6.0/quantum_debugger/qml/kernels/quantum_kernel.py +0 -240
  195. quantum_debugger-0.6.0/quantum_debugger/qml/optimizers/__init__.py +0 -24
  196. quantum_debugger-0.6.0/quantum_debugger/visualization/bloch_sphere.py +0 -152
  197. quantum_debugger-0.6.0/tests/test_benchmarks.py +0 -153
  198. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/AUTHORS.md +0 -0
  199. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/LICENSE +0 -0
  200. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/MANIFEST.in +0 -0
  201. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/bell_state_debug.py +0 -0
  202. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/benchmarks.py +0 -0
  203. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/grover_profiling.py +0 -0
  204. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/interactive_demo.py +0 -0
  205. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qaoa_maxcut_example.py +0 -0
  206. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qiskit_integration_demo.py +0 -0
  207. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qml_basic_example.py +0 -0
  208. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/vqe_h2_example.py +0 -0
  209. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/__init__.py +0 -0
  210. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/__init__.py +0 -0
  211. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/__init__.py +0 -0
  212. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/__init__.py +0 -0
  213. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/utils/__init__.py +0 -0
  214. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/visualization/__init__.py +0 -0
  215. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/dependency_links.txt +0 -0
  216. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/top_level.txt +0 -0
  217. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/requirements.txt +0 -0
  218. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/setup.cfg +0 -0
  219. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/__init__.py +0 -0
  220. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/__init__.py +0 -0
  221. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/__init__.py +0 -0
  222. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/__init__.py +0 -0
  223. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/CONVERSION_TRACKER.py +0 -0
  224. {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/__init__.py +0 -0
@@ -0,0 +1,188 @@
1
+ # Changelog
2
+
3
+ All notable changes to QuantumDebugger will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.6.1] - 2026-07-16
9
+
10
+ Release-hardening pass focused on correctness, performance, and robustness. No
11
+ breaking API changes.
12
+
13
+ ### Added
14
+ - **GPU state-vector simulation**: `QuantumCircuit.get_statevector(use_gpu=True,
15
+ precision='single'|'double')` runs the entire circuit on the GPU (CuPy) — the
16
+ state lives on the device across all gates with a single transfer back.
17
+ Verified identical to CPU in double precision; measured ~6x (double) and
18
+ 50-75x (single) vs CPU at 20-22 qubits on an RTX 5060.
19
+ - **Automatic Windows CUDA DLL discovery** so the GPU backend works out of the
20
+ box with the `cupy-cuda12x` + `nvidia-*-cu12` pip wheel setup.
21
+
22
+ ### Fixed
23
+ - **Import robustness**: a broken or version-incompatible optional dependency
24
+ (e.g. PennyLane against a mismatched JAX) no longer crashes
25
+ `import quantum_debugger`. Optional-integration guards now degrade gracefully
26
+ to `<FRAMEWORK>_AVAILABLE = False` instead of only catching `ImportError`.
27
+ - **QNN training**: `QuantumNeuralNetwork.fit` now uses the compiled optimizer
28
+ (Adam / SGD) instead of a hardcoded `params -= 0.01 * gradient` that ignored
29
+ `compile(...)`. Training now actually converges.
30
+ - **QNN readout**: the network output is now a proper Pauli-Z expectation
31
+ `<Z_0>` over the full distribution, rather than `P(|0...0>) - P(|1...1>)`
32
+ which discarded almost all amplitudes for >2 qubits.
33
+ - **AutoML**: `AutoQNN` now selects models on a held-out validation split (was
34
+ scoring on the training data — leakage) and refits the winning configuration
35
+ on all data.
36
+ - **QAOA**: the cost layer now applies genuine two-qubit ZZ interactions
37
+ (CNOT·RZ·CNOT) instead of single-qubit RZ rotations, so the ansatz can
38
+ entangle and reach the true MaxCut optima.
39
+ - **Hybrid (PyTorch)**: fixed a shape-mismatch crash in `HybridQNN` caused by a
40
+ duplicated output projection, and replaced the all-zero backward pass with
41
+ finite-difference gradients so the quantum layer (and any preceding classical
42
+ layers) actually train.
43
+ - Corrected two test bugs exposed once the suite became collectable
44
+ (a swapped-argument `rx` call and a sign error in a QAOA convergence check).
45
+ - **Windows CUDA DLL discovery**: with the common `cupy-cuda12x` + `nvidia-*-cu12`
46
+ wheel setup, the CUDA DLLs live under `site-packages/nvidia/*/bin` and are not
47
+ on the Windows DLL search path, so CuPy failed to load `nvrtc`/`cublas`. The
48
+ backend now adds those directories to `PATH` and the DLL search list before
49
+ importing CuPy, so the GPU backend works out of the box (verified on an
50
+ RTX 5060 / sm_120).
51
+
52
+ ### Reworked — placeholder features are now genuinely quantum
53
+ Several advertised features previously returned classical surrogates, random
54
+ values, or zero gradients. They are now real implementations, each verified:
55
+ - **Quantum fidelity kernel / QSVM**: `FidelityKernel` computes
56
+ `|<phi(x1)|phi(x2)>|^2` by simulating the real feature-map circuits (was a
57
+ classical RBF). Gram matrix verified symmetric, unit-diagonal, PSD.
58
+ `ProjectedKernel` is now the real reduced-density-matrix kernel.
59
+ - **Hybrid quantum layer** (`QuantumMiddleLayer`): forward is now a real
60
+ encoding + variational circuit measured in Z (was `cos(x + params)`), with
61
+ exact parameter-shift gradients wired into the PyTorch and TensorFlow layers
62
+ (were all-zero gradients). Gradients verified against finite differences.
63
+ - **Quantum GAN**: real variational generator circuit and a trainable
64
+ discriminator with exact BCE gradients (was a global-phase no-op generator and
65
+ a random discriminator). Generator demonstrably learns a target distribution.
66
+ - **Quantum RL**: real parameterized-circuit Q-function with parameter-shift TD
67
+ updates (was `tanh` of a dot product). Agent learns the gridworld to optimum.
68
+ - **Error mitigation**: genuine PEC (quasi-probability Monte Carlo that recovers
69
+ the ideal expectation), CDR (exact Clifford simulation + regression), Quantum
70
+ Natural Gradient (true Fubini-Study metric, matches analytic values), and ZNE
71
+ noise scaling by real unitary folding (preserves the logical unitary).
72
+ - **GPU module**: `DistributedQNN`/`DataParallelQNN` now genuinely train via real
73
+ data-parallel gradient averaging (base class no longer raises
74
+ `NotImplementedError`); mixed-precision `train_step` uses a real gradient (was
75
+ random). Multi-GPU wall-clock speedup still requires GPU hardware.
76
+
77
+ ### Changed
78
+ - **Core simulator performance**: `QuantumState.apply_gate` now applies gates by
79
+ tensor contraction (O(2**n) per gate) instead of materializing the full
80
+ 2**n x 2**n operator (O(4**n)). Results are numerically identical (verified
81
+ against the previous implementation over thousands of random configurations);
82
+ 16-qubit circuits that were previously infeasible now run in tens of ms.
83
+ - Reconciled version metadata: `__version__` is the single source of truth and
84
+ `setup.py` reads it (previously `0.4.2` in the package vs `0.6.0` in setup).
85
+
86
+ ## [0.4.2] - 2025-12-22
87
+
88
+ ### Added
89
+ - **Complete pytest migration**: All 200 legacy script-style tests converted to pytest format
90
+ - **Hardware profiles extended**: AWS Braket, Azure Quantum provider support
91
+ - **2025 hardware updates**: IBM Heron, Google Willow, IonQ Forte profiles
92
+ - **Advanced backend tests**: 8 edge case and performance tests
93
+ - **GPU backend support**: CuPy backend availability testing
94
+ - **Enhanced test coverage**: 656 comprehensive tests (all passing ✅)
95
+
96
+ ### Changed
97
+ - Migrated all legacy test files from script execution to pytest format
98
+ - Updated test structure for better CI/CD compatibility
99
+ - Enhanced backend validation with 6 comprehensive backend tests
100
+ - Improved hardware profile testing (18 tests total)
101
+
102
+ ### Fixed
103
+ - Test suite compatibility issues
104
+ - Backend detection for GPU/CuPy
105
+ - Hardware profile version tracking
106
+
107
+ ### Documentation
108
+ - Updated README.md with v0.4.2 features and test count
109
+ - Added comprehensive testing section in README
110
+ - Created FINAL_TEST_SUMMARY.md with complete 656 test breakdown
111
+ - Fixed all documentation links (tutorials, examples, LICENSE)
112
+ - Updated version numbers across all files
113
+
114
+ ### Testing
115
+ - **656 total tests** (all passing ✅)
116
+ - All script-style tests converted to pytest
117
+ - Complete test coverage documentation
118
+
119
+ ## [0.4.1] - 2024-12-XX
120
+
121
+ ### Added
122
+ - Additional QML features and optimizations
123
+ - Performance improvements
124
+
125
+ ## [0.4.0] - 2024-12-XX
126
+
127
+ ### Added
128
+ - **Quantum Machine Learning Module**
129
+ - Parameterized gates (RX, RY, RZ with trainable parameters)
130
+ - VQE algorithm for molecular chemistry
131
+ - QAOA for combinatorial optimization
132
+ - Training framework with 4 optimizers (Adam, SGD, SPSA, RMSprop)
133
+ - Gradient computation (parameter shift rule, finite differences)
134
+ - 316 comprehensive tests
135
+ - 3 tutorials, 4 example scripts
136
+
137
+ ### Changed
138
+ - Enhanced circuit profiling
139
+ - Improved state visualization
140
+
141
+ ## [0.3.0] - 2024-12-XX
142
+
143
+ ### Added
144
+ - Realistic noise models (4 types)
145
+ - Hardware profiles (IBM, Google, IonQ, Rigetti)
146
+ - Qiskit Aer validation
147
+ - 89 new tests
148
+
149
+ ## [0.2.0] - 2024-XX-XX
150
+
151
+ ### Added
152
+ - Bidirectional circuit conversion with Qiskit
153
+ - CP gate support
154
+ - 12-qubit support
155
+
156
+ ## [0.1.1] - 2024-12-03
157
+
158
+ ### Fixed
159
+ - Fixed SWAP gate matrix for little-endian qubit ordering
160
+ - Fixed CNOT gate matrix for little-endian qubit ordering
161
+ - Fixed Toffoli gate matrix for little-endian qubit ordering
162
+ - Fixed entanglement detection for Bell states
163
+ - Rewrote multi-qubit gate expansion algorithm using tensor products
164
+
165
+ ### Added
166
+ - 69 comprehensive tests (100% pass rate)
167
+ - Test suites: quickstart, advanced, comprehensive, extreme, validation, production, edge cases
168
+ - Numerical stability tests (100+ consecutive operations)
169
+ - Quantum mechanics validation tests
170
+ - Production readiness tests
171
+
172
+ ### Changed
173
+ - Improved gate expansion algorithm for better accuracy
174
+ - Enhanced test coverage to 69 tests across 7 test suites
175
+
176
+ ## [0.1.0] - 2024-11-30
177
+
178
+ ### Added
179
+ - Initial release
180
+ - Core quantum state representation
181
+ - 15+ quantum gates (H, X, Y, Z, S, T, RX, RY, RZ, PHASE, CNOT, CZ, SWAP, Toffoli)
182
+ - Step-through debugger with breakpoints
183
+ - Circuit profiler with optimization suggestions
184
+ - State visualization tools
185
+ - Bloch sphere representation
186
+ - Support for up to 15 qubits
187
+ - Example circuits and demos
188
+ - Comprehensive documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quantum-debugger
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: Comprehensive quantum machine learning library with AutoML, GPU acceleration, advanced algorithms (QGANs, Quantum RL), transfer learning, and multi-framework support (Qiskit, PennyLane, Cirq, TensorFlow, PyTorch)
5
5
  Home-page: https://github.com/Raunakg2005/quantum-debugger
6
6
  Author: Raunak Kumar Gupta
@@ -28,6 +28,7 @@ License-File: AUTHORS.md
28
28
  Requires-Dist: numpy>=1.20.0
29
29
  Requires-Dist: scipy>=1.7.0
30
30
  Requires-Dist: matplotlib>=3.5.0
31
+ Requires-Dist: scikit-learn>=1.0.0
31
32
  Provides-Extra: qiskit
32
33
  Requires-Dist: qiskit>=1.0.0; extra == "qiskit"
33
34
  Provides-Extra: pennylane
@@ -83,7 +84,22 @@ Dynamic: summary
83
84
  [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://python.org)
84
85
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
85
86
 
86
- A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and **production-grade quantum machine learning**. From basic circuits to enterprise QML with one-line AutoML.
87
+ A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and quantum machine learning. From basic circuits to QML with one-line AutoML.
88
+
89
+ ## What's New in v0.6.1
90
+
91
+ Correctness, performance, and "make the advertised features real" release:
92
+ - **Faster core** - gate application is now O(2ⁿ) per gate (was O(4ⁿ)); optional
93
+ **GPU state-vector simulation** (`get_statevector(use_gpu=True)`, up to ~50-75x
94
+ at 20+ qubits in single precision).
95
+ - **Genuinely quantum QML** - the quantum kernel/QSVM, hybrid PyTorch/TF layers,
96
+ Quantum GAN, Quantum RL, and error mitigation (PEC, CDR, QNG, ZNE) are now real
97
+ circuit-based implementations with real gradients, each verified — not the
98
+ classical/placeholder stand-ins they were before.
99
+ - **Robust imports** - a broken optional dependency no longer breaks
100
+ `import quantum_debugger`.
101
+
102
+ See [CHANGELOG.md](CHANGELOG.md) for the full list.
87
103
 
88
104
  ## What's New in v0.6.0
89
105
 
@@ -141,11 +157,16 @@ predictions = model.predict(X_test)
141
157
  - **Auto-Publishing** - Automatic PyPI releases
142
158
  - **Code Quality** - Linting, formatting checks
143
159
 
144
- **GPU Acceleration (Week 13 - NEW)**
145
- - **Multi-GPU** - Distribute training across GPUs (1.8-3x speedup)
146
- - **Mixed Precision** - FP16/FP32 for 2-3x faster training
147
- - **Memory Optimization** - Gradient checkpointing (50% reduction)
148
- - **GPU Benchmarking** - Performance profiling tools
160
+ **GPU Acceleration (v0.6.1)**
161
+ - **GPU state-vector simulation** - `circuit.get_statevector(use_gpu=True)` runs
162
+ the whole circuit on the GPU (CuPy). Measured on an RTX 5060 vs CPU: ~6x in
163
+ double precision, and 50-75x in single precision (`precision='single'`) at
164
+ 20-22 qubits, where the CPU becomes the bottleneck.
165
+ - **Distributed / mixed-precision training** - real data-parallel gradient
166
+ averaging and mixed-precision steps. (Multi-GPU wall-clock speedup requires
167
+ multiple physical GPUs; on one device these run correctly but sequentially.)
168
+ - **Windows-friendly** - auto-discovers pip-installed CUDA runtime wheels
169
+ (`nvidia-*-cu12`) so the GPU backend works without a manual CUDA toolkit setup.
149
170
 
150
171
  See [complete documentation](https://github.com/Raunakg2005/quantum-debugger#documentation) for details.
151
172
 
@@ -376,10 +397,10 @@ pytest tests/ --cov=quantum_debugger --cov-report=html
376
397
 
377
398
  See [FINAL_TEST_SUMMARY.md](tests/FINAL_TEST_SUMMARY.md) for detailed test information.
378
399
 
379
- **Test Statistics:**
380
- - Total Tests: 384
381
- - Status: 100% passing
382
- - Skipped: 3 (AWS Braket - optional dependency)
400
+ **Test Statistics (v0.6.1):**
401
+ - ~980 tests passing (`pytest tests/ -m "not aws"`)
402
+ - GPU-hardware tests require a working CUDA + CuPy install; they skip otherwise
403
+ - A few tests are performance/timing based and may vary by machine
383
404
 
384
405
  ## Contributing
385
406
 
@@ -424,6 +445,5 @@ If you use quantum-debugger in your research, please cite:
424
445
 
425
446
  ---
426
447
 
427
- **Version:** 0.6.0
428
- **Status:** Production Ready
429
- **Last Updated:** January 14, 2026
448
+ **Version:** 0.6.1
449
+ **Last Updated:** July 2026
@@ -9,7 +9,22 @@
9
9
  [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://python.org)
10
10
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
11
11
 
12
- A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and **production-grade quantum machine learning**. From basic circuits to enterprise QML with one-line AutoML.
12
+ A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and quantum machine learning. From basic circuits to QML with one-line AutoML.
13
+
14
+ ## What's New in v0.6.1
15
+
16
+ Correctness, performance, and "make the advertised features real" release:
17
+ - **Faster core** - gate application is now O(2ⁿ) per gate (was O(4ⁿ)); optional
18
+ **GPU state-vector simulation** (`get_statevector(use_gpu=True)`, up to ~50-75x
19
+ at 20+ qubits in single precision).
20
+ - **Genuinely quantum QML** - the quantum kernel/QSVM, hybrid PyTorch/TF layers,
21
+ Quantum GAN, Quantum RL, and error mitigation (PEC, CDR, QNG, ZNE) are now real
22
+ circuit-based implementations with real gradients, each verified — not the
23
+ classical/placeholder stand-ins they were before.
24
+ - **Robust imports** - a broken optional dependency no longer breaks
25
+ `import quantum_debugger`.
26
+
27
+ See [CHANGELOG.md](CHANGELOG.md) for the full list.
13
28
 
14
29
  ## What's New in v0.6.0
15
30
 
@@ -67,11 +82,16 @@ predictions = model.predict(X_test)
67
82
  - **Auto-Publishing** - Automatic PyPI releases
68
83
  - **Code Quality** - Linting, formatting checks
69
84
 
70
- **GPU Acceleration (Week 13 - NEW)**
71
- - **Multi-GPU** - Distribute training across GPUs (1.8-3x speedup)
72
- - **Mixed Precision** - FP16/FP32 for 2-3x faster training
73
- - **Memory Optimization** - Gradient checkpointing (50% reduction)
74
- - **GPU Benchmarking** - Performance profiling tools
85
+ **GPU Acceleration (v0.6.1)**
86
+ - **GPU state-vector simulation** - `circuit.get_statevector(use_gpu=True)` runs
87
+ the whole circuit on the GPU (CuPy). Measured on an RTX 5060 vs CPU: ~6x in
88
+ double precision, and 50-75x in single precision (`precision='single'`) at
89
+ 20-22 qubits, where the CPU becomes the bottleneck.
90
+ - **Distributed / mixed-precision training** - real data-parallel gradient
91
+ averaging and mixed-precision steps. (Multi-GPU wall-clock speedup requires
92
+ multiple physical GPUs; on one device these run correctly but sequentially.)
93
+ - **Windows-friendly** - auto-discovers pip-installed CUDA runtime wheels
94
+ (`nvidia-*-cu12`) so the GPU backend works without a manual CUDA toolkit setup.
75
95
 
76
96
  See [complete documentation](https://github.com/Raunakg2005/quantum-debugger#documentation) for details.
77
97
 
@@ -302,10 +322,10 @@ pytest tests/ --cov=quantum_debugger --cov-report=html
302
322
 
303
323
  See [FINAL_TEST_SUMMARY.md](tests/FINAL_TEST_SUMMARY.md) for detailed test information.
304
324
 
305
- **Test Statistics:**
306
- - Total Tests: 384
307
- - Status: 100% passing
308
- - Skipped: 3 (AWS Braket - optional dependency)
325
+ **Test Statistics (v0.6.1):**
326
+ - ~980 tests passing (`pytest tests/ -m "not aws"`)
327
+ - GPU-hardware tests require a working CUDA + CuPy install; they skip otherwise
328
+ - A few tests are performance/timing based and may vary by machine
309
329
 
310
330
  ## Contributing
311
331
 
@@ -350,6 +370,5 @@ If you use quantum-debugger in your research, please cite:
350
370
 
351
371
  ---
352
372
 
353
- **Version:** 0.6.0
354
- **Status:** Production Ready
355
- **Last Updated:** January 14, 2026
373
+ **Version:** 0.6.1
374
+ **Last Updated:** July 2026
@@ -11,14 +11,21 @@ Features:
11
11
  - Zero-noise extrapolation (v0.4.0)
12
12
  - Qiskit integration
13
13
  - Hardware profile support
14
-
15
- Version: 0.4.0-dev
16
14
  """
17
15
 
18
- __version__ = "0.4.2"
19
- __author__ = "warlord9004"
16
+ __version__ = "0.6.1"
17
+ __author__ = "Raunak Kumar Gupta"
20
18
  __license__ = "MIT"
21
19
 
20
+ # Make pip-installed CUDA runtime DLLs discoverable (Windows) as early as
21
+ # possible, before anything imports CuPy, so the GPU backend works out of the box.
22
+ try:
23
+ from .backends._cuda_dll import ensure_cuda_dlls
24
+
25
+ ensure_cuda_dlls()
26
+ except Exception:
27
+ pass
28
+
22
29
  from .core.circuit import QuantumCircuit
23
30
  from .core.quantum_state import QuantumState
24
31
  from .core.gates import GateLibrary
@@ -54,40 +61,38 @@ from .mitigation import (
54
61
  # Optional integrations
55
62
  try:
56
63
  from .integrations import QiskitAdapter
57
- __all_integrations__ = ['QiskitAdapter']
58
- except ImportError:
64
+
65
+ __all_integrations__ = ["QiskitAdapter"]
66
+ except Exception: # optional integrations must never break the base import
59
67
  __all_integrations__ = []
60
68
 
61
69
  __all__ = [
62
70
  # Core
63
- 'QuantumCircuit',
64
- 'QuantumState',
65
- 'GateLibrary',
66
- 'QuantumDebugger',
67
- 'Breakpoint',
68
- 'BreakpointManager',
69
- 'StateInspector',
70
- 'CircuitProfiler',
71
- 'CircuitMetrics',
72
- 'StateVisualizer',
73
- 'BlochSphere',
74
-
71
+ "QuantumCircuit",
72
+ "QuantumState",
73
+ "GateLibrary",
74
+ "QuantumDebugger",
75
+ "Breakpoint",
76
+ "BreakpointManager",
77
+ "StateInspector",
78
+ "CircuitProfiler",
79
+ "CircuitMetrics",
80
+ "StateVisualizer",
81
+ "BlochSphere",
75
82
  # Noise Models (v0.3.0)
76
- 'DepolarizingNoise',
77
- 'AmplitudeDamping',
78
- 'PhaseDamping',
79
- 'ThermalRelaxation',
80
- 'CompositeNoise',
81
-
83
+ "DepolarizingNoise",
84
+ "AmplitudeDamping",
85
+ "PhaseDamping",
86
+ "ThermalRelaxation",
87
+ "CompositeNoise",
82
88
  # Hardware Profiles
83
- 'IBM_PERTH_2025',
84
- 'GOOGLE_SYCAMORE_2025',
85
- 'IONQ_ARIA_2025',
86
- 'RIGETTI_ASPEN_2025',
87
-
89
+ "IBM_PERTH_2025",
90
+ "GOOGLE_SYCAMORE_2025",
91
+ "IONQ_ARIA_2025",
92
+ "RIGETTI_ASPEN_2025",
88
93
  # Error Mitigation (v0.4.0)
89
- 'zero_noise_extrapolation',
90
- 'global_fold',
91
- 'local_fold',
92
- 'adaptive_fold',
94
+ "zero_noise_extrapolation",
95
+ "global_fold",
96
+ "local_fold",
97
+ "adaptive_fold",
93
98
  ] + __all_integrations__
@@ -15,6 +15,7 @@ except ImportError:
15
15
 
16
16
  try:
17
17
  from .sparse_backend import SparseBackend
18
+
18
19
  HAS_SPARSE = True
19
20
  except ImportError:
20
21
  HAS_SPARSE = False
@@ -28,50 +29,48 @@ except ImportError:
28
29
  _backend_cache = {}
29
30
 
30
31
 
31
- def get_backend(name='auto'):
32
+ def get_backend(name="auto"):
32
33
  """
33
34
  Get computational backend by name.
34
-
35
+
35
36
  Args:
36
37
  name: Backend name ('auto', 'numpy', 'numba', 'sparse', 'cupy')
37
38
  'auto' selects best available backend
38
-
39
+
39
40
  Returns:
40
41
  Backend instance
41
-
42
+
42
43
  Example:
43
44
  >>> backend = get_backend('numba')
44
45
  >>> backend = get_backend() # Auto-select
45
46
  """
46
47
  if name in _backend_cache:
47
48
  return _backend_cache[name]
48
-
49
- if name == 'auto':
49
+
50
+ if name == "auto":
50
51
  # Auto-select best available
51
52
  if HAS_NUMBA:
52
53
  backend = NumbaBackend()
53
54
  else:
54
55
  backend = NumPyBackend()
55
-
56
- elif name == 'numpy':
56
+
57
+ elif name == "numpy":
57
58
  backend = NumPyBackend()
58
-
59
- elif name == 'numba':
59
+
60
+ elif name == "numba":
60
61
  if not HAS_NUMBA:
61
62
  raise ImportError(
62
63
  "Numba not available. Install with: pip install numba\n"
63
64
  "Falling back to NumPy..."
64
65
  )
65
66
  backend = NumbaBackend()
66
-
67
- elif name == 'sparse':
67
+
68
+ elif name == "sparse":
68
69
  if not HAS_SPARSE:
69
- raise ImportError(
70
- "SciPy not available. Install with: pip install scipy"
71
- )
70
+ raise ImportError("SciPy not available. Install with: pip install scipy")
72
71
  backend = SparseBackend()
73
-
74
- elif name == 'cupy' or name == 'gpu':
72
+
73
+ elif name == "cupy" or name == "gpu":
75
74
  if not HAS_CUPY:
76
75
  raise ImportError(
77
76
  "CuPy not available. For GPU acceleration, install with:\n"
@@ -80,13 +79,13 @@ def get_backend(name='auto'):
80
79
  "Check https://docs.cupy.dev/en/stable/install.html"
81
80
  )
82
81
  backend = CuPyBackend()
83
-
82
+
84
83
  else:
85
84
  raise ValueError(
86
85
  f"Unknown backend '{name}'. "
87
86
  f"Available: 'auto', 'numpy', 'numba', 'sparse'"
88
87
  )
89
-
88
+
90
89
  _backend_cache[name] = backend
91
90
  return backend
92
91
 
@@ -94,44 +93,41 @@ def get_backend(name='auto'):
94
93
  def list_available_backends():
95
94
  """
96
95
  List all available backends on this system.
97
-
96
+
98
97
  Returns:
99
98
  dict: Backend name -> availability status
100
99
  """
101
100
  backends = {
102
- 'numpy': True, # Always available
103
- 'numba': HAS_NUMBA,
104
- 'sparse': HAS_SPARSE,
105
- 'cupy': HAS_CUPY,
101
+ "numpy": True, # Always available
102
+ "numba": HAS_NUMBA,
103
+ "sparse": HAS_SPARSE,
104
+ "cupy": HAS_CUPY,
106
105
  }
107
-
106
+
108
107
  return backends
109
108
 
110
109
 
111
110
  __all__ = [
112
- 'Backend',
113
- 'NumPyBackend',
114
- 'get_backend',
115
- 'list_available_backends',
111
+ "Backend",
112
+ "NumPyBackend",
113
+ "get_backend",
114
+ "list_available_backends",
116
115
  ]
117
116
 
118
117
  if HAS_NUMBA:
119
- __all__.append('NumbaBackend')
118
+ __all__.append("NumbaBackend")
120
119
 
121
120
  if HAS_SPARSE:
122
- __all__.append('SparseBackend')
121
+ __all__.append("SparseBackend")
123
122
 
124
123
  if HAS_CUPY:
125
- __all__.append('CuPyBackend')
124
+ __all__.append("CuPyBackend")
126
125
 
127
126
  # Add GPU backend
128
127
  try:
129
- from .gpu_backend import (
130
- GPUBackend,
131
- get_optimal_backend,
132
- benchmark_backends
133
- )
134
- __all__.extend(['GPUBackend', 'get_optimal_backend', 'benchmark_backends'])
128
+ from .gpu_backend import GPUBackend, get_optimal_backend, benchmark_backends
129
+
130
+ __all__.extend(["GPUBackend", "get_optimal_backend", "benchmark_backends"])
135
131
  except ImportError:
136
132
  pass
137
133
 
@@ -140,22 +136,23 @@ try:
140
136
  from .ibm_backend import IBMQuantumBackend, IBM_AVAILABLE
141
137
  from .aws_backend import AWSBraketBackend, AWS_AVAILABLE
142
138
  from .base_backend import QuantumBackend
143
-
144
- __all__.extend(['IBMQuantumBackend', 'AWSBraketBackend', 'QuantumBackend'])
145
-
139
+
140
+ __all__.extend(["IBMQuantumBackend", "AWSBraketBackend", "QuantumBackend"])
141
+
146
142
  def get_available_backends():
147
143
  """Get list of available quantum backends."""
148
144
  backends = []
149
145
  if IBM_AVAILABLE:
150
- backends.append('ibm')
146
+ backends.append("ibm")
151
147
  if AWS_AVAILABLE:
152
- backends.append('aws')
148
+ backends.append("aws")
153
149
  return backends
154
-
155
- __all__.append('get_available_backends')
156
-
150
+
151
+ __all__.append("get_available_backends")
152
+
157
153
  except ImportError:
158
154
  # Hardware backends not installed
159
155
  def get_available_backends():
160
156
  return []
161
- __all__.append('get_available_backends')
157
+
158
+ __all__.append("get_available_backends")