mplang-nightly 0.1.dev334__tar.gz → 0.1.dev336__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.dev334 → mplang_nightly-0.1.dev336}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/util.py +3 -8
  3. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/serde.py +70 -0
  4. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_serde.py +79 -0
  5. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/.gitignore +0 -0
  6. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/LICENSE +0 -0
  7. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/README.md +0 -0
  8. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/examples/.gitkeep +0 -0
  9. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/hatch_build.py +0 -0
  10. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/__init__.py +0 -0
  11. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/__init__.py +0 -0
  12. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/bfv_impl.py +0 -0
  13. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/channel.py +0 -0
  14. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/crypto_impl.py +0 -0
  15. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/field_impl.py +0 -0
  16. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/func_impl.py +0 -0
  17. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/phe_impl.py +0 -0
  18. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_design.md +0 -0
  19. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/__init__.py +0 -0
  20. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/http.py +0 -0
  21. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/mem.py +0 -0
  22. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/ops.py +0 -0
  23. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/state.py +0 -0
  24. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_driver/values.py +0 -0
  25. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/base.py +0 -0
  27. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/collective_algorithms.py +0 -0
  28. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/collectives.py +0 -0
  29. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/comm_context.py +0 -0
  30. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/http.py +0 -0
  31. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/infra.py +0 -0
  32. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/mem.py +0 -0
  33. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/ops.py +0 -0
  34. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/request.py +0 -0
  35. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/simp_worker/state.py +0 -0
  36. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/spu_impl.py +0 -0
  37. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/spu_state.py +0 -0
  38. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/store_impl.py +0 -0
  39. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/table_impl.py +0 -0
  40. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/tee_impl.py +0 -0
  41. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/backends/tensor_impl.py +0 -0
  42. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/cli.py +0 -0
  43. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/cli_guide.md +0 -0
  44. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/__init__.py +0 -0
  45. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/_jax_utils.py +0 -0
  46. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/bfv.py +0 -0
  47. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/crypto.py +0 -0
  48. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/dtypes.py +0 -0
  49. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/field.py +0 -0
  50. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/func.py +0 -0
  51. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/phe.py +0 -0
  52. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/simp.py +0 -0
  53. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/spu.py +0 -0
  54. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/store.py +0 -0
  55. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/table.py +0 -0
  56. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/tee.py +0 -0
  57. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/dialects/tensor.py +0 -0
  58. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/README.md +0 -0
  59. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/__init__.py +0 -0
  60. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/context.py +0 -0
  61. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/graph.py +0 -0
  62. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/object.py +0 -0
  63. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/primitive.py +0 -0
  64. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/printer.py +0 -0
  65. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/program.py +0 -0
  66. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/registry.py +0 -0
  67. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/tracer.py +0 -0
  68. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/edsl/typing.py +0 -0
  69. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/extend/__init__.py +0 -0
  70. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/extend/arrow/__init__.py +0 -0
  71. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/extend/arrow/compute.py +0 -0
  72. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/extend/arrow/util.py +0 -0
  73. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/extend/arrow/vector.py +0 -0
  74. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/Makefile +0 -0
  75. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/__init__.py +0 -0
  76. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/gf128.cpp +0 -0
  77. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/ldpc.cpp +0 -0
  78. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/okvs.cpp +0 -0
  79. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/okvs_opt.cpp +0 -0
  80. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/kernels/py_kernels.py +0 -0
  81. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/collective.py +0 -0
  82. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/device/__init__.py +0 -0
  83. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/device/api.py +0 -0
  84. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/device/cluster.py +0 -0
  85. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/ml/__init__.py +0 -0
  86. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/ml/sgb.py +0 -0
  87. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/__init__.py +0 -0
  88. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/_utils.py +0 -0
  89. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/analytics/__init__.py +0 -0
  90. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/analytics/aggregation.py +0 -0
  91. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/analytics/groupby.md +0 -0
  92. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/analytics/groupby.py +0 -0
  93. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/analytics/permutation.py +0 -0
  94. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/common/constants.py +0 -0
  95. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/ot/__init__.py +0 -0
  96. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/ot/base.py +0 -0
  97. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/ot/extension.py +0 -0
  98. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/ot/silent.py +0 -0
  99. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/__init__.py +0 -0
  100. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/cuckoo.py +0 -0
  101. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/okvs.py +0 -0
  102. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/okvs_gct.py +0 -0
  103. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/oprf.py +0 -0
  104. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/rr22.py +0 -0
  105. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/psi/unbalanced.py +0 -0
  106. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/vole/__init__.py +0 -0
  107. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/vole/gilboa.py +0 -0
  108. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/vole/ldpc.py +0 -0
  109. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/libs/mpc/vole/silver.py +0 -0
  110. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/py.typed +0 -0
  111. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/runtime/__init__.py +0 -0
  112. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/runtime/dialect_state.py +0 -0
  113. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/runtime/interpreter.py +0 -0
  114. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/runtime/object_store.py +0 -0
  115. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/runtime/value.py +0 -0
  116. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/tool/__init__.py +0 -0
  117. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/tool/program.py +0 -0
  118. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/utils/__init__.py +0 -0
  119. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/utils/func_utils.py +0 -0
  120. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/mplang/utils/logging.py +0 -0
  121. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/pyproject.toml +0 -0
  122. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/__init__.py +0 -0
  123. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/__init__.py +0 -0
  124. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_driver/__init__.py +0 -0
  125. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_driver/test_http.py +0 -0
  126. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/__init__.py +0 -0
  127. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_async_exec.py +0 -0
  128. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_base.py +0 -0
  129. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_collectives.py +0 -0
  130. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_comm_context.py +0 -0
  131. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_http.py +0 -0
  132. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_http_communicator.py +0 -0
  133. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_mem.py +0 -0
  134. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_request_isolation.py +0 -0
  135. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/simp_worker/test_shuffle_exec_id_key.py +0 -0
  136. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_bfv_impl.py +0 -0
  137. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_channel.py +0 -0
  138. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_crypto_impl.py +0 -0
  139. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_okvs_binding.py +0 -0
  140. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_simp_integration.py +0 -0
  141. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_simp_object_store.py +0 -0
  142. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_spu_impl.py +0 -0
  143. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_table_impl.py +0 -0
  144. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_tee_impl.py +0 -0
  145. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_tensor_impl.py +0 -0
  146. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_util.py +0 -0
  147. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/backends/test_verify_clean.py +0 -0
  148. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/conftest.py +0 -0
  149. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/__init__.py +0 -0
  150. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_bfv.py +0 -0
  151. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_compile_context.py +0 -0
  152. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_crypto.py +0 -0
  153. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_dtypes.py +0 -0
  154. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_field.py +0 -0
  155. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_func.py +0 -0
  156. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_okvs.py +0 -0
  157. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_okvs_bench.py +0 -0
  158. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_phe.py +0 -0
  159. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_simp.py +0 -0
  160. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_simp_comm.py +0 -0
  161. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_spu.py +0 -0
  162. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_store.py +0 -0
  163. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_table.py +0 -0
  164. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_table_row_dimension.py +0 -0
  165. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_tee.py +0 -0
  166. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/dialects/test_tensor.py +0 -0
  167. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/__init__.py +0 -0
  168. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_compiled_program_artifact.py +0 -0
  169. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_context.py +0 -0
  170. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_graph.py +0 -0
  171. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_primitive.py +0 -0
  172. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_primitive_multi_output.py +0 -0
  173. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_printer.py +0 -0
  174. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_tracer.py +0 -0
  175. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_typing.py +0 -0
  176. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/edsl/test_typing_graph_serde.py +0 -0
  177. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/extend/__init__.py +0 -0
  178. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/extend/test_arrow.py +0 -0
  179. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/__init__.py +0 -0
  180. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/conftest.py +0 -0
  181. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/test_device_api_errors.py +0 -0
  182. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/test_device_dialects.py +0 -0
  183. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/test_device_layouts.py +0 -0
  184. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/device/test_device_tee.py +0 -0
  185. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/ml/__init__.py +0 -0
  186. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/ml/test_sgb.py +0 -0
  187. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/ml/test_sgb_bench.py +0 -0
  188. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/__init__.py +0 -0
  189. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/analytics/__init__.py +0 -0
  190. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/analytics/test_aggregation.py +0 -0
  191. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/analytics/test_groupby.py +0 -0
  192. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/analytics/test_permutation.py +0 -0
  193. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/ot/__init__.py +0 -0
  194. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/ot/test_ot.py +0 -0
  195. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/ot/test_ot_extension.py +0 -0
  196. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/ot/test_silent_ot.py +0 -0
  197. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/__init__.py +0 -0
  198. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/test_okvs_gct.py +0 -0
  199. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/test_oprf.py +0 -0
  200. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/test_psi.py +0 -0
  201. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/test_psi_bench.py +0 -0
  202. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/test_rr22.py +0 -0
  203. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/psi/verify_psi_okvs_logic.py +0 -0
  204. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/test_field_gf128.py +0 -0
  205. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/test_utils.py +0 -0
  206. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/__init__.py +0 -0
  207. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/test_gilboa_manual.py +0 -0
  208. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/test_ldpc.py +0 -0
  209. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/test_silver_vole.py +0 -0
  210. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/test_vole.py +0 -0
  211. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/test_vole_bench.py +0 -0
  212. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/mpc/vole/verify_vole_logic.py +0 -0
  213. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/test_collective.py +0 -0
  214. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/libs/test_simple_guide.py +0 -0
  215. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/runtime/test_interpreter_async.py +0 -0
  216. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/runtime/test_object_store.py +0 -0
  217. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/runtime/test_object_store_fs.py +0 -0
  218. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/runtime/test_value_gc.py +0 -0
  219. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/test_fetch_semantics.py +0 -0
  220. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/test_pytree_io.py +0 -0
  221. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/utils/__init__.py +0 -0
  222. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/utils/tensor_patch.py +0 -0
  223. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/utils/test_func_utils.py +0 -0
  224. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tests/utils/test_logging.py +0 -0
  225. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/00_device_basics.py +0 -0
  226. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/01_function_decorator.py +0 -0
  227. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/02_simulation_and_driver.py +0 -0
  228. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/03_run_jax.py +0 -0
  229. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/04_ir_dump_and_analysis.py +0 -0
  230. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/05_run_sql.py +0 -0
  231. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/06_pipeline.py +0 -0
  232. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/07_stax_nn.py +0 -0
  233. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/08_logging.py +0 -0
  234. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/MIGRATION.md +0 -0
  235. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/README.md +0 -0
  236. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/__init__.py +0 -0
  237. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/data/alice.csv +0 -0
  238. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/data/bob.csv +0 -0
  239. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/data/prepare_vertical_iris.py +0 -0
  240. {mplang_nightly-0.1.dev334 → mplang_nightly-0.1.dev336}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev334
3
+ Version: 0.1.dev336
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -101,21 +101,16 @@ def _refine_stablehlo(code: str, args: tuple[TensorLike, ...]) -> str:
101
101
  cmd = [
102
102
  "stablehlo-opt",
103
103
  input_file,
104
+ "--inline",
104
105
  f"--stablehlo-refine-arguments={refine_args}",
105
106
  "--stablehlo-refine-shapes",
106
107
  "--stablehlo-canonicalize-dynamism",
108
+ "--stablehlo-check-shape-assertions",
107
109
  ]
108
110
 
109
111
  result = subprocess.run(cmd, capture_output=True, text=True, check=True)
110
112
 
111
- # Filter out shape_assertion custom calls that cause compilation errors
112
- filtered_output = "\n".join(
113
- line
114
- for line in result.stdout.split("\n")
115
- if "stablehlo.custom_call @shape_assertion" not in line
116
- )
117
-
118
- return filtered_output
113
+ return result.stdout
119
114
 
120
115
  except subprocess.CalledProcessError as e:
121
116
  # Re-throw with additional information
@@ -144,6 +144,7 @@ def to_json(obj: Any) -> dict[str, Any]:
144
144
  3. Be a list/tuple of serializable objects
145
145
  4. Be a dict with string keys and serializable values
146
146
  5. Be a numpy ndarray
147
+ 6. Be a pyarrow Table or pandas DataFrame (round-tripped via Arrow IPC)
147
148
 
148
149
  Args:
149
150
  obj: Object to serialize
@@ -196,6 +197,36 @@ def to_json(obj: Any) -> dict[str, Any]:
196
197
  "data": base64.b64encode(obj.tobytes()).decode("ascii"),
197
198
  }
198
199
 
200
+ # Tabular data with named columns. Both pyarrow Table and pandas
201
+ # DataFrame expose ``__array__`` and would otherwise fall into the
202
+ # ndarray branch below, losing column names and dtype info. Use pyarrow
203
+ # IPC for lossless round-trip. Trigger: any op-attr carrying tabular
204
+ # data (e.g. ``ibis.memtable({...})`` placed via ``mp.put`` →
205
+ # ``simp.constant`` → ``table.constant_p``).
206
+ try:
207
+ import pyarrow as pa
208
+ except ImportError: # pragma: no cover - pyarrow is a hard dep elsewhere
209
+ pa = None
210
+ try:
211
+ import pandas as pd
212
+ except ImportError: # pragma: no cover
213
+ pd = None
214
+
215
+ if pa is not None and isinstance(obj, pa.Table):
216
+ table_obj: Any = obj
217
+ elif pa is not None and pd is not None and isinstance(obj, pd.DataFrame):
218
+ table_obj = pa.Table.from_pandas(obj, preserve_index=False)
219
+ else:
220
+ table_obj = None
221
+ if table_obj is not None:
222
+ sink = pa.BufferOutputStream()
223
+ with pa.ipc.new_stream(sink, table_obj.schema) as writer:
224
+ writer.write_table(table_obj)
225
+ return {
226
+ "_kind": "_pa_table",
227
+ "data": base64.b64encode(sink.getvalue().to_pybytes()).decode("ascii"),
228
+ }
229
+
199
230
  # Array-like (JAX, etc.) - convert to numpy
200
231
  if hasattr(obj, "__array__"):
201
232
  return to_json(np.asarray(obj))
@@ -298,6 +329,13 @@ def from_json(data: dict[str, Any]) -> Any:
298
329
  # Always reshape - empty tuple () means scalar, which requires reshape
299
330
  return arr.reshape(shape)
300
331
 
332
+ # Tabular data round-tripped via pyarrow IPC (see to_json companion).
333
+ if kind == "_pa_table":
334
+ import pyarrow as pa
335
+
336
+ buf = base64.b64decode(data["data"])
337
+ return pa.ipc.open_stream(pa.BufferReader(buf)).read_all()
338
+
301
339
  # Registered classes
302
340
  if kind in _CLASS_REGISTRY:
303
341
  cls = _CLASS_REGISTRY[kind]
@@ -485,6 +523,30 @@ def _to_binary_json(obj: Any, ctx: BinaryContext) -> dict[str, Any]:
485
523
  seg_idx = ctx.add_segment(obj)
486
524
  return {"_kind": "_bytes_bref", "bref": seg_idx}
487
525
 
526
+ # Tabular data (parity with to_json) — emit Arrow IPC bytes as a
527
+ # binary segment instead of inlining base64. Must come before the
528
+ # ``__array__`` check, since pa.Table / pd.DataFrame both expose it.
529
+ try:
530
+ import pyarrow as pa
531
+ except ImportError: # pragma: no cover
532
+ pa = None
533
+ try:
534
+ import pandas as pd
535
+ except ImportError: # pragma: no cover
536
+ pd = None
537
+
538
+ table_obj: Any = None
539
+ if pa is not None and isinstance(obj, pa.Table):
540
+ table_obj = obj
541
+ elif pa is not None and pd is not None and isinstance(obj, pd.DataFrame):
542
+ table_obj = pa.Table.from_pandas(obj, preserve_index=False)
543
+ if table_obj is not None:
544
+ sink = pa.BufferOutputStream()
545
+ with pa.ipc.new_stream(sink, table_obj.schema) as writer:
546
+ writer.write_table(table_obj)
547
+ seg_idx = ctx.add_segment(sink.getvalue().to_pybytes())
548
+ return {"_kind": "_pa_table_bref", "bref": seg_idx}
549
+
488
550
  # Array-like (e.g., JAX arrays)
489
551
  if hasattr(obj, "__array__"):
490
552
  return _to_binary_json(np.asarray(obj), ctx)
@@ -538,6 +600,14 @@ def _from_binary_json(data: dict[str, Any], segments: list[memoryview]) -> Any:
538
600
  arr = np.frombuffer(raw, dtype=np.dtype(data["dtype"]))
539
601
  return arr.reshape(tuple(data["shape"])).copy()
540
602
 
603
+ if kind == "_pa_table_bref":
604
+ import pyarrow as pa
605
+
606
+ # ``pa.BufferReader`` accepts any buffer-protocol object, so we pass
607
+ # the memoryview through to avoid an extra ``bytes(...)`` copy.
608
+ buf = segments[data["bref"]]
609
+ return pa.ipc.open_stream(pa.BufferReader(buf)).read_all()
610
+
541
611
  if kind == "_list":
542
612
  return [_from_binary_json(item, segments) for item in data["items"]]
543
613
 
@@ -275,6 +275,85 @@ class TestBinaryWireFormat:
275
275
  assert result == payload
276
276
 
277
277
 
278
+ # =============================================================================
279
+ # Tests: Tabular Data (pyarrow.Table / pandas.DataFrame)
280
+ # =============================================================================
281
+
282
+
283
+ class TestArrowTableRoundTrip:
284
+ """Tabular data must round-trip losslessly, preserving column names + dtypes.
285
+
286
+ Both ``pa.Table`` and ``pd.DataFrame`` expose ``__array__``. Before the
287
+ fix they fell into the numpy ndarray branch which collapsed the columns
288
+ into a single 2-D array, losing names and per-column dtypes.
289
+ """
290
+
291
+ def test_to_json_pa_table_roundtrip(self):
292
+ import pyarrow as pa
293
+
294
+ t = pa.table({
295
+ "bin_id": [0, 1, 2, 3],
296
+ "edge": [0.1, 0.5, 0.9, 1.0],
297
+ "name": ["a", "b", "c", "d"],
298
+ })
299
+ payload = serde.to_json(t)
300
+ assert payload["_kind"] == "_pa_table"
301
+
302
+ result = serde.from_json(payload)
303
+ assert isinstance(result, pa.Table)
304
+ assert result.schema.equals(t.schema)
305
+ assert result.equals(t)
306
+
307
+ def test_to_json_pandas_dataframe_roundtrip_as_pa_table(self):
308
+ pd = pytest.importorskip("pandas")
309
+ import pyarrow as pa
310
+
311
+ df = pd.DataFrame({
312
+ "bin_id": [0, 1, 2, 3],
313
+ "edge": [0.1, 0.5, 0.9, 1.0],
314
+ })
315
+ payload = serde.to_json(df)
316
+ assert payload["_kind"] == "_pa_table"
317
+
318
+ result = serde.from_json(payload)
319
+ # Deserialized as pa.Table (canonical tabular form). Column names and
320
+ # numeric dtypes must survive.
321
+ assert isinstance(result, pa.Table)
322
+ assert result.column_names == ["bin_id", "edge"]
323
+ assert pa.Table.from_pandas(df, preserve_index=False).equals(result)
324
+
325
+ def test_dumps_binary_pa_table_uses_segment_reference(self):
326
+ import pyarrow as pa
327
+
328
+ t = pa.table({"x": [1, 2, 3], "y": [10.0, 20.0, 30.0]})
329
+ serialized = serde.dumps_binary(t)
330
+ meta_len = struct.unpack_from("<I", serialized, 0)[0]
331
+ meta = json.loads(serialized[4 : 4 + meta_len].decode("utf-8"))
332
+
333
+ assert meta["_kind"] == "_pa_table_bref"
334
+ assert "bref" in meta
335
+ assert "data" not in meta # binary path must not base64-inline
336
+
337
+ result = serde.loads_binary(serialized)
338
+ assert isinstance(result, pa.Table)
339
+ assert result.equals(t)
340
+
341
+ def test_dumps_binary_pandas_dataframe_uses_segment_reference(self):
342
+ pd = pytest.importorskip("pandas")
343
+ import pyarrow as pa
344
+
345
+ df = pd.DataFrame({"a": [1, 2], "b": [3.5, 4.5]})
346
+ serialized = serde.dumps_binary(df)
347
+ meta_len = struct.unpack_from("<I", serialized, 0)[0]
348
+ meta = json.loads(serialized[4 : 4 + meta_len].decode("utf-8"))
349
+
350
+ assert meta["_kind"] == "_pa_table_bref"
351
+
352
+ result = serde.loads_binary(serialized)
353
+ assert isinstance(result, pa.Table)
354
+ assert result.column_names == ["a", "b"]
355
+
356
+
278
357
  # =============================================================================
279
358
  # Tests: Error Handling
280
359
  # =============================================================================