mplang-nightly 0.1.dev162__tar.gz → 0.1.dev164__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 (166) hide show
  1. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/PKG-INFO +1 -1
  2. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/device.py +4 -18
  3. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/mock_tee.py +0 -3
  4. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/tee.py +7 -21
  5. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_crypto_tee.py +2 -2
  6. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/9_tee.py +2 -3
  7. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/.gitignore +0 -0
  8. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/LICENSE +0 -0
  9. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/README.md +0 -0
  10. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/conf/3pc.yaml +0 -0
  11. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/stax_nn/README.md +0 -0
  12. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/stax_nn/models.py +0 -0
  13. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/stax_nn/stax_nn.py +0 -0
  14. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/hist_jax.py +0 -0
  15. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/hist_jax_test.py +0 -0
  16. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/naive_np.py +0 -0
  17. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/readme.md +0 -0
  18. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/sgb.py +0 -0
  19. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/examples/xgboost/sgb_test.py +0 -0
  20. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/hatch_build.py +0 -0
  21. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/__init__.py +0 -0
  22. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/analysis/__init__.py +0 -0
  23. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/analysis/diagram.py +0 -0
  24. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/api.py +0 -0
  25. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/__init__.py +0 -0
  26. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/cluster.py +0 -0
  27. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/comm.py +0 -0
  28. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/context_mgr.py +0 -0
  29. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/dtype.py +0 -0
  30. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/__init__.py +0 -0
  31. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/ast.py +0 -0
  32. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/evaluator.py +0 -0
  33. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/printer.py +0 -0
  34. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/transformer.py +0 -0
  35. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/utils.py +0 -0
  36. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/visitor.py +0 -0
  37. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/expr/walk.py +0 -0
  38. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/interp.py +0 -0
  39. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/mask.py +0 -0
  40. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/mpir.py +0 -0
  41. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/mpobject.py +0 -0
  42. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/mptype.py +0 -0
  43. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/pfunc.py +0 -0
  44. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/primitive.py +0 -0
  45. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/table.py +0 -0
  46. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/tensor.py +0 -0
  47. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/core/tracer.py +0 -0
  48. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/__init__.py +0 -0
  49. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/base.py +0 -0
  50. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/builtin.py +0 -0
  51. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/context.py +0 -0
  52. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/crypto.py +0 -0
  53. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/phe.py +0 -0
  54. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/spu.py +0 -0
  55. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/sql_duckdb.py +0 -0
  56. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/kernels/stablehlo.py +0 -0
  57. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/__init__.py +0 -0
  58. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/base.py +0 -0
  59. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/builtin.py +0 -0
  60. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/crypto.py +0 -0
  61. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/ibis_cc.py +0 -0
  62. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/jax_cc.py +0 -0
  63. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/phe.py +0 -0
  64. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/spu.py +0 -0
  65. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/ops/sql.py +0 -0
  66. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/protos/v1alpha1/mpir_pb2.py +0 -0
  67. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/protos/v1alpha1/mpir_pb2.pyi +0 -0
  68. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/protos/v1alpha1/mpir_pb2_grpc.py +0 -0
  69. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/__init__.py +0 -0
  70. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/cli.py +0 -0
  71. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/client.py +0 -0
  72. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/communicator.py +0 -0
  73. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/data_providers.py +0 -0
  74. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/driver.py +0 -0
  75. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/exceptions.py +0 -0
  76. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/http_api.md +0 -0
  77. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/link_comm.py +0 -0
  78. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/server.py +0 -0
  79. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/session.py +0 -0
  80. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/runtime/simulation.py +0 -0
  81. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/simp/__init__.py +0 -0
  82. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/simp/mpi.py +0 -0
  83. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/simp/random.py +0 -0
  84. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/simp/smpc.py +0 -0
  85. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/utils/__init__.py +0 -0
  86. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/utils/crypto.py +0 -0
  87. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/utils/func_utils.py +0 -0
  88. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/utils/spu_utils.py +0 -0
  89. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/mplang/utils/table_utils.py +0 -0
  90. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/pyproject.toml +0 -0
  91. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/__init__.py +0 -0
  92. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/analysis/test_diagram.py +0 -0
  93. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/conftest.py +0 -0
  94. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/__init__.py +0 -0
  95. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/__init__.py +0 -0
  96. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/conftest.py +0 -0
  97. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/test_ast.py +0 -0
  98. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/test_printer.py +0 -0
  99. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/test_utils.py +0 -0
  100. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/expr/test_walk.py +0 -0
  101. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_cluster.py +0 -0
  102. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_dtype.py +0 -0
  103. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_mask.py +0 -0
  104. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_mpir.py +0 -0
  105. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_mptype.py +0 -0
  106. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_primitive.py +0 -0
  107. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_table.py +0 -0
  108. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_tensor.py +0 -0
  109. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/core/test_tracer.py +0 -0
  110. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/device/__init__.py +0 -0
  111. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/device/test_device_basic.py +0 -0
  112. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/README.md +0 -0
  113. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/test_crypto_roundtrip.py +0 -0
  114. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/test_http_e2e.py +0 -0
  115. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/test_symbols_roundtrip.py +0 -0
  116. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/test_tutorials.py +0 -0
  117. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/integration/test_unused_param_integration.py +0 -0
  118. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_builtin.py +0 -0
  119. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_debug_print.py +0 -0
  120. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_kernel_binding.py +0 -0
  121. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_phe.py +0 -0
  122. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_spu.py +0 -0
  123. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_sql_duckdb.py +0 -0
  124. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/kernels/test_stablehlo.py +0 -0
  125. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/__init__.py +0 -0
  126. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/dummy.py +0 -0
  127. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_builtin_pack.py +0 -0
  128. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_feop_base.py +0 -0
  129. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_ibis.py +0 -0
  130. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_ibis_cc.py +0 -0
  131. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_jax_cc.py +0 -0
  132. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_phe.py +0 -0
  133. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_spu.py +0 -0
  134. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_spu_defensive.py +0 -0
  135. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_sql.py +0 -0
  136. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/ops/test_table_tensor_conversion.py +0 -0
  137. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/__init__.py +0 -0
  138. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/test_cli.py +0 -0
  139. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/test_communicator.py +0 -0
  140. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/test_driver.py +0 -0
  141. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/test_server.py +0 -0
  142. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/runtime/test_simulation.py +0 -0
  143. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/simp/test_mpi.py +0 -0
  144. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/simp/test_random.py +0 -0
  145. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/simp/test_simp.py +0 -0
  146. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/simp/test_smpc.py +0 -0
  147. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/simp/test_sugar.py +0 -0
  148. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/utils/__init__.py +0 -0
  149. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/utils/server_fixtures.py +0 -0
  150. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/utils/test_func_utils.py +0 -0
  151. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/utils/test_spu_utils.py +0 -0
  152. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tests/utils/test_table_utils.py +0 -0
  153. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/0_basic.py +0 -0
  154. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/10_analysis.py +0 -0
  155. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/1_condition.py +0 -0
  156. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/2_whileloop.py +0 -0
  157. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/3_device.py +0 -0
  158. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/4_simulation.py +0 -0
  159. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/5_ir_dump.py +0 -0
  160. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/6_advanced.py +0 -0
  161. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/7_stdio.py +0 -0
  162. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/8_phe.py +0 -0
  163. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/__init__.py +0 -0
  164. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/pitfalls/late_binding.py +0 -0
  165. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/pitfalls/rand.py +0 -0
  166. {mplang_nightly-0.1.dev162 → mplang_nightly-0.1.dev164}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev162
3
+ Version: 0.1.dev164
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -207,15 +207,8 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
207
207
  assert len(frm_dev.members) == 1 and len(to_dev.members) == 1
208
208
  frm_rank = frm_dev.members[0].rank
209
209
  tee_rank = to_dev.members[0].rank
210
- platform = to_dev.config.get("platform")
211
- if not platform:
212
- raise ValueError(
213
- f"TEE device '{to_dev_id}' is missing 'platform' in its config."
214
- )
215
210
  # Ensure sessions (both directions) exist for this PPU<->TEE pair
216
- sess_p, sess_t = _ensure_tee_session(
217
- frm_dev_id, to_dev_id, frm_rank, tee_rank, platform
218
- )
211
+ sess_p, sess_t = _ensure_tee_session(frm_dev_id, to_dev_id, frm_rank, tee_rank)
219
212
  # Bytes-only path: pack -> enc -> p2p -> dec -> unpack (with static out type)
220
213
  obj_ty = TensorType.from_obj(obj)
221
214
  b = simp.runAt(frm_rank, builtin.pack)(obj)
@@ -229,15 +222,8 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
229
222
  assert len(frm_dev.members) == 1 and len(to_dev.members) == 1
230
223
  tee_rank = frm_dev.members[0].rank
231
224
  ppu_rank = to_dev.members[0].rank
232
- platform = frm_dev.config.get("platform")
233
- if not platform:
234
- raise ValueError(
235
- f"TEE device '{frm_dev_id}' is missing 'platform' in its config."
236
- )
237
225
  # Ensure bidirectional session established for this pair
238
- sess_p, sess_t = _ensure_tee_session(
239
- to_dev_id, frm_dev_id, ppu_rank, tee_rank, platform
240
- )
226
+ sess_p, sess_t = _ensure_tee_session(to_dev_id, frm_dev_id, ppu_rank, tee_rank)
241
227
  obj_ty = TensorType.from_obj(obj)
242
228
  b = simp.runAt(tee_rank, builtin.pack)(obj)
243
229
  ct = simp.runAt(tee_rank, crypto.enc)(b, sess_t)
@@ -259,7 +245,7 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
259
245
 
260
246
 
261
247
  def _ensure_tee_session(
262
- frm_dev_id: str, to_dev_id: str, frm_rank: int, tee_rank: int, platform: str
248
+ frm_dev_id: str, to_dev_id: str, frm_rank: int, tee_rank: int
263
249
  ) -> tuple[MPObject, MPObject]:
264
250
  """Ensure a TEE session (sess_p at sender, sess_t at TEE) exists.
265
251
 
@@ -281,7 +267,7 @@ def _ensure_tee_session(
281
267
 
282
268
  # 2) Send quote to sender and attest to obtain TEE pk
283
269
  quote_at_sender = mpi.p2p(tee_rank, frm_rank, quote)
284
- tee_pk_at_sender = simp.runAt(frm_rank, tee.attest)(quote_at_sender, platform)
270
+ tee_pk_at_sender = simp.runAt(frm_rank, tee.attest)(quote_at_sender)
285
271
 
286
272
  # 3) Sender generates its ephemeral keypair and sends its pk to TEE
287
273
  v_sk, v_pk = simp.runAt(frm_rank, crypto.kem_keygen)(_TEE_KEM_SUITE)
@@ -64,9 +64,6 @@ def _tee_attest(pfunc: PFunction, quote: object) -> NDArray[np.uint8]:
64
64
  stacklevel=3,
65
65
  )
66
66
  quote = np.asarray(quote, dtype=np.uint8)
67
- platform = pfunc.attrs.get("platform")
68
- if platform is None:
69
- raise ValueError("missing required 'platform' attribute in PFunction")
70
67
 
71
68
  if quote.size != 33:
72
69
  raise ValueError("mock quote must be 33 bytes (1 header + 32 pk)")
@@ -14,11 +14,7 @@
14
14
 
15
15
  from __future__ import annotations
16
16
 
17
- from jax.tree_util import PyTreeDef, tree_flatten
18
-
19
17
  from mplang.core.dtype import UINT8
20
- from mplang.core.mpobject import MPObject
21
- from mplang.core.pfunc import PFunction
22
18
  from mplang.core.tensor import TensorType
23
19
  from mplang.ops.base import stateless_mod
24
20
 
@@ -32,20 +28,10 @@ def quote_gen(pk: TensorType) -> TensorType:
32
28
  return TensorType(UINT8, (-1,))
33
29
 
34
30
 
35
- @_TEE_MOD.op_def()
36
- def attest(
37
- quote: MPObject, platform: str
38
- ) -> tuple[PFunction, list[MPObject], PyTreeDef]:
39
- """TEE quote verification returning the attested TEE public key."""
40
-
41
- ins_info = [TensorType.from_obj(quote)]
42
- outs_info = [TensorType(UINT8, (32,))] # pk is always 32 bytes for x25519
43
- pfunc = PFunction(
44
- fn_type="tee.attest",
45
- ins_info=ins_info,
46
- outs_info=outs_info,
47
- platform=platform,
48
- )
49
- _, treedef = tree_flatten(outs_info[0])
50
-
51
- return pfunc, [quote], treedef
31
+ @_TEE_MOD.simple_op()
32
+ def attest(quote: TensorType) -> TensorType:
33
+ """TEE quote verification returning the attested TEE public key.
34
+ API (mock): attest(quote: u8[33]) -> tee_pk: u8[32]
35
+ """
36
+ _ = quote # Mark as used for the decorator
37
+ return TensorType(UINT8, (32,))
@@ -31,8 +31,8 @@ def _demo_flow():
31
31
  # Send quotes to P0/P1 and attest to obtain TEE public keys
32
32
  q0_for_p0 = simp.p2p(P2, P0, q0)
33
33
  q1_for_p1 = simp.p2p(P2, P1, q1)
34
- t_pk0_for_p0 = simp.runAt(P0, tee.attest)(q0_for_p0, "TDX")
35
- t_pk1_for_p1 = simp.runAt(P1, tee.attest)(q1_for_p1, "TDX")
34
+ t_pk0_for_p0 = simp.runAt(P0, tee.attest)(q0_for_p0)
35
+ t_pk1_for_p1 = simp.runAt(P1, tee.attest)(q1_for_p1)
36
36
 
37
37
  # Each party generates its own ephemeral keypair and shares pk with TEE
38
38
  v_sk0, v_pk0 = simp.runAt(P0, crypto.kem_keygen)("x25519")
@@ -49,7 +49,6 @@ cluster_spec = ClusterSpec.from_dict({
49
49
  "TEE0": {
50
50
  "kind": "TEE",
51
51
  "members": ["node_2"],
52
- "config": {"platform": "TDX"},
53
52
  },
54
53
  },
55
54
  })
@@ -77,7 +76,7 @@ def millionaire_manual():
77
76
  # P0 <-> TEE handshake and transfer x (using sugar)
78
77
  tee_sk0, tee_pk0 = P2.crypto.kem_keygen("x25519")
79
78
  quote0 = P2.tee.quote_gen(tee_pk0)
80
- tee_pk0_at_p0 = P0.tee.attest(P2P(P2, P0, quote0), "TDX")
79
+ tee_pk0_at_p0 = P0.tee.attest(P2P(P2, P0, quote0))
81
80
  v_sk0, v_pk0 = P0.crypto.kem_keygen("x25519")
82
81
  shared0_p = P0.crypto.kem_derive(v_sk0, tee_pk0_at_p0, "x25519")
83
82
  shared0_t = P2.crypto.kem_derive(tee_sk0, P2P(P0, P2, v_pk0), "x25519")
@@ -93,7 +92,7 @@ def millionaire_manual():
93
92
  # P1 <-> TEE handshake and transfer y (still show original style for contrast)
94
93
  tee_sk1, tee_pk1 = P2.crypto.kem_keygen("x25519")
95
94
  quote1 = P2.tee.quote_gen(tee_pk1)
96
- tee_pk1_at_p1 = P1.tee.attest(P2P(P2, P1, quote1), "TDX")
95
+ tee_pk1_at_p1 = P1.tee.attest(P2P(P2, P1, quote1))
97
96
  v_sk1, v_pk1 = P1.crypto.kem_keygen("x25519")
98
97
  shared1_p = P1.crypto.kem_derive(v_sk1, tee_pk1_at_p1, "x25519")
99
98
  shared1_t = P2.crypto.kem_derive(tee_sk1, P2P(P1, P2, v_pk1), "x25519")