mplang-nightly 0.1.dev181__tar.gz → 0.1.dev182__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.dev181 → mplang_nightly-0.1.dev182}/PKG-INFO +2 -2
  2. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/README.md +1 -1
  3. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/primitive.py +1 -1
  4. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/host.py +32 -0
  5. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/mpi.py +2 -2
  6. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/.gitignore +0 -0
  7. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/LICENSE +0 -0
  8. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/conf/3pc.yaml +0 -0
  9. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/stax_nn/README.md +0 -0
  10. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/stax_nn/models.py +0 -0
  11. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/stax_nn/stax_nn.py +0 -0
  12. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/hist_jax.py +0 -0
  13. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/hist_jax_test.py +0 -0
  14. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/naive_np.py +0 -0
  15. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/readme.md +0 -0
  16. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/sgb.py +0 -0
  17. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/examples/xgboost/sgb_test.py +0 -0
  18. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/hatch_build.py +0 -0
  19. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/__init__.py +0 -0
  20. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/analysis/__init__.py +0 -0
  21. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/analysis/diagram.py +0 -0
  22. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/__init__.py +0 -0
  23. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/cluster.py +0 -0
  24. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/comm.py +0 -0
  25. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/context_mgr.py +0 -0
  26. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/dtypes.py +0 -0
  27. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/__init__.py +0 -0
  28. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/ast.py +0 -0
  29. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/evaluator.py +0 -0
  30. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/printer.py +0 -0
  31. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/transformer.py +0 -0
  32. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/utils.py +0 -0
  33. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/visitor.py +0 -0
  34. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/expr/walk.py +0 -0
  35. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/interp.py +0 -0
  36. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/mask.py +0 -0
  37. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/mpir.py +0 -0
  38. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/mpobject.py +0 -0
  39. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/mptype.py +0 -0
  40. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/pfunc.py +0 -0
  41. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/table.py +0 -0
  42. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/tensor.py +0 -0
  43. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/core/tracer.py +0 -0
  44. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/device.py +0 -0
  45. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/__init__.py +0 -0
  46. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/base.py +0 -0
  47. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/basic.py +0 -0
  48. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/context.py +0 -0
  49. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/crypto.py +0 -0
  50. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/mock_tee.py +0 -0
  51. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/phe.py +0 -0
  52. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/spu.py +0 -0
  53. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/sql_duckdb.py +0 -0
  54. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/stablehlo.py +0 -0
  55. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/kernels/value.py +0 -0
  56. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/__init__.py +0 -0
  57. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/base.py +0 -0
  58. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/basic.py +0 -0
  59. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/crypto.py +0 -0
  60. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/ibis_cc.py +0 -0
  61. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/jax_cc.py +0 -0
  62. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/phe.py +0 -0
  63. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/spu.py +0 -0
  64. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/sql_cc.py +0 -0
  65. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/ops/tee.py +0 -0
  66. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/protos/v1alpha1/mpir_pb2.py +0 -0
  67. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/protos/v1alpha1/mpir_pb2.pyi +0 -0
  68. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/protos/v1alpha1/value_pb2.py +0 -0
  69. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/protos/v1alpha1/value_pb2.pyi +0 -0
  70. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/__init__.py +0 -0
  71. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/cli.py +0 -0
  72. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/client.py +0 -0
  73. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/communicator.py +0 -0
  74. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/data_providers.py +0 -0
  75. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/driver.py +0 -0
  76. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/exceptions.py +0 -0
  77. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/http_api.md +0 -0
  78. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/link_comm.py +0 -0
  79. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/server.py +0 -0
  80. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/session.py +0 -0
  81. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/runtime/simulation.py +0 -0
  82. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/__init__.py +0 -0
  83. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/api.py +0 -0
  84. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/party.py +0 -0
  85. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/random.py +0 -0
  86. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/simp/smpc.py +0 -0
  87. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/utils/__init__.py +0 -0
  88. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/utils/crypto.py +0 -0
  89. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/utils/func_utils.py +0 -0
  90. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/utils/spu_utils.py +0 -0
  91. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/mplang/utils/table_utils.py +0 -0
  92. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/pyproject.toml +0 -0
  93. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/__init__.py +0 -0
  94. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/analysis/test_diagram.py +0 -0
  95. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/conftest.py +0 -0
  96. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/__init__.py +0 -0
  97. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/__init__.py +0 -0
  98. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/conftest.py +0 -0
  99. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/test_ast.py +0 -0
  100. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/test_printer.py +0 -0
  101. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/test_utils.py +0 -0
  102. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/expr/test_walk.py +0 -0
  103. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_cluster.py +0 -0
  104. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_dtype.py +0 -0
  105. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_mask.py +0 -0
  106. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_mpir.py +0 -0
  107. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_mptype.py +0 -0
  108. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_primitive.py +0 -0
  109. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_table.py +0 -0
  110. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_tensor.py +0 -0
  111. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/core/test_tracer.py +0 -0
  112. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/device/__init__.py +0 -0
  113. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/device/test_device_basic.py +0 -0
  114. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/README.md +0 -0
  115. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_crypto_roundtrip.py +0 -0
  116. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_http_e2e.py +0 -0
  117. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_symbols_roundtrip.py +0 -0
  118. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_tee_workflow.py +0 -0
  119. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_tutorials.py +0 -0
  120. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/integration/test_unused_param_integration.py +0 -0
  121. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_basic.py +0 -0
  122. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_debug_print.py +0 -0
  123. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_kernel_binding.py +0 -0
  124. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_phe.py +0 -0
  125. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_spu.py +0 -0
  126. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_sql_duckdb.py +0 -0
  127. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_stablehlo.py +0 -0
  128. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_value.py +0 -0
  129. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/kernels/test_value_serde.py +0 -0
  130. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/__init__.py +0 -0
  131. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/dummy.py +0 -0
  132. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_basic_pack.py +0 -0
  133. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_feop_base.py +0 -0
  134. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_ibis.py +0 -0
  135. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_ibis_cc.py +0 -0
  136. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_jax_cc.py +0 -0
  137. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_phe.py +0 -0
  138. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_spu.py +0 -0
  139. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_spu_defensive.py +0 -0
  140. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_sql.py +0 -0
  141. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/ops/test_table_tensor_conversion.py +0 -0
  142. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/__init__.py +0 -0
  143. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/test_cli.py +0 -0
  144. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/test_communicator.py +0 -0
  145. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/test_driver.py +0 -0
  146. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/test_server.py +0 -0
  147. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/runtime/test_simulation.py +0 -0
  148. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/simp/test_mpi.py +0 -0
  149. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/simp/test_random.py +0 -0
  150. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/simp/test_smpc.py +0 -0
  151. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/simp/test_sugar.py +0 -0
  152. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/utils/__init__.py +0 -0
  153. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/utils/server_fixtures.py +0 -0
  154. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/utils/test_func_utils.py +0 -0
  155. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/utils/test_spu_utils.py +0 -0
  156. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tests/utils/test_table_utils.py +0 -0
  157. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/0_basic.py +0 -0
  158. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/10_analysis.py +0 -0
  159. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/1_condition.py +0 -0
  160. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/2_whileloop.py +0 -0
  161. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/3_device.py +0 -0
  162. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/4_simulation.py +0 -0
  163. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/5_ir_dump.py +0 -0
  164. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/6_advanced.py +0 -0
  165. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/7_stdio.py +0 -0
  166. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/8_phe.py +0 -0
  167. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/9_tee.py +0 -0
  168. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/__init__.py +0 -0
  169. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/pitfalls/late_binding.py +0 -0
  170. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/pitfalls/rand.py +0 -0
  171. {mplang_nightly-0.1.dev181 → mplang_nightly-0.1.dev182}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev181
3
+ Version: 0.1.dev182
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -277,7 +277,7 @@ sim = mplang.Simulator.simple(2)
277
277
  result = mplang.evaluate(sim, millionaire)
278
278
 
279
279
  # Securely fetch the result (reveals SPU value)
280
- print("Is Alice poorer than Bob?", mpd.fetch(sim, result))
280
+ print("Is Alice poorer than Bob?", mplang.fetch(sim, result))
281
281
  ```
282
282
 
283
283
  ## Learn More
@@ -57,7 +57,7 @@ sim = mplang.Simulator.simple(2)
57
57
  result = mplang.evaluate(sim, millionaire)
58
58
 
59
59
  # Securely fetch the result (reveals SPU value)
60
- print("Is Alice poorer than Bob?", mpd.fetch(sim, result))
60
+ print("Is Alice poorer than Bob?", mplang.fetch(sim, result))
61
61
  ```
62
62
 
63
63
  ## Learn More
@@ -718,7 +718,7 @@ def pshfl(src: MPObject, index: MPObject) -> MPObject:
718
718
 
719
719
  Raises:
720
720
  ValueError: If the index tensor is not a scalar.
721
- RuntimeError: If src[index[i]] is None for any valid index[i] (i.e/,
721
+ RuntimeError: If src[index[i]] is None for any valid index[i] (i.e.,
722
722
  trying to fetch from a party that doesn't hold the data).
723
723
 
724
724
  Examples:
@@ -38,6 +38,16 @@ def evaluate(
38
38
 
39
39
  This function accepts arbitrary types as it's designed to handle
40
40
  any multi-party computation function and arguments.
41
+
42
+ Args:
43
+ interp: The interpreter context for evaluating the multi-party function.
44
+ mpfn: The multi-party function to evaluate.
45
+ *args: Positional arguments to pass to the function.
46
+ **kwargs: Keyword arguments to pass to the function.
47
+
48
+ Returns:
49
+ Any: The result of evaluating the multi-party function, which can be
50
+ any type depending on the function's return type.
41
51
  """
42
52
  assert isinstance(interp, InterpContext), f"Expect InterpContext, got {interp}"
43
53
  with with_ctx(interp):
@@ -49,6 +59,16 @@ def fetch(interp: InterpContext | None, objs: Any) -> Any: # type: ignore[misc]
49
59
 
50
60
  This function uses tree_map to handle arbitrary nested structures,
51
61
  so it needs to accept and return Any type.
62
+
63
+ Args:
64
+ interp: The interpreter context for fetching results. If None, uses the
65
+ current context from cur_ctx().
66
+ objs: The objects containing MPObject instances to fetch. Can be any
67
+ nested structure.
68
+
69
+ Returns:
70
+ Any: The fetched results with the same structure as the input objects,
71
+ but with MPObject instances replaced by their computed values.
52
72
  """
53
73
  ctx = interp or cur_ctx()
54
74
  assert isinstance(ctx, InterpContext), f"Expect MPExecutor, got {ctx}"
@@ -94,5 +114,17 @@ class CompileOptions(MPContext):
94
114
  def compile(
95
115
  mctx: MPContext, fn: Callable[..., Any], *args: Any, **kwargs: Any
96
116
  ) -> TracedFunction:
117
+ """Compile a multi-party function into a TracedFunction.
118
+
119
+ Args:
120
+ mctx: The multi-party context for compilation.
121
+ fn: The function to compile.
122
+ *args: Positional arguments to pass during compilation.
123
+ **kwargs: Keyword arguments to pass during compilation.
124
+
125
+ Returns:
126
+ TracedFunction: The compiled function representation that can be
127
+ evaluated in multi-party contexts.
128
+ """
97
129
  trace_ctx = TraceContext(mctx.cluster_spec)
98
130
  return trace(trace_ctx, fn, *args, **kwargs)
@@ -57,9 +57,9 @@ def gather_m(src_mask: Mask, root: Rank, arg: MPObject) -> list[MPObject]:
57
57
  """Gather the object from pmask'ed parties to the root party.
58
58
 
59
59
  Args:
60
- src_pmask: The mask of the parties that will gather the object.
60
+ src_mask: The mask of the parties that will gather the object.
61
61
  root: The rank of the root party.
62
- arg: The object to be gathered, which must be the subset of pmask.
62
+ arg: The object to be gathered. It must be held by all parties specified in `src_mask`.
63
63
 
64
64
  Returns:
65
65
  A list of objects, with length equal to the number of parties in pmask.