mplang-nightly 0.1.dev167__tar.gz → 0.1.dev168__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 (171) hide show
  1. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/evaluator.py +3 -2
  3. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/device.py +6 -8
  4. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/__init__.py +2 -13
  5. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/ibis_cc.py +2 -2
  6. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/jax_cc.py +5 -5
  7. mplang_nightly-0.1.dev167/mplang/ops/sql.py → mplang_nightly-0.1.dev168/mplang/ops/sql_cc.py +5 -4
  8. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/simp/__init__.py +2 -2
  9. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_sql.py +3 -3
  10. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/.gitignore +0 -0
  11. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/LICENSE +0 -0
  12. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/README.md +0 -0
  13. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/conf/3pc.yaml +0 -0
  14. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/stax_nn/README.md +0 -0
  15. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/stax_nn/models.py +0 -0
  16. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/stax_nn/stax_nn.py +0 -0
  17. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/hist_jax.py +0 -0
  18. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/hist_jax_test.py +0 -0
  19. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/naive_np.py +0 -0
  20. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/readme.md +0 -0
  21. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/sgb.py +0 -0
  22. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/examples/xgboost/sgb_test.py +0 -0
  23. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/hatch_build.py +0 -0
  24. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/__init__.py +0 -0
  25. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/analysis/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/analysis/diagram.py +0 -0
  27. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/api.py +0 -0
  28. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/__init__.py +0 -0
  29. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/cluster.py +0 -0
  30. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/comm.py +0 -0
  31. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/context_mgr.py +0 -0
  32. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/dtype.py +0 -0
  33. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/__init__.py +0 -0
  34. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/ast.py +0 -0
  35. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/printer.py +0 -0
  36. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/transformer.py +0 -0
  37. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/utils.py +0 -0
  38. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/visitor.py +0 -0
  39. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/expr/walk.py +0 -0
  40. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/interp.py +0 -0
  41. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/mask.py +0 -0
  42. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/mpir.py +0 -0
  43. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/mpobject.py +0 -0
  44. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/mptype.py +0 -0
  45. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/pfunc.py +0 -0
  46. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/primitive.py +0 -0
  47. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/table.py +0 -0
  48. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/tensor.py +0 -0
  49. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/core/tracer.py +0 -0
  50. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/__init__.py +0 -0
  51. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/base.py +0 -0
  52. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/builtin.py +0 -0
  53. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/context.py +0 -0
  54. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/crypto.py +0 -0
  55. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/mock_tee.py +0 -0
  56. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/phe.py +0 -0
  57. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/spu.py +0 -0
  58. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/sql_duckdb.py +0 -0
  59. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/stablehlo.py +0 -0
  60. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/kernels/value.py +0 -0
  61. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/base.py +0 -0
  62. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/builtin.py +0 -0
  63. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/crypto.py +0 -0
  64. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/phe.py +0 -0
  65. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/spu.py +0 -0
  66. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/ops/tee.py +0 -0
  67. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/protos/v1alpha1/mpir_pb2.py +0 -0
  68. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/protos/v1alpha1/mpir_pb2.pyi +0 -0
  69. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/protos/v1alpha1/mpir_pb2_grpc.py +0 -0
  70. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/protos/v1alpha1/value_pb2.py +0 -0
  71. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/protos/v1alpha1/value_pb2.pyi +0 -0
  72. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/__init__.py +0 -0
  73. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/cli.py +0 -0
  74. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/client.py +0 -0
  75. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/communicator.py +0 -0
  76. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/data_providers.py +0 -0
  77. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/driver.py +0 -0
  78. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/exceptions.py +0 -0
  79. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/http_api.md +0 -0
  80. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/link_comm.py +0 -0
  81. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/server.py +0 -0
  82. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/session.py +0 -0
  83. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/runtime/simulation.py +0 -0
  84. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/simp/mpi.py +0 -0
  85. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/simp/random.py +0 -0
  86. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/simp/smpc.py +0 -0
  87. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/utils/__init__.py +0 -0
  88. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/utils/crypto.py +0 -0
  89. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/utils/func_utils.py +0 -0
  90. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/utils/spu_utils.py +0 -0
  91. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/mplang/utils/table_utils.py +0 -0
  92. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/pyproject.toml +0 -0
  93. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/__init__.py +0 -0
  94. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/analysis/test_diagram.py +0 -0
  95. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/conftest.py +0 -0
  96. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/__init__.py +0 -0
  97. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/__init__.py +0 -0
  98. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/conftest.py +0 -0
  99. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/test_ast.py +0 -0
  100. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/test_printer.py +0 -0
  101. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/test_utils.py +0 -0
  102. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/expr/test_walk.py +0 -0
  103. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_cluster.py +0 -0
  104. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_dtype.py +0 -0
  105. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_mask.py +0 -0
  106. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_mpir.py +0 -0
  107. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_mptype.py +0 -0
  108. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_primitive.py +0 -0
  109. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_table.py +0 -0
  110. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_tensor.py +0 -0
  111. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/core/test_tracer.py +0 -0
  112. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/device/__init__.py +0 -0
  113. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/device/test_device_basic.py +0 -0
  114. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/README.md +0 -0
  115. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/test_crypto_roundtrip.py +0 -0
  116. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/test_http_e2e.py +0 -0
  117. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/test_symbols_roundtrip.py +0 -0
  118. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/test_tutorials.py +0 -0
  119. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/integration/test_unused_param_integration.py +0 -0
  120. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_builtin.py +0 -0
  121. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_debug_print.py +0 -0
  122. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_kernel_binding.py +0 -0
  123. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_phe.py +0 -0
  124. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_spu.py +0 -0
  125. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_sql_duckdb.py +0 -0
  126. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_stablehlo.py +0 -0
  127. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_value.py +0 -0
  128. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/kernels/test_value_serde.py +0 -0
  129. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/__init__.py +0 -0
  130. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/dummy.py +0 -0
  131. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_builtin_pack.py +0 -0
  132. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_crypto_tee.py +0 -0
  133. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_feop_base.py +0 -0
  134. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_ibis.py +0 -0
  135. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_ibis_cc.py +0 -0
  136. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_jax_cc.py +0 -0
  137. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_phe.py +0 -0
  138. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_spu.py +0 -0
  139. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_spu_defensive.py +0 -0
  140. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/ops/test_table_tensor_conversion.py +0 -0
  141. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/__init__.py +0 -0
  142. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/test_cli.py +0 -0
  143. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/test_communicator.py +0 -0
  144. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/test_driver.py +0 -0
  145. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/test_server.py +0 -0
  146. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/runtime/test_simulation.py +0 -0
  147. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/simp/test_mpi.py +0 -0
  148. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/simp/test_random.py +0 -0
  149. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/simp/test_simp.py +0 -0
  150. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/simp/test_smpc.py +0 -0
  151. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/simp/test_sugar.py +0 -0
  152. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/utils/__init__.py +0 -0
  153. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/utils/server_fixtures.py +0 -0
  154. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/utils/test_func_utils.py +0 -0
  155. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/utils/test_spu_utils.py +0 -0
  156. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tests/utils/test_table_utils.py +0 -0
  157. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/0_basic.py +0 -0
  158. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/10_analysis.py +0 -0
  159. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/1_condition.py +0 -0
  160. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/2_whileloop.py +0 -0
  161. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/3_device.py +0 -0
  162. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/4_simulation.py +0 -0
  163. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/5_ir_dump.py +0 -0
  164. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/6_advanced.py +0 -0
  165. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/7_stdio.py +0 -0
  166. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/8_phe.py +0 -0
  167. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/9_tee.py +0 -0
  168. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/__init__.py +0 -0
  169. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/pitfalls/late_binding.py +0 -0
  170. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/pitfalls/rand.py +0 -0
  171. {mplang_nightly-0.1.dev167 → mplang_nightly-0.1.dev168}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev167
3
+ Version: 0.1.dev168
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -27,8 +27,6 @@ from __future__ import annotations
27
27
  from dataclasses import dataclass
28
28
  from typing import Any, Protocol
29
29
 
30
- import numpy as np
31
-
32
30
  from mplang.core.comm import ICommunicator
33
31
  from mplang.core.expr.ast import (
34
32
  AccessExpr,
@@ -234,11 +232,14 @@ class EvalSemantic:
234
232
  """Convert Value payloads to numpy/python equivalents when possible."""
235
233
  if value is None:
236
234
  return None
235
+
237
236
  if isinstance(value, Value):
238
237
  # Try to_numpy first for broader compatibility
239
238
  to_numpy = getattr(value, "to_numpy", None)
240
239
  if callable(to_numpy):
241
240
  arr = to_numpy()
241
+ import numpy as np
242
+
242
243
  if isinstance(arr, np.ndarray):
243
244
  if arr.size == 1:
244
245
  return arr.item()
@@ -37,8 +37,8 @@ from mplang.core.context_mgr import cur_ctx
37
37
  from mplang.core.tensor import TensorType
38
38
  from mplang.ops import builtin, crypto, ibis_cc, jax_cc, tee
39
39
  from mplang.ops.base import FeOperation
40
- from mplang.ops.ibis_cc import IbisCompiler
41
- from mplang.ops.jax_cc import JaxCompiler
40
+ from mplang.ops.ibis_cc import IbisRunner
41
+ from mplang.ops.jax_cc import JaxRunner
42
42
  from mplang.simp import mpi, smpc
43
43
 
44
44
  # Automatic transfer between devices when parameter is not on the target device.
@@ -82,7 +82,7 @@ _is_mpobj = lambda x: isinstance(x, MPObject)
82
82
  def _device_run_spu(
83
83
  dev_info: Device, op: FeOperation, *args: Any, **kwargs: Any
84
84
  ) -> Any:
85
- if not isinstance(op, JaxCompiler):
85
+ if not isinstance(op, JaxRunner):
86
86
  raise ValueError("SPU device only supports JAX frontend.")
87
87
  fn, *aargs = args
88
88
  var = smpc.srun(fn)(*aargs, **kwargs)
@@ -92,7 +92,7 @@ def _device_run_spu(
92
92
  def _device_run_tee(
93
93
  dev_info: Device, op: FeOperation, *args: Any, **kwargs: Any
94
94
  ) -> Any:
95
- if not isinstance(op, JaxCompiler) and not isinstance(op, IbisCompiler):
95
+ if not isinstance(op, JaxRunner) and not isinstance(op, IbisRunner):
96
96
  raise ValueError("TEE device only supports JAX and Ibis frontend.")
97
97
  assert len(dev_info.members) == 1
98
98
  rank = dev_info.members[0].rank
@@ -159,11 +159,9 @@ def device(dev_id: str, *, fe_type: str = "jax") -> Callable:
159
159
  return _device_run(dev_id, fn, *args, **kwargs)
160
160
  else:
161
161
  if fe_type == "jax":
162
- return _device_run(dev_id, jax_cc.jax_compile, fn, *args, **kwargs)
162
+ return _device_run(dev_id, jax_cc.run_jax, fn, *args, **kwargs)
163
163
  elif fe_type == "ibis":
164
- return _device_run(
165
- dev_id, ibis_cc.ibis_compile, fn, *args, **kwargs
166
- )
164
+ return _device_run(dev_id, ibis_cc.run_ibis, fn, *args, **kwargs)
167
165
  else:
168
166
  raise ValueError(f"Unsupported frontend type: {fe_type}")
169
167
 
@@ -19,28 +19,17 @@ This module contains compilers that transform high-level functions into
19
19
  portable, serializable intermediate representations.
20
20
  """
21
21
 
22
- from mplang.ops import builtin as builtin
23
- from mplang.ops import crypto as crypto
24
- from mplang.ops import ibis_cc as ibis_cc
25
- from mplang.ops import jax_cc as jax_cc
26
- from mplang.ops import phe as phe
27
- from mplang.ops import spu as spu
28
- from mplang.ops import tee as tee
22
+ from mplang.ops import builtin, crypto, ibis_cc, jax_cc, phe, spu, sql_cc, tee
29
23
  from mplang.ops.base import FeOperation as FeOperation
30
- from mplang.ops.ibis_cc import ibis_compile as ibis_compile
31
- from mplang.ops.jax_cc import jax_compile as jax_compile
32
- from mplang.ops.sql import sql_run as sql_run
33
24
 
34
25
  __all__ = [
35
26
  "FeOperation",
36
27
  "builtin",
37
28
  "crypto",
38
29
  "ibis_cc",
39
- "ibis_compile",
40
30
  "jax_cc",
41
- "jax_compile",
42
31
  "phe",
43
32
  "spu",
44
- "sql_run",
33
+ "sql_cc",
45
34
  "tee",
46
35
  ]
@@ -95,7 +95,7 @@ def is_ibis_function(func: Callable) -> bool:
95
95
  _IBIS_MOD = stateless_mod("ibis")
96
96
 
97
97
 
98
- class IbisCompiler(FeOperation):
98
+ class IbisRunner(FeOperation):
99
99
  """Ibis compiler frontend operation."""
100
100
 
101
101
  def trace(
@@ -136,4 +136,4 @@ class IbisCompiler(FeOperation):
136
136
  return pfunc, in_vars, treedef
137
137
 
138
138
 
139
- ibis_compile = IbisCompiler(_IBIS_MOD, "compile")
139
+ run_ibis = IbisRunner(_IBIS_MOD, "run")
@@ -149,11 +149,11 @@ def jax2stablehlo(
149
149
  return pfn, in_vars, out_tree
150
150
 
151
151
 
152
- class JaxCompiler(FeOperation):
153
- """JAX compiler frontend operation."""
152
+ class JaxRunner(FeOperation):
153
+ """JAX function runner frontend operation."""
154
154
 
155
155
  def trace(
156
- self, func: Callable, *args: Any, **kwargs: Any
156
+ self, jax_fn: Callable, *args: Any, **kwargs: Any
157
157
  ) -> tuple[PFunction, list[MPObject], PyTreeDef]:
158
158
  """
159
159
  JAX compilation helper function.
@@ -173,10 +173,10 @@ class JaxCompiler(FeOperation):
173
173
  def is_variable(arg: Any) -> bool:
174
174
  return isinstance(arg, MPObject)
175
175
 
176
- pfunc, in_vars, out_tree = jax2stablehlo(is_variable, func, *args, **kwargs)
176
+ pfunc, in_vars, out_tree = jax2stablehlo(is_variable, jax_fn, *args, **kwargs)
177
177
  return pfunc, in_vars, out_tree
178
178
 
179
179
 
180
180
  _JAX_MOD = stateless_mod("jax")
181
181
 
182
- jax_compile = JaxCompiler(_JAX_MOD, "compile")
182
+ run_jax = JaxRunner(_JAX_MOD, "run")
@@ -22,15 +22,16 @@ from mplang.ops.base import FeOperation, stateless_mod
22
22
  _SQL_MOD = stateless_mod("sql")
23
23
 
24
24
 
25
- class SqlFE(FeOperation):
25
+ class SqlRunner(FeOperation):
26
26
  def __init__(self, dialect: str = "duckdb"):
27
27
  # Bind to sql module with a stable op name for registry/dispatch
28
28
  super().__init__(_SQL_MOD, "run")
29
29
  self._dialect = dialect
30
30
 
31
+ # TODO(jint): we should deduce out_type according to query and in_tables' schema
31
32
  def trace(
32
33
  self,
33
- sql: str,
34
+ query: str,
34
35
  out_type: TableType,
35
36
  in_tables: dict[str, MPObject] | None = None,
36
37
  ) -> tuple[PFunction, list[MPObject], PyTreeDef]:
@@ -48,7 +49,7 @@ class SqlFE(FeOperation):
48
49
  pfn = PFunction(
49
50
  fn_type="sql.run",
50
51
  fn_name="",
51
- fn_text=sql,
52
+ fn_text=query,
52
53
  ins_info=tuple(ins_info),
53
54
  outs_info=(out_type,),
54
55
  in_names=tuple(in_names),
@@ -58,4 +59,4 @@ class SqlFE(FeOperation):
58
59
  return pfn, in_vars, treedef
59
60
 
60
61
 
61
- sql_run = SqlFE("duckdb")
62
+ run_sql = SqlRunner("duckdb")
@@ -139,10 +139,10 @@ def run_impl(
139
139
  pfunc, eval_args, out_tree = func(*args, **kwargs)
140
140
  else:
141
141
  if ibis_cc.is_ibis_function(func):
142
- pfunc, eval_args, out_tree = ibis_cc.ibis_compile(func, *args, **kwargs)
142
+ pfunc, eval_args, out_tree = ibis_cc.run_ibis(func, *args, **kwargs)
143
143
  else:
144
144
  # unknown python callable, treat it as jax function
145
- pfunc, eval_args, out_tree = jax_cc.jax_compile(func, *args, **kwargs)
145
+ pfunc, eval_args, out_tree = jax_cc.run_jax(func, *args, **kwargs)
146
146
  results = peval(pfunc, eval_args, pmask)
147
147
  return out_tree.unflatten(results)
148
148
 
@@ -18,14 +18,14 @@ import mplang
18
18
  from mplang import simp
19
19
  from mplang.core.dtype import INT32
20
20
  from mplang.core.table import TableType
21
- from mplang.ops import sql_run
21
+ from mplang.ops import sql_cc
22
22
 
23
23
 
24
24
  def test_sqlrun():
25
25
  # test without input
26
26
  sql = "select a from 'a.csv'"
27
27
  out_type = TableType.from_pairs([("a", INT32)])
28
- pfn, input_args, _output_tree = sql_run(sql, out_type)
28
+ pfn, input_args, _output_tree = sql_cc.run_sql(sql, out_type)
29
29
  assert pfn.fn_text == sql
30
30
  assert pfn.outs_info[0] == out_type
31
31
  assert len(input_args) == 0
@@ -40,7 +40,7 @@ def test_sqlrun():
40
40
  sql = "select a from table"
41
41
  out_type = TableType.from_pairs([("a", INT32)])
42
42
  in_tables = {"table": in_tbl}
43
- pfn, input_args, _output_tree = sql_run(sql, out_type, in_tables=in_tables)
43
+ pfn, input_args, _output_tree = sql_cc.run_sql(sql, out_type, in_tables=in_tables)
44
44
  assert pfn.fn_text == sql
45
45
  assert pfn.outs_info[0] == out_type
46
46
  assert len(input_args) == 1