mplang-nightly 0.1.dev279__py3-none-any.whl → 0.1.dev280__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.
mplang/__init__.py CHANGED
@@ -94,10 +94,10 @@ from mplang.libs.device import (
94
94
  set_dev_attr,
95
95
  )
96
96
  from mplang.libs.device import fetch as device_fetch
97
+ from mplang.runtime.interpreter import Interpreter
97
98
 
98
99
  # Logging configuration
99
- from mplang.logging_config import disable_logging, get_logger, setup_logging
100
- from mplang.runtime.interpreter import Interpreter
100
+ from mplang.utils.logging import disable_logging, get_logger, setup_logging
101
101
 
102
102
  # =============================================================================
103
103
  # Context Management API (JAX-like pattern)
@@ -25,7 +25,7 @@ from typing import Protocol
25
25
 
26
26
  import spu.libspu as libspu
27
27
 
28
- from mplang.logging_config import get_logger
28
+ from mplang.utils.logging import get_logger
29
29
 
30
30
  logger = get_logger(__name__)
31
31
 
@@ -25,9 +25,9 @@ import httpx
25
25
 
26
26
  from mplang.backends.simp_driver.state import SimpDriver
27
27
  from mplang.edsl import serde
28
- from mplang.logging_config import get_logger
29
28
  from mplang.runtime.interpreter import Interpreter
30
29
  from mplang.runtime.object_store import ObjectStore
30
+ from mplang.utils.logging import get_logger
31
31
 
32
32
  logger = get_logger(__name__)
33
33
 
@@ -54,9 +54,9 @@ from mplang.backends.simp_worker import SimpWorker
54
54
  from mplang.backends.simp_worker import ops as _simp_worker_ops # noqa: F401
55
55
  from mplang.edsl import serde
56
56
  from mplang.edsl.graph import Graph
57
- from mplang.logging_config import get_logger
58
57
  from mplang.runtime.interpreter import ExecutionTracer, Interpreter
59
58
  from mplang.runtime.object_store import ObjectStore
59
+ from mplang.utils.logging import get_logger
60
60
 
61
61
  logger = get_logger(__name__)
62
62
 
@@ -212,6 +212,7 @@ def create_worker_app(
212
212
  world_size: int,
213
213
  endpoints: list[str],
214
214
  spu_endpoints: dict[int, str] | None = None,
215
+ enable_tracing: bool = False,
215
216
  ) -> FastAPI:
216
217
  """Create a FastAPI app for the worker.
217
218
 
@@ -224,6 +225,7 @@ def create_worker_app(
224
225
  world_size: Total number of workers.
225
226
  endpoints: HTTP endpoints for all workers (for shuffle communication).
226
227
  spu_endpoints: Optional dict mapping global_rank -> BRPC endpoint for SPU.
228
+ enable_tracing: Whether to enable execution tracing for profiler.
227
229
 
228
230
  Returns:
229
231
  FastAPI application instance
@@ -236,11 +238,12 @@ def create_worker_app(
236
238
  data_root = pathlib.Path(os.environ.get("MPLANG_DATA_ROOT", ".mpl"))
237
239
  cluster_id = os.environ.get("MPLANG_CLUSTER_ID", f"__http_{world_size}")
238
240
  root_dir = data_root / cluster_id / f"node{rank}"
239
- trace_dir = root_dir / "trace"
240
241
 
241
- # Enable tracing by default for now (or make it configurable via env)
242
- tracer = ExecutionTracer(enabled=True, trace_dir=trace_dir)
243
- tracer.start()
242
+ tracer = None
243
+ if enable_tracing:
244
+ trace_dir = root_dir / "trace"
245
+ tracer = ExecutionTracer(enabled=True, trace_dir=trace_dir)
246
+ tracer.start()
244
247
 
245
248
  comm = HttpCommunicator(rank, world_size, endpoints, tracer=tracer)
246
249
  store = ObjectStore(fs_root=str(root_dir))
@@ -31,9 +31,9 @@ from mplang.backends.tensor_impl import TensorValue
31
31
  from mplang.dialects import spu
32
32
  from mplang.edsl import serde
33
33
  from mplang.edsl.graph import Operation
34
- from mplang.logging_config import get_logger
35
34
  from mplang.runtime.interpreter import Interpreter
36
35
  from mplang.runtime.value import WrapValue
36
+ from mplang.utils.logging import get_logger
37
37
 
38
38
  logger = get_logger(__name__)
39
39
 
@@ -33,9 +33,9 @@ from mplang.backends.tensor_impl import TensorValue
33
33
  from mplang.dialects import table
34
34
  from mplang.edsl import serde
35
35
  from mplang.edsl.graph import Operation
36
- from mplang.logging_config import get_logger
37
36
  from mplang.runtime.interpreter import Interpreter
38
37
  from mplang.runtime.value import WrapValue
38
+ from mplang.utils.logging import get_logger
39
39
 
40
40
  logger = get_logger(__name__)
41
41
 
@@ -36,9 +36,9 @@ import mplang.edsl.typing as elt
36
36
  from mplang.dialects import dtypes, tensor
37
37
  from mplang.edsl import serde
38
38
  from mplang.edsl.graph import Operation
39
- from mplang.logging_config import get_logger
40
39
  from mplang.runtime.interpreter import Interpreter
41
40
  from mplang.runtime.value import Value, WrapValue
41
+ from mplang.utils.logging import get_logger
42
42
 
43
43
  logger = get_logger(__name__)
44
44
 
mplang/cli.py CHANGED
@@ -49,7 +49,7 @@ from typing import Any, cast
49
49
  import uvicorn
50
50
  import yaml
51
51
 
52
- from mplang.logging_config import get_logger
52
+ from mplang.utils.logging import get_logger
53
53
 
54
54
  logger = get_logger(__name__)
55
55
 
mplang/edsl/jit.py CHANGED
@@ -25,7 +25,7 @@ from mplang.edsl.context import (
25
25
  get_default_context,
26
26
  )
27
27
  from mplang.edsl.tracer import Tracer
28
- from mplang.logging_config import get_logger
28
+ from mplang.utils.logging import get_logger
29
29
 
30
30
  logger = get_logger(__name__)
31
31
 
mplang/edsl/primitive.py CHANGED
@@ -29,7 +29,7 @@ from jax.tree_util import tree_map
29
29
 
30
30
  from mplang.edsl.context import get_current_context, get_default_context
31
31
  from mplang.edsl.object import Object
32
- from mplang.logging_config import get_logger
32
+ from mplang.utils.logging import get_logger
33
33
 
34
34
  if TYPE_CHECKING:
35
35
  from mplang.edsl.typing import BaseType
mplang/edsl/tracer.py CHANGED
@@ -36,7 +36,7 @@ from mplang.edsl.graph import Graph
36
36
  from mplang.edsl.graph import Value as GraphValue
37
37
  from mplang.edsl.object import Object
38
38
  from mplang.edsl.typing import BaseType
39
- from mplang.logging_config import get_logger
39
+ from mplang.utils.logging import get_logger
40
40
 
41
41
  if TYPE_CHECKING:
42
42
  from mplang.edsl.primitive import Primitive
mplang/libs/device/api.py CHANGED
@@ -32,7 +32,7 @@ from mplang.backends import load_builtins
32
32
  from mplang.dialects import crypto, simp, spu, tee
33
33
  from mplang.edsl.object import Object
34
34
  from mplang.libs.device.cluster import Device
35
- from mplang.logging_config import get_logger
35
+ from mplang.utils.logging import get_logger
36
36
 
37
37
  load_builtins()
38
38
 
@@ -40,9 +40,9 @@ from mplang.edsl.graph import Graph, Value
40
40
  from mplang.edsl.object import Object
41
41
  from mplang.edsl.registry import get_impl
42
42
  from mplang.edsl.typing import BaseType
43
- from mplang.logging_config import get_logger
44
43
  from mplang.runtime.dialect_state import DialectState
45
44
  from mplang.runtime.object_store import ObjectStore
45
+ from mplang.utils.logging import get_logger
46
46
 
47
47
  if TYPE_CHECKING:
48
48
  from mplang.edsl.primitive import Primitive
mplang/utils/__init__.py CHANGED
@@ -22,13 +22,17 @@ from .func_utils import (
22
22
  var_demorph,
23
23
  var_morph,
24
24
  )
25
+ from .logging import disable_logging, get_logger, setup_logging
25
26
 
26
27
  __all__ = [
27
28
  "MorphStruct",
29
+ "disable_logging",
30
+ "get_logger",
28
31
  "is_treedef_list",
29
32
  "list_reconstruct",
30
33
  "list_split",
31
34
  "normalize_fn",
35
+ "setup_logging",
32
36
  "validate_morph_struct",
33
37
  "var_demorph",
34
38
  "var_morph",
@@ -12,8 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- """
16
- Logging configuration for MPLang.
15
+ """Logging configuration for MPLang.
17
16
 
18
17
  This module provides a unified logging setup for the MPLang library.
19
18
  When MPLang is used as a library, logging is disabled by default (NullHandler),
@@ -31,6 +30,8 @@ Example usage:
31
30
  ... )
32
31
  """
33
32
 
33
+ from __future__ import annotations
34
+
34
35
  import logging
35
36
  import sys
36
37
  from typing import Any, Literal
@@ -52,8 +53,7 @@ def setup_logging(
52
53
  force: bool = False,
53
54
  propagate: bool = False,
54
55
  ) -> None:
55
- """
56
- Configure logging for MPLang.
56
+ """Configure logging for MPLang.
57
57
 
58
58
  This function sets up a logger for all MPLang components. By default,
59
59
  MPLang uses a NullHandler to suppress log output when used as a library.
@@ -143,8 +143,7 @@ def setup_logging(
143
143
 
144
144
 
145
145
  def disable_logging() -> None:
146
- """
147
- Disable all MPLang logging by adding a NullHandler.
146
+ """Disable all MPLang logging by adding a NullHandler.
148
147
 
149
148
  This is useful for testing or when you want to completely suppress
150
149
  MPLang log output.
@@ -163,21 +162,9 @@ def disable_logging() -> None:
163
162
 
164
163
 
165
164
  def get_logger(name: str) -> logging.Logger:
166
- """
167
- Get a logger for a specific MPLang module.
165
+ """Get a logger for a specific MPLang module.
168
166
 
169
- This function should be used by all MPLang modules to create their loggers.
170
167
  The logger name will be prefixed with 'mplang' automatically if not already.
171
-
172
- Args:
173
- name: Module name, typically __name__ from the calling module.
174
-
175
- Returns:
176
- A logger instance for the specified module.
177
-
178
- Example:
179
- >>> # In mplang/edsl/tracer.py
180
- >>> logger = get_logger(__name__) # Creates 'mplang.edsl.tracer' logger
181
168
  """
182
169
  # Ensure the logger name is under mplang hierarchy
183
170
  if not name.startswith(MPLANG_LOGGER_NAME):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev279
3
+ Version: 0.1.dev280
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -1,30 +1,29 @@
1
- mplang/__init__.py,sha256=PsUcGqKGQym3N_CU1Rav304YQwGVj8CLVx9S_6UTD9c,14519
2
- mplang/cli.py,sha256=NW0GmxZeRC4rrYg8RVBlZiDjkihBXGcHmrll-JFOqWM,20317
1
+ mplang/__init__.py,sha256=RQ0z5slM6eNgWlTqGkn67tYDvq8ZzZBfMD2XCdQR86c,14518
2
+ mplang/cli.py,sha256=JQRdLlbycK7awumcY60F4Nw7ozRebfe5cpNEDyRQ3jw,20316
3
3
  mplang/cli_guide.md,sha256=hKC6AKgJn-lM_wZ0CzZIP2QUBxGPnT0Op_1YyeUhCfI,3581
4
- mplang/logging_config.py,sha256=6Zm1Z_EBnzxAfeKr94xiLpWYDD8fa4ZEs2g_kMoH8eI,7579
5
4
  mplang/py.typed,sha256=RyhZV7Yxo8BvEoBiFz5fH3IWVqQKTcBBE-bzjx_N5GQ,583
6
5
  mplang/backends/__init__.py,sha256=EnKHmOX4YgvNVA42k_KfiS-Vn860yN7Rj9XkUU0g9ys,2042
7
6
  mplang/backends/bfv_impl.py,sha256=qobGXe7ldWvYVcqdkNsTcVdNV-hUVE9-Ks5pd3X0Mvc,25691
8
- mplang/backends/channel.py,sha256=eCjFkiuRvOtFdOC63mTBhkb958EQ7aikc16BeSKL_QY,6877
7
+ mplang/backends/channel.py,sha256=MZwaF0DkkBF_98xdQ8ri0kROJmnCS1ldbwdZUi-sWAU,6876
9
8
  mplang/backends/crypto_impl.py,sha256=m5tbZpedn4McG5t6HIaEjhTQUFOIaEDMdyEG0499S0Y,23187
10
9
  mplang/backends/field_impl.py,sha256=lIghppy0i8QL7aTNCr8tNWjC_bvOXBIKLnavaO0fIOA,14773
11
10
  mplang/backends/func_impl.py,sha256=vhkSJnvgSzvQWXqOE40O8npqOmtNqLxefzv9ETuQODQ,3573
12
11
  mplang/backends/phe_impl.py,sha256=CefRpFrRJvbZm3X58OYOFAyNZXKDp081Q6CT8fhdreE,4118
13
12
  mplang/backends/simp_design.md,sha256=u4YeDLKk5avsueXhzPtt4OUBToBmurOVK_BWTKTJ7w0,5246
14
- mplang/backends/spu_impl.py,sha256=WmhyMx2vAfksRLPYY0gwBLUOgebrRZV5cF9YgfDKF2s,9527
13
+ mplang/backends/spu_impl.py,sha256=mkyNCwHC4N7zZ23mCRdOqJWbKv8dxH-Tqi14cTyhGSA,9526
15
14
  mplang/backends/spu_state.py,sha256=tgwOiWN6zfP-fBx2rN2cNnC-Y9GrSArqU-ZBT3NdXls,6557
16
15
  mplang/backends/store_impl.py,sha256=BdrCfNhFbcjswIvfxD2XKGYeBfBrmEQA3pj2-EDzFcI,2213
17
- mplang/backends/table_impl.py,sha256=rEypHu4-crx2sVZAnGjq7cQ6rJIQpAEdLv66c1IWtcc,27618
16
+ mplang/backends/table_impl.py,sha256=SFbZJpZS1SdRxxlYfQjc69qcy-2hVfVAYEapNRaTTiI,27617
18
17
  mplang/backends/tee_impl.py,sha256=5yed94Lr55hgSDT6j3FjdTboqzhl4HpJ9lGk1YGZBXQ,7026
19
- mplang/backends/tensor_impl.py,sha256=cYpkHfD6HpoQir06_CGYIcysXvrA85zjeCyqOvlA4Hk,18964
18
+ mplang/backends/tensor_impl.py,sha256=iIOsvSXiRsQWbC8BBfPUpOUhAXJW8VY11l0BxsMVYPo,18963
20
19
  mplang/backends/simp_driver/__init__.py,sha256=pQkHGR8HagnPB4OqagPZY-Ul19y6HjIJ5dY6QXZrBH8,1243
21
- mplang/backends/simp_driver/http.py,sha256=BuJpcXzIVM3pDCbKMU7zRE89RLmQe_3e_4C4GH38IEA,5602
20
+ mplang/backends/simp_driver/http.py,sha256=isZvDHrrCgi07u5_sFfTYvR4p2CI3vs8zwnk9u6O3Ko,5601
22
21
  mplang/backends/simp_driver/mem.py,sha256=EAsDO4Zl2pHf8TY4K_whluhbAwaT1NhktBM9u4g5yYE,9101
23
22
  mplang/backends/simp_driver/ops.py,sha256=WYObWDRCsiXH0UBWZX5vD5W98ZPkd88U_qBV8SE5rA8,4503
24
23
  mplang/backends/simp_driver/state.py,sha256=dNmYMFN2D2BBdgs6C0YLaHrfaBRMgs05UNxMWw6tZIs,1713
25
24
  mplang/backends/simp_driver/values.py,sha256=Lz1utNSIzH-dCzZAEjU6JRcxPsfKGfUJrYl6gIuMOGw,1509
26
25
  mplang/backends/simp_worker/__init__.py,sha256=gdrSY1-MDkupCoJ8xwwH7em7fgVWv3J4gBJ45uHdzgg,961
27
- mplang/backends/simp_worker/http.py,sha256=90nJnNLSM9TUVRxhAFq9pyNk0LwmSmvgnv3Tb8KFWSE,12660
26
+ mplang/backends/simp_worker/http.py,sha256=y5qpDpfM6vKBsicr2wCkgn-RHnED-b5J0r9hBJxrgN8,12746
28
27
  mplang/backends/simp_worker/mem.py,sha256=tMGiRppeca0TnY8WdqYQMQvsx5UVswCqdeOhiDlLQBs,3574
29
28
  mplang/backends/simp_worker/ops.py,sha256=ntxfkD4e6Il4w7FshK1ODcUCUPMlipt33pDY_x5iC0U,5661
30
29
  mplang/backends/simp_worker/state.py,sha256=nIu0ybvdYqRqp0TkoSneUF2u31evDHucCRduVBaDals,1445
@@ -45,14 +44,14 @@ mplang/edsl/README.md,sha256=viflvdRojOa6Xk_UMRPqpuPGXcPGmdlv2-XR6LO7B58,7592
45
44
  mplang/edsl/__init__.py,sha256=WL4efo6uY1br781_8IaCkSi7yCUldcfJfbtFsn6Fdj4,2698
46
45
  mplang/edsl/context.py,sha256=Ln8n3bDe8_ISe42TAGzUuz8fw57-tu1APuihMfAtW1Y,10075
47
46
  mplang/edsl/graph.py,sha256=nCeCN7-bxfzyv40fmxcEXOaVUx14cOCaHfFb7A9OBnE,14968
48
- mplang/edsl/jit.py,sha256=7eLZHoIuL5FZo9G5eF9nI4EeayLK-OvJ0NoH3VG5vLI,2393
47
+ mplang/edsl/jit.py,sha256=urXV68sQ-CjYuWGQSLj9ZAxP3YieISt2tfr2GEo-vCQ,2392
49
48
  mplang/edsl/object.py,sha256=dBl58q-ondjpjPNBh8zZvIEj6pJw2yEoz6TCaM_oleA,1906
50
- mplang/edsl/primitive.py,sha256=gDrn4FH682DUOgTqcQ2-9aqDYJau9L8E1ElswyOmmdw,10859
49
+ mplang/edsl/primitive.py,sha256=N9HEsXJuQTx_haLafUluL4EuIS2AKHNekZvCRWu5o-0,10858
51
50
  mplang/edsl/printer.py,sha256=drmfRkdCNqbkRfSDmejxtO-rEAaM13QyHB3AbAmKVFk,4393
52
51
  mplang/edsl/program.py,sha256=_JdEU2-nb79VlFLcgMJf4JS30TARBeUIzno0y0SFVsg,4467
53
52
  mplang/edsl/registry.py,sha256=hudXZPUrUUueEwgksDKN0cnE3iiXucuTaDdDK8uSPmk,6822
54
53
  mplang/edsl/serde.py,sha256=8K94laE8ObeGuBoF6m7g3A-xEe98EvqQ_6ZPPspddAY,11641
55
- mplang/edsl/tracer.py,sha256=EWN3eMVRG-CZsamTyINOnhhEUKhgd4CYwFMWeRpjycU,23129
54
+ mplang/edsl/tracer.py,sha256=WQFNL2ZgXSLjxD4JA7cXIDUKIQXe3aZ94qer57IKPXc,23128
56
55
  mplang/edsl/typing.py,sha256=Vp0r_oTyFrOhwwpVD_6XAX0sSsKvR04X-KdihkmD4QA,29287
57
56
  mplang/kernels/Makefile,sha256=5PoPpajcb_8ByPGNHzVytmovXUwkjJs_K8MbXX9qDYs,1033
58
57
  mplang/kernels/__init__.py,sha256=J_rDl9lAXd7QL3Nt_P3YX6j9yge7ssguSaHuafPZNKE,876
@@ -63,7 +62,7 @@ mplang/kernels/okvs_opt.cpp,sha256=qKkwHGGv7ayvIRW46PrQZZ7ej4b58Drbr3BlqEK506U,1
63
62
  mplang/kernels/py_kernels.py,sha256=EXK2ByfRsVpBqp1etDyCb_qExT0obiytcNFXYpRyxpo,12070
64
63
  mplang/libs/collective.py,sha256=1RhwnpKwjLvbZ5UgmCMkO6brwqHEIdkW_zymRawwTW4,10668
65
64
  mplang/libs/device/__init__.py,sha256=UHPGQ9JVedXy6AQo-ixQooS2R8eTwJEu7-p8A5_po78,1248
66
- mplang/libs/device/api.py,sha256=DjlAlKYgC9j8V1eBwa9o7cy-Y4cASCmMiccQiA6a9tc,28870
65
+ mplang/libs/device/api.py,sha256=vkwoHjIlwEivSUn1_NLf47pOq34gO6yCXTWRDYdgN2I,28869
67
66
  mplang/libs/device/cluster.py,sha256=YUqYZ_IBS6rpV5ejUFP3kTxcTQHSyeDeuaJcsiFY_Js,12508
68
67
  mplang/libs/ml/__init__.py,sha256=kUR6V74kWmGnOUdmLuGAP1xebW7y-NBOmHyHK-kdqWg,784
69
68
  mplang/libs/ml/sgb.py,sha256=g5x1PQnV7oRzheyu6PiDooqmBWI9jMvLHkIHrNnMoDk,60211
@@ -92,15 +91,16 @@ mplang/libs/mpc/vole/ldpc.py,sha256=gOmIbyOjkGE5lewyatl3p6FizNNH8LZ_1oOhp_-TOck,
92
91
  mplang/libs/mpc/vole/silver.py,sha256=EIxhpFIVNBemgeIZzCu5Cz_4wysxRm9b1Xfu0xiweVQ,12218
93
92
  mplang/runtime/__init__.py,sha256=VdUwJ3kDaI46FvGw7iMGwcsjt0HTGmmRmaBwj99xKIw,620
94
93
  mplang/runtime/dialect_state.py,sha256=HxO1i4kSOujS2tQzAF9-WmI3nChSaGgupf2_07dHetY,1277
95
- mplang/runtime/interpreter.py,sha256=wcCWXpAGylqdw_HecR4suJtwmozHLrK5x6Q8xM-Pn24,43593
94
+ mplang/runtime/interpreter.py,sha256=yWcUDbAfjKgkx09rYTHrIcrs4KzbV3y8tkC7VrqQRJ4,43592
96
95
  mplang/runtime/object_store.py,sha256=yT6jtKG2GUEJVmpq3gnQ8mCMvUFYzgBciC5A-J5KRdk,5998
97
96
  mplang/runtime/value.py,sha256=EqlhSgxLTJi_FF3ppyKjMe4eHS6-ROx-zK1YesG1U4o,4311
98
97
  mplang/tool/__init__.py,sha256=9K-T50W_vClUlyERcVx5xGZaeyv0Ts63SaQX6AZtjIs,1341
99
98
  mplang/tool/program.py,sha256=W3H8bpPirnoJ4ZrmyPYuMCPadJis20o__n_1MKqCsWU,11058
100
- mplang/utils/__init__.py,sha256=toubeyISiT6WDdITdfAvdY2iXVZU3PKVNWVeC9sYxuA,947
99
+ mplang/utils/__init__.py,sha256=Hwrwti2nfPxWUXV8DN6T1QaqXH_Jsd27k8UMSdBGUns,1073
101
100
  mplang/utils/func_utils.py,sha256=aZ-X43w8JKJgiF-IUMS0G7QqrNeoTM5ZPzRNd-tKxpw,5180
102
- mplang_nightly-0.1.dev279.dist-info/METADATA,sha256=Q4l1RV5WC5NfRV0heHxzHH8qVf3CkjOi6Ag1kbvsX38,16783
103
- mplang_nightly-0.1.dev279.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
104
- mplang_nightly-0.1.dev279.dist-info/entry_points.txt,sha256=mG1oJT-GAjQR834a62_QIWb7litzWPPyVnwFqm-rWuY,55
105
- mplang_nightly-0.1.dev279.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
106
- mplang_nightly-0.1.dev279.dist-info/RECORD,,
101
+ mplang/utils/logging.py,sha256=9dMhwprVbx1WMGJrgoQbWmV50vyYuLU4NSPnetcl1Go,7237
102
+ mplang_nightly-0.1.dev280.dist-info/METADATA,sha256=IG4D8STIc2G7ZtQAz3OlKptLansk_hvB03-2M2HNZCw,16783
103
+ mplang_nightly-0.1.dev280.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
104
+ mplang_nightly-0.1.dev280.dist-info/entry_points.txt,sha256=mG1oJT-GAjQR834a62_QIWb7litzWPPyVnwFqm-rWuY,55
105
+ mplang_nightly-0.1.dev280.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
106
+ mplang_nightly-0.1.dev280.dist-info/RECORD,,