NetKet 3.20.0__tar.gz → 3.20.2__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 (381) hide show
  1. {netket-3.20.0 → netket-3.20.2}/PKG-INFO +2 -2
  2. {netket-3.20.0 → netket-3.20.2}/netket/_version.py +2 -2
  3. {netket-3.20.0 → netket-3.20.2}/netket/jax/__init__.py +16 -1
  4. {netket-3.20.0 → netket-3.20.2}/netket/jax/_jacobian/jacobian_dense.py +3 -2
  5. {netket-3.20.0 → netket-3.20.2}/netket/jax/_jacobian/logic.py +2 -2
  6. {netket-3.20.0 → netket-3.20.2}/netket/jax/_utils_tree.py +3 -12
  7. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_jacobian_dense.py +2 -1
  8. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_jacobian_pytree.py +5 -4
  9. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_onthefly.py +3 -2
  10. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/solver/solvers.py +7 -8
  11. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/nnx.py +12 -6
  12. {netket-3.20.0 → netket-3.20.2}/pyproject.toml +1 -1
  13. {netket-3.20.0 → netket-3.20.2}/.gitignore +0 -0
  14. {netket-3.20.0 → netket-3.20.2}/LICENSE +0 -0
  15. {netket-3.20.0 → netket-3.20.2}/README.md +0 -0
  16. {netket-3.20.0 → netket-3.20.2}/docs/sphinx_extensions/netket_citations.py +0 -0
  17. {netket-3.20.0 → netket-3.20.2}/netket/__init__.py +0 -0
  18. {netket-3.20.0 → netket-3.20.2}/netket/_src/driver/vmc_sr.py +0 -0
  19. {netket-3.20.0 → netket-3.20.2}/netket/_src/ngd/kwargs.py +0 -0
  20. {netket-3.20.0 → netket-3.20.2}/netket/_src/ngd/sr.py +0 -0
  21. {netket-3.20.0 → netket-3.20.2}/netket/_src/ngd/sr_srt_common.py +0 -0
  22. {netket-3.20.0 → netket-3.20.2}/netket/_src/ngd/srt.py +0 -0
  23. {netket-3.20.0 → netket-3.20.2}/netket/_src/ngd/srt_onthefly.py +0 -0
  24. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/hpsi_utils.py +0 -0
  25. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/permutation/permutation_operator_base.py +0 -0
  26. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/permutation/permutation_operator_construct.py +0 -0
  27. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/permutation/permutation_operator_fermion.py +0 -0
  28. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/permutation/permutation_operator_spin.py +0 -0
  29. {netket-3.20.0 → netket-3.20.2}/netket/_src/operator/permutation/trace_utils.py +0 -0
  30. {netket-3.20.0 → netket-3.20.2}/netket/_src/symmetry/representation.py +0 -0
  31. {netket-3.20.0 → netket-3.20.2}/netket/_src/symmetry/representation_construction.py +0 -0
  32. {netket-3.20.0 → netket-3.20.2}/netket/_src/vqs/transformed_vstate.py +0 -0
  33. {netket-3.20.0 → netket-3.20.2}/netket/callbacks/__init__.py +0 -0
  34. {netket-3.20.0 → netket-3.20.2}/netket/callbacks/convergence_stopping.py +0 -0
  35. {netket-3.20.0 → netket-3.20.2}/netket/callbacks/early_stopping.py +0 -0
  36. {netket-3.20.0 → netket-3.20.2}/netket/callbacks/invalid_loss_stopping.py +0 -0
  37. {netket-3.20.0 → netket-3.20.2}/netket/callbacks/timeout.py +0 -0
  38. {netket-3.20.0 → netket-3.20.2}/netket/driver/__init__.py +0 -0
  39. {netket-3.20.0 → netket-3.20.2}/netket/driver/abstract_variational_driver.py +0 -0
  40. {netket-3.20.0 → netket-3.20.2}/netket/driver/steady_state.py +0 -0
  41. {netket-3.20.0 → netket-3.20.2}/netket/driver/vmc.py +0 -0
  42. {netket-3.20.0 → netket-3.20.2}/netket/errors.py +0 -0
  43. {netket-3.20.0 → netket-3.20.2}/netket/exact.py +0 -0
  44. {netket-3.20.0 → netket-3.20.2}/netket/experimental/__init__.py +0 -0
  45. {netket-3.20.0 → netket-3.20.2}/netket/experimental/driver/__init__.py +0 -0
  46. {netket-3.20.0 → netket-3.20.2}/netket/experimental/driver/infidelity_sr.py +0 -0
  47. {netket-3.20.0 → netket-3.20.2}/netket/experimental/driver/tdvp.py +0 -0
  48. {netket-3.20.0 → netket-3.20.2}/netket/experimental/driver/tdvp_common.py +0 -0
  49. {netket-3.20.0 → netket-3.20.2}/netket/experimental/driver/tdvp_schmitt.py +0 -0
  50. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/__init__.py +0 -0
  51. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_integrator.py +0 -0
  52. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_integrator_params.py +0 -0
  53. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_integrator_state.py +0 -0
  54. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_rk/__init__.py +0 -0
  55. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_rk/_solver.py +0 -0
  56. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_rk/_tableau.py +0 -0
  57. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_solver.py +0 -0
  58. {netket-3.20.0 → netket-3.20.2}/netket/experimental/dynamics/_utils.py +0 -0
  59. {netket-3.20.0 → netket-3.20.2}/netket/experimental/geometry/__init__.py +0 -0
  60. {netket-3.20.0 → netket-3.20.2}/netket/experimental/geometry/cell.py +0 -0
  61. {netket-3.20.0 → netket-3.20.2}/netket/experimental/hilbert/__init__.py +0 -0
  62. {netket-3.20.0 → netket-3.20.2}/netket/experimental/hilbert/continuous_hilbert.py +0 -0
  63. {netket-3.20.0 → netket-3.20.2}/netket/experimental/hilbert/particle.py +0 -0
  64. {netket-3.20.0 → netket-3.20.2}/netket/experimental/hilbert/random/__init__.py +0 -0
  65. {netket-3.20.0 → netket-3.20.2}/netket/experimental/hilbert/random/particle.py +0 -0
  66. {netket-3.20.0 → netket-3.20.2}/netket/experimental/logging/__init__.py +0 -0
  67. {netket-3.20.0 → netket-3.20.2}/netket/experimental/logging/hdf5_log.py +0 -0
  68. {netket-3.20.0 → netket-3.20.2}/netket/experimental/models/__init__.py +0 -0
  69. {netket-3.20.0 → netket-3.20.2}/netket/experimental/models/fast_rnn.py +0 -0
  70. {netket-3.20.0 → netket-3.20.2}/netket/experimental/models/rnn.py +0 -0
  71. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/__init__.py +0 -0
  72. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/rnn/__init__.py +0 -0
  73. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/rnn/cells.py +0 -0
  74. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/rnn/layers.py +0 -0
  75. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/rnn/layers_fast.py +0 -0
  76. {netket-3.20.0 → netket-3.20.2}/netket/experimental/nn/rnn/ordering.py +0 -0
  77. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/__init__.py +0 -0
  78. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/infidelity/__init__.py +0 -0
  79. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/infidelity/exact.py +0 -0
  80. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/infidelity/expect.py +0 -0
  81. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/infidelity/infidelity_operator.py +0 -0
  82. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/renyi2/S2_operator.py +0 -0
  83. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/renyi2/__init__.py +0 -0
  84. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/renyi2/exact.py +0 -0
  85. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/renyi2/expect.py +0 -0
  86. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/variance/__init__.py +0 -0
  87. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/variance/exact.py +0 -0
  88. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/variance/expect.py +0 -0
  89. {netket-3.20.0 → netket-3.20.2}/netket/experimental/observable/variance/variance_operator.py +0 -0
  90. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/__init__.py +0 -0
  91. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_normal_order_utils.py +0 -0
  92. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/__init__.py +0 -0
  93. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/_conversion.py +0 -0
  94. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/_fermihubbard.py +0 -0
  95. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/_kernels.py +0 -0
  96. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/_operator_data.py +0 -0
  97. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_particle_number_conserving_fermionic/_operators.py +0 -0
  98. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/_pyscf_utils.py +0 -0
  99. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/fermion.py +0 -0
  100. {netket-3.20.0 → netket-3.20.2}/netket/experimental/operator/pyscf.py +0 -0
  101. {netket-3.20.0 → netket-3.20.2}/netket/experimental/qsr/__init__.py +0 -0
  102. {netket-3.20.0 → netket-3.20.2}/netket/experimental/qsr/dataset.py +0 -0
  103. {netket-3.20.0 → netket-3.20.2}/netket/experimental/qsr/driver.py +0 -0
  104. {netket-3.20.0 → netket-3.20.2}/netket/experimental/qsr/logic_helpers.py +0 -0
  105. {netket-3.20.0 → netket-3.20.2}/netket/experimental/sampler/__init__.py +0 -0
  106. {netket-3.20.0 → netket-3.20.2}/netket/experimental/sampler/rules/__init__.py +0 -0
  107. {netket-3.20.0 → netket-3.20.2}/netket/experimental/vqs/__init__.py +0 -0
  108. {netket-3.20.0 → netket-3.20.2}/netket/experimental/vqs/io.py +0 -0
  109. {netket-3.20.0 → netket-3.20.2}/netket/graph/__init__.py +0 -0
  110. {netket-3.20.0 → netket-3.20.2}/netket/graph/_lattice_draw.py +0 -0
  111. {netket-3.20.0 → netket-3.20.2}/netket/graph/_lattice_edge_logic.py +0 -0
  112. {netket-3.20.0 → netket-3.20.2}/netket/graph/abstract_graph.py +0 -0
  113. {netket-3.20.0 → netket-3.20.2}/netket/graph/common_lattices.py +0 -0
  114. {netket-3.20.0 → netket-3.20.2}/netket/graph/graph.py +0 -0
  115. {netket-3.20.0 → netket-3.20.2}/netket/graph/lattice.py +0 -0
  116. {netket-3.20.0 → netket-3.20.2}/netket/graph/space_group.py +0 -0
  117. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/__init__.py +0 -0
  118. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/abstract_hilbert.py +0 -0
  119. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/constraint/__init__.py +0 -0
  120. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/constraint/base.py +0 -0
  121. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/constraint/multiple.py +0 -0
  122. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/constraint/sum.py +0 -0
  123. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/constraint/sum_partition.py +0 -0
  124. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/discrete_hilbert.py +0 -0
  125. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/doubled_hilbert.py +0 -0
  126. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/fock.py +0 -0
  127. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/homogeneous.py +0 -0
  128. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/__init__.py +0 -0
  129. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/base.py +0 -0
  130. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/constrained_generic.py +0 -0
  131. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/constrained_sum.py +0 -0
  132. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/constrained_sum_partitions.py +0 -0
  133. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/unconstrained.py +0 -0
  134. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/index/uniform_tensor.py +0 -0
  135. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/qubit.py +0 -0
  136. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/__init__.py +0 -0
  137. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/base.py +0 -0
  138. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/doubled.py +0 -0
  139. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/fock.py +0 -0
  140. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/homogeneous.py +0 -0
  141. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/qubit.py +0 -0
  142. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/random/tensor_hilbert.py +0 -0
  143. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/spin.py +0 -0
  144. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/spin_orbital_fermions.py +0 -0
  145. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/tensor_hilbert.py +0 -0
  146. {netket-3.20.0 → netket-3.20.2}/netket/hilbert/tensor_hilbert_discrete.py +0 -0
  147. {netket-3.20.0 → netket-3.20.2}/netket/jax/_chunk_utils.py +0 -0
  148. {netket-3.20.0 → netket-3.20.2}/netket/jax/_expect.py +0 -0
  149. {netket-3.20.0 → netket-3.20.2}/netket/jax/_grad.py +0 -0
  150. {netket-3.20.0 → netket-3.20.2}/netket/jax/_jacobian/__init__.py +0 -0
  151. {netket-3.20.0 → netket-3.20.2}/netket/jax/_jacobian/default_mode.py +0 -0
  152. {netket-3.20.0 → netket-3.20.2}/netket/jax/_jacobian/jacobian_pytree.py +0 -0
  153. {netket-3.20.0 → netket-3.20.2}/netket/jax/_math.py +0 -0
  154. {netket-3.20.0 → netket-3.20.2}/netket/jax/_ntk/__init__.py +0 -0
  155. {netket-3.20.0 → netket-3.20.2}/netket/jax/_ntk/logic.py +0 -0
  156. {netket-3.20.0 → netket-3.20.2}/netket/jax/_ntk/utils.py +0 -0
  157. {netket-3.20.0 → netket-3.20.2}/netket/jax/_scanmap.py +0 -0
  158. {netket-3.20.0 → netket-3.20.2}/netket/jax/_sort.py +0 -0
  159. {netket-3.20.0 → netket-3.20.2}/netket/jax/_sparse.py +0 -0
  160. {netket-3.20.0 → netket-3.20.2}/netket/jax/_utils_dtype.py +0 -0
  161. {netket-3.20.0 → netket-3.20.2}/netket/jax/_utils_random.py +0 -0
  162. {netket-3.20.0 → netket-3.20.2}/netket/jax/_vjp.py +0 -0
  163. {netket-3.20.0 → netket-3.20.2}/netket/jax/_vjp_chunked.py +0 -0
  164. {netket-3.20.0 → netket-3.20.2}/netket/jax/_vmap_chunked.py +0 -0
  165. {netket-3.20.0 → netket-3.20.2}/netket/jax/sharding/__init__.py +0 -0
  166. {netket-3.20.0 → netket-3.20.2}/netket/jax/sharding/debug.py +0 -0
  167. {netket-3.20.0 → netket-3.20.2}/netket/jax/sharding/fixed_sharding_decorator.py +0 -0
  168. {netket-3.20.0 → netket-3.20.2}/netket/jax/sharding/fixed_sharding_utils.py +0 -0
  169. {netket-3.20.0 → netket-3.20.2}/netket/jax/sharding/flexible_sharding.py +0 -0
  170. {netket-3.20.0 → netket-3.20.2}/netket/logging/__init__.py +0 -0
  171. {netket-3.20.0 → netket-3.20.2}/netket/logging/base.py +0 -0
  172. {netket-3.20.0 → netket-3.20.2}/netket/logging/json_log.py +0 -0
  173. {netket-3.20.0 → netket-3.20.2}/netket/logging/runtime_log.py +0 -0
  174. {netket-3.20.0 → netket-3.20.2}/netket/logging/state_log.py +0 -0
  175. {netket-3.20.0 → netket-3.20.2}/netket/logging/tensorboard.py +0 -0
  176. {netket-3.20.0 → netket-3.20.2}/netket/models/README.md +0 -0
  177. {netket-3.20.0 → netket-3.20.2}/netket/models/__init__.py +0 -0
  178. {netket-3.20.0 → netket-3.20.2}/netket/models/autoreg.py +0 -0
  179. {netket-3.20.0 → netket-3.20.2}/netket/models/deepset.py +0 -0
  180. {netket-3.20.0 → netket-3.20.2}/netket/models/equivariant.py +0 -0
  181. {netket-3.20.0 → netket-3.20.2}/netket/models/fast_autoreg.py +0 -0
  182. {netket-3.20.0 → netket-3.20.2}/netket/models/full_space.py +0 -0
  183. {netket-3.20.0 → netket-3.20.2}/netket/models/gaussian.py +0 -0
  184. {netket-3.20.0 → netket-3.20.2}/netket/models/jastrow.py +0 -0
  185. {netket-3.20.0 → netket-3.20.2}/netket/models/mlp.py +0 -0
  186. {netket-3.20.0 → netket-3.20.2}/netket/models/ndm.py +0 -0
  187. {netket-3.20.0 → netket-3.20.2}/netket/models/rbm.py +0 -0
  188. {netket-3.20.0 → netket-3.20.2}/netket/models/slater.py +0 -0
  189. {netket-3.20.0 → netket-3.20.2}/netket/models/tensor_networks/__init__.py +0 -0
  190. {netket-3.20.0 → netket-3.20.2}/netket/models/tensor_networks/mpdo.py +0 -0
  191. {netket-3.20.0 → netket-3.20.2}/netket/models/tensor_networks/mps.py +0 -0
  192. {netket-3.20.0 → netket-3.20.2}/netket/models/utils.py +0 -0
  193. {netket-3.20.0 → netket-3.20.2}/netket/nn/__init__.py +0 -0
  194. {netket-3.20.0 → netket-3.20.2}/netket/nn/activation.py +0 -0
  195. {netket-3.20.0 → netket-3.20.2}/netket/nn/blocks/__init__.py +0 -0
  196. {netket-3.20.0 → netket-3.20.2}/netket/nn/blocks/deepset.py +0 -0
  197. {netket-3.20.0 → netket-3.20.2}/netket/nn/blocks/mlp.py +0 -0
  198. {netket-3.20.0 → netket-3.20.2}/netket/nn/blocks/symmetry_sum.py +0 -0
  199. {netket-3.20.0 → netket-3.20.2}/netket/nn/fast_masked_linear.py +0 -0
  200. {netket-3.20.0 → netket-3.20.2}/netket/nn/masked_linear.py +0 -0
  201. {netket-3.20.0 → netket-3.20.2}/netket/nn/symmetric_linear.py +0 -0
  202. {netket-3.20.0 → netket-3.20.2}/netket/nn/utils.py +0 -0
  203. {netket-3.20.0 → netket-3.20.2}/netket/operator/__init__.py +0 -0
  204. {netket-3.20.0 → netket-3.20.2}/netket/operator/_abstract_observable.py +0 -0
  205. {netket-3.20.0 → netket-3.20.2}/netket/operator/_abstract_operator.py +0 -0
  206. {netket-3.20.0 → netket-3.20.2}/netket/operator/_abstract_super_operator.py +0 -0
  207. {netket-3.20.0 → netket-3.20.2}/netket/operator/_bose_hubbard/__init__.py +0 -0
  208. {netket-3.20.0 → netket-3.20.2}/netket/operator/_bose_hubbard/base.py +0 -0
  209. {netket-3.20.0 → netket-3.20.2}/netket/operator/_bose_hubbard/jax.py +0 -0
  210. {netket-3.20.0 → netket-3.20.2}/netket/operator/_bose_hubbard/numba.py +0 -0
  211. {netket-3.20.0 → netket-3.20.2}/netket/operator/_continuous_operator.py +0 -0
  212. {netket-3.20.0 → netket-3.20.2}/netket/operator/_discrete_operator.py +0 -0
  213. {netket-3.20.0 → netket-3.20.2}/netket/operator/_discrete_operator_jax.py +0 -0
  214. {netket-3.20.0 → netket-3.20.2}/netket/operator/_fermion2nd/__init__.py +0 -0
  215. {netket-3.20.0 → netket-3.20.2}/netket/operator/_fermion2nd/base.py +0 -0
  216. {netket-3.20.0 → netket-3.20.2}/netket/operator/_fermion2nd/jax.py +0 -0
  217. {netket-3.20.0 → netket-3.20.2}/netket/operator/_fermion2nd/numba.py +0 -0
  218. {netket-3.20.0 → netket-3.20.2}/netket/operator/_fermion2nd/utils.py +0 -0
  219. {netket-3.20.0 → netket-3.20.2}/netket/operator/_graph_operator.py +0 -0
  220. {netket-3.20.0 → netket-3.20.2}/netket/operator/_hamiltonian.py +0 -0
  221. {netket-3.20.0 → netket-3.20.2}/netket/operator/_heisenberg.py +0 -0
  222. {netket-3.20.0 → netket-3.20.2}/netket/operator/_ising/__init__.py +0 -0
  223. {netket-3.20.0 → netket-3.20.2}/netket/operator/_ising/base.py +0 -0
  224. {netket-3.20.0 → netket-3.20.2}/netket/operator/_ising/jax.py +0 -0
  225. {netket-3.20.0 → netket-3.20.2}/netket/operator/_ising/numba.py +0 -0
  226. {netket-3.20.0 → netket-3.20.2}/netket/operator/_kinetic.py +0 -0
  227. {netket-3.20.0 → netket-3.20.2}/netket/operator/_lazy.py +0 -0
  228. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_liouvillian.py +0 -0
  229. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/__init__.py +0 -0
  230. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/base.py +0 -0
  231. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/compile_helpers.py +0 -0
  232. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/convert.py +0 -0
  233. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/helpers.py +0 -0
  234. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/jax.py +0 -0
  235. {netket-3.20.0 → netket-3.20.2}/netket/operator/_local_operator/numba.py +0 -0
  236. {netket-3.20.0 → netket-3.20.2}/netket/operator/_pauli_strings/__init__.py +0 -0
  237. {netket-3.20.0 → netket-3.20.2}/netket/operator/_pauli_strings/base.py +0 -0
  238. {netket-3.20.0 → netket-3.20.2}/netket/operator/_pauli_strings/jax.py +0 -0
  239. {netket-3.20.0 → netket-3.20.2}/netket/operator/_pauli_strings/numba.py +0 -0
  240. {netket-3.20.0 → netket-3.20.2}/netket/operator/_potential.py +0 -0
  241. {netket-3.20.0 → netket-3.20.2}/netket/operator/_prod/__init__.py +0 -0
  242. {netket-3.20.0 → netket-3.20.2}/netket/operator/_prod/base.py +0 -0
  243. {netket-3.20.0 → netket-3.20.2}/netket/operator/_prod/discrete_jax_operator.py +0 -0
  244. {netket-3.20.0 → netket-3.20.2}/netket/operator/_prod/discrete_operator.py +0 -0
  245. {netket-3.20.0 → netket-3.20.2}/netket/operator/_prod/operator.py +0 -0
  246. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/__init__.py +0 -0
  247. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/base.py +0 -0
  248. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/continuous.py +0 -0
  249. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/discrete_jax_operator.py +0 -0
  250. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/discrete_operator.py +0 -0
  251. {netket-3.20.0 → netket-3.20.2}/netket/operator/_sum/operator.py +0 -0
  252. {netket-3.20.0 → netket-3.20.2}/netket/operator/boson.py +0 -0
  253. {netket-3.20.0 → netket-3.20.2}/netket/operator/fermion.py +0 -0
  254. {netket-3.20.0 → netket-3.20.2}/netket/operator/permutation.py +0 -0
  255. {netket-3.20.0 → netket-3.20.2}/netket/operator/spin.py +0 -0
  256. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/__init__.py +0 -0
  257. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/linear_operator.py +0 -0
  258. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/preconditioner.py +0 -0
  259. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/__init__.py +0 -0
  260. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/common.py +0 -0
  261. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/default.py +0 -0
  262. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_jacobian.py +0 -0
  263. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_jacobian_common.py +0 -0
  264. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/qgt/qgt_onthefly_logic.py +0 -0
  265. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/solver/__init__.py +0 -0
  266. {netket-3.20.0 → netket-3.20.2}/netket/optimizer/sr.py +0 -0
  267. {netket-3.20.0 → netket-3.20.2}/netket/sampler/__init__.py +0 -0
  268. {netket-3.20.0 → netket-3.20.2}/netket/sampler/autoreg.py +0 -0
  269. {netket-3.20.0 → netket-3.20.2}/netket/sampler/base.py +0 -0
  270. {netket-3.20.0 → netket-3.20.2}/netket/sampler/exact.py +0 -0
  271. {netket-3.20.0 → netket-3.20.2}/netket/sampler/metropolis.py +0 -0
  272. {netket-3.20.0 → netket-3.20.2}/netket/sampler/metropolis_numpy.py +0 -0
  273. {netket-3.20.0 → netket-3.20.2}/netket/sampler/parallel_tempering.py +0 -0
  274. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/__init__.py +0 -0
  275. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/base.py +0 -0
  276. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/continuous_gaussian.py +0 -0
  277. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/custom_numpy.py +0 -0
  278. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/exchange.py +0 -0
  279. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/fermion_2nd.py +0 -0
  280. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/fixed.py +0 -0
  281. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/global_flip_rule.py +0 -0
  282. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/hamiltonian.py +0 -0
  283. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/hamiltonian_numpy.py +0 -0
  284. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/langevin.py +0 -0
  285. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/local.py +0 -0
  286. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/local_numpy.py +0 -0
  287. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/multiple.py +0 -0
  288. {netket-3.20.0 → netket-3.20.2}/netket/sampler/rules/tensor.py +0 -0
  289. {netket-3.20.0 → netket-3.20.2}/netket/stats/__init__.py +0 -0
  290. {netket-3.20.0 → netket-3.20.2}/netket/stats/_autocorr.py +0 -0
  291. {netket-3.20.0 → netket-3.20.2}/netket/stats/mc_stats.py +0 -0
  292. {netket-3.20.0 → netket-3.20.2}/netket/stats/mc_stats_old.py +0 -0
  293. {netket-3.20.0 → netket-3.20.2}/netket/stats/mpi_stats.py +0 -0
  294. {netket-3.20.0 → netket-3.20.2}/netket/symmetry/__init__.py +0 -0
  295. {netket-3.20.0 → netket-3.20.2}/netket/symmetry/group/__init__.py +0 -0
  296. {netket-3.20.0 → netket-3.20.2}/netket/tools/__init__.py +0 -0
  297. {netket-3.20.0 → netket-3.20.2}/netket/tools/_common.py +0 -0
  298. {netket-3.20.0 → netket-3.20.2}/netket/tools/_cpu_info.py +0 -0
  299. {netket-3.20.0 → netket-3.20.2}/netket/tools/check_mpi.py +0 -0
  300. {netket-3.20.0 → netket-3.20.2}/netket/tools/djaxrun.py +0 -0
  301. {netket-3.20.0 → netket-3.20.2}/netket/tools/info.py +0 -0
  302. {netket-3.20.0 → netket-3.20.2}/netket/utils/__init__.py +0 -0
  303. {netket-3.20.0 → netket-3.20.2}/netket/utils/_dependencies_check.py +0 -0
  304. {netket-3.20.0 → netket-3.20.2}/netket/utils/_serialization.py +0 -0
  305. {netket-3.20.0 → netket-3.20.2}/netket/utils/_tips.py +0 -0
  306. {netket-3.20.0 → netket-3.20.2}/netket/utils/api_utils.py +0 -0
  307. {netket-3.20.0 → netket-3.20.2}/netket/utils/array.py +0 -0
  308. {netket-3.20.0 → netket-3.20.2}/netket/utils/citations/__init__.py +0 -0
  309. {netket-3.20.0 → netket-3.20.2}/netket/utils/citations/cli.py +0 -0
  310. {netket-3.20.0 → netket-3.20.2}/netket/utils/citations/core.py +0 -0
  311. {netket-3.20.0 → netket-3.20.2}/netket/utils/citations/docs.py +0 -0
  312. {netket-3.20.0 → netket-3.20.2}/netket/utils/citations/internal_citations.bib +0 -0
  313. {netket-3.20.0 → netket-3.20.2}/netket/utils/config_flags.py +0 -0
  314. {netket-3.20.0 → netket-3.20.2}/netket/utils/deprecation.py +0 -0
  315. {netket-3.20.0 → netket-3.20.2}/netket/utils/dispatch.py +0 -0
  316. {netket-3.20.0 → netket-3.20.2}/netket/utils/display/__init__.py +0 -0
  317. {netket-3.20.0 → netket-3.20.2}/netket/utils/display/repr.py +0 -0
  318. {netket-3.20.0 → netket-3.20.2}/netket/utils/float.py +0 -0
  319. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/__init__.py +0 -0
  320. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/_group.py +0 -0
  321. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/_permutation_group.py +0 -0
  322. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/_point_group.py +0 -0
  323. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/_semigroup.py +0 -0
  324. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/axial.py +0 -0
  325. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/cubic.py +0 -0
  326. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/icosa.py +0 -0
  327. {netket-3.20.0 → netket-3.20.2}/netket/utils/group/planar.py +0 -0
  328. {netket-3.20.0 → netket-3.20.2}/netket/utils/history/__init__.py +0 -0
  329. {netket-3.20.0 → netket-3.20.2}/netket/utils/history/accum.py +0 -0
  330. {netket-3.20.0 → netket-3.20.2}/netket/utils/history/history.py +0 -0
  331. {netket-3.20.0 → netket-3.20.2}/netket/utils/history/history_dict.py +0 -0
  332. {netket-3.20.0 → netket-3.20.2}/netket/utils/holomorphic.py +0 -0
  333. {netket-3.20.0 → netket-3.20.2}/netket/utils/iterators.py +0 -0
  334. {netket-3.20.0 → netket-3.20.2}/netket/utils/jax.py +0 -0
  335. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/__init__.py +0 -0
  336. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/base.py +0 -0
  337. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/equinox.py +0 -0
  338. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/flax.py +0 -0
  339. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/haiku.py +0 -0
  340. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/jax.py +0 -0
  341. {netket-3.20.0 → netket-3.20.2}/netket/utils/model_frameworks/nnx_wrapped.py +0 -0
  342. {netket-3.20.0 → netket-3.20.2}/netket/utils/moduletools.py +0 -0
  343. {netket-3.20.0 → netket-3.20.2}/netket/utils/mpi/__init__.py +0 -0
  344. {netket-3.20.0 → netket-3.20.2}/netket/utils/mpi/mpi.py +0 -0
  345. {netket-3.20.0 → netket-3.20.2}/netket/utils/mpi/primitives.py +0 -0
  346. {netket-3.20.0 → netket-3.20.2}/netket/utils/numbers.py +0 -0
  347. {netket-3.20.0 → netket-3.20.2}/netket/utils/optional_deps.py +0 -0
  348. {netket-3.20.0 → netket-3.20.2}/netket/utils/partial.py +0 -0
  349. {netket-3.20.0 → netket-3.20.2}/netket/utils/seed.py +0 -0
  350. {netket-3.20.0 → netket-3.20.2}/netket/utils/static_number.py +0 -0
  351. {netket-3.20.0 → netket-3.20.2}/netket/utils/static_range.py +0 -0
  352. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/__init__.py +0 -0
  353. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/dataclass.py +0 -0
  354. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/fields.py +0 -0
  355. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/pytree.py +0 -0
  356. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/pytree_serialization_sharding.py +0 -0
  357. {netket-3.20.0 → netket-3.20.2}/netket/utils/struct/utils.py +0 -0
  358. {netket-3.20.0 → netket-3.20.2}/netket/utils/summation.py +0 -0
  359. {netket-3.20.0 → netket-3.20.2}/netket/utils/timing.py +0 -0
  360. {netket-3.20.0 → netket-3.20.2}/netket/utils/types.py +0 -0
  361. {netket-3.20.0 → netket-3.20.2}/netket/utils/version_check.py +0 -0
  362. {netket-3.20.0 → netket-3.20.2}/netket/vqs/__init__.py +0 -0
  363. {netket-3.20.0 → netket-3.20.2}/netket/vqs/base.py +0 -0
  364. {netket-3.20.0 → netket-3.20.2}/netket/vqs/full_summ/__init__.py +0 -0
  365. {netket-3.20.0 → netket-3.20.2}/netket/vqs/full_summ/expect.py +0 -0
  366. {netket-3.20.0 → netket-3.20.2}/netket/vqs/full_summ/state.py +0 -0
  367. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/__init__.py +0 -0
  368. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/common.py +0 -0
  369. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/kernels.py +0 -0
  370. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_mixed_state/__init__.py +0 -0
  371. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_mixed_state/expect.py +0 -0
  372. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_mixed_state/expect_chunked.py +0 -0
  373. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_mixed_state/state.py +0 -0
  374. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/__init__.py +0 -0
  375. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect.py +0 -0
  376. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect_chunked.py +0 -0
  377. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect_forces.py +0 -0
  378. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect_forces_chunked.py +0 -0
  379. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect_grad.py +0 -0
  380. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/expect_grad_chunked.py +0 -0
  381. {netket-3.20.0 → netket-3.20.2}/netket/vqs/mc/mc_state/state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NetKet
3
- Version: 3.20.0
3
+ Version: 3.20.2
4
4
  Summary: Netket : Machine Learning toolbox for many-body quantum systems.
5
5
  Project-URL: homepage, https://www.netket.org
6
6
  Project-URL: documentation, https://netket.readthedocs.io/en/latest/#
@@ -46,7 +46,7 @@ Requires-Dist: pytest-json-report>=1.3; extra == 'dev'
46
46
  Requires-Dist: pytest-xdist[psutil]>=2; extra == 'dev'
47
47
  Requires-Dist: pytest>=6; extra == 'dev'
48
48
  Requires-Dist: qutip>=5; extra == 'dev'
49
- Requires-Dist: ruff==0.12.2; extra == 'dev'
49
+ Requires-Dist: ruff==0.14.1; extra == 'dev'
50
50
  Requires-Dist: wheel>=0.38.1; extra == 'dev'
51
51
  Provides-Extra: docs
52
52
  Requires-Dist: ipywidgets>=8.1.7; extra == 'docs'
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '3.20.0'
32
- __version_tuple__ = version_tuple = (3, 20, 0)
31
+ __version__ = version = '3.20.2'
32
+ __version_tuple__ = version_tuple = (3, 20, 2)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -23,7 +23,7 @@ from ._utils_dtype import (
23
23
  )
24
24
 
25
25
  from ._utils_tree import (
26
- tree_ravel,
26
+ tree_ravel as _deprecated_tree_ravel,
27
27
  tree_size,
28
28
  eval_shape,
29
29
  tree_leaf_isreal,
@@ -69,3 +69,18 @@ from . import sharding
69
69
  from netket.utils import _hide_submodules
70
70
 
71
71
  _hide_submodules(__name__, ignore="sharding")
72
+
73
+ # Deprecation machinery
74
+ _deprecations = {
75
+ # January 2025, NetKet 3.16
76
+ "tree_ravel": (
77
+ "netket.jax.tree_ravel is deprecated: use jax.flatten_util.ravel_pytree directly",
78
+ _deprecated_tree_ravel,
79
+ ),
80
+ }
81
+
82
+ from netket.utils.deprecation import deprecation_getattr as _deprecation_getattr
83
+
84
+ __getattr__ = _deprecation_getattr(__name__, _deprecations)
85
+
86
+ del _deprecation_getattr
@@ -13,6 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from jax import numpy as jnp
16
+ from jax.flatten_util import ravel_pytree
16
17
 
17
18
  from netket.utils.types import Array, PyTree
18
19
  import netket.jax as nkjax
@@ -25,9 +26,9 @@ from .jacobian_pytree import (
25
26
 
26
27
  def ravel(x: PyTree) -> Array:
27
28
  """
28
- shorthand for tree_ravel
29
+ shorthand for ravel_pytree
29
30
  """
30
- dense, _ = nkjax.tree_ravel(x)
31
+ dense, _ = ravel_pytree(x)
31
32
  return dense
32
33
 
33
34
 
@@ -121,8 +121,8 @@ def jacobian(
121
121
  dimension matches the number of samples (the first axis of **samples**),
122
122
  while the second dimension will match the total number of parameters.
123
123
  This raveling is equivalent to :func:`jax.vmap` of
124
- :func:`netket.jax.tree_ravel`,
125
- :code:`jax.vmap(nk.jax.tree_ravel, nk.jax.jacobian(...))`.
124
+ :func:`jax.flatten_util.ravel_pytree`,
125
+ :code:`jax.vmap(ravel_pytree, nk.jax.jacobian(...))`.
126
126
  If using **complex** mode with real parameters the returned tensor
127
127
  has 3 dimensions, where the first and last match the other modes while
128
128
  the middle one has size 2, and encodes the gradient of the real and
@@ -17,15 +17,13 @@ from collections.abc import Callable
17
17
 
18
18
 
19
19
  import jax
20
- import netket.jax as nkjax
21
20
  from jax import numpy as jnp
22
21
  from jax.tree_util import (
23
22
  register_pytree_node,
24
- tree_flatten,
25
- tree_unflatten,
26
23
  tree_map,
27
24
  tree_leaves,
28
25
  )
26
+ from jax.flatten_util import ravel_pytree
29
27
 
30
28
  from netket.utils.types import PyTree, Scalar
31
29
  from netket.utils.numbers import is_scalar
@@ -43,14 +41,7 @@ def tree_ravel(pytree: PyTree) -> tuple[jnp.ndarray, Callable]:
43
41
  unflattening a 1D vector of the same length back to a pytree of of the same
44
42
  structure as the input ``pytree``.
45
43
  """
46
- leaves, treedef = tree_flatten(pytree)
47
- flat, unravel_list = nkjax.vjp(_ravel_list, *leaves)
48
- unravel_pytree = lambda flat: tree_unflatten(treedef, unravel_list(flat))
49
- return flat, unravel_pytree
50
-
51
-
52
- def _ravel_list(*lst):
53
- return jnp.concatenate([jnp.ravel(elt) for elt in lst]) if lst else jnp.array([])
44
+ return ravel_pytree(pytree)
54
45
 
55
46
 
56
47
  def eval_shape(fun, *args, has_aux=False, **kwargs):
@@ -131,7 +122,7 @@ def tree_norm(a: PyTree, ord: int = 2) -> Scalar:
131
122
  r"""
132
123
  Compute the norm of a pytree, intended as a 1D vector of values.
133
124
 
134
- Equivalent to :code:`jnp.linalg.norm(nk.jax.tree_ravel(a)[0], ord)`.
125
+ Equivalent to :code:`jnp.linalg.norm(jax.flatten_util.ravel_pytree(a)[0], ord)`.
135
126
 
136
127
  Args:
137
128
  a: A pytree, interpreted as a vector
@@ -15,6 +15,7 @@
15
15
 
16
16
  import jax
17
17
  from jax import numpy as jnp
18
+ from jax.flatten_util import ravel_pytree
18
19
  from flax import struct
19
20
 
20
21
  from netket.utils.types import Scalar, PyTree
@@ -286,6 +287,6 @@ def convert_tree_to_dense_format(vec, mode, *, disable=False):
286
287
  if mode != "holomorphic":
287
288
  vec, reassemble = nkjax.tree_to_real(vec)
288
289
  if not hasattr(vec, "ndim"):
289
- vec, unravel = nkjax.tree_ravel(vec)
290
+ vec, unravel = ravel_pytree(vec)
290
291
 
291
292
  return vec, lambda x: reassemble(unravel(x))
@@ -15,6 +15,7 @@
15
15
 
16
16
  import jax
17
17
  from jax import numpy as jnp
18
+ from jax.flatten_util import ravel_pytree
18
19
  from flax import struct
19
20
 
20
21
  from netket.utils.types import Array, PyTree, Scalar
@@ -71,7 +72,7 @@ class QGTJacobianPyTreeT(LinearOperator):
71
72
  def __matmul__(self, vec: PyTree | Array) -> PyTree | Array:
72
73
  # Turn vector RHS into PyTree
73
74
  if hasattr(vec, "ndim"):
74
- _, unravel = nkjax.tree_ravel(self._params_structure)
75
+ _, unravel = ravel_pytree(self._params_structure)
75
76
  vec = unravel(vec)
76
77
  ravel = True
77
78
  else:
@@ -98,7 +99,7 @@ class QGTJacobianPyTreeT(LinearOperator):
98
99
 
99
100
  # Ravel PyTree back into vector as needed
100
101
  if ravel:
101
- result, _ = nkjax.tree_ravel(result)
102
+ result, _ = ravel_pytree(result)
102
103
 
103
104
  return result
104
105
 
@@ -179,12 +180,12 @@ class QGTJacobianPyTreeT(LinearOperator):
179
180
  if self.mode == "complex" or self.mode == "imag":
180
181
  # I want to iterate across the samples and real/imaginary part
181
182
  O = jax.tree_util.tree_map(lambda x: x.reshape(-1, *x.shape[2:]), O)
182
- O = jax.vmap(lambda l: nkjax.tree_ravel(l)[0])(O)
183
+ O = jax.vmap(lambda l: ravel_pytree(l)[0])(O)
183
184
 
184
185
  if self.scale is None:
185
186
  diag = jnp.eye(O.shape[-1])
186
187
  else:
187
- scale, _ = nkjax.tree_ravel(self.scale)
188
+ scale, _ = ravel_pytree(self.scale)
188
189
  O = O * scale[jnp.newaxis, :]
189
190
  diag = jnp.diag(scale**2)
190
191
 
@@ -17,6 +17,7 @@ import warnings
17
17
 
18
18
  import jax
19
19
  from jax import numpy as jnp
20
+ from jax.flatten_util import ravel_pytree
20
21
  from flax import struct
21
22
 
22
23
  import netket.jax as nkjax
@@ -248,7 +249,7 @@ def onthefly_mat_treevec(
248
249
  """
249
250
  )
250
251
 
251
- _, unravel = nkjax.tree_ravel(S._params)
252
+ _, unravel = ravel_pytree(S._params)
252
253
  vec = unravel(vec)
253
254
  ravel_result = True
254
255
  else:
@@ -261,7 +262,7 @@ def onthefly_mat_treevec(
261
262
  res = S._mat_vec(vec, S.diag_shift)
262
263
 
263
264
  if ravel_result:
264
- res, _ = nkjax.tree_ravel(res)
265
+ res, _ = ravel_pytree(res)
265
266
 
266
267
  return res
267
268
 
@@ -16,8 +16,7 @@
16
16
  import jax
17
17
  import jax.numpy as jnp
18
18
  import jax.scipy as jsp
19
-
20
- from netket.jax import tree_ravel
19
+ from jax.flatten_util import ravel_pytree
21
20
  from netket.utils.api_utils import partial_from_kwargs
22
21
  from netket.utils.deprecation import warn_deprecation
23
22
 
@@ -100,7 +99,7 @@ def pinv_smooth(
100
99
 
101
100
  if not isinstance(A, jax.Array):
102
101
  A = A.to_dense()
103
- b, unravel = tree_ravel(b)
102
+ b, unravel = ravel_pytree(b)
104
103
 
105
104
  Σ, U = jnp.linalg.eigh(A)
106
105
 
@@ -166,7 +165,7 @@ def pinv(A, b, *, rtol: float = 1e-12, x0=None, rcond: float = None):
166
165
 
167
166
  if not isinstance(A, jax.Array):
168
167
  A = A.to_dense()
169
- b, unravel = tree_ravel(b)
168
+ b, unravel = ravel_pytree(b)
170
169
 
171
170
  A_inv = jnp.linalg.pinv(A, rtol=rtol, hermitian=True)
172
171
 
@@ -197,7 +196,7 @@ def svd(A, b, *, rcond=None, x0=None):
197
196
 
198
197
  if not isinstance(A, jax.Array):
199
198
  A = A.to_dense()
200
- b, unravel = tree_ravel(b)
199
+ b, unravel = ravel_pytree(b)
201
200
 
202
201
  x, residuals, rank, s = jnp.linalg.lstsq(A, b, rcond=rcond)
203
202
 
@@ -228,7 +227,7 @@ def cholesky(A, b, *, lower=False, x0=None):
228
227
 
229
228
  if not isinstance(A, jax.Array):
230
229
  A = A.to_dense()
231
- b, unravel = tree_ravel(b)
230
+ b, unravel = ravel_pytree(b)
232
231
 
233
232
  c, low = jsp.linalg.cho_factor(A, lower=lower)
234
233
  x = jsp.linalg.cho_solve((c, low), b)
@@ -259,7 +258,7 @@ def LU(A, b, *, trans=0, x0=None):
259
258
 
260
259
  if not isinstance(A, jax.Array):
261
260
  A = A.to_dense()
262
- b, unravel = tree_ravel(b)
261
+ b, unravel = ravel_pytree(b)
263
262
 
264
263
  lu, piv = jsp.linalg.lu_factor(A)
265
264
  x = jsp.linalg.lu_solve((lu, piv), b, trans=0)
@@ -291,7 +290,7 @@ def solve(A, b, *, assume_a="pos", x0=None):
291
290
 
292
291
  if not isinstance(A, jax.Array):
293
292
  A = A.to_dense()
294
- b, unravel = tree_ravel(b)
293
+ b, unravel = ravel_pytree(b)
295
294
 
296
295
  x = jsp.linalg.solve(A, b, assume_a="pos")
297
296
  return unravel(x), None
@@ -80,12 +80,18 @@ class NNXWrapper:
80
80
  return nnx_module
81
81
 
82
82
  def __getattr__(self, name):
83
- if hasattr(_get_graphdef_type(self.graphdef), name):
84
- return partial(self.apply, method=name)
85
- raise AttributeError(
86
- f"{_get_graphdef_type(self.static_module)} (wrapped into a '{type(self).__name__}')"
87
- f"has no attribute '{name}'"
88
- )
83
+ # Use try-except instead of hasattr to avoid infinite recursion
84
+ # when checking for attributes that don't exist
85
+ graphdef_type = _get_graphdef_type(object.__getattribute__(self, "graphdef"))
86
+ try:
87
+ # Check if the attribute exists on the graphdef type's class
88
+ getattr(graphdef_type, name)
89
+ return partial(object.__getattribute__(self, "apply"), method=name)
90
+ except AttributeError:
91
+ raise AttributeError(
92
+ f"{graphdef_type} (wrapped into a '{type(self).__name__}')"
93
+ f" has no attribute '{name}'"
94
+ )
89
95
 
90
96
  def __hash__(self):
91
97
  return hash(("NNXWrapper", self.graphdef))
@@ -63,7 +63,7 @@ dev = [
63
63
  "coverage>=5",
64
64
  "pre-commit>=2.7",
65
65
  "black==25.1.0",
66
- "ruff==0.12.2",
66
+ "ruff==0.14.1",
67
67
  "qutip>=5",
68
68
  "wheel>=0.38.1",
69
69
  "build>=1",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes