mplang-nightly 0.1.dev261__tar.gz → 0.1.dev262__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.dev262}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/crypto_impl.py +29 -0
  3. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/crypto.py +71 -8
  4. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_crypto_impl.py +102 -0
  5. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/.gitignore +0 -0
  6. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/LICENSE +0 -0
  7. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/README.md +0 -0
  8. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/conf/3pc.yaml +0 -0
  9. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/stax_nn/README.md +0 -0
  10. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/stax_nn/models.py +0 -0
  11. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/stax_nn/stax_nn.py +0 -0
  12. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/bench_fhe_hist.py +0 -0
  13. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/hist_jax.py +0 -0
  14. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/hist_jax_test.py +0 -0
  15. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/naive_np.py +0 -0
  16. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/readme.md +0 -0
  17. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/sgb.py +0 -0
  18. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/examples/v1/xgboost/sgb_test.py +0 -0
  19. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/hatch_build.py +0 -0
  20. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/__init__.py +0 -0
  21. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/__init__.py +0 -0
  22. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/_device.py +0 -0
  23. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/analysis/__init__.py +0 -0
  24. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/analysis/diagram.py +0 -0
  25. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/cluster.py +0 -0
  27. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/comm.py +0 -0
  28. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/context_mgr.py +0 -0
  29. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/dtypes.py +0 -0
  30. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/__init__.py +0 -0
  31. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/ast.py +0 -0
  32. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/evaluator.py +0 -0
  33. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/printer.py +0 -0
  34. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/transformer.py +0 -0
  35. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/utils.py +0 -0
  36. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/visitor.py +0 -0
  37. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/expr/walk.py +0 -0
  38. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/interp.py +0 -0
  39. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/mask.py +0 -0
  40. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/mpir.py +0 -0
  41. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/mpobject.py +0 -0
  42. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/mptype.py +0 -0
  43. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/pfunc.py +0 -0
  44. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/primitive.py +0 -0
  45. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/table.py +0 -0
  46. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/tensor.py +0 -0
  47. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/core/tracer.py +0 -0
  48. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/host.py +0 -0
  49. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/__init__.py +0 -0
  50. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/base.py +0 -0
  51. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/basic.py +0 -0
  52. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/context.py +0 -0
  53. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/crypto.py +0 -0
  54. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/fhe.py +0 -0
  55. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/mock_tee.py +0 -0
  56. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/phe.py +0 -0
  57. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/spu.py +0 -0
  58. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/sql_duckdb.py +0 -0
  59. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/stablehlo.py +0 -0
  60. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/kernels/value.py +0 -0
  61. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/__init__.py +0 -0
  62. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/base.py +0 -0
  63. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/basic.py +0 -0
  64. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/crypto.py +0 -0
  65. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/fhe.py +0 -0
  66. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/jax_cc.py +0 -0
  67. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/nnx_cc.py +0 -0
  68. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/phe.py +0 -0
  69. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/spu.py +0 -0
  70. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/sql_cc.py +0 -0
  71. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/ops/tee.py +0 -0
  72. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/protos/v1alpha1/mpir_pb2.py +0 -0
  73. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/protos/v1alpha1/mpir_pb2.pyi +0 -0
  74. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/protos/v1alpha1/value_pb2.py +0 -0
  75. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/protos/v1alpha1/value_pb2.pyi +0 -0
  76. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/__init__.py +0 -0
  77. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/cli.py +0 -0
  78. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/client.py +0 -0
  79. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/communicator.py +0 -0
  80. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/data_providers.py +0 -0
  81. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/driver.py +0 -0
  82. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/exceptions.py +0 -0
  83. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/http_api.md +0 -0
  84. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/link_comm.py +0 -0
  85. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/server.py +0 -0
  86. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/session.py +0 -0
  87. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/runtime/simulation.py +0 -0
  88. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/__init__.py +0 -0
  89. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/api.py +0 -0
  90. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/mpi.py +0 -0
  91. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/party.py +0 -0
  92. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/random.py +0 -0
  93. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/simp/smpc.py +0 -0
  94. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/utils/__init__.py +0 -0
  95. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/utils/crypto.py +0 -0
  96. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/utils/func_utils.py +0 -0
  97. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/utils/spu_utils.py +0 -0
  98. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v1/utils/table_utils.py +0 -0
  99. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/__init__.py +0 -0
  100. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/__init__.py +0 -0
  101. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/bfv_impl.py +0 -0
  102. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/field_impl.py +0 -0
  103. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/func_impl.py +0 -0
  104. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/phe_impl.py +0 -0
  105. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_design.md +0 -0
  106. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/__init__.py +0 -0
  107. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/http.py +0 -0
  108. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/mem.py +0 -0
  109. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/ops.py +0 -0
  110. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/state.py +0 -0
  111. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_driver/values.py +0 -0
  112. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_worker/__init__.py +0 -0
  113. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_worker/http.py +0 -0
  114. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_worker/mem.py +0 -0
  115. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_worker/ops.py +0 -0
  116. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/simp_worker/state.py +0 -0
  117. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/spu_impl.py +0 -0
  118. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/spu_state.py +0 -0
  119. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/store_impl.py +0 -0
  120. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/table_impl.py +0 -0
  121. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/tee_impl.py +0 -0
  122. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/backends/tensor_impl.py +0 -0
  123. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/cli.py +0 -0
  124. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/cli_guide.md +0 -0
  125. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/__init__.py +0 -0
  126. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/bfv.py +0 -0
  127. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/dtypes.py +0 -0
  128. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/field.py +0 -0
  129. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/func.py +0 -0
  130. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/phe.py +0 -0
  131. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/simp.py +0 -0
  132. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/spu.py +0 -0
  133. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/store.py +0 -0
  134. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/table.py +0 -0
  135. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/tee.py +0 -0
  136. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/dialects/tensor.py +0 -0
  137. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/README.md +0 -0
  138. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/__init__.py +0 -0
  139. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/context.py +0 -0
  140. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/graph.py +0 -0
  141. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/jit.py +0 -0
  142. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/object.py +0 -0
  143. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/primitive.py +0 -0
  144. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/printer.py +0 -0
  145. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/registry.py +0 -0
  146. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/serde.py +0 -0
  147. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/tracer.py +0 -0
  148. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/edsl/typing.py +0 -0
  149. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/Makefile +0 -0
  150. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/__init__.py +0 -0
  151. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/gf128.cpp +0 -0
  152. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/ldpc.cpp +0 -0
  153. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/okvs.cpp +0 -0
  154. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/okvs_opt.cpp +0 -0
  155. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/kernels/py_kernels.py +0 -0
  156. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/collective.py +0 -0
  157. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/device/__init__.py +0 -0
  158. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/device/api.py +0 -0
  159. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/device/cluster.py +0 -0
  160. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/ml/__init__.py +0 -0
  161. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/ml/sgb.py +0 -0
  162. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/__init__.py +0 -0
  163. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/_utils.py +0 -0
  164. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/analytics/__init__.py +0 -0
  165. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/analytics/aggregation.py +0 -0
  166. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/analytics/groupby.md +0 -0
  167. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/analytics/groupby.py +0 -0
  168. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/analytics/permutation.py +0 -0
  169. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/common/constants.py +0 -0
  170. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/ot/__init__.py +0 -0
  171. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/ot/base.py +0 -0
  172. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/ot/extension.py +0 -0
  173. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/ot/silent.py +0 -0
  174. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/__init__.py +0 -0
  175. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/cuckoo.py +0 -0
  176. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/okvs.py +0 -0
  177. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/okvs_gct.py +0 -0
  178. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/oprf.py +0 -0
  179. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/rr22.py +0 -0
  180. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/psi/unbalanced.py +0 -0
  181. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/vole/__init__.py +0 -0
  182. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/vole/gilboa.py +0 -0
  183. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/vole/ldpc.py +0 -0
  184. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/libs/mpc/vole/silver.py +0 -0
  185. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/runtime/__init__.py +0 -0
  186. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/runtime/dialect_state.py +0 -0
  187. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/runtime/interpreter.py +0 -0
  188. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/runtime/object_store.py +0 -0
  189. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/mplang/v2/runtime/value.py +0 -0
  190. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/pyproject.toml +0 -0
  191. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/__init__.py +0 -0
  192. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/conftest.py +0 -0
  193. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/__init__.py +0 -0
  194. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/analysis/test_diagram.py +0 -0
  195. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/conftest.py +0 -0
  196. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/__init__.py +0 -0
  197. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/__init__.py +0 -0
  198. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/conftest.py +0 -0
  199. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/test_ast.py +0 -0
  200. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/test_printer.py +0 -0
  201. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/test_utils.py +0 -0
  202. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/expr/test_walk.py +0 -0
  203. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_cluster.py +0 -0
  204. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_dtype.py +0 -0
  205. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_mask.py +0 -0
  206. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_mpir.py +0 -0
  207. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_mptype.py +0 -0
  208. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_primitive.py +0 -0
  209. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_table.py +0 -0
  210. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_tensor.py +0 -0
  211. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/core/test_tracer.py +0 -0
  212. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/device/__init__.py +0 -0
  213. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/device/test_device_basic.py +0 -0
  214. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/README.md +0 -0
  215. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_crypto_roundtrip.py +0 -0
  216. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_http_e2e.py +0 -0
  217. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_symbols_roundtrip.py +0 -0
  218. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_tee_workflow.py +0 -0
  219. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_tutorials.py +0 -0
  220. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/integration/test_unused_param_integration.py +0 -0
  221. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/__init__.py +0 -0
  222. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_basic.py +0 -0
  223. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_debug_print.py +0 -0
  224. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_fhe.py +0 -0
  225. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_kernel_binding.py +0 -0
  226. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_phe.py +0 -0
  227. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_spu.py +0 -0
  228. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_sql_duckdb.py +0 -0
  229. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_stablehlo.py +0 -0
  230. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_value.py +0 -0
  231. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/kernels/test_value_serde.py +0 -0
  232. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/__init__.py +0 -0
  233. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/dummy.py +0 -0
  234. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_basic_pack.py +0 -0
  235. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_crypto.py +0 -0
  236. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_feop_base.py +0 -0
  237. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_jax_cc.py +0 -0
  238. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_nnx_cc.py +0 -0
  239. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_phe.py +0 -0
  240. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_spu.py +0 -0
  241. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_spu_defensive.py +0 -0
  242. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_sql.py +0 -0
  243. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_sql_cc.py +0 -0
  244. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/ops/test_table_tensor_conversion.py +0 -0
  245. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/__init__.py +0 -0
  246. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/test_cli.py +0 -0
  247. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/test_communicator.py +0 -0
  248. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/test_driver.py +0 -0
  249. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/test_server.py +0 -0
  250. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/runtime/test_simulation.py +0 -0
  251. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/simp/test_mpi.py +0 -0
  252. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/simp/test_random.py +0 -0
  253. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/simp/test_smpc.py +0 -0
  254. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/simp/test_sugar.py +0 -0
  255. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/utils/__init__.py +0 -0
  256. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/utils/server_fixtures.py +0 -0
  257. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/utils/test_func_utils.py +0 -0
  258. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/utils/test_spu_utils.py +0 -0
  259. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v1/utils/test_table_utils.py +0 -0
  260. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/__init__.py +0 -0
  261. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/__init__.py +0 -0
  262. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/simp_driver/__init__.py +0 -0
  263. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/simp_driver/test_http.py +0 -0
  264. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/simp_worker/__init__.py +0 -0
  265. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/simp_worker/test_http.py +0 -0
  266. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/simp_worker/test_mem.py +0 -0
  267. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_bfv_impl.py +0 -0
  268. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_okvs_binding.py +0 -0
  269. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_simp_integration.py +0 -0
  270. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_simp_object_store.py +0 -0
  271. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_spu_impl.py +0 -0
  272. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_table_impl.py +0 -0
  273. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_tee_impl.py +0 -0
  274. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_tensor_impl.py +0 -0
  275. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/backends/test_verify_clean.py +0 -0
  276. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/conftest.py +0 -0
  277. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/__init__.py +0 -0
  278. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_bfv.py +0 -0
  279. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_crypto.py +0 -0
  280. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_dtypes.py +0 -0
  281. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_field.py +0 -0
  282. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_func.py +0 -0
  283. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_okvs.py +0 -0
  284. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_okvs_bench.py +0 -0
  285. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_phe.py +0 -0
  286. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_simp.py +0 -0
  287. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_simp_comm.py +0 -0
  288. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_spu.py +0 -0
  289. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_table.py +0 -0
  290. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_tee.py +0 -0
  291. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/dialects/test_tensor.py +0 -0
  292. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/__init__.py +0 -0
  293. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_context.py +0 -0
  294. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_graph.py +0 -0
  295. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_primitive.py +0 -0
  296. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_primitive_multi_output.py +0 -0
  297. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_printer.py +0 -0
  298. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_serde.py +0 -0
  299. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_tracer.py +0 -0
  300. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_typing.py +0 -0
  301. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/edsl/test_typing_graph_serde.py +0 -0
  302. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/__init__.py +0 -0
  303. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/conftest.py +0 -0
  304. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/test_device_api_errors.py +0 -0
  305. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/test_device_dialects.py +0 -0
  306. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/test_device_layouts.py +0 -0
  307. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/device/test_device_tee.py +0 -0
  308. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/ml/__init__.py +0 -0
  309. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/ml/test_sgb.py +0 -0
  310. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/ml/test_sgb_bench.py +0 -0
  311. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/__init__.py +0 -0
  312. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/analytics/__init__.py +0 -0
  313. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/analytics/test_aggregation.py +0 -0
  314. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/analytics/test_groupby.py +0 -0
  315. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/analytics/test_permutation.py +0 -0
  316. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/ot/__init__.py +0 -0
  317. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/ot/test_ot.py +0 -0
  318. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/ot/test_ot_extension.py +0 -0
  319. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/ot/test_silent_ot.py +0 -0
  320. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/__init__.py +0 -0
  321. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/test_okvs_gct.py +0 -0
  322. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/test_oprf.py +0 -0
  323. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/test_psi.py +0 -0
  324. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/test_psi_bench.py +0 -0
  325. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/test_rr22.py +0 -0
  326. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/psi/verify_psi_okvs_logic.py +0 -0
  327. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/test_field_gf128.py +0 -0
  328. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/test_utils.py +0 -0
  329. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/__init__.py +0 -0
  330. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/test_gilboa_manual.py +0 -0
  331. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/test_ldpc.py +0 -0
  332. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/test_silver_vole.py +0 -0
  333. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/test_vole.py +0 -0
  334. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/test_vole_bench.py +0 -0
  335. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/mpc/vole/verify_vole_logic.py +0 -0
  336. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/test_collective.py +0 -0
  337. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/libs/test_simple_guide.py +0 -0
  338. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/runtime/test_interpreter_async.py +0 -0
  339. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/runtime/test_object_store.py +0 -0
  340. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/runtime/test_object_store_fs.py +0 -0
  341. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/test_fetch_semantics.py +0 -0
  342. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/test_pytree_io.py +0 -0
  343. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/test_store.py +0 -0
  344. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/utils/__init__.py +0 -0
  345. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tests/v2/utils/tensor_patch.py +0 -0
  346. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/MIGRATION.md +0 -0
  347. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/README.md +0 -0
  348. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/__init__.py +0 -0
  349. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/data/alice.csv +0 -0
  350. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/data/bob.csv +0 -0
  351. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/data/prepare_vertical_iris.py +0 -0
  352. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/run.sh +0 -0
  353. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/00_device_basics.py +0 -0
  354. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/01_function_decorator.py +0 -0
  355. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/02_simulation_and_driver.py +0 -0
  356. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/03_run_jax.py +0 -0
  357. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/04_run_sql.py +0 -0
  358. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/05_pipeline.py +0 -0
  359. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/06_ir_dump_and_analysis.py +0 -0
  360. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/device/07_run_nnx.py +0 -0
  361. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/pitfalls/late_binding.py +0 -0
  362. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/pitfalls/rand.py +0 -0
  363. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/00_basic.py +0 -0
  364. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/01_condition.py +0 -0
  365. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/02_whileloop.py +0 -0
  366. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/03_stdio.py +0 -0
  367. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/04_phe.py +0 -0
  368. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/05_tee.py +0 -0
  369. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/06_fhe.py +0 -0
  370. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/07_advanced.py +0 -0
  371. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v1/simp/08_simple_secret_sharing.py +0 -0
  372. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/00_device_basics.py +0 -0
  373. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/01_function_decorator.py +0 -0
  374. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/02_simulation_and_driver.py +0 -0
  375. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/03_run_jax.py +0 -0
  376. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/04_ir_dump_and_analysis.py +0 -0
  377. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/05_run_sql.py +0 -0
  378. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/06_pipeline.py +0 -0
  379. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/tutorials/v2/07_stax_nn.py +0 -0
  380. {mplang_nightly-0.1.dev261 → mplang_nightly-0.1.dev262}/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.dev262
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
@@ -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:
@@ -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
+ )