mplang-nightly 0.1.dev158__py3-none-any.whl → 0.1.dev268__py3-none-any.whl

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 (191) hide show
  1. mplang/__init__.py +21 -45
  2. mplang/py.typed +13 -0
  3. mplang/v1/__init__.py +157 -0
  4. mplang/v1/_device.py +602 -0
  5. mplang/{analysis → v1/analysis}/__init__.py +1 -1
  6. mplang/{analysis → v1/analysis}/diagram.py +5 -7
  7. mplang/v1/core/__init__.py +157 -0
  8. mplang/{core → v1/core}/cluster.py +30 -14
  9. mplang/{core → v1/core}/comm.py +5 -1
  10. mplang/{core → v1/core}/context_mgr.py +1 -1
  11. mplang/{core/dtype.py → v1/core/dtypes.py} +44 -2
  12. mplang/{core → v1/core}/expr/__init__.py +7 -7
  13. mplang/{core → v1/core}/expr/ast.py +13 -14
  14. mplang/{core → v1/core}/expr/evaluator.py +65 -24
  15. mplang/{core → v1/core}/expr/printer.py +24 -18
  16. mplang/{core → v1/core}/expr/transformer.py +3 -3
  17. mplang/{core → v1/core}/expr/utils.py +2 -2
  18. mplang/{core → v1/core}/expr/visitor.py +1 -1
  19. mplang/{core → v1/core}/expr/walk.py +1 -1
  20. mplang/{core → v1/core}/interp.py +6 -6
  21. mplang/{core → v1/core}/mpir.py +23 -16
  22. mplang/{core → v1/core}/mpobject.py +6 -6
  23. mplang/{core → v1/core}/mptype.py +13 -10
  24. mplang/{core → v1/core}/pfunc.py +4 -4
  25. mplang/{core → v1/core}/primitive.py +106 -201
  26. mplang/{core → v1/core}/table.py +36 -8
  27. mplang/{core → v1/core}/tensor.py +1 -1
  28. mplang/{core → v1/core}/tracer.py +9 -9
  29. mplang/{api.py → v1/host.py} +38 -6
  30. mplang/v1/kernels/__init__.py +41 -0
  31. mplang/{kernels → v1/kernels}/base.py +1 -1
  32. mplang/v1/kernels/basic.py +240 -0
  33. mplang/{kernels → v1/kernels}/context.py +42 -27
  34. mplang/{kernels → v1/kernels}/crypto.py +44 -37
  35. mplang/v1/kernels/fhe.py +858 -0
  36. mplang/{kernels → v1/kernels}/mock_tee.py +12 -13
  37. mplang/{kernels → v1/kernels}/phe.py +263 -57
  38. mplang/{kernels → v1/kernels}/spu.py +137 -48
  39. mplang/{kernels → v1/kernels}/sql_duckdb.py +12 -15
  40. mplang/{kernels → v1/kernels}/stablehlo.py +30 -23
  41. mplang/v1/kernels/value.py +626 -0
  42. mplang/{ops → v1/ops}/__init__.py +5 -16
  43. mplang/{ops → v1/ops}/base.py +2 -5
  44. mplang/{ops/builtin.py → v1/ops/basic.py} +34 -26
  45. mplang/v1/ops/crypto.py +262 -0
  46. mplang/v1/ops/fhe.py +272 -0
  47. mplang/{ops → v1/ops}/jax_cc.py +33 -68
  48. mplang/v1/ops/nnx_cc.py +168 -0
  49. mplang/{ops → v1/ops}/phe.py +16 -4
  50. mplang/{ops → v1/ops}/spu.py +3 -5
  51. mplang/v1/ops/sql_cc.py +303 -0
  52. mplang/{ops → v1/ops}/tee.py +9 -24
  53. mplang/{protos → v1/protos}/v1alpha1/mpir_pb2.pyi +71 -21
  54. mplang/v1/protos/v1alpha1/value_pb2.py +34 -0
  55. mplang/v1/protos/v1alpha1/value_pb2.pyi +169 -0
  56. mplang/{runtime → v1/runtime}/__init__.py +2 -2
  57. mplang/v1/runtime/channel.py +230 -0
  58. mplang/{runtime → v1/runtime}/cli.py +35 -20
  59. mplang/{runtime → v1/runtime}/client.py +19 -8
  60. mplang/{runtime → v1/runtime}/communicator.py +59 -15
  61. mplang/{runtime → v1/runtime}/data_providers.py +80 -19
  62. mplang/{runtime → v1/runtime}/driver.py +30 -12
  63. mplang/v1/runtime/link_comm.py +196 -0
  64. mplang/{runtime → v1/runtime}/server.py +58 -42
  65. mplang/{runtime → v1/runtime}/session.py +57 -71
  66. mplang/{runtime → v1/runtime}/simulation.py +55 -28
  67. mplang/v1/simp/api.py +353 -0
  68. mplang/{simp → v1/simp}/mpi.py +8 -9
  69. mplang/{simp/__init__.py → v1/simp/party.py} +19 -145
  70. mplang/{simp → v1/simp}/random.py +21 -22
  71. mplang/v1/simp/smpc.py +238 -0
  72. mplang/v1/utils/table_utils.py +185 -0
  73. mplang/v2/__init__.py +424 -0
  74. mplang/v2/backends/__init__.py +57 -0
  75. mplang/v2/backends/bfv_impl.py +705 -0
  76. mplang/v2/backends/channel.py +217 -0
  77. mplang/v2/backends/crypto_impl.py +723 -0
  78. mplang/v2/backends/field_impl.py +454 -0
  79. mplang/v2/backends/func_impl.py +107 -0
  80. mplang/v2/backends/phe_impl.py +148 -0
  81. mplang/v2/backends/simp_design.md +136 -0
  82. mplang/v2/backends/simp_driver/__init__.py +41 -0
  83. mplang/v2/backends/simp_driver/http.py +168 -0
  84. mplang/v2/backends/simp_driver/mem.py +280 -0
  85. mplang/v2/backends/simp_driver/ops.py +135 -0
  86. mplang/v2/backends/simp_driver/state.py +60 -0
  87. mplang/v2/backends/simp_driver/values.py +52 -0
  88. mplang/v2/backends/simp_worker/__init__.py +29 -0
  89. mplang/v2/backends/simp_worker/http.py +354 -0
  90. mplang/v2/backends/simp_worker/mem.py +102 -0
  91. mplang/v2/backends/simp_worker/ops.py +167 -0
  92. mplang/v2/backends/simp_worker/state.py +49 -0
  93. mplang/v2/backends/spu_impl.py +275 -0
  94. mplang/v2/backends/spu_state.py +187 -0
  95. mplang/v2/backends/store_impl.py +62 -0
  96. mplang/v2/backends/table_impl.py +838 -0
  97. mplang/v2/backends/tee_impl.py +215 -0
  98. mplang/v2/backends/tensor_impl.py +519 -0
  99. mplang/v2/cli.py +603 -0
  100. mplang/v2/cli_guide.md +122 -0
  101. mplang/v2/dialects/__init__.py +36 -0
  102. mplang/v2/dialects/bfv.py +665 -0
  103. mplang/v2/dialects/crypto.py +689 -0
  104. mplang/v2/dialects/dtypes.py +378 -0
  105. mplang/v2/dialects/field.py +210 -0
  106. mplang/v2/dialects/func.py +135 -0
  107. mplang/v2/dialects/phe.py +723 -0
  108. mplang/v2/dialects/simp.py +944 -0
  109. mplang/v2/dialects/spu.py +349 -0
  110. mplang/v2/dialects/store.py +63 -0
  111. mplang/v2/dialects/table.py +407 -0
  112. mplang/v2/dialects/tee.py +346 -0
  113. mplang/v2/dialects/tensor.py +1175 -0
  114. mplang/v2/edsl/README.md +279 -0
  115. mplang/v2/edsl/__init__.py +99 -0
  116. mplang/v2/edsl/context.py +311 -0
  117. mplang/v2/edsl/graph.py +463 -0
  118. mplang/v2/edsl/jit.py +62 -0
  119. mplang/v2/edsl/object.py +53 -0
  120. mplang/v2/edsl/primitive.py +284 -0
  121. mplang/v2/edsl/printer.py +119 -0
  122. mplang/v2/edsl/registry.py +207 -0
  123. mplang/v2/edsl/serde.py +375 -0
  124. mplang/v2/edsl/tracer.py +614 -0
  125. mplang/v2/edsl/typing.py +816 -0
  126. mplang/v2/kernels/Makefile +30 -0
  127. mplang/v2/kernels/__init__.py +23 -0
  128. mplang/v2/kernels/gf128.cpp +148 -0
  129. mplang/v2/kernels/ldpc.cpp +82 -0
  130. mplang/v2/kernels/okvs.cpp +283 -0
  131. mplang/v2/kernels/okvs_opt.cpp +291 -0
  132. mplang/v2/kernels/py_kernels.py +398 -0
  133. mplang/v2/libs/collective.py +330 -0
  134. mplang/v2/libs/device/__init__.py +51 -0
  135. mplang/v2/libs/device/api.py +813 -0
  136. mplang/v2/libs/device/cluster.py +352 -0
  137. mplang/v2/libs/ml/__init__.py +23 -0
  138. mplang/v2/libs/ml/sgb.py +1861 -0
  139. mplang/v2/libs/mpc/__init__.py +41 -0
  140. mplang/v2/libs/mpc/_utils.py +99 -0
  141. mplang/v2/libs/mpc/analytics/__init__.py +35 -0
  142. mplang/v2/libs/mpc/analytics/aggregation.py +372 -0
  143. mplang/v2/libs/mpc/analytics/groupby.md +99 -0
  144. mplang/v2/libs/mpc/analytics/groupby.py +331 -0
  145. mplang/v2/libs/mpc/analytics/permutation.py +386 -0
  146. mplang/v2/libs/mpc/common/constants.py +39 -0
  147. mplang/v2/libs/mpc/ot/__init__.py +32 -0
  148. mplang/v2/libs/mpc/ot/base.py +222 -0
  149. mplang/v2/libs/mpc/ot/extension.py +477 -0
  150. mplang/v2/libs/mpc/ot/silent.py +217 -0
  151. mplang/v2/libs/mpc/psi/__init__.py +40 -0
  152. mplang/v2/libs/mpc/psi/cuckoo.py +228 -0
  153. mplang/v2/libs/mpc/psi/okvs.py +49 -0
  154. mplang/v2/libs/mpc/psi/okvs_gct.py +79 -0
  155. mplang/v2/libs/mpc/psi/oprf.py +310 -0
  156. mplang/v2/libs/mpc/psi/rr22.py +344 -0
  157. mplang/v2/libs/mpc/psi/unbalanced.py +200 -0
  158. mplang/v2/libs/mpc/vole/__init__.py +31 -0
  159. mplang/v2/libs/mpc/vole/gilboa.py +327 -0
  160. mplang/v2/libs/mpc/vole/ldpc.py +383 -0
  161. mplang/v2/libs/mpc/vole/silver.py +336 -0
  162. mplang/v2/runtime/__init__.py +15 -0
  163. mplang/v2/runtime/dialect_state.py +41 -0
  164. mplang/v2/runtime/interpreter.py +871 -0
  165. mplang/v2/runtime/object_store.py +194 -0
  166. mplang/v2/runtime/value.py +141 -0
  167. {mplang_nightly-0.1.dev158.dist-info → mplang_nightly-0.1.dev268.dist-info}/METADATA +24 -17
  168. mplang_nightly-0.1.dev268.dist-info/RECORD +180 -0
  169. {mplang_nightly-0.1.dev158.dist-info → mplang_nightly-0.1.dev268.dist-info}/WHEEL +1 -1
  170. mplang/core/__init__.py +0 -92
  171. mplang/device.py +0 -340
  172. mplang/kernels/builtin.py +0 -207
  173. mplang/ops/crypto.py +0 -109
  174. mplang/ops/ibis_cc.py +0 -139
  175. mplang/ops/sql.py +0 -61
  176. mplang/protos/v1alpha1/mpir_pb2_grpc.py +0 -3
  177. mplang/runtime/link_comm.py +0 -131
  178. mplang/simp/smpc.py +0 -201
  179. mplang/utils/table_utils.py +0 -73
  180. mplang_nightly-0.1.dev158.dist-info/RECORD +0 -77
  181. /mplang/{core → v1/core}/mask.py +0 -0
  182. /mplang/{protos → v1/protos}/v1alpha1/mpir_pb2.py +0 -0
  183. /mplang/{runtime → v1/runtime}/exceptions.py +0 -0
  184. /mplang/{runtime → v1/runtime}/http_api.md +0 -0
  185. /mplang/{kernels → v1/simp}/__init__.py +0 -0
  186. /mplang/{utils → v1/utils}/__init__.py +0 -0
  187. /mplang/{utils → v1/utils}/crypto.py +0 -0
  188. /mplang/{utils → v1/utils}/func_utils.py +0 -0
  189. /mplang/{utils → v1/utils}/spu_utils.py +0 -0
  190. {mplang_nightly-0.1.dev158.dist-info → mplang_nightly-0.1.dev268.dist-info}/entry_points.txt +0 -0
  191. {mplang_nightly-0.1.dev158.dist-info → mplang_nightly-0.1.dev268.dist-info}/licenses/LICENSE +0 -0
mplang/__init__.py CHANGED
@@ -12,7 +12,20 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- """Multi-Party Programming Language for Secure Computation."""
15
+ """Multi-Party Programming Language for Secure Computation.
16
+
17
+ This module provides access to both v1 and v2 APIs:
18
+
19
+ # Use v1 (current default, will be deprecated)
20
+ import mplang as mp
21
+ # or explicitly:
22
+ import mplang.v1 as mp
23
+
24
+ # Use v2 (recommended for new code)
25
+ import mplang.v2 as mp
26
+
27
+ v1 API will be deprecated in a future release. Please migrate to v2.
28
+ """
16
29
 
17
30
  # Version is managed by hatch-vcs and available after package installation
18
31
  try:
@@ -23,48 +36,11 @@ except PackageNotFoundError:
23
36
  # Fallback for development/editable installs when package is not installed
24
37
  __version__ = "0.0.0-dev"
25
38
 
26
- from mplang import analysis
27
- from mplang.api import CompileOptions, compile, evaluate, fetch
28
- from mplang.core import (
29
- DType,
30
- InterpContext,
31
- Mask,
32
- MPContext,
33
- MPObject,
34
- MPType,
35
- TableType,
36
- TensorType,
37
- function,
38
- )
39
- from mplang.core.cluster import ClusterSpec, Device, Node, RuntimeInfo
40
- from mplang.core.context_mgr import cur_ctx, set_ctx, with_ctx
41
- from mplang.runtime.driver import Driver
42
- from mplang.runtime.simulation import Simulator
39
+ # =============================================================================
40
+ # Default: Re-export v1 API for backward compatibility
41
+ # =============================================================================
42
+ # This will be changed to v2 in a future release
43
43
 
44
- # Public API
45
- __all__ = [
46
- "ClusterSpec",
47
- "CompileOptions",
48
- "DType",
49
- "Device",
50
- "Driver",
51
- "InterpContext",
52
- "MPContext",
53
- "MPObject",
54
- "MPType",
55
- "Mask",
56
- "Node",
57
- "RuntimeInfo",
58
- "Simulator",
59
- "TableType",
60
- "TensorType",
61
- "__version__",
62
- "analysis",
63
- "compile",
64
- "cur_ctx",
65
- "evaluate",
66
- "fetch",
67
- "function",
68
- "set_ctx",
69
- "with_ctx",
70
- ]
44
+ # Make v1 and v2 subpackages directly accessible
45
+ from mplang import v1, v2 # noqa: F401
46
+ from mplang.v1 import * # noqa: F403
mplang/py.typed ADDED
@@ -0,0 +1,13 @@
1
+ # Copyright 2026 Ant Group Co., Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
mplang/v1/__init__.py ADDED
@@ -0,0 +1,157 @@
1
+ # Copyright 2025 Ant Group Co., Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Multi-Party Programming Language for Secure Computation."""
16
+
17
+ # Version is managed by hatch-vcs and available after package installation
18
+ try:
19
+ from importlib.metadata import PackageNotFoundError, version
20
+
21
+ __version__ = version("mplang")
22
+ except PackageNotFoundError:
23
+ # Fallback for development/editable installs when package is not installed
24
+ __version__ = "0.0.0-dev"
25
+
26
+ from mplang.v1 import analysis
27
+ from mplang.v1._device import device, get_dev_attr, is_device_obj, put, set_dev_attr
28
+ from mplang.v1.core import (
29
+ ClusterSpec,
30
+ Device,
31
+ DType,
32
+ InterpContext,
33
+ IrReader,
34
+ IrWriter,
35
+ Mask,
36
+ MPContext,
37
+ MPObject,
38
+ MPType,
39
+ Node,
40
+ Rank,
41
+ RuntimeInfo,
42
+ Shape,
43
+ TableType,
44
+ TensorType,
45
+ TraceContext,
46
+ TracedFunction,
47
+ cur_ctx,
48
+ function,
49
+ pconv,
50
+ peval,
51
+ pshfl,
52
+ pshfl_s,
53
+ set_ctx,
54
+ trace,
55
+ uniform_cond,
56
+ while_loop,
57
+ with_ctx,
58
+ )
59
+ from mplang.v1.host import CompileOptions, compile, evaluate, fetch
60
+ from mplang.v1.runtime.driver import Driver
61
+ from mplang.v1.runtime.simulation import Simulator
62
+ from mplang.v1.simp.api import (
63
+ constant,
64
+ debug_print,
65
+ prand,
66
+ prank,
67
+ run,
68
+ run_at,
69
+ run_jax,
70
+ run_jax_at,
71
+ run_sql,
72
+ run_sql_at,
73
+ set_mask,
74
+ )
75
+ from mplang.v1.simp.mpi import allgather_m, bcast_m, gather_m, p2p, scatter_m
76
+ from mplang.v1.simp.party import P0, P1, P2, P2P, P, Party, load_module
77
+ from mplang.v1.simp.random import key_split, pperm, prandint, ukey, urandint
78
+ from mplang.v1.simp.smpc import reveal, reveal_to, seal, seal_from, srun_jax
79
+
80
+ # Public API
81
+ __all__ = [
82
+ "P0",
83
+ "P1",
84
+ "P2",
85
+ "P2P",
86
+ "ClusterSpec",
87
+ "CompileOptions",
88
+ "DType",
89
+ "Device",
90
+ "Driver",
91
+ "InterpContext",
92
+ "IrReader",
93
+ "IrWriter",
94
+ "MPContext",
95
+ "MPObject",
96
+ "MPType",
97
+ "Mask",
98
+ "Node",
99
+ "P",
100
+ "Party",
101
+ "Rank",
102
+ "RuntimeInfo",
103
+ "Shape",
104
+ "Simulator",
105
+ "TableType",
106
+ "TensorType",
107
+ "TraceContext",
108
+ "TracedFunction",
109
+ "__version__",
110
+ "allgather_m",
111
+ "analysis",
112
+ "bcast_m",
113
+ "compile",
114
+ "constant",
115
+ "cur_ctx",
116
+ "debug_print",
117
+ "device",
118
+ "evaluate",
119
+ "fetch",
120
+ "function",
121
+ "gather_m",
122
+ "get_dev_attr",
123
+ "is_device_obj",
124
+ "key_split",
125
+ "load_module",
126
+ "p2p",
127
+ "pconv",
128
+ "peval",
129
+ "pperm",
130
+ "prand",
131
+ "prandint",
132
+ "prank",
133
+ "pshfl",
134
+ "pshfl_s",
135
+ "put",
136
+ "reveal",
137
+ "reveal_to",
138
+ "run",
139
+ "run_at",
140
+ "run_jax",
141
+ "run_jax_at",
142
+ "run_sql",
143
+ "run_sql_at",
144
+ "scatter_m",
145
+ "seal",
146
+ "seal_from",
147
+ "set_ctx",
148
+ "set_dev_attr",
149
+ "set_mask",
150
+ "srun_jax",
151
+ "trace",
152
+ "ukey",
153
+ "uniform_cond",
154
+ "urandint",
155
+ "while_loop",
156
+ "with_ctx",
157
+ ]