mplang-nightly 0.1.dev332__tar.gz → 0.1.dev333__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 (240) hide show
  1. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/ops.py +4 -4
  3. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/ops.py +13 -4
  4. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/runtime/interpreter.py +3 -1
  5. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_simp_integration.py +44 -0
  6. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/.gitignore +0 -0
  7. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/LICENSE +0 -0
  8. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/README.md +0 -0
  9. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/examples/.gitkeep +0 -0
  10. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/hatch_build.py +0 -0
  11. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/__init__.py +0 -0
  12. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/__init__.py +0 -0
  13. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/bfv_impl.py +0 -0
  14. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/channel.py +0 -0
  15. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/crypto_impl.py +0 -0
  16. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/field_impl.py +0 -0
  17. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/func_impl.py +0 -0
  18. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/phe_impl.py +0 -0
  19. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_design.md +0 -0
  20. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/__init__.py +0 -0
  21. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/http.py +0 -0
  22. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/mem.py +0 -0
  23. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/state.py +0 -0
  24. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_driver/values.py +0 -0
  25. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/base.py +0 -0
  27. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/collective_algorithms.py +0 -0
  28. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/collectives.py +0 -0
  29. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/comm_context.py +0 -0
  30. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/http.py +0 -0
  31. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/infra.py +0 -0
  32. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/mem.py +0 -0
  33. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/request.py +0 -0
  34. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/simp_worker/state.py +0 -0
  35. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/spu_impl.py +0 -0
  36. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/spu_state.py +0 -0
  37. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/store_impl.py +0 -0
  38. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/table_impl.py +0 -0
  39. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/tee_impl.py +0 -0
  40. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/tensor_impl.py +0 -0
  41. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/backends/util.py +0 -0
  42. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/cli.py +0 -0
  43. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/cli_guide.md +0 -0
  44. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/__init__.py +0 -0
  45. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/_jax_utils.py +0 -0
  46. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/bfv.py +0 -0
  47. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/crypto.py +0 -0
  48. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/dtypes.py +0 -0
  49. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/field.py +0 -0
  50. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/func.py +0 -0
  51. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/phe.py +0 -0
  52. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/simp.py +0 -0
  53. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/spu.py +0 -0
  54. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/store.py +0 -0
  55. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/table.py +0 -0
  56. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/tee.py +0 -0
  57. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/dialects/tensor.py +0 -0
  58. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/README.md +0 -0
  59. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/__init__.py +0 -0
  60. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/context.py +0 -0
  61. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/graph.py +0 -0
  62. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/object.py +0 -0
  63. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/primitive.py +0 -0
  64. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/printer.py +0 -0
  65. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/program.py +0 -0
  66. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/registry.py +0 -0
  67. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/serde.py +0 -0
  68. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/tracer.py +0 -0
  69. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/edsl/typing.py +0 -0
  70. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/extend/__init__.py +0 -0
  71. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/extend/arrow/__init__.py +0 -0
  72. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/extend/arrow/compute.py +0 -0
  73. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/extend/arrow/util.py +0 -0
  74. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/extend/arrow/vector.py +0 -0
  75. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/Makefile +0 -0
  76. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/__init__.py +0 -0
  77. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/gf128.cpp +0 -0
  78. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/ldpc.cpp +0 -0
  79. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/okvs.cpp +0 -0
  80. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/okvs_opt.cpp +0 -0
  81. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/kernels/py_kernels.py +0 -0
  82. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/collective.py +0 -0
  83. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/device/__init__.py +0 -0
  84. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/device/api.py +0 -0
  85. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/device/cluster.py +0 -0
  86. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/ml/__init__.py +0 -0
  87. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/ml/sgb.py +0 -0
  88. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/__init__.py +0 -0
  89. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/_utils.py +0 -0
  90. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/analytics/__init__.py +0 -0
  91. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/analytics/aggregation.py +0 -0
  92. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/analytics/groupby.md +0 -0
  93. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/analytics/groupby.py +0 -0
  94. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/analytics/permutation.py +0 -0
  95. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/common/constants.py +0 -0
  96. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/ot/__init__.py +0 -0
  97. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/ot/base.py +0 -0
  98. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/ot/extension.py +0 -0
  99. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/ot/silent.py +0 -0
  100. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/__init__.py +0 -0
  101. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/cuckoo.py +0 -0
  102. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/okvs.py +0 -0
  103. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/okvs_gct.py +0 -0
  104. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/oprf.py +0 -0
  105. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/rr22.py +0 -0
  106. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/psi/unbalanced.py +0 -0
  107. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/vole/__init__.py +0 -0
  108. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/vole/gilboa.py +0 -0
  109. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/vole/ldpc.py +0 -0
  110. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/libs/mpc/vole/silver.py +0 -0
  111. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/py.typed +0 -0
  112. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/runtime/__init__.py +0 -0
  113. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/runtime/dialect_state.py +0 -0
  114. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/runtime/object_store.py +0 -0
  115. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/runtime/value.py +0 -0
  116. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/tool/__init__.py +0 -0
  117. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/tool/program.py +0 -0
  118. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/utils/__init__.py +0 -0
  119. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/utils/func_utils.py +0 -0
  120. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/mplang/utils/logging.py +0 -0
  121. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/pyproject.toml +0 -0
  122. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/__init__.py +0 -0
  123. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/__init__.py +0 -0
  124. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_driver/__init__.py +0 -0
  125. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_driver/test_http.py +0 -0
  126. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/__init__.py +0 -0
  127. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_async_exec.py +0 -0
  128. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_base.py +0 -0
  129. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_collectives.py +0 -0
  130. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_comm_context.py +0 -0
  131. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_http.py +0 -0
  132. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_http_communicator.py +0 -0
  133. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_mem.py +0 -0
  134. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_request_isolation.py +0 -0
  135. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/simp_worker/test_shuffle_exec_id_key.py +0 -0
  136. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_bfv_impl.py +0 -0
  137. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_channel.py +0 -0
  138. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_crypto_impl.py +0 -0
  139. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_okvs_binding.py +0 -0
  140. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_simp_object_store.py +0 -0
  141. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_spu_impl.py +0 -0
  142. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_table_impl.py +0 -0
  143. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_tee_impl.py +0 -0
  144. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_tensor_impl.py +0 -0
  145. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_util.py +0 -0
  146. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/backends/test_verify_clean.py +0 -0
  147. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/conftest.py +0 -0
  148. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/__init__.py +0 -0
  149. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_bfv.py +0 -0
  150. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_compile_context.py +0 -0
  151. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_crypto.py +0 -0
  152. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_dtypes.py +0 -0
  153. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_field.py +0 -0
  154. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_func.py +0 -0
  155. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_okvs.py +0 -0
  156. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_okvs_bench.py +0 -0
  157. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_phe.py +0 -0
  158. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_simp.py +0 -0
  159. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_simp_comm.py +0 -0
  160. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_spu.py +0 -0
  161. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_store.py +0 -0
  162. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_table.py +0 -0
  163. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_table_row_dimension.py +0 -0
  164. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_tee.py +0 -0
  165. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/dialects/test_tensor.py +0 -0
  166. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/__init__.py +0 -0
  167. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_compiled_program_artifact.py +0 -0
  168. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_context.py +0 -0
  169. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_graph.py +0 -0
  170. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_primitive.py +0 -0
  171. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_primitive_multi_output.py +0 -0
  172. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_printer.py +0 -0
  173. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_serde.py +0 -0
  174. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_tracer.py +0 -0
  175. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_typing.py +0 -0
  176. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/edsl/test_typing_graph_serde.py +0 -0
  177. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/extend/__init__.py +0 -0
  178. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/extend/test_arrow.py +0 -0
  179. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/__init__.py +0 -0
  180. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/conftest.py +0 -0
  181. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/test_device_api_errors.py +0 -0
  182. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/test_device_dialects.py +0 -0
  183. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/test_device_layouts.py +0 -0
  184. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/device/test_device_tee.py +0 -0
  185. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/ml/__init__.py +0 -0
  186. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/ml/test_sgb.py +0 -0
  187. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/ml/test_sgb_bench.py +0 -0
  188. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/__init__.py +0 -0
  189. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/analytics/__init__.py +0 -0
  190. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/analytics/test_aggregation.py +0 -0
  191. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/analytics/test_groupby.py +0 -0
  192. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/analytics/test_permutation.py +0 -0
  193. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/ot/__init__.py +0 -0
  194. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/ot/test_ot.py +0 -0
  195. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/ot/test_ot_extension.py +0 -0
  196. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/ot/test_silent_ot.py +0 -0
  197. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/__init__.py +0 -0
  198. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/test_okvs_gct.py +0 -0
  199. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/test_oprf.py +0 -0
  200. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/test_psi.py +0 -0
  201. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/test_psi_bench.py +0 -0
  202. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/test_rr22.py +0 -0
  203. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/psi/verify_psi_okvs_logic.py +0 -0
  204. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/test_field_gf128.py +0 -0
  205. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/test_utils.py +0 -0
  206. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/__init__.py +0 -0
  207. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/test_gilboa_manual.py +0 -0
  208. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/test_ldpc.py +0 -0
  209. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/test_silver_vole.py +0 -0
  210. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/test_vole.py +0 -0
  211. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/test_vole_bench.py +0 -0
  212. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/mpc/vole/verify_vole_logic.py +0 -0
  213. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/test_collective.py +0 -0
  214. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/libs/test_simple_guide.py +0 -0
  215. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/runtime/test_interpreter_async.py +0 -0
  216. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/runtime/test_object_store.py +0 -0
  217. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/runtime/test_object_store_fs.py +0 -0
  218. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/runtime/test_value_gc.py +0 -0
  219. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/test_fetch_semantics.py +0 -0
  220. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/test_pytree_io.py +0 -0
  221. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/utils/__init__.py +0 -0
  222. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/utils/tensor_patch.py +0 -0
  223. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/utils/test_func_utils.py +0 -0
  224. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tests/utils/test_logging.py +0 -0
  225. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/00_device_basics.py +0 -0
  226. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/01_function_decorator.py +0 -0
  227. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/02_simulation_and_driver.py +0 -0
  228. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/03_run_jax.py +0 -0
  229. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/04_ir_dump_and_analysis.py +0 -0
  230. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/05_run_sql.py +0 -0
  231. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/06_pipeline.py +0 -0
  232. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/07_stax_nn.py +0 -0
  233. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/08_logging.py +0 -0
  234. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/MIGRATION.md +0 -0
  235. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/README.md +0 -0
  236. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/__init__.py +0 -0
  237. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/data/alice.csv +0 -0
  238. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/data/bob.csv +0 -0
  239. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/data/prepare_vertical_iris.py +0 -0
  240. {mplang_nightly-0.1.dev332 → mplang_nightly-0.1.dev333}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev332
3
+ Version: 0.1.dev333
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -45,8 +45,8 @@ def _wrap_op_as_graph(op: Operation) -> Graph:
45
45
  # Create graph inputs
46
46
  graph_inputs = [g.add_input(f"in_{i}", any_type) for i in range(len(op.inputs))]
47
47
 
48
- # Determine output types
49
- output_types = [out.type for out in op.outputs] if op.outputs else [any_type]
48
+ # Determine output types (faithfully mirror the original op)
49
+ output_types = [out.type for out in op.outputs]
50
50
 
51
51
  # Add the operation (this handles outputs and value registration)
52
52
  g.add_op(
@@ -77,7 +77,7 @@ def _collect_to_hostvars(results: list[Any], num_outputs: int, world_size: int)
77
77
  Single DriverVar if num_outputs == 1, else list of DriverVars
78
78
  """
79
79
  if num_outputs == 0:
80
- return None
80
+ return []
81
81
 
82
82
  # Transpose [worker][output] -> [output][worker]
83
83
  # results[worker_idx] is a list of URIs for that worker's outputs
@@ -117,7 +117,7 @@ def _generic_simp_dispatch(interpreter: Any, op: Operation, *args: Any) -> Any:
117
117
  results = driver.collect(futures)
118
118
 
119
119
  # 4. Assemble into DriverVar(s)
120
- num_outputs = len(op.outputs) if op.outputs else 1
120
+ num_outputs = len(op.outputs)
121
121
  return _collect_to_hostvars(results, num_outputs, world_size)
122
122
 
123
123
 
@@ -53,13 +53,19 @@ def _pcall_static_worker_impl(
53
53
 
54
54
  try:
55
55
  result = interpreter.evaluate_graph(fn_graph, list(args))
56
- # Return single value for single output (interpreter expects this)
57
- return result[0] if len(op.outputs) == 1 else result
56
+ # Use inner graph's actual output count for safety
57
+ n_out = len(fn_graph.outputs)
58
+ if n_out == 0:
59
+ return []
60
+ return result[0] if n_out == 1 else result
58
61
  finally:
59
62
  worker.current_parties = prev_parties
60
63
  else:
61
64
  # No data for this rank
62
- return None if len(op.outputs) == 1 else [None] * len(op.outputs)
65
+ n_out = len(op.outputs)
66
+ if n_out == 0:
67
+ return []
68
+ return None if n_out == 1 else [None] * n_out
63
69
 
64
70
 
65
71
  def _pcall_dynamic_worker_impl(
@@ -68,7 +74,10 @@ def _pcall_dynamic_worker_impl(
68
74
  """Worker implementation of pcall_dynamic."""
69
75
  fn_graph = op.regions[0]
70
76
  result = interpreter.evaluate_graph(fn_graph, list(args))
71
- return result[0] if len(op.outputs) == 1 else result
77
+ n_out = len(fn_graph.outputs)
78
+ if n_out == 0:
79
+ return []
80
+ return result[0] if n_out == 1 else result
72
81
 
73
82
 
74
83
  def _shuffle_static_worker_impl(
@@ -1082,7 +1082,9 @@ class Interpreter(AbstractInterpreter):
1082
1082
  return
1083
1083
 
1084
1084
  # Store results
1085
- if len(op.outputs) == 1:
1085
+ if len(op.outputs) == 0:
1086
+ pass # Void operation
1087
+ elif len(op.outputs) == 1:
1086
1088
  env[op.outputs[0]] = result
1087
1089
  else:
1088
1090
  for out_val, res in zip(op.outputs, result, strict=True):
@@ -194,6 +194,50 @@ def test_nested_pcall():
194
194
  assert values == [20, 40]
195
195
 
196
196
 
197
+ def test_pcall_static_zero_output():
198
+ """Regression: pcall_static body returning None must not crash (IndexError).
199
+
200
+ When a function returns None, its traced graph has 0 outputs.
201
+ The driver/worker dispatch must handle this correctly.
202
+ """
203
+ sim = simp.make_simulator(world_size=2)
204
+ with sim:
205
+
206
+ def side_effect_only(x):
207
+ # Produces a traced op but returns nothing
208
+ run_jax(jnp.abs, x)
209
+ return None
210
+
211
+ x0 = simp.constant((0,), 1)
212
+ x1 = simp.constant((1,), 2)
213
+ x_obj = simp.converge(x0, x1)
214
+
215
+ # Should not raise IndexError
216
+ result = pcall_static((0, 1), side_effect_only, x_obj)
217
+ assert result is None
218
+
219
+
220
+ def test_pcall_static_zero_output_compile_evaluate():
221
+ """Regression: compile+evaluate path with zero-output pcall_static."""
222
+ sim = simp.make_simulator(world_size=2)
223
+ with sim:
224
+
225
+ def workflow():
226
+ x0 = simp.constant((0,), 42)
227
+ x1 = simp.constant((1,), 99)
228
+ x_obj = simp.converge(x0, x1)
229
+
230
+ def body(x):
231
+ run_jax(jnp.abs, x)
232
+ return None
233
+
234
+ pcall_static((0, 1), body, x_obj)
235
+
236
+ traced = mp.compile(workflow)
237
+ result = mp.evaluate(traced)
238
+ assert result is None
239
+
240
+
197
241
  def test_mp_function_decorator():
198
242
  """Test @mp.function decorator which implies pcall_static(ALL, ...)."""
199
243
  sim = simp.make_simulator(world_size=3)