thds.mops 3.9.20250828214754__py3-none-any.whl → 3.9.20250902211636__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.

Potentially problematic release.


This version of thds.mops might be problematic. Click here for more details.

thds/mops/_utils/temp.py CHANGED
@@ -1,4 +1,5 @@
1
1
  """Utility to make returning files via their Paths less confusing in the application code."""
2
+
2
3
  import typing as ty
3
4
  from contextlib import contextmanager
4
5
  from pathlib import Path
@@ -1,4 +1,5 @@
1
1
  """Impure keyfunctions that are useful for common cases."""
2
+
2
3
  import typing as ty
3
4
 
4
5
  from ..pure.core.memo.keyfunc import Args, Keyfunc, Kwargs
thds/mops/k8s/counts.py CHANGED
@@ -5,8 +5,7 @@ T = ty.TypeVar("T")
5
5
 
6
6
 
7
7
  class MpValue(ty.Protocol[T]):
8
- def get_lock(self) -> ty.Any:
9
- ...
8
+ def get_lock(self) -> ty.Any: ...
10
9
 
11
10
  value: T
12
11
 
thds/mops/k8s/watch.py CHANGED
@@ -36,8 +36,7 @@ class V1List(ty.Protocol[T]):
36
36
 
37
37
 
38
38
  class K8sList(ty.Protocol[T]):
39
- def __call__(self, *args: ty.Any, namespace: str, **kwargs: ty.Any) -> V1List[T]:
40
- ...
39
+ def __call__(self, *args: ty.Any, namespace: str, **kwargs: ty.Any) -> V1List[T]: ...
41
40
 
42
41
 
43
42
  # If this does not return a K8sList API method, the loop will exit
@@ -11,9 +11,9 @@ from thds import core
11
11
  from thds.core import config, refcount
12
12
  from thds.core.stack_context import StackContext
13
13
 
14
- _DEFERRED_INVOCATION_WORK: StackContext[
15
- ty.Optional[ty.Dict[ty.Hashable, ty.Callable[[], ty.Any]]]
16
- ] = StackContext("DEFERRED_INVOCATION_WORK", None)
14
+ _DEFERRED_INVOCATION_WORK: StackContext[ty.Optional[ty.Dict[ty.Hashable, ty.Callable[[], ty.Any]]]] = (
15
+ StackContext("DEFERRED_INVOCATION_WORK", None)
16
+ )
17
17
  _MAX_DEFERRED_WORK_THREADS = config.item("max_deferred_work_threads", default=50, parse=int)
18
18
  _DEFERRED_WORK_THREADPOOL = refcount.Resource[concurrent.futures.ThreadPoolExecutor](
19
19
  lambda: concurrent.futures.ThreadPoolExecutor(
@@ -19,11 +19,9 @@ class ResultChannel(ty.Protocol[T_contra]):
19
19
  A remote invocation can succeed with a result or fail with an exception.
20
20
  """
21
21
 
22
- def return_value(self, __return_value: T_contra) -> None:
23
- ... # pragma: no cover
22
+ def return_value(self, __return_value: T_contra) -> None: ... # pragma: no cover
24
23
 
25
- def exception(self, __ex: Exception) -> None:
26
- ... # pragma: no cover
24
+ def exception(self, __ex: Exception) -> None: ... # pragma: no cover
27
25
 
28
26
 
29
27
  logger = log.getLogger(__name__)
@@ -7,8 +7,7 @@ import typing as ty
7
7
 
8
8
 
9
9
  class EntryHandler(ty.Protocol):
10
- def __call__(self, *__args: str) -> ty.Any:
11
- ... # pragma: nocover
10
+ def __call__(self, *__args: str) -> ty.Any: ... # pragma: nocover
12
11
 
13
12
 
14
13
  ENTRY_HANDLERS: ty.Dict[str, EntryHandler] = dict()
@@ -29,10 +29,8 @@ class LockAcquired(ty.Protocol):
29
29
 
30
30
  writer_id: str
31
31
 
32
- def maintain(self) -> None:
33
- ... # pragma: no cover
32
+ def maintain(self) -> None: ... # pragma: no cover
34
33
 
35
- def release(self) -> None:
36
- ... # pragma: no cover
34
+ def release(self) -> None: ... # pragma: no cover
37
35
 
38
36
  expire_s: float
@@ -148,8 +148,7 @@ from .unique_name_for_function import make_unique_name_including_docstring_key,
148
148
 
149
149
 
150
150
  class _PipelineMemospaceHandler(ty.Protocol):
151
- def __call__(self, __callable_name: str, __runner_prefix: str) -> ty.Optional[str]:
152
- ...
151
+ def __call__(self, __callable_name: str, __runner_prefix: str) -> ty.Optional[str]: ...
153
152
 
154
153
 
155
154
  _PIPELINE_MEMOSPACE_HANDLERS: ty.List[_PipelineMemospaceHandler] = list()
@@ -1,4 +1,5 @@
1
1
  """Definitions of basic keyfuncs."""
2
+
2
3
  import inspect
3
4
  import typing as ty
4
5
 
@@ -24,8 +25,7 @@ class Keyfunc(ty.Protocol):
24
25
 
25
26
  def __call__(
26
27
  self, c: ty.Callable, __args: Args, __kwargs: Kwargs
27
- ) -> ty.Tuple[ty.Callable, Args, Kwargs]:
28
- ... # pragma: nocover
28
+ ) -> ty.Tuple[ty.Callable, Args, Kwargs]: ... # pragma: nocover
29
29
 
30
30
 
31
31
  ArgsOnlyKeyfunc = ty.Callable[..., ty.Tuple[Args, Kwargs]]
@@ -1,5 +1,4 @@
1
- """Public API for masking the mops pipeline id.
2
- """
1
+ """Public API for masking the mops pipeline id."""
3
2
 
4
3
  import re
5
4
  import typing as ty
@@ -3,6 +3,7 @@ when the function is defined inside the __main__ module.
3
3
 
4
4
  Only works if you 'transfer execution' to the same process.
5
5
  """
6
+
6
7
  import typing as ty
7
8
 
8
9
  _LOCAL_MAIN_FUNCTIONS: ty.Dict[str, ty.Callable] = dict()
@@ -65,11 +65,9 @@ class _ProcessLockingPathContentAddresser:
65
65
 
66
66
 
67
67
  class PathStream(ty.Protocol):
68
- def local_to_remote(self, __path: Path, __key: str) -> None:
69
- ... # pragma: no cover
68
+ def local_to_remote(self, __path: Path, __key: str) -> None: ... # pragma: no cover
70
69
 
71
- def get_downloader(self, __key: str) -> Downloader:
72
- ... # pragma: no cover
70
+ def get_downloader(self, __key: str) -> Downloader: ... # pragma: no cover
73
71
 
74
72
 
75
73
  class NotAFileError(ValueError):
@@ -36,8 +36,7 @@ class Runner(Protocol):
36
36
  __f: ty.Callable[..., T],
37
37
  __args: ty.Sequence,
38
38
  __kwargs: ty.Mapping[str, ty.Any],
39
- ) -> T:
40
- ... # pragma: no cover
39
+ ) -> T: ... # pragma: no cover
41
40
 
42
41
 
43
42
  class NoResultAfterInvocationError(Exception): # TODO remove in v4.
@@ -134,8 +133,7 @@ class BlobStore(Protocol):
134
133
  followed by the path component split along the same lines that join would concatenate.
135
134
  """
136
135
 
137
- def is_blob_not_found(self, __exc: Exception) -> bool:
138
- ...
136
+ def is_blob_not_found(self, __exc: Exception) -> bool: ...
139
137
 
140
138
 
141
139
  Args = ty.Sequence
@@ -1,5 +1,4 @@
1
- """Joins pickle functionality and Blob Store functionality to run functions remotely.
2
- """
1
+ """Joins pickle functionality and Blob Store functionality to run functions remotely."""
3
2
 
4
3
  import threading
5
4
  import time
@@ -24,8 +24,7 @@ S = ty.TypeVar("S", SyncShim, FutureShim, Shim, covariant=True)
24
24
 
25
25
 
26
26
  class ShimBuilder(ty.Protocol, ty.Generic[S]):
27
- def __call__(self, __f: ty.Callable, __args: Args, __kwargs: Kwargs) -> S:
28
- ... # pragma: no cover
27
+ def __call__(self, __f: ty.Callable, __args: Args, __kwargs: Kwargs) -> S: ... # pragma: no cover
29
28
 
30
29
 
31
30
  SyncShimBuilder = ShimBuilder[SyncShim]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thds.mops
3
- Version: 3.9.20250828214754
3
+ Version: 3.9.20250902211636
4
4
  Summary: ML Ops tools for Trilliant Health
5
5
  Author-email: Trilliant Health <info@trillianthealth.com>
6
6
  Project-URL: Repository, https://github.com/TrilliantHealth/ds-monorepo
@@ -11,9 +11,9 @@ thds/mops/_utils/locked_cache.py,sha256=ROIkwu-_FcXlNyCreWQeE5cyL9XrNW7drWsolTge
11
11
  thds/mops/_utils/names.py,sha256=tPPaXCyduUXqmbdvIg3ygevERnKM3YIs868BeaKX5XY,824
12
12
  thds/mops/_utils/on_slow.py,sha256=jtNvOiG3ICXCkq_hMCrqhL0gyyFnD9bZYzljDYA_yec,825
13
13
  thds/mops/_utils/once.py,sha256=_LHkPbMJO4nqp0RIDj8VgIV3JoZYSQYKGdatdnT-19s,946
14
- thds/mops/_utils/temp.py,sha256=pcHkqIPghPfcZcwAFjCIzLfUWdIgXD3XC8Au1dk5l1k,948
14
+ thds/mops/_utils/temp.py,sha256=FkUlcl3abzSoANYiw2ce4alhyufiEsa_2tgdu3pwsdc,949
15
15
  thds/mops/impure/__init__.py,sha256=VnrHPVgbOYUjkrVnnVicvNV39G6K6ENcWtCuV-BedW4,83
16
- thds/mops/impure/keyfunc.py,sha256=-THL-GPa6j1zjiHBONkiFzKHuOvE_kGdIVtz0nG4Mp8,524
16
+ thds/mops/impure/keyfunc.py,sha256=6VRa44qW95mH-cWkwPaU-aarXv6Nz0EwBOn4Aowy73s,525
17
17
  thds/mops/impure/runner.py,sha256=UI1NZWMZ_5TQHfFKLnoiSm2zDR3zCunTKFmJoybkyCo,2840
18
18
  thds/mops/k8s/__init__.py,sha256=zl4GVcCFRvPscyo6gvv5Lx0OKB7d3QjtVFjYurnxMuE,764
19
19
  thds/mops/k8s/_launch.py,sha256=n4a3v6JNjcShFlBgRyL6JdS9My0ApggsjurtZFuKOnk,10893
@@ -23,7 +23,7 @@ thds/mops/k8s/auth.py,sha256=0zs4TQgkD6VPrhDD43xt7JGwP6uWf3ctySGLcPKN7iw,1691
23
23
  thds/mops/k8s/batching.py,sha256=VJw6DhdhklOSu-iUW6r_BpAP7Jx62uoKV2Bpy0V9U_Q,8266
24
24
  thds/mops/k8s/config.py,sha256=_znocX5BW8kfG_Cbq6f3apx5FqSihD7Tmic-SBkVjMQ,2992
25
25
  thds/mops/k8s/container_registry.py,sha256=qOiGCE4t_tLYgJDGrhKV9KNv48lF_AlwCDHyFgucd2s,539
26
- thds/mops/k8s/counts.py,sha256=W_gfXScvrEFskPFU9dEkI7V1I5ExXm9t_bUwO52lwtc,580
26
+ thds/mops/k8s/counts.py,sha256=D-OVHY_dhsgJ2YHApy2qvrcSKzE5mlweDPredFU6tOU,572
27
27
  thds/mops/k8s/job_future.py,sha256=_wsH5Lh9qdcGqLZsvXYz8vAFgpV_nMYZ5d8dIFJA-eQ,3933
28
28
  thds/mops/k8s/jobs.py,sha256=KcHxlPRukubRp_ddOm0tAX4COs7Ppv0mjbEdv4SAjmM,3359
29
29
  thds/mops/k8s/logging.py,sha256=m_3Tn0XAFhUHdEicqRKnMzdK_hvSTCB7hsP1mIilKC4,10940
@@ -34,7 +34,7 @@ thds/mops/k8s/too_old_resource_version.py,sha256=S7ltVA-LrxUpQ8Q__AB0nQmezN8Mmnx
34
34
  thds/mops/k8s/uncertain_future.py,sha256=60v9yVlhnCDN_yUv8l4Z4KafR4TsTGxN7dprkGI8pQQ,7152
35
35
  thds/mops/k8s/wait_job.py,sha256=_X5lSn-3CE4V-_ra0kF1WtxkAiOgqSom8mU1-0hhMio,2445
36
36
  thds/mops/k8s/warn_image_backoff.py,sha256=ls_zLSnRbJjO4ICjq1Rk21EXh190l2dT6nKg-PT8Das,1934
37
- thds/mops/k8s/watch.py,sha256=iU3sgWEVyjNgVN9HObMoHoQyT8YPrApn4XZlE0sZcLA,14028
37
+ thds/mops/k8s/watch.py,sha256=4LBLZ9s9hp4jSOr3OTBDMWWCEDedgxsUoYt89zCLLsw,14020
38
38
  thds/mops/k8s/tools/krsync.py,sha256=us7pXX0-bRMwD2oAno7Z6BJcPs6FgaUabHW0STyQJYg,1773
39
39
  thds/mops/k8s/tools/krsync.sh,sha256=fWgwkdzWnJeTbzEA_uBiIIi-bNU4nXAYj3dNovyRluU,747
40
40
  thds/mops/pure/__init__.py,sha256=3xLimQ2JWdeq1YgPs7bPwlwOspzPRwaR2w2KX7vfJU0,1624
@@ -48,36 +48,36 @@ thds/mops/pure/adls/blob_store.py,sha256=ZWr7CKKcI-jz1sWZq4Jwq6LYkhFNxp-EFnNh83E
48
48
  thds/mops/pure/adls/output_fqn.py,sha256=qnwdubjVwKShzZ5RruD0_85x86DtPwZNSgwADrdhrTs,748
49
49
  thds/mops/pure/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  thds/mops/pure/core/content_addressed.py,sha256=RaCPvtM7bf0NnY5lNR5jPcNn2Moh-bmLtC4zOvdWjCU,1202
51
- thds/mops/pure/core/deferred_work.py,sha256=lCgjFERyVKhfcy8R7MNA8NsEZAkZgmCQ71c8Bo7Nq8Q,3741
51
+ thds/mops/pure/core/deferred_work.py,sha256=eizGEtruepmd92SZLAIjJLAoab8QyeqfgezVdSJ5UEY,3743
52
52
  thds/mops/pure/core/file_blob_store.py,sha256=N4m4LLrBZaqTJFR4D_eYl03a-n6yQBRsv0ID1bOS9TA,4298
53
53
  thds/mops/pure/core/metadata.py,sha256=xAL2iz0pXrcKapmYnNrqSZ8nH2GVakA167NSpAfwiCI,8276
54
54
  thds/mops/pure/core/output_naming.py,sha256=ntufOVNJiVPiUM-Azl9mFpDFhIxiB-V2je9dv9AUQhg,2283
55
55
  thds/mops/pure/core/partial.py,sha256=aeNQFNHj9epU6lvk6NNTV6hXkNqNHN_czBydt7nkHmg,463
56
56
  thds/mops/pure/core/pipeline_id.py,sha256=LHGoIg0I3IM9_ZDyWjqOZp48PbfF_olKSzot22RMFI4,2543
57
- thds/mops/pure/core/pipeline_id_mask.py,sha256=Ll2yyQM5nSgzihx8i7fCrrSNlUUnIsbAOb3m8bq0E2w,2791
58
- thds/mops/pure/core/script_support.py,sha256=3j9Z1O5ynSSPmWSghtJgAj-Lt4GwYcA8cWcpUIRM7q0,952
57
+ thds/mops/pure/core/pipeline_id_mask.py,sha256=AVAy06TdNAmivxGec1gahBYvkJCn7yn-gvxijmz6ABE,2790
58
+ thds/mops/pure/core/script_support.py,sha256=4VCBL5AfGSHcZWpOxMw6nnAbQyk1B-979G_OjvUg9B0,953
59
59
  thds/mops/pure/core/serialize_big_objs.py,sha256=YcOS1ccs82ZWO7nTbeumErMzYVe4hgXCTsfvMggYmd8,2332
60
- thds/mops/pure/core/serialize_paths.py,sha256=bWI-AKNP_Tf29JGO7DKqshOh7b7gu51lfGryDXo3aMI,5787
60
+ thds/mops/pure/core/serialize_paths.py,sha256=XrkaAwwtILWSTa0QlngCrm6534hp4fCZogGeHp6Y8xw,5771
61
61
  thds/mops/pure/core/source.py,sha256=R36ajrCU1JdWF-8iD8YqAiP-q39ypZqf2DeBsqC9lYo,15105
62
- thds/mops/pure/core/types.py,sha256=w2g83miGhnjaWr2_4TW2Fc3BdIgoIHFbIr_wX1HC7A0,5452
62
+ thds/mops/pure/core/types.py,sha256=_3gDwztDKV4Xeyw2jvyMRJAjmR6gRsmfYmsRCcZMUwI,5436
63
63
  thds/mops/pure/core/uris.py,sha256=qO9_f-ro7kax6haNOPTPe81-_aUSRFELeeZH4PMTTU4,2694
64
64
  thds/mops/pure/core/use_runner.py,sha256=m1Mu1XDr3xRf_u_VSiHfTG4TH6fnSg0IqwmtbLKG_oc,2103
65
65
  thds/mops/pure/core/entry/__init__.py,sha256=kiDcsj16CwjRSexOZW-4h4b4tDCYIS_eLS5wgu2yIlk,151
66
66
  thds/mops/pure/core/entry/main.py,sha256=b1F5lFDK_hnpvW3bqzt5MWDcpKvCXZpWdEHI8zroC4k,2061
67
- thds/mops/pure/core/entry/route_result.py,sha256=sifgDWUn0LRUScJur4KfjVJjkinbjFJ5KQdhq3wJwdU,2148
68
- thds/mops/pure/core/entry/runner_registry.py,sha256=aPDCML7gM_zP6NfPnqx0_Q1oRHzgdaCa_XzYc5VIw7U,601
67
+ thds/mops/pure/core/entry/route_result.py,sha256=uUNyYDfoMWICelcgBQLsTighL3J1kJQAdh41_ubiBRo,2132
68
+ thds/mops/pure/core/entry/runner_registry.py,sha256=CD8EzIU72y66Hz3q4BPB67sogwx6SKwnY65MbZJAtH4,593
69
69
  thds/mops/pure/core/lock/__init__.py,sha256=4x9NdborLPGktDNs8LDapW17LeuAHLCbO9v-8IWdT2I,268
70
70
  thds/mops/pure/core/lock/_acquire.py,sha256=lVxHzDA30VB95Cfb4Fl2m0eatdLXCDv6rOCnERiyMNw,9468
71
71
  thds/mops/pure/core/lock/_funcs.py,sha256=j4g8yVWnrAMPDKqLlq8nTnccM1KHSJ3g71L1iWNbV2Q,969
72
72
  thds/mops/pure/core/lock/cli.py,sha256=uidtmgHB2y5LDkj7SQTncy_cNe1EfIseuiJPV9kcxBU,2488
73
73
  thds/mops/pure/core/lock/maintain.py,sha256=UFhXdr9Q6FdPgq3PtELiAKdlRVl1sqF8IzAf3Oun4g4,9718
74
74
  thds/mops/pure/core/lock/read.py,sha256=Ct5eYMlkTlEaV5Yhw6HWsDD7VrgdhDZoI6AVIQ0ts-4,1255
75
- thds/mops/pure/core/lock/types.py,sha256=EiD3G5FODZnhNDvH_2pcyKuVOdz_gsrYSLiAv8grh1c,1006
75
+ thds/mops/pure/core/lock/types.py,sha256=Qex-l32a0M30oyHyYEgYG8a4rhy0Ac3n5436QK0Bw-U,990
76
76
  thds/mops/pure/core/lock/write.py,sha256=wJByqa2edVhVcyrCaigWChVW3dYsoPBVt0HXyul-WpQ,6782
77
77
  thds/mops/pure/core/memo/__init__.py,sha256=k64vX3XazDkP0m8MZgwqt0BV4vXg-ojK1EDhymucnuo,286
78
78
  thds/mops/pure/core/memo/calls.py,sha256=kvm6kn-CbOLxZuo86BvzEJw69p7VlEJ8_mCiWd6uz-g,3631
79
- thds/mops/pure/core/memo/function_memospace.py,sha256=PlQCs7dZ2Fu3gIjfzJMeOy7R5zPqYQDBp7OuViLqrpc,11644
80
- thds/mops/pure/core/memo/keyfunc.py,sha256=FAOEDzMcQ-0JvW4j1eaUzixnemo_373V-16kWZl7_i0,2053
79
+ thds/mops/pure/core/memo/function_memospace.py,sha256=Ixg4_QMx8z9T8HuJkas5fr-RqfwXY7rd8E1nQ5zOC_Y,11636
80
+ thds/mops/pure/core/memo/keyfunc.py,sha256=WR67YlvzCOccs8t2e9SmZu24Bugrwim4p8XJ_IMY0Is,2046
81
81
  thds/mops/pure/core/memo/overwrite_params.py,sha256=ltuFxhr8gNo2iBoBz2eFPayjSV23gMdBuoLZD42lIAg,2425
82
82
  thds/mops/pure/core/memo/results.py,sha256=hEgwlNXRIzihjUMgrlKeHAXDDBmp7y6vQyemzc47hgY,3202
83
83
  thds/mops/pure/core/memo/unique_name_for_function.py,sha256=NGuBmK9c-UdgQP27I-WLMRlCMWJmPSdMymRm14mT1K0,2331
@@ -93,11 +93,11 @@ thds/mops/pure/pickling/remote.py,sha256=7JXZRGnLI5y5dqElIDrhIlaRv6Q_zQ_78aqNhO7
93
93
  thds/mops/pure/pickling/sha256_b64.py,sha256=HL0cPixHPZYuZDVDBscxsnI-3a2amWEfw-LseOX-PyY,2916
94
94
  thds/mops/pure/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
95
  thds/mops/pure/runner/get_results.py,sha256=1K6qf_Vg2YfUPfUuu103WyYsfS3e_ju6W7Z_PV01-pU,4053
96
- thds/mops/pure/runner/local.py,sha256=Qw1g6GasYyWWoZ7ACug8Sq0B__-FoqcaFO7HfFq0rys,11024
96
+ thds/mops/pure/runner/local.py,sha256=0DN1iafxJdnXx0vKZ1jD6dh34aAWK2pgdKUFvK9wDLY,11023
97
97
  thds/mops/pure/runner/shim_builder.py,sha256=obs2-NipAB8w0NR8o90UQX_bmHYS69c-raL2JPw8yM4,821
98
98
  thds/mops/pure/runner/simple_shims.py,sha256=r-kLmpSCwzjfzF-Ku43YKvrHMLpZR5jDmweo4Vk07O4,1069
99
99
  thds/mops/pure/runner/strings.py,sha256=PYAYMxZ2ehgahKIBXJilENNE6OrdNkueNBel8LPsoh8,26
100
- thds/mops/pure/runner/types.py,sha256=fEpZyLYd1mtM1lRX_1MANpbttnJge0Z1zNqC8tAAxnw,1566
100
+ thds/mops/pure/runner/types.py,sha256=M9afUkSeZ66AF_6_rDalqzGUEB-SFKE6DIGr22rNOeg,1558
101
101
  thds/mops/pure/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  thds/mops/pure/tools/_pickle_dis.py,sha256=EyLgWP_dRzz1HIabGRTEGZFT_LZV5gmn4asJyFUAt4Y,6312
103
103
  thds/mops/pure/tools/history.py,sha256=dB7C2jq-0P3Fnv5Q3nzEkLehXdX0kaZZrGl1U1ns9DU,1048
@@ -109,8 +109,8 @@ thds/mops/pure/tools/summarize/cli.py,sha256=7kDtn24ok8oBO3jFjlMmOK3jnZYpMoE_5Y8
109
109
  thds/mops/pure/tools/summarize/run_summary.py,sha256=w45qiQr7elrHDiK9Hgs85gtU3gwLuXa447ih1Y23BBY,5776
110
110
  thds/mops/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  thds/mops/testing/deferred_imports.py,sha256=f0ezCgQAtzTqW1yAOb0OWgsB9ZrlztLB894LtpWDaVw,3780
112
- thds_mops-3.9.20250828214754.dist-info/METADATA,sha256=itT8MGbxAhOguMv9bgGc_OAxiSzaSeUawFcuqfZAxd4,2225
113
- thds_mops-3.9.20250828214754.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
114
- thds_mops-3.9.20250828214754.dist-info/entry_points.txt,sha256=qKvCAaB80syXfxVR3xx6x9J0YJdaQWkIbVSw-NwFgMw,322
115
- thds_mops-3.9.20250828214754.dist-info/top_level.txt,sha256=LTZaE5SkWJwv9bwOlMbIhiS-JWQEEIcjVYnJrt-CriY,5
116
- thds_mops-3.9.20250828214754.dist-info/RECORD,,
112
+ thds_mops-3.9.20250902211636.dist-info/METADATA,sha256=xeI_ctQwD-R1yRroSMwmb1WZoP2djwjHFj0fG1q75bg,2225
113
+ thds_mops-3.9.20250902211636.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
114
+ thds_mops-3.9.20250902211636.dist-info/entry_points.txt,sha256=qKvCAaB80syXfxVR3xx6x9J0YJdaQWkIbVSw-NwFgMw,322
115
+ thds_mops-3.9.20250902211636.dist-info/top_level.txt,sha256=LTZaE5SkWJwv9bwOlMbIhiS-JWQEEIcjVYnJrt-CriY,5
116
+ thds_mops-3.9.20250902211636.dist-info/RECORD,,