mplang-nightly 0.1.dev261__tar.gz → 0.1.dev263__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 (380) hide show
  1. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/crypto_impl.py +29 -0
  3. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/table_impl.py +4 -4
  4. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/crypto.py +71 -8
  5. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/tensor.py +0 -3
  6. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_crypto_impl.py +102 -0
  7. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/.gitignore +0 -0
  8. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/LICENSE +0 -0
  9. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/README.md +0 -0
  10. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/conf/3pc.yaml +0 -0
  11. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/stax_nn/README.md +0 -0
  12. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/stax_nn/models.py +0 -0
  13. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/stax_nn/stax_nn.py +0 -0
  14. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/bench_fhe_hist.py +0 -0
  15. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/hist_jax.py +0 -0
  16. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/hist_jax_test.py +0 -0
  17. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/naive_np.py +0 -0
  18. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/readme.md +0 -0
  19. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/sgb.py +0 -0
  20. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/examples/v1/xgboost/sgb_test.py +0 -0
  21. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/hatch_build.py +0 -0
  22. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/__init__.py +0 -0
  23. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/__init__.py +0 -0
  24. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/_device.py +0 -0
  25. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/analysis/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/analysis/diagram.py +0 -0
  27. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/__init__.py +0 -0
  28. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/cluster.py +0 -0
  29. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/comm.py +0 -0
  30. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/context_mgr.py +0 -0
  31. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/dtypes.py +0 -0
  32. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/__init__.py +0 -0
  33. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/ast.py +0 -0
  34. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/evaluator.py +0 -0
  35. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/printer.py +0 -0
  36. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/transformer.py +0 -0
  37. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/utils.py +0 -0
  38. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/visitor.py +0 -0
  39. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/expr/walk.py +0 -0
  40. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/interp.py +0 -0
  41. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/mask.py +0 -0
  42. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/mpir.py +0 -0
  43. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/mpobject.py +0 -0
  44. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/mptype.py +0 -0
  45. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/pfunc.py +0 -0
  46. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/primitive.py +0 -0
  47. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/table.py +0 -0
  48. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/tensor.py +0 -0
  49. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/core/tracer.py +0 -0
  50. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/host.py +0 -0
  51. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/__init__.py +0 -0
  52. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/base.py +0 -0
  53. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/basic.py +0 -0
  54. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/context.py +0 -0
  55. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/crypto.py +0 -0
  56. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/fhe.py +0 -0
  57. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/mock_tee.py +0 -0
  58. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/phe.py +0 -0
  59. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/spu.py +0 -0
  60. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/sql_duckdb.py +0 -0
  61. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/stablehlo.py +0 -0
  62. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/kernels/value.py +0 -0
  63. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/__init__.py +0 -0
  64. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/base.py +0 -0
  65. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/basic.py +0 -0
  66. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/crypto.py +0 -0
  67. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/fhe.py +0 -0
  68. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/jax_cc.py +0 -0
  69. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/nnx_cc.py +0 -0
  70. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/phe.py +0 -0
  71. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/spu.py +0 -0
  72. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/sql_cc.py +0 -0
  73. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/ops/tee.py +0 -0
  74. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/protos/v1alpha1/mpir_pb2.py +0 -0
  75. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/protos/v1alpha1/mpir_pb2.pyi +0 -0
  76. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/protos/v1alpha1/value_pb2.py +0 -0
  77. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/protos/v1alpha1/value_pb2.pyi +0 -0
  78. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/__init__.py +0 -0
  79. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/cli.py +0 -0
  80. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/client.py +0 -0
  81. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/communicator.py +0 -0
  82. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/data_providers.py +0 -0
  83. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/driver.py +0 -0
  84. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/exceptions.py +0 -0
  85. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/http_api.md +0 -0
  86. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/link_comm.py +0 -0
  87. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/server.py +0 -0
  88. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/session.py +0 -0
  89. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/runtime/simulation.py +0 -0
  90. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/__init__.py +0 -0
  91. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/api.py +0 -0
  92. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/mpi.py +0 -0
  93. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/party.py +0 -0
  94. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/random.py +0 -0
  95. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/simp/smpc.py +0 -0
  96. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/utils/__init__.py +0 -0
  97. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/utils/crypto.py +0 -0
  98. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/utils/func_utils.py +0 -0
  99. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/utils/spu_utils.py +0 -0
  100. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v1/utils/table_utils.py +0 -0
  101. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/__init__.py +0 -0
  102. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/__init__.py +0 -0
  103. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/bfv_impl.py +0 -0
  104. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/field_impl.py +0 -0
  105. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/func_impl.py +0 -0
  106. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/phe_impl.py +0 -0
  107. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_design.md +0 -0
  108. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/__init__.py +0 -0
  109. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/http.py +0 -0
  110. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/mem.py +0 -0
  111. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/ops.py +0 -0
  112. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/state.py +0 -0
  113. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_driver/values.py +0 -0
  114. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_worker/__init__.py +0 -0
  115. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_worker/http.py +0 -0
  116. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_worker/mem.py +0 -0
  117. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_worker/ops.py +0 -0
  118. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/simp_worker/state.py +0 -0
  119. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/spu_impl.py +0 -0
  120. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/spu_state.py +0 -0
  121. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/store_impl.py +0 -0
  122. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/tee_impl.py +0 -0
  123. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/backends/tensor_impl.py +0 -0
  124. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/cli.py +0 -0
  125. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/cli_guide.md +0 -0
  126. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/__init__.py +0 -0
  127. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/bfv.py +0 -0
  128. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/dtypes.py +0 -0
  129. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/field.py +0 -0
  130. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/func.py +0 -0
  131. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/phe.py +0 -0
  132. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/simp.py +0 -0
  133. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/spu.py +0 -0
  134. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/store.py +0 -0
  135. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/table.py +0 -0
  136. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/dialects/tee.py +0 -0
  137. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/README.md +0 -0
  138. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/__init__.py +0 -0
  139. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/context.py +0 -0
  140. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/graph.py +0 -0
  141. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/jit.py +0 -0
  142. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/object.py +0 -0
  143. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/primitive.py +0 -0
  144. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/printer.py +0 -0
  145. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/registry.py +0 -0
  146. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/serde.py +0 -0
  147. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/tracer.py +0 -0
  148. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/edsl/typing.py +0 -0
  149. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/Makefile +0 -0
  150. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/__init__.py +0 -0
  151. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/gf128.cpp +0 -0
  152. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/ldpc.cpp +0 -0
  153. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/okvs.cpp +0 -0
  154. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/okvs_opt.cpp +0 -0
  155. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/kernels/py_kernels.py +0 -0
  156. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/collective.py +0 -0
  157. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/device/__init__.py +0 -0
  158. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/device/api.py +0 -0
  159. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/device/cluster.py +0 -0
  160. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/ml/__init__.py +0 -0
  161. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/ml/sgb.py +0 -0
  162. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/__init__.py +0 -0
  163. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/_utils.py +0 -0
  164. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/analytics/__init__.py +0 -0
  165. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/analytics/aggregation.py +0 -0
  166. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/analytics/groupby.md +0 -0
  167. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/analytics/groupby.py +0 -0
  168. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/analytics/permutation.py +0 -0
  169. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/common/constants.py +0 -0
  170. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/ot/__init__.py +0 -0
  171. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/ot/base.py +0 -0
  172. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/ot/extension.py +0 -0
  173. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/ot/silent.py +0 -0
  174. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/__init__.py +0 -0
  175. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/cuckoo.py +0 -0
  176. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/okvs.py +0 -0
  177. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/okvs_gct.py +0 -0
  178. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/oprf.py +0 -0
  179. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/rr22.py +0 -0
  180. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/psi/unbalanced.py +0 -0
  181. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/vole/__init__.py +0 -0
  182. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/vole/gilboa.py +0 -0
  183. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/vole/ldpc.py +0 -0
  184. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/libs/mpc/vole/silver.py +0 -0
  185. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/runtime/__init__.py +0 -0
  186. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/runtime/dialect_state.py +0 -0
  187. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/runtime/interpreter.py +0 -0
  188. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/runtime/object_store.py +0 -0
  189. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/mplang/v2/runtime/value.py +0 -0
  190. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/pyproject.toml +0 -0
  191. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/__init__.py +0 -0
  192. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/conftest.py +0 -0
  193. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/__init__.py +0 -0
  194. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/analysis/test_diagram.py +0 -0
  195. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/conftest.py +0 -0
  196. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/__init__.py +0 -0
  197. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/__init__.py +0 -0
  198. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/conftest.py +0 -0
  199. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/test_ast.py +0 -0
  200. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/test_printer.py +0 -0
  201. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/test_utils.py +0 -0
  202. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/expr/test_walk.py +0 -0
  203. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_cluster.py +0 -0
  204. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_dtype.py +0 -0
  205. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_mask.py +0 -0
  206. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_mpir.py +0 -0
  207. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_mptype.py +0 -0
  208. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_primitive.py +0 -0
  209. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_table.py +0 -0
  210. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_tensor.py +0 -0
  211. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/core/test_tracer.py +0 -0
  212. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/device/__init__.py +0 -0
  213. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/device/test_device_basic.py +0 -0
  214. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/README.md +0 -0
  215. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_crypto_roundtrip.py +0 -0
  216. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_http_e2e.py +0 -0
  217. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_symbols_roundtrip.py +0 -0
  218. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_tee_workflow.py +0 -0
  219. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_tutorials.py +0 -0
  220. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/integration/test_unused_param_integration.py +0 -0
  221. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/__init__.py +0 -0
  222. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_basic.py +0 -0
  223. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_debug_print.py +0 -0
  224. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_fhe.py +0 -0
  225. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_kernel_binding.py +0 -0
  226. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_phe.py +0 -0
  227. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_spu.py +0 -0
  228. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_sql_duckdb.py +0 -0
  229. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_stablehlo.py +0 -0
  230. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_value.py +0 -0
  231. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/kernels/test_value_serde.py +0 -0
  232. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/__init__.py +0 -0
  233. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/dummy.py +0 -0
  234. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_basic_pack.py +0 -0
  235. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_crypto.py +0 -0
  236. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_feop_base.py +0 -0
  237. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_jax_cc.py +0 -0
  238. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_nnx_cc.py +0 -0
  239. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_phe.py +0 -0
  240. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_spu.py +0 -0
  241. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_spu_defensive.py +0 -0
  242. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_sql.py +0 -0
  243. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_sql_cc.py +0 -0
  244. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/ops/test_table_tensor_conversion.py +0 -0
  245. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/__init__.py +0 -0
  246. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/test_cli.py +0 -0
  247. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/test_communicator.py +0 -0
  248. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/test_driver.py +0 -0
  249. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/test_server.py +0 -0
  250. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/runtime/test_simulation.py +0 -0
  251. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/simp/test_mpi.py +0 -0
  252. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/simp/test_random.py +0 -0
  253. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/simp/test_smpc.py +0 -0
  254. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/simp/test_sugar.py +0 -0
  255. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/utils/__init__.py +0 -0
  256. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/utils/server_fixtures.py +0 -0
  257. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/utils/test_func_utils.py +0 -0
  258. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/utils/test_spu_utils.py +0 -0
  259. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v1/utils/test_table_utils.py +0 -0
  260. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/__init__.py +0 -0
  261. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/__init__.py +0 -0
  262. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/simp_driver/__init__.py +0 -0
  263. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/simp_driver/test_http.py +0 -0
  264. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/simp_worker/__init__.py +0 -0
  265. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/simp_worker/test_http.py +0 -0
  266. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/simp_worker/test_mem.py +0 -0
  267. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_bfv_impl.py +0 -0
  268. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_okvs_binding.py +0 -0
  269. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_simp_integration.py +0 -0
  270. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_simp_object_store.py +0 -0
  271. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_spu_impl.py +0 -0
  272. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_table_impl.py +0 -0
  273. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_tee_impl.py +0 -0
  274. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_tensor_impl.py +0 -0
  275. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/backends/test_verify_clean.py +0 -0
  276. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/conftest.py +0 -0
  277. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/__init__.py +0 -0
  278. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_bfv.py +0 -0
  279. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_crypto.py +0 -0
  280. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_dtypes.py +0 -0
  281. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_field.py +0 -0
  282. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_func.py +0 -0
  283. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_okvs.py +0 -0
  284. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_okvs_bench.py +0 -0
  285. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_phe.py +0 -0
  286. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_simp.py +0 -0
  287. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_simp_comm.py +0 -0
  288. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_spu.py +0 -0
  289. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_table.py +0 -0
  290. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_tee.py +0 -0
  291. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/dialects/test_tensor.py +0 -0
  292. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/__init__.py +0 -0
  293. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_context.py +0 -0
  294. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_graph.py +0 -0
  295. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_primitive.py +0 -0
  296. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_primitive_multi_output.py +0 -0
  297. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_printer.py +0 -0
  298. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_serde.py +0 -0
  299. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_tracer.py +0 -0
  300. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_typing.py +0 -0
  301. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/edsl/test_typing_graph_serde.py +0 -0
  302. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/__init__.py +0 -0
  303. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/conftest.py +0 -0
  304. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/test_device_api_errors.py +0 -0
  305. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/test_device_dialects.py +0 -0
  306. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/test_device_layouts.py +0 -0
  307. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/device/test_device_tee.py +0 -0
  308. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/ml/__init__.py +0 -0
  309. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/ml/test_sgb.py +0 -0
  310. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/ml/test_sgb_bench.py +0 -0
  311. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/__init__.py +0 -0
  312. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/analytics/__init__.py +0 -0
  313. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/analytics/test_aggregation.py +0 -0
  314. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/analytics/test_groupby.py +0 -0
  315. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/analytics/test_permutation.py +0 -0
  316. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/ot/__init__.py +0 -0
  317. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/ot/test_ot.py +0 -0
  318. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/ot/test_ot_extension.py +0 -0
  319. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/ot/test_silent_ot.py +0 -0
  320. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/__init__.py +0 -0
  321. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/test_okvs_gct.py +0 -0
  322. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/test_oprf.py +0 -0
  323. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/test_psi.py +0 -0
  324. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/test_psi_bench.py +0 -0
  325. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/test_rr22.py +0 -0
  326. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/psi/verify_psi_okvs_logic.py +0 -0
  327. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/test_field_gf128.py +0 -0
  328. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/test_utils.py +0 -0
  329. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/__init__.py +0 -0
  330. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/test_gilboa_manual.py +0 -0
  331. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/test_ldpc.py +0 -0
  332. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/test_silver_vole.py +0 -0
  333. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/test_vole.py +0 -0
  334. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/test_vole_bench.py +0 -0
  335. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/mpc/vole/verify_vole_logic.py +0 -0
  336. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/test_collective.py +0 -0
  337. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/libs/test_simple_guide.py +0 -0
  338. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/runtime/test_interpreter_async.py +0 -0
  339. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/runtime/test_object_store.py +0 -0
  340. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/runtime/test_object_store_fs.py +0 -0
  341. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/test_fetch_semantics.py +0 -0
  342. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/test_pytree_io.py +0 -0
  343. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/test_store.py +0 -0
  344. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/utils/__init__.py +0 -0
  345. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tests/v2/utils/tensor_patch.py +0 -0
  346. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/MIGRATION.md +0 -0
  347. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/README.md +0 -0
  348. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/__init__.py +0 -0
  349. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/data/alice.csv +0 -0
  350. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/data/bob.csv +0 -0
  351. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/data/prepare_vertical_iris.py +0 -0
  352. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/run.sh +0 -0
  353. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/00_device_basics.py +0 -0
  354. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/01_function_decorator.py +0 -0
  355. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/02_simulation_and_driver.py +0 -0
  356. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/03_run_jax.py +0 -0
  357. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/04_run_sql.py +0 -0
  358. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/05_pipeline.py +0 -0
  359. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/06_ir_dump_and_analysis.py +0 -0
  360. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/device/07_run_nnx.py +0 -0
  361. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/pitfalls/late_binding.py +0 -0
  362. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/pitfalls/rand.py +0 -0
  363. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/00_basic.py +0 -0
  364. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/01_condition.py +0 -0
  365. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/02_whileloop.py +0 -0
  366. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/03_stdio.py +0 -0
  367. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/04_phe.py +0 -0
  368. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/05_tee.py +0 -0
  369. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/06_fhe.py +0 -0
  370. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/07_advanced.py +0 -0
  371. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v1/simp/08_simple_secret_sharing.py +0 -0
  372. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/00_device_basics.py +0 -0
  373. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/01_function_decorator.py +0 -0
  374. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/02_simulation_and_driver.py +0 -0
  375. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/03_run_jax.py +0 -0
  376. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/04_ir_dump_and_analysis.py +0 -0
  377. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/05_run_sql.py +0 -0
  378. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/06_pipeline.py +0 -0
  379. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/07_stax_nn.py +0 -0
  380. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev263}/tutorials/v2/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev261
3
+ Version: 0.1.dev263
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -271,6 +271,27 @@ def bytes_to_point_impl(
271
271
 
272
272
  # --- Sym / Hash Impl ---
273
273
 
274
+ # Supported symmetric encryption algorithms
275
+ _SUPPORTED_ALGOS = {"aes-gcm"}
276
+
277
+
278
+ def _validate_algo(algo: str, operation: str) -> None:
279
+ """Validate that the algorithm is supported.
280
+
281
+ Args:
282
+ algo: Algorithm name to validate
283
+ operation: Operation name for error message (e.g., "encryption", "decryption")
284
+
285
+ Raises:
286
+ ValueError: If algo is not supported
287
+ """
288
+ if algo not in _SUPPORTED_ALGOS:
289
+ supported = ", ".join(sorted(_SUPPORTED_ALGOS))
290
+ raise ValueError(
291
+ f"Unsupported {operation} algorithm: {algo!r}. "
292
+ f"Supported algorithms: {supported}"
293
+ )
294
+
274
295
 
275
296
  @crypto.hash_p.def_impl
276
297
  def hash_impl(interpreter: Interpreter, op: Operation, data: Value) -> Value:
@@ -336,6 +357,10 @@ def sym_encrypt_impl(
336
357
  numpy arrays, scalars, etc.). This supports both high-level API usage
337
358
  (with TensorValue) and elementwise operations (with raw scalars).
338
359
  """
360
+ # Read and validate algo parameter (must be provided by frontend)
361
+ algo = op.attrs["algo"]
362
+ _validate_algo(algo, "encryption")
363
+
339
364
  # Get raw key bytes - strict type checking
340
365
  if isinstance(key, SymmetricKeyValue):
341
366
  k = key.key_bytes
@@ -376,6 +401,10 @@ def sym_decrypt_impl(
376
401
  on what was encrypted - could be a Value subclass (TensorValue, BytesValue),
377
402
  a numpy array, or a scalar (int, float, etc.) when used in elementwise ops.
378
403
  """
404
+ # Read and validate algo parameter (must be provided by frontend)
405
+ algo = op.attrs["algo"]
406
+ _validate_algo(algo, "decryption")
407
+
379
408
  # Get raw key bytes - strict type checking
380
409
  if isinstance(key, SymmetricKeyValue):
381
410
  k = key.key_bytes
@@ -186,10 +186,10 @@ def constant_impl(interpreter: Interpreter, op: Operation) -> TableValue:
186
186
  # If data was a DataFrame, it might have been stored as is if the IR supports it.
187
187
  # If data was a dict, it's fine.
188
188
 
189
- if isinstance(data, pd.DataFrame):
190
- return _wrap(pa.Table.from_pandas(data))
191
-
192
- return _wrap(pa.Table.from_pydict(data))
189
+ if isinstance(data, pa.Table):
190
+ return _wrap(data)
191
+ else:
192
+ return _wrap(pa.table(data))
193
193
 
194
194
 
195
195
  def _infer_format(path: str, format_hint: str) -> str:
@@ -275,15 +275,44 @@ def _hash_batch_ae(data: elt.BaseType) -> elt.TensorType:
275
275
 
276
276
 
277
277
  @sym_encrypt_p.def_abstract_eval
278
- def _sym_encrypt_ae(key: elt.BaseType, plaintext: elt.BaseType) -> elt.TensorType:
278
+ def _sym_encrypt_ae(
279
+ key: elt.BaseType, plaintext: elt.BaseType, *, algo: str = "aes-gcm"
280
+ ) -> elt.TensorType:
281
+ """Abstract evaluation for symmetric encryption.
282
+
283
+ Args:
284
+ key: Symmetric encryption key
285
+ plaintext: Data to encrypt
286
+ algo: Encryption algorithm (keyword-only, validated at runtime)
287
+
288
+ Returns:
289
+ Ciphertext as dynamic-length uint8 tensor
290
+ """
279
291
  # Dynamic shape for ciphertext
292
+ # algo validation is done at backend impl, not here
280
293
  return elt.TensorType(elt.u8, (-1,))
281
294
 
282
295
 
283
296
  @sym_decrypt_p.def_abstract_eval
284
297
  def _sym_decrypt_ae(
285
- key: elt.BaseType, ciphertext: elt.BaseType, target_type: elt.BaseType
298
+ key: elt.BaseType,
299
+ ciphertext: elt.BaseType,
300
+ *,
301
+ target_type: elt.BaseType,
302
+ algo: str = "aes-gcm",
286
303
  ) -> elt.BaseType:
304
+ """Abstract evaluation for symmetric decryption.
305
+
306
+ Args:
307
+ key: Symmetric decryption key
308
+ ciphertext: Encrypted data
309
+ target_type: Expected type of decrypted plaintext (keyword-only)
310
+ algo: Decryption algorithm (keyword-only, validated at runtime)
311
+
312
+ Returns:
313
+ Decrypted plaintext with type matching target_type
314
+ """
315
+ # algo validation is done at backend impl, not here
287
316
  return target_type
288
317
 
289
318
 
@@ -367,16 +396,50 @@ def hash_batch(data: el.Object) -> el.Object:
367
396
  return hash_batch_p.bind(data)
368
397
 
369
398
 
370
- def sym_encrypt(key: el.Object, plaintext: el.Object) -> el.Object:
371
- """Symmetric encrypt (XOR stream or AES-GCM)."""
372
- return sym_encrypt_p.bind(key, plaintext)
399
+ def sym_encrypt(
400
+ key: el.Object, plaintext: el.Object, *, algo: str = "aes-gcm"
401
+ ) -> el.Object:
402
+ """Symmetric encrypt.
403
+
404
+ Args:
405
+ key: Symmetric encryption key (SymmetricKeyType or bytes).
406
+ plaintext: Data to encrypt (any serializable object).
407
+ algo: Encryption algorithm. Currently only "aes-gcm" is supported.
408
+ Validation is performed at backend execution time.
409
+
410
+ Returns:
411
+ Ciphertext as Tensor[u8, (-1,)].
412
+
413
+ Raises:
414
+ ValueError: At runtime if algo is not supported by the backend.
415
+ """
416
+ return sym_encrypt_p.bind(key, plaintext, algo=algo)
373
417
 
374
418
 
375
419
  def sym_decrypt(
376
- key: el.Object, ciphertext: el.Object, target_type: elt.BaseType
420
+ key: el.Object,
421
+ ciphertext: el.Object,
422
+ target_type: elt.BaseType,
423
+ *,
424
+ algo: str = "aes-gcm",
377
425
  ) -> el.Object:
378
- """Symmetric decrypt."""
379
- return sym_decrypt_p.bind(key, ciphertext, target_type=target_type)
426
+ """Symmetric decrypt.
427
+
428
+ Args:
429
+ key: Symmetric decryption key (SymmetricKeyType or bytes).
430
+ ciphertext: Encrypted data.
431
+ target_type: Expected type of the decrypted plaintext (for type inference).
432
+ algo: Decryption algorithm. Must match the algorithm used for encryption.
433
+ Currently only "aes-gcm" is supported.
434
+ Validation is performed at backend execution time.
435
+
436
+ Returns:
437
+ Decrypted plaintext with type matching target_type.
438
+
439
+ Raises:
440
+ ValueError: At runtime if algo is not supported by the backend.
441
+ """
442
+ return sym_decrypt_p.bind(key, ciphertext, target_type=target_type, algo=algo)
380
443
 
381
444
 
382
445
  def select(cond: el.Object, true_val: el.Object, false_val: el.Object) -> el.Object:
@@ -236,9 +236,6 @@ def _run_jax_trace(fn: Callable[..., Any], *args: Any, **kwargs: Any) -> Any:
236
236
 
237
237
  normalized_fn, variables = normalize_fn(fn, args, kwargs, _is_trace_object)
238
238
 
239
- if not variables:
240
- raise TypeError("tensor.run_jax requires at least one Tensor argument")
241
-
242
239
  # Convert TraceObjects to JAX placeholders for compilation
243
240
  placeholders: list[ShapeDtypeStruct] = []
244
241
  for var in variables:
@@ -174,6 +174,44 @@ class TestSymmetricEncryption:
174
174
  # Ciphertexts should be different due to random nonce
175
175
  assert _unwrap(ct1.runtime_obj) != _unwrap(ct2.runtime_obj)
176
176
 
177
+ def test_encrypt_decrypt_keyword_only_params(self):
178
+ """Test that algo parameter is properly passed as keyword-only."""
179
+ with Interpreter():
180
+ sk, pk = crypto.kem_keygen("x25519")
181
+ key = crypto.kem_derive(sk, pk)
182
+
183
+ message = np.array([1, 2, 3, 4, 5], dtype=np.uint8)
184
+ message_obj = tensor.constant(message)
185
+
186
+ # Test keyword-only algo parameter in encrypt
187
+ ciphertext = crypto.sym_encrypt(key, message_obj, algo="aes-gcm")
188
+ assert isinstance(ciphertext.runtime_obj, BytesValue)
189
+
190
+ # Test keyword-only parameters in decrypt (target_type and algo)
191
+ plaintext = crypto.sym_decrypt(
192
+ key,
193
+ ciphertext,
194
+ target_type=elt.TensorType(elt.u8, (5,)),
195
+ algo="aes-gcm",
196
+ )
197
+ np.testing.assert_array_equal(_unwrap(plaintext.runtime_obj), message)
198
+
199
+ def test_encrypt_decrypt_default_algo(self):
200
+ """Test that default algo parameter works correctly."""
201
+ with Interpreter():
202
+ sk, pk = crypto.kem_keygen("x25519")
203
+ key = crypto.kem_derive(sk, pk)
204
+
205
+ message = np.array([1, 2, 3, 4, 5], dtype=np.uint8)
206
+ message_obj = tensor.constant(message)
207
+
208
+ # Should work without explicit algo (defaults to "aes-gcm")
209
+ ciphertext = crypto.sym_encrypt(key, message_obj)
210
+ plaintext = crypto.sym_decrypt(
211
+ key, ciphertext, target_type=elt.TensorType(elt.u8, (5,))
212
+ )
213
+ np.testing.assert_array_equal(_unwrap(plaintext.runtime_obj), message)
214
+
177
215
 
178
216
  class TestDigitalEnvelope:
179
217
  """Test complete digital envelope workflow."""
@@ -236,3 +274,67 @@ class TestDigitalEnvelope:
236
274
  ct_b = crypto.sym_encrypt(bob_key, msg_b_obj)
237
275
  pt_b = crypto.sym_decrypt(alice_key, ct_b, elt.TensorType(elt.u8, (3,)))
238
276
  np.testing.assert_array_equal(_unwrap(pt_b.runtime_obj), msg_b)
277
+
278
+
279
+ class TestAlgoParameter:
280
+ """Test algo parameter validation in sym_encrypt/sym_decrypt."""
281
+
282
+ def setup_method(self):
283
+ self.interpreter = Interpreter()
284
+ self.interpreter.__enter__()
285
+ sk, pk = crypto.kem_keygen("x25519")
286
+ self.key = crypto.kem_derive(sk, pk)
287
+
288
+ def teardown_method(self):
289
+ self.interpreter.__exit__(None, None, None)
290
+
291
+ def test_default_algo_works(self):
292
+ """Test default algo='aes-gcm' works without explicit parameter."""
293
+
294
+ message = np.array([1, 2, 3], dtype=np.uint8)
295
+ message_obj = tensor.constant(message)
296
+
297
+ # Use default algo (should be aes-gcm)
298
+ ciphertext = crypto.sym_encrypt(self.key, message_obj)
299
+ plaintext = crypto.sym_decrypt(
300
+ self.key, ciphertext, elt.TensorType(elt.u8, (3,))
301
+ )
302
+ np.testing.assert_array_equal(_unwrap(plaintext.runtime_obj), message)
303
+
304
+ def test_explicit_aes_gcm_algo(self):
305
+ """Test explicitly passing algo='aes-gcm' works."""
306
+
307
+ message = np.array([4, 5, 6], dtype=np.uint8)
308
+ message_obj = tensor.constant(message)
309
+
310
+ # Explicitly pass algo='aes-gcm'
311
+ ciphertext = crypto.sym_encrypt(self.key, message_obj, algo="aes-gcm")
312
+ plaintext = crypto.sym_decrypt(
313
+ self.key, ciphertext, elt.TensorType(elt.u8, (3,)), algo="aes-gcm"
314
+ )
315
+ np.testing.assert_array_equal(_unwrap(plaintext.runtime_obj), message)
316
+
317
+ def test_unsupported_algo_encrypt_fails(self):
318
+ """Test that unsupported algo raises ValueError during encryption."""
319
+
320
+ message = np.array([7, 8, 9], dtype=np.uint8)
321
+ message_obj = tensor.constant(message)
322
+
323
+ # Try unsupported algorithm
324
+ with pytest.raises(ValueError, match="Unsupported encryption algorithm"):
325
+ crypto.sym_encrypt(self.key, message_obj, algo="aes-ctr")
326
+
327
+ def test_unsupported_algo_decrypt_fails(self):
328
+ """Test that unsupported algo raises ValueError during decryption."""
329
+
330
+ message = np.array([10, 11, 12], dtype=np.uint8)
331
+ message_obj = tensor.constant(message)
332
+
333
+ # Encrypt with default algo
334
+ ciphertext = crypto.sym_encrypt(self.key, message_obj)
335
+
336
+ # Try to decrypt with unsupported algorithm
337
+ with pytest.raises(ValueError, match="Unsupported decryption algorithm"):
338
+ crypto.sym_decrypt(
339
+ self.key, ciphertext, elt.TensorType(elt.u8, (3,)), algo="sm4-gcm"
340
+ )