ommlds 0.0.0.dev500__py3-none-any.whl → 0.0.0.dev501__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.
- ommlds/cli/sessions/chat/interfaces/textual/app.py +1 -1
- ommlds/minichain/__init__.py +9 -2
- ommlds/minichain/_dataclasses.py +337 -81
- ommlds/minichain/backends/impls/openai/format.py +1 -1
- ommlds/minichain/chat/messages.py +1 -1
- ommlds/minichain/chat/stream/joining.py +36 -12
- ommlds/minichain/chat/transforms/metadata.py +3 -3
- ommlds/minichain/content/standard.py +1 -1
- ommlds/minichain/content/transform/json.py +1 -1
- ommlds/minichain/content/transform/metadata.py +1 -1
- ommlds/minichain/content/transform/standard.py +2 -2
- ommlds/minichain/content/transform/strings.py +1 -1
- ommlds/minichain/content/transform/templates.py +1 -1
- ommlds/minichain/metadata.py +13 -16
- ommlds/minichain/services/__init__.py +155 -0
- ommlds/minichain/services/_marshal.py +46 -10
- ommlds/minichain/services/_origclasses.py +11 -0
- ommlds/minichain/services/_typedvalues.py +8 -3
- ommlds/minichain/services/requests.py +73 -3
- ommlds/minichain/services/responses.py +73 -3
- ommlds/minichain/services/services.py +9 -0
- ommlds/minichain/tools/reflect.py +3 -3
- ommlds/minichain/wrappers/instrument.py +146 -0
- ommlds/minichain/wrappers/services.py +26 -0
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/METADATA +4 -4
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/RECORD +30 -29
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/WHEEL +0 -0
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/entry_points.txt +0 -0
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/licenses/LICENSE +0 -0
- {ommlds-0.0.0.dev500.dist-info → ommlds-0.0.0.dev501.dist-info}/top_level.txt +0 -0
|
@@ -6,8 +6,12 @@ from omlish import lang
|
|
|
6
6
|
from omlish import typedvalues as tv
|
|
7
7
|
|
|
8
8
|
from .._typedvalues import _tv_field_metadata
|
|
9
|
+
from ..metadata import CommonMetadata
|
|
10
|
+
from ..metadata import Metadata
|
|
11
|
+
from ..metadata import MetadataContainerDataclass
|
|
9
12
|
from ..types import Option
|
|
10
13
|
from ..types import OptionT_co
|
|
14
|
+
from ._origclasses import confer_orig_class
|
|
11
15
|
from ._typedvalues import _TypedValues
|
|
12
16
|
|
|
13
17
|
|
|
@@ -19,6 +23,17 @@ OptionU = ta.TypeVar('OptionU', bound=Option)
|
|
|
19
23
|
##
|
|
20
24
|
|
|
21
25
|
|
|
26
|
+
class RequestMetadata(Metadata, lang.Abstract):
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
RequestMetadatas: ta.TypeAlias = RequestMetadata | CommonMetadata
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@ta.final
|
|
22
37
|
@dc.dataclass(frozen=True)
|
|
23
38
|
@dc.extra_class_params(
|
|
24
39
|
allow_dynamic_dunder_attrs=True,
|
|
@@ -26,11 +41,32 @@ OptionU = ta.TypeVar('OptionU', bound=Option)
|
|
|
26
41
|
)
|
|
27
42
|
class Request( # type: ignore[type-var] # FIXME: _TypedValues param is invariant
|
|
28
43
|
_TypedValues[OptionT_co],
|
|
44
|
+
MetadataContainerDataclass[RequestMetadatas],
|
|
29
45
|
lang.Final,
|
|
30
46
|
ta.Generic[V_co, OptionT_co],
|
|
31
47
|
):
|
|
48
|
+
"""
|
|
49
|
+
Universal service request, comprised of:
|
|
50
|
+
- a value of type `V_co`
|
|
51
|
+
- a sequence of options of type `OptionT_co`
|
|
52
|
+
- metadata of type `RequestMetadatas`
|
|
53
|
+
|
|
54
|
+
Refer to the package docstring for an explanation of its type var variance.
|
|
55
|
+
|
|
56
|
+
This class is final, but each instance's `__orig_class__` (if present) is significant. It is encouraged to construct
|
|
57
|
+
these through a pre-parameterized type alias, and the provided `with_` methods should be used rather than
|
|
58
|
+
`dc.replace` (as they will propagate `__orig_class__`).
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
#
|
|
62
|
+
|
|
32
63
|
v: V_co # type: ignore[misc] # FIXME: Cannot use a covariant type variable as a parameter
|
|
33
64
|
|
|
65
|
+
def with_v(self, v: V_co) -> ta.Self: # type: ignore[misc]
|
|
66
|
+
return confer_orig_class(self, dc.replace(self, v=v))
|
|
67
|
+
|
|
68
|
+
#
|
|
69
|
+
|
|
34
70
|
_options: ta.Sequence[OptionT_co] = dc.field(
|
|
35
71
|
default=(),
|
|
36
72
|
metadata=_tv_field_metadata(
|
|
@@ -43,13 +79,47 @@ class Request( # type: ignore[type-var] # FIXME: _TypedValues param is invaria
|
|
|
43
79
|
def options(self) -> tv.TypedValues[OptionT_co]:
|
|
44
80
|
return check.isinstance(self._options, tv.TypedValues)
|
|
45
81
|
|
|
46
|
-
def with_options(self, *options: OptionU, override: bool = False) -> 'Request[V_co, OptionT_co | OptionU]':
|
|
47
|
-
return dc.replace(self, _options=self.options.update(*options, override=override))
|
|
48
|
-
|
|
49
82
|
@property
|
|
50
83
|
def _typed_values(self) -> tv.TypedValues[OptionT_co]:
|
|
51
84
|
return check.isinstance(self._options, tv.TypedValues)
|
|
52
85
|
|
|
86
|
+
def with_options(
|
|
87
|
+
self,
|
|
88
|
+
*add: OptionU,
|
|
89
|
+
discard: ta.Iterable[type] | None = None,
|
|
90
|
+
override: bool = False,
|
|
91
|
+
) -> 'Request[V_co, OptionT_co | OptionU]':
|
|
92
|
+
new = (old := self.options).update(
|
|
93
|
+
*add,
|
|
94
|
+
discard=discard,
|
|
95
|
+
override=override,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
if new is old:
|
|
99
|
+
return self
|
|
100
|
+
|
|
101
|
+
return confer_orig_class(self, dc.replace(self, _options=new))
|
|
102
|
+
|
|
103
|
+
#
|
|
104
|
+
|
|
105
|
+
_metadata: ta.Sequence[RequestMetadatas] = dc.field(
|
|
106
|
+
default=(),
|
|
107
|
+
kw_only=True,
|
|
108
|
+
repr=False,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
MetadataContainerDataclass._configure_metadata_field(_metadata, RequestMetadatas) # noqa
|
|
112
|
+
|
|
113
|
+
def with_metadata(
|
|
114
|
+
self,
|
|
115
|
+
*add: RequestMetadatas,
|
|
116
|
+
discard: ta.Iterable[type] | None = None,
|
|
117
|
+
override: bool = False,
|
|
118
|
+
) -> ta.Self:
|
|
119
|
+
return confer_orig_class(self, super().with_metadata(*add, discard=discard, override=override))
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
|
|
53
123
|
def validate(self) -> ta.Self:
|
|
54
124
|
self._check_typed_values()
|
|
55
125
|
return self
|
|
@@ -6,8 +6,12 @@ from omlish import lang
|
|
|
6
6
|
from omlish import typedvalues as tv
|
|
7
7
|
|
|
8
8
|
from .._typedvalues import _tv_field_metadata
|
|
9
|
+
from ..metadata import CommonMetadata
|
|
10
|
+
from ..metadata import Metadata
|
|
11
|
+
from ..metadata import MetadataContainerDataclass
|
|
9
12
|
from ..types import Output
|
|
10
13
|
from ..types import OutputT_contra
|
|
14
|
+
from ._origclasses import confer_orig_class
|
|
11
15
|
from ._typedvalues import _TypedValues
|
|
12
16
|
|
|
13
17
|
|
|
@@ -17,6 +21,17 @@ V_co = ta.TypeVar('V_co', covariant=True)
|
|
|
17
21
|
##
|
|
18
22
|
|
|
19
23
|
|
|
24
|
+
class ResponseMetadata(Metadata, lang.Abstract):
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
ResponseMetadatas: ta.TypeAlias = ResponseMetadata | CommonMetadata
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
##
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@ta.final
|
|
20
35
|
@dc.dataclass(frozen=True)
|
|
21
36
|
@dc.extra_class_params(
|
|
22
37
|
allow_dynamic_dunder_attrs=True,
|
|
@@ -24,11 +39,32 @@ V_co = ta.TypeVar('V_co', covariant=True)
|
|
|
24
39
|
)
|
|
25
40
|
class Response( # type: ignore[type-var] # FIXME: _TypedValues param is invariant
|
|
26
41
|
_TypedValues[OutputT_contra],
|
|
42
|
+
MetadataContainerDataclass[ResponseMetadatas],
|
|
27
43
|
lang.Final,
|
|
28
44
|
ta.Generic[V_co, OutputT_contra],
|
|
29
45
|
):
|
|
46
|
+
"""
|
|
47
|
+
Universal service response, comprised of:
|
|
48
|
+
- a value of type `V_co`
|
|
49
|
+
- a sequence of outputs of type `OutputT_contra`
|
|
50
|
+
- metadata of type `ResponseMetadatas`
|
|
51
|
+
|
|
52
|
+
Refer to the package docstring for an explanation of its type var variance.
|
|
53
|
+
|
|
54
|
+
This class is final, but each instance's `__orig_class__` (if present) is significant. It is encouraged to construct
|
|
55
|
+
these through a pre-parameterized type alias, and the provided `with_` methods should be used rather than
|
|
56
|
+
`dc.replace` (as they will propagate `__orig_class__`).
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
|
|
30
61
|
v: V_co # type: ignore[misc] # FIXME: Cannot use a covariant type variable as a parameter
|
|
31
62
|
|
|
63
|
+
def with_v(self, v: V_co) -> ta.Self: # type: ignore[misc]
|
|
64
|
+
return confer_orig_class(self, dc.replace(self, v=v))
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
|
|
32
68
|
_outputs: ta.Sequence[OutputT_contra] = dc.field(
|
|
33
69
|
default=(),
|
|
34
70
|
metadata=_tv_field_metadata(
|
|
@@ -41,13 +77,47 @@ class Response( # type: ignore[type-var] # FIXME: _TypedValues param is invari
|
|
|
41
77
|
def outputs(self) -> tv.TypedValues[OutputT_contra]:
|
|
42
78
|
return check.isinstance(self._outputs, tv.TypedValues)
|
|
43
79
|
|
|
44
|
-
def with_outputs(self, *outputs: OutputT_contra, override: bool = False) -> ta.Self:
|
|
45
|
-
return dc.replace(self, _outputs=self.outputs.update(*outputs, override=override))
|
|
46
|
-
|
|
47
80
|
@property
|
|
48
81
|
def _typed_values(self) -> tv.TypedValues[OutputT_contra]:
|
|
49
82
|
return check.isinstance(self._outputs, tv.TypedValues)
|
|
50
83
|
|
|
84
|
+
def with_outputs(
|
|
85
|
+
self,
|
|
86
|
+
*add: OutputT_contra,
|
|
87
|
+
discard: ta.Iterable[type] | None = None,
|
|
88
|
+
override: bool = False,
|
|
89
|
+
) -> ta.Self:
|
|
90
|
+
new = (old := self.outputs).update(
|
|
91
|
+
*add,
|
|
92
|
+
discard=discard,
|
|
93
|
+
override=override,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
if new is old:
|
|
97
|
+
return self
|
|
98
|
+
|
|
99
|
+
return confer_orig_class(self, dc.replace(self, _outputs=new))
|
|
100
|
+
|
|
101
|
+
#
|
|
102
|
+
|
|
103
|
+
_metadata: ta.Sequence[ResponseMetadatas] = dc.field(
|
|
104
|
+
default=(),
|
|
105
|
+
kw_only=True,
|
|
106
|
+
repr=False,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
MetadataContainerDataclass._configure_metadata_field(_metadata, ResponseMetadatas) # noqa
|
|
110
|
+
|
|
111
|
+
def with_metadata(
|
|
112
|
+
self,
|
|
113
|
+
*add: ResponseMetadatas,
|
|
114
|
+
discard: ta.Iterable[type] | None = None,
|
|
115
|
+
override: bool = False,
|
|
116
|
+
) -> ta.Self:
|
|
117
|
+
return confer_orig_class(self, super().with_metadata(*add, discard=discard, override=override))
|
|
118
|
+
|
|
119
|
+
#
|
|
120
|
+
|
|
51
121
|
def validate(self) -> ta.Self:
|
|
52
122
|
self._check_typed_values()
|
|
53
123
|
return self
|
|
@@ -11,4 +11,13 @@ from .responses import ResponseT_co
|
|
|
11
11
|
|
|
12
12
|
@ta.runtime_checkable
|
|
13
13
|
class Service(lang.ProtocolForbiddenAsBaseClass, ta.Protocol[RequestT_contra, ResponseT_co]):
|
|
14
|
+
"""
|
|
15
|
+
Universal service protocol, comprised of a single method `invoke`, accepting a request of type `RequestT_contra` and
|
|
16
|
+
returning a response of type `ResponseT_co`.
|
|
17
|
+
|
|
18
|
+
Refer to the package docstring for an explanation of its type var variance.
|
|
19
|
+
|
|
20
|
+
This class is final, but each instance's `__orig_class__` (if present) is significant.
|
|
21
|
+
"""
|
|
22
|
+
|
|
14
23
|
def invoke(self, request: RequestT_contra) -> ta.Awaitable[ResponseT_co]: ...
|
|
@@ -178,14 +178,14 @@ class ToolReflector:
|
|
|
178
178
|
for o in md.get_object_metadata(fn, type=_ToolSpecOverride):
|
|
179
179
|
ts_ovr.update({
|
|
180
180
|
k: v
|
|
181
|
-
for k, v in dc.
|
|
181
|
+
for k, v in dc.shallow_asdict(o).items()
|
|
182
182
|
if k != 'params'
|
|
183
183
|
and v is not None
|
|
184
184
|
})
|
|
185
185
|
for op in (o.params or []):
|
|
186
186
|
p_ovr_dct.setdefault(check.non_empty_str(op.name), {}).update({
|
|
187
187
|
k: v
|
|
188
|
-
for k, v in dc.
|
|
188
|
+
for k, v in dc.shallow_asdict(op).items()
|
|
189
189
|
if v is not None
|
|
190
190
|
})
|
|
191
191
|
|
|
@@ -286,7 +286,7 @@ class ToolReflector:
|
|
|
286
286
|
if md_tp is not None:
|
|
287
287
|
tp_kw.update({
|
|
288
288
|
k: v
|
|
289
|
-
for k, v in dc.
|
|
289
|
+
for k, v in dc.shallow_asdict(md_tp).items()
|
|
290
290
|
if v is not None
|
|
291
291
|
})
|
|
292
292
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TODO:
|
|
3
|
+
- final sream outputs
|
|
4
|
+
"""
|
|
5
|
+
import datetime
|
|
6
|
+
import typing as ta
|
|
7
|
+
|
|
8
|
+
from omlish import dataclasses as dc
|
|
9
|
+
from omlish import lang
|
|
10
|
+
|
|
11
|
+
from ..services.requests import Request
|
|
12
|
+
from ..services.responses import Response
|
|
13
|
+
from .services import WrappedOptionT
|
|
14
|
+
from .services import WrappedOutputT
|
|
15
|
+
from .services import WrappedRequest
|
|
16
|
+
from .services import WrappedRequestV
|
|
17
|
+
from .services import WrappedResponse
|
|
18
|
+
from .services import WrappedResponseV
|
|
19
|
+
from .services import WrappedService
|
|
20
|
+
from .services import WrapperService
|
|
21
|
+
from .stream import WrappedStreamOutputT
|
|
22
|
+
from .stream import WrappedStreamResponse
|
|
23
|
+
from .stream import WrappedStreamService
|
|
24
|
+
from .stream import WrapperStreamService
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@dc.dataclass(frozen=True, kw_only=True)
|
|
31
|
+
@dc.extra_class_params(default_repr_fn=lang.opt_or_just_repr)
|
|
32
|
+
class InstrumentedServiceEvent:
|
|
33
|
+
dt: datetime.datetime = dc.field(default_factory=lang.utcnow)
|
|
34
|
+
|
|
35
|
+
req: Request | None = None
|
|
36
|
+
|
|
37
|
+
resp: Response | None = None
|
|
38
|
+
exc: BaseException | None = None
|
|
39
|
+
|
|
40
|
+
stream_v: lang.Maybe[ta.Any] = lang.empty()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class InstrumentedServiceEventSink(ta.Protocol):
|
|
44
|
+
def __call__(self, ev: InstrumentedServiceEvent) -> ta.Awaitable[None]: ...
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class ListInstrumentedServiceEventSink:
|
|
48
|
+
def __init__(self, lst: list[InstrumentedServiceEvent] | None = None) -> None:
|
|
49
|
+
super().__init__()
|
|
50
|
+
|
|
51
|
+
if lst is None:
|
|
52
|
+
lst = []
|
|
53
|
+
self._lst = lst
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def events(self) -> ta.Sequence[InstrumentedServiceEvent]:
|
|
57
|
+
return self._lst
|
|
58
|
+
|
|
59
|
+
async def __call__(self, ev: InstrumentedServiceEvent) -> None:
|
|
60
|
+
self._lst.append(ev)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
##
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class InstrumentedService(
|
|
67
|
+
WrapperService[
|
|
68
|
+
WrappedRequestV,
|
|
69
|
+
WrappedOptionT,
|
|
70
|
+
WrappedResponseV,
|
|
71
|
+
WrappedOutputT,
|
|
72
|
+
],
|
|
73
|
+
):
|
|
74
|
+
def __init__(
|
|
75
|
+
self,
|
|
76
|
+
service: WrappedService,
|
|
77
|
+
sink: InstrumentedServiceEventSink | None = None,
|
|
78
|
+
) -> None:
|
|
79
|
+
super().__init__(service)
|
|
80
|
+
|
|
81
|
+
if sink is None:
|
|
82
|
+
sink = ListInstrumentedServiceEventSink()
|
|
83
|
+
self._sink = sink
|
|
84
|
+
|
|
85
|
+
async def invoke(self, request: WrappedRequest) -> WrappedResponse:
|
|
86
|
+
await self._sink(InstrumentedServiceEvent(req=request))
|
|
87
|
+
|
|
88
|
+
try:
|
|
89
|
+
resp = await self._service.invoke(request)
|
|
90
|
+
|
|
91
|
+
except Exception as e: # noqa
|
|
92
|
+
await self._sink(InstrumentedServiceEvent(req=request, exc=e))
|
|
93
|
+
|
|
94
|
+
raise
|
|
95
|
+
|
|
96
|
+
await self._sink(InstrumentedServiceEvent(req=request, resp=resp))
|
|
97
|
+
|
|
98
|
+
return resp
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
##
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class InstrumentedStreamService(
|
|
105
|
+
WrapperStreamService[
|
|
106
|
+
WrappedRequestV,
|
|
107
|
+
WrappedOptionT,
|
|
108
|
+
WrappedResponseV,
|
|
109
|
+
WrappedOutputT,
|
|
110
|
+
WrappedStreamOutputT,
|
|
111
|
+
],
|
|
112
|
+
):
|
|
113
|
+
def __init__(
|
|
114
|
+
self,
|
|
115
|
+
service: WrappedStreamService,
|
|
116
|
+
sink: InstrumentedServiceEventSink | None = None,
|
|
117
|
+
) -> None:
|
|
118
|
+
super().__init__(service)
|
|
119
|
+
|
|
120
|
+
if sink is None:
|
|
121
|
+
sink = ListInstrumentedServiceEventSink()
|
|
122
|
+
self._sink = sink
|
|
123
|
+
|
|
124
|
+
async def invoke(self, request: WrappedRequest) -> WrappedStreamResponse:
|
|
125
|
+
await self._sink(InstrumentedServiceEvent(req=request))
|
|
126
|
+
|
|
127
|
+
try:
|
|
128
|
+
resp = await self._service.invoke(request)
|
|
129
|
+
|
|
130
|
+
except Exception as e: # noqa
|
|
131
|
+
await self._sink(InstrumentedServiceEvent(req=request, exc=e))
|
|
132
|
+
|
|
133
|
+
raise
|
|
134
|
+
|
|
135
|
+
await self._sink(InstrumentedServiceEvent(req=request, resp=resp))
|
|
136
|
+
|
|
137
|
+
async def inner(sink): # noqa
|
|
138
|
+
async with resp.v as st:
|
|
139
|
+
async for v in st:
|
|
140
|
+
await self._sink(InstrumentedServiceEvent(req=request, resp=resp, stream_v=v))
|
|
141
|
+
|
|
142
|
+
await sink(v)
|
|
143
|
+
|
|
144
|
+
# return resp.with_v(inner())
|
|
145
|
+
|
|
146
|
+
raise NotImplementedError
|
|
@@ -10,6 +10,9 @@ from ..types import Option
|
|
|
10
10
|
from ..types import Output
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
P = ta.ParamSpec('P')
|
|
14
|
+
|
|
15
|
+
|
|
13
16
|
WrappedRequestV = ta.TypeVar('WrappedRequestV')
|
|
14
17
|
WrappedOptionT = ta.TypeVar('WrappedOptionT', bound=Option)
|
|
15
18
|
|
|
@@ -70,3 +73,26 @@ class MultiWrapperService(
|
|
|
70
73
|
super().__init__()
|
|
71
74
|
|
|
72
75
|
self._services = check.not_empty(services)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
##
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def wrap_service(
|
|
82
|
+
wrapped: WrappedService,
|
|
83
|
+
wrapper: ta.Callable[
|
|
84
|
+
ta.Concatenate[
|
|
85
|
+
WrappedService,
|
|
86
|
+
P,
|
|
87
|
+
],
|
|
88
|
+
WrapperService[
|
|
89
|
+
WrappedRequestV,
|
|
90
|
+
WrappedOptionT,
|
|
91
|
+
WrappedResponseV,
|
|
92
|
+
WrappedOutputT,
|
|
93
|
+
],
|
|
94
|
+
],
|
|
95
|
+
*args: P.args,
|
|
96
|
+
**kwargs: P.kwargs,
|
|
97
|
+
) -> WrappedService:
|
|
98
|
+
return ta.cast(ta.Any, wrapper(wrapped, *args, **kwargs))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ommlds
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev501
|
|
4
4
|
Summary: ommlds
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,9 +14,9 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.0.dev501
|
|
18
18
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: omdev==0.0.0.
|
|
19
|
+
Requires-Dist: omdev==0.0.0.dev501; extra == "all"
|
|
20
20
|
Requires-Dist: llama-cpp-python~=0.3; extra == "all"
|
|
21
21
|
Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "all"
|
|
22
22
|
Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "all"
|
|
@@ -38,7 +38,7 @@ Requires-Dist: mwparserfromhell~=0.7; extra == "all"
|
|
|
38
38
|
Requires-Dist: wikitextparser~=0.56; extra == "all"
|
|
39
39
|
Requires-Dist: lxml>=5.3; python_version < "3.13" and extra == "all"
|
|
40
40
|
Provides-Extra: omdev
|
|
41
|
-
Requires-Dist: omdev==0.0.0.
|
|
41
|
+
Requires-Dist: omdev==0.0.0.dev501; extra == "omdev"
|
|
42
42
|
Provides-Extra: backends
|
|
43
43
|
Requires-Dist: llama-cpp-python~=0.3; extra == "backends"
|
|
44
44
|
Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "backends"
|
|
@@ -210,7 +210,7 @@ ommlds/cli/sessions/chat/interfaces/bare/interactive.py,sha256=ZnYoePvXtUbhkDQ0j
|
|
|
210
210
|
ommlds/cli/sessions/chat/interfaces/bare/oneshot.py,sha256=b758OIa0gf9I_0UdxYJ6re-g8-8xndgr3R0OotUOsmc,387
|
|
211
211
|
ommlds/cli/sessions/chat/interfaces/bare/tools.py,sha256=_UsuoXLIvfpFP_We5DBBlhm6rwB3_cFA3lmFvpG9b-A,824
|
|
212
212
|
ommlds/cli/sessions/chat/interfaces/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
213
|
-
ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=
|
|
213
|
+
ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=wEkibpKaT00J5awBHCtEwAdM00jO5yWjkul_2I6b6y0,9124
|
|
214
214
|
ommlds/cli/sessions/chat/interfaces/textual/configs.py,sha256=HD8DlWXYJ1M94gr5TIT6oqsFCmOf5Gd6KkSBZUtySew,180
|
|
215
215
|
ommlds/cli/sessions/chat/interfaces/textual/facades.py,sha256=zXVG7DKVl-Xtdc893O_yktHCMvM0do6hLesMd8hbqeo,411
|
|
216
216
|
ommlds/cli/sessions/chat/interfaces/textual/inject.py,sha256=ZVG-q3w1xuaIIxm35Zs9R3NyyAdbQUpQD9QXQ-1PypE,2516
|
|
@@ -237,15 +237,15 @@ ommlds/cli/state/storage.py,sha256=Wr8DVuEGUxfFJn0tMWNTVdint6NBDdLKstNWSjx8sKw,3
|
|
|
237
237
|
ommlds/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
238
238
|
ommlds/datasets/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
239
239
|
ommlds/datasets/lib/movies.py,sha256=LmdfoXsZU9XMM_r-sxCLv_s06BFzwWO4xUj6sc9XVcI,1961
|
|
240
|
-
ommlds/minichain/__init__.py,sha256=
|
|
241
|
-
ommlds/minichain/_dataclasses.py,sha256=
|
|
240
|
+
ommlds/minichain/__init__.py,sha256=vJkLRL9sbR1fH5pPNUdKNWkZCtX5JbFHw98-5501zbc,13129
|
|
241
|
+
ommlds/minichain/_dataclasses.py,sha256=OIBmfIHAmXID0BO8WAxlPleWp3Lnm0-s5rse85VjZMM,940770
|
|
242
242
|
ommlds/minichain/_marshal.py,sha256=n9PGWrHhvAmGIc7KDOYt3IF9Z6G0ncXskyICTp3Ji6k,1923
|
|
243
243
|
ommlds/minichain/_typedvalues.py,sha256=NEQ7YCD7YtYJoEKHRwBksHFv-CULvyXniju_IeVfD5s,2349
|
|
244
244
|
ommlds/minichain/completion.py,sha256=lQ0LfCIYZsvDqteHhhDIv16D2_gn_xMfEL0ouywE5Yo,1033
|
|
245
245
|
ommlds/minichain/configs.py,sha256=WwrHxfkDAfo_RtuCqUgySthj-2W26lZbpuQoghUyGNw,167
|
|
246
246
|
ommlds/minichain/envs.py,sha256=vE2CSeT6KYxOpPY72VbFLzGUnBERYdhfiEUlvSRHkXE,225
|
|
247
247
|
ommlds/minichain/json.py,sha256=0_5rV5Zi2qPOvXi2CLAc5DF7FN3jK3ABbjoKdjtTuVo,360
|
|
248
|
-
ommlds/minichain/metadata.py,sha256
|
|
248
|
+
ommlds/minichain/metadata.py,sha256=NRrcfN2l4XArHXje3vA9AmkDceXsN-ymT8fbmbW0Ka8,2228
|
|
249
249
|
ommlds/minichain/resources.py,sha256=CcFIUrxPGuxUabG74zL0yByZsyGJISxLVK1nULSZPyo,5488
|
|
250
250
|
ommlds/minichain/search.py,sha256=YOMJKkTLLSfGKaxltk9bf5OdPq7MpCtLOC3NZ_4iq-E,1269
|
|
251
251
|
ommlds/minichain/standard.py,sha256=l7C6EXE4FgfJOphl0vHMwCq4FvMNViloz7pPfMsRnGU,2637
|
|
@@ -302,7 +302,7 @@ ommlds/minichain/backends/impls/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JC
|
|
|
302
302
|
ommlds/minichain/backends/impls/openai/chat.py,sha256=G1IK94PwB16rYCkRos9JEuiAu1GgCK4CnZFOIShhpig,2856
|
|
303
303
|
ommlds/minichain/backends/impls/openai/completion.py,sha256=4Mi4Zvrq5fCqUd0asL3WiCbCdmxOdo0NFkoZMfdsYXY,1939
|
|
304
304
|
ommlds/minichain/backends/impls/openai/embedding.py,sha256=BNtvKYLTsnQwQR9Tv3Fr8zCYN1kr1UNdJ15lcsjz6X0,1765
|
|
305
|
-
ommlds/minichain/backends/impls/openai/format.py,sha256=
|
|
305
|
+
ommlds/minichain/backends/impls/openai/format.py,sha256=yhQNvDWN9xWhb8e6M25JLiln-C5wYmaULH4Aib-DcbM,7459
|
|
306
306
|
ommlds/minichain/backends/impls/openai/names.py,sha256=M1spn4Yio6LEnKWEzPqXSrzJg3wsf2M1iZIYFAvxb80,1550
|
|
307
307
|
ommlds/minichain/backends/impls/openai/stream.py,sha256=bsZeGUepqOl9AcN44kWk03V6q-v1ewBCfZqb_MJEfxg,5454
|
|
308
308
|
ommlds/minichain/backends/impls/sentencepiece/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -324,7 +324,7 @@ ommlds/minichain/chat/_marshal.py,sha256=M3p093nxzxITbznc--P-tyCXuWDHrq4JFKTZAx6
|
|
|
324
324
|
ommlds/minichain/chat/content.py,sha256=NpxeYxP7WOWq94UR9AY0THVRIzWAcgP1w7r_srgntOk,1098
|
|
325
325
|
ommlds/minichain/chat/formats.py,sha256=LmlU7iu8PMJuroFTmyWfP4tXvLjj5VNxdAp1Us9MSAA,562
|
|
326
326
|
ommlds/minichain/chat/history.py,sha256=GI10mTCr8yv0mxJRK-YVtYqOuUjBvX5Su5FYYmLpPxU,1566
|
|
327
|
-
ommlds/minichain/chat/messages.py,sha256=
|
|
327
|
+
ommlds/minichain/chat/messages.py,sha256=WZN-kffu0BmoZgjXfRE4AAIS4J4xR9EpuAcWodnQhpg,3490
|
|
328
328
|
ommlds/minichain/chat/metadata.py,sha256=V8EUqUsiAITtIae8SC_4YyyBBvciG34jRuSylql4AvU,248
|
|
329
329
|
ommlds/minichain/chat/services.py,sha256=HzP35CLOz-vCptUUpuehI5yNJorTtY64gwrb6ZWNfwI,919
|
|
330
330
|
ommlds/minichain/chat/templating.py,sha256=0JwWOL6gsZmtmQddAIBOP2J_Rz47DAYSg_1f_C_roC0,3152
|
|
@@ -340,7 +340,7 @@ ommlds/minichain/chat/choices/stream/services.py,sha256=9Jc6Hf9Iphepzksll29Skv7I
|
|
|
340
340
|
ommlds/minichain/chat/choices/stream/types.py,sha256=V1QTk1XDcPyfpOpYuDH-cj6swhr4-urpUH9eFGZNfjY,808
|
|
341
341
|
ommlds/minichain/chat/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
342
342
|
ommlds/minichain/chat/stream/_marshal.py,sha256=eUdDrjPKYKwgaNrntZsuquB121pcDcW9lyNRy8bqVsw,382
|
|
343
|
-
ommlds/minichain/chat/stream/joining.py,sha256=
|
|
343
|
+
ommlds/minichain/chat/stream/joining.py,sha256=T_PXTJcCnkzD-HGvlmO-turkj_MWEzJMd7ni4W6cYsc,2992
|
|
344
344
|
ommlds/minichain/chat/stream/services.py,sha256=Ikaf8fofoPW6UM3MajAGgdc0U6VU8jhn0F6r-FX5XFc,1102
|
|
345
345
|
ommlds/minichain/chat/stream/types.py,sha256=AG5yMSRBo2ynoJTF0zBgYVjJbrafsptIo7Ex1QtBbdQ,1310
|
|
346
346
|
ommlds/minichain/chat/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -350,7 +350,7 @@ ommlds/minichain/chat/tools/parsing.py,sha256=p0WRBpFahTiv_3v5lxoO1qTmpAlv_BiaGg
|
|
|
350
350
|
ommlds/minichain/chat/tools/types.py,sha256=kjXK3Dwe-YpWmJCpgNAeoOw3ZjLKy3JhmbNxeoF6PRA,218
|
|
351
351
|
ommlds/minichain/chat/transforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
352
352
|
ommlds/minichain/chat/transforms/base.py,sha256=V22SasLdnzvmSO7C19gigi8LKeWVtBHmhaSJbkj6b4Y,2923
|
|
353
|
-
ommlds/minichain/chat/transforms/metadata.py,sha256=
|
|
353
|
+
ommlds/minichain/chat/transforms/metadata.py,sha256=Gw1cUIk2cVzHMyFPwboY_HWEuV_Ts3R4AVmOuyH120A,1563
|
|
354
354
|
ommlds/minichain/chat/transforms/services.py,sha256=wJw2eu-TU1sVXUYvg7rc7QNn93cCXhtEI_q-KZ5Dz0I,1016
|
|
355
355
|
ommlds/minichain/content/__init__.py,sha256=3ONXFV3bDiZDko9SI3Hij60bFiYLuR-Emfoh1K6AgXc,748
|
|
356
356
|
ommlds/minichain/content/_marshal.py,sha256=BUhSC3nAXtXJlRK1Btbx1iqoWxBi5fKiIHLuJ0tcfOY,9547
|
|
@@ -371,22 +371,22 @@ ommlds/minichain/content/raw.py,sha256=evB4Vv7Tk42tQrVf5-f78wdjeXEqwcdWEz0pt7z58
|
|
|
371
371
|
ommlds/minichain/content/recursive.py,sha256=httCiaHWyAitsHgneHhkTd1yuDT22x465c6Hk-7g9-E,196
|
|
372
372
|
ommlds/minichain/content/section.py,sha256=C1CWGgAtZf4p38fD5OJ0aFLt2ZLGQEp_oz-NHB14cx4,562
|
|
373
373
|
ommlds/minichain/content/sequence.py,sha256=xYcz7WK3wsfa431dgMPhp7z5z643W_-n0-Uv9HnMwr0,1004
|
|
374
|
-
ommlds/minichain/content/standard.py,sha256=
|
|
374
|
+
ommlds/minichain/content/standard.py,sha256=x52rI7lfz9MBtW-kmFepbVrv6G96vdX-CbQlb5wV3IM,851
|
|
375
375
|
ommlds/minichain/content/tag.py,sha256=CTRpoFosCo9swfaqlRxhT0Vzak6rZccdmyHHGj_5Krg,647
|
|
376
376
|
ommlds/minichain/content/templates.py,sha256=a94NUJD_s1C1byovWNNLpqlN_is2pmOE0TkSjT1HzH4,246
|
|
377
377
|
ommlds/minichain/content/text.py,sha256=GVdyc3ZWH2xvhtDlVeJK_vl9aqYKxb5BOil5J5KegqI,193
|
|
378
378
|
ommlds/minichain/content/visitors.py,sha256=EL7fFf5MG27NPswOybL0VoYOIk7wGVatuem_5Frk2ns,6844
|
|
379
379
|
ommlds/minichain/content/transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
380
|
-
ommlds/minichain/content/transform/json.py,sha256=
|
|
380
|
+
ommlds/minichain/content/transform/json.py,sha256=nYo9eiVHbEZEWoZXoiwlAZISZio86P2DIcJ3vAomoLw,1597
|
|
381
381
|
ommlds/minichain/content/transform/markdown.py,sha256=GG67VqYTgo5wcY11GSDq9ecHjXSubWbmwR2kXNW_z4o,127
|
|
382
382
|
ommlds/minichain/content/transform/materialize.py,sha256=IpI4fL5-RblKsbslxhs225pvBUBb4Rov4FzAj0TMrtA,1386
|
|
383
|
-
ommlds/minichain/content/transform/metadata.py,sha256=
|
|
383
|
+
ommlds/minichain/content/transform/metadata.py,sha256=868JCRjpZqLgEcy5OF5kO9N2fFRDGUqWD52l9gL0AVE,506
|
|
384
384
|
ommlds/minichain/content/transform/prepare.py,sha256=DzLdjn7c38ICDX1YP2Qdc6a87nCNDKgtLb2e11tlRfE,1603
|
|
385
385
|
ommlds/minichain/content/transform/recursive.py,sha256=0fPoX2iu-hF99pnB_GglpsbDiy86d-YppVHZAqNASY8,2737
|
|
386
|
-
ommlds/minichain/content/transform/standard.py,sha256=
|
|
386
|
+
ommlds/minichain/content/transform/standard.py,sha256=5xMEzsK3GXLpF-EPKEn6sdi3ZjlY2Lj0ZEqpJEsgQMw,1204
|
|
387
387
|
ommlds/minichain/content/transform/stringify.py,sha256=8MhrcfAmPwZyTf7Nubhe5luRXilI2xHN8JveVHJgHbM,1065
|
|
388
|
-
ommlds/minichain/content/transform/strings.py,sha256=
|
|
389
|
-
ommlds/minichain/content/transform/templates.py,sha256
|
|
388
|
+
ommlds/minichain/content/transform/strings.py,sha256=n5FWHEoBIUy60fLJWiXYyHhoW_0BkfWZvSbZV39VPoY,903
|
|
389
|
+
ommlds/minichain/content/transform/templates.py,sha256=hNP75MlFPPuGDFa_LjJ8aMyqRyHLCHM-ZoBlyvn9Rto,722
|
|
390
390
|
ommlds/minichain/docs/__init__.py,sha256=vNpT6sA5YDalFqsCFn0DjUvarxRtRl3w2V9liEU0CQk,364
|
|
391
391
|
ommlds/minichain/docs/docs.py,sha256=Ex7hiqaiYDB9hQhUjuzot8MFktl3LIGG41YBFaNoC80,1340
|
|
392
392
|
ommlds/minichain/docs/dtypes.py,sha256=BRZmLK9NfQwITBYmDOmRPDlFg1RP5BYWT0Xw04AinF8,499
|
|
@@ -427,14 +427,14 @@ ommlds/minichain/registries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
|
427
427
|
ommlds/minichain/registries/globals.py,sha256=M4-RTsjHfm7FRXqV-4ecWywEF1Di2lnTn3a7OJhtzkU,3224
|
|
428
428
|
ommlds/minichain/registries/manifests.py,sha256=GTWk4lssAk8mmG3ilGK2NvIU-rGS3otOZNuGQUDStMI,362
|
|
429
429
|
ommlds/minichain/registries/registry.py,sha256=wmk88NsM20Kl4PduX3Oy5roHPfNKtXENCITTc7M8gAY,4626
|
|
430
|
-
ommlds/minichain/services/__init__.py,sha256=
|
|
431
|
-
ommlds/minichain/services/_marshal.py,sha256=
|
|
432
|
-
ommlds/minichain/services/_origclasses.py,sha256=
|
|
433
|
-
ommlds/minichain/services/_typedvalues.py,sha256=
|
|
430
|
+
ommlds/minichain/services/__init__.py,sha256=E31Ly3v-N-cTRNougDBF9BSZyYQvdm-W87ZW4LL5e3Y,9308
|
|
431
|
+
ommlds/minichain/services/_marshal.py,sha256=zIp4WnbGh-e2DS2lN2qi_Y3XO-MJN8sVYGB4HAPOOIU,5321
|
|
432
|
+
ommlds/minichain/services/_origclasses.py,sha256=cUao3vxNzArsHH3RAC3PKHLBWN66oQDvYyGT_agYZ-g,1625
|
|
433
|
+
ommlds/minichain/services/_typedvalues.py,sha256=j3Rw6cZ-xfhzSTOPDe4OLsvzsADuy9r0lVmW9_egvjM,3040
|
|
434
434
|
ommlds/minichain/services/facades.py,sha256=zoTY5GT7yIrFUY3fX7a-sSOvkk1_4GK5FlJJmRL_ems,1734
|
|
435
|
-
ommlds/minichain/services/requests.py,sha256=
|
|
436
|
-
ommlds/minichain/services/responses.py,sha256=
|
|
437
|
-
ommlds/minichain/services/services.py,sha256=
|
|
435
|
+
ommlds/minichain/services/requests.py,sha256=BZgn91yM2U43S4ihVKMYGBxFEGLOqRfuH8rt6IwyRIk,3422
|
|
436
|
+
ommlds/minichain/services/responses.py,sha256=qJ3d8FM4hB1UuAsMPg9j8guVZJvhc10L0hbMWxQnrGU,3381
|
|
437
|
+
ommlds/minichain/services/services.py,sha256=8axlOnQvI83icwRK0XLha0svSQrLXC1_B6MZXN_mzUc,685
|
|
438
438
|
ommlds/minichain/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
439
439
|
ommlds/minichain/stream/services.py,sha256=YXfEj3ZXKZ3Svkig6f3hOReHgZnLY2tDn2bgB0RIoRI,5566
|
|
440
440
|
ommlds/minichain/stream/wrap.py,sha256=nQC0aCi49I18nF0Yx8qiiLkhIAECV6s6o4pvOy5Kx98,2041
|
|
@@ -458,7 +458,7 @@ ommlds/minichain/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
458
458
|
ommlds/minichain/tools/_marshal.py,sha256=9np2tuzGfRwL5BMCd6QYChzimtTBUfHxT4IoEA6v3Eg,410
|
|
459
459
|
ommlds/minichain/tools/fns.py,sha256=zNDLV2ZlMk9no0YJpTXlZ6sgYCpD6oGcUpsgc65tQhQ,3932
|
|
460
460
|
ommlds/minichain/tools/jsonschema.py,sha256=gipEyit6OmVAa02Azhk8xbFHlolWXd0Jp5x_fvAzdHg,4253
|
|
461
|
-
ommlds/minichain/tools/reflect.py,sha256=
|
|
461
|
+
ommlds/minichain/tools/reflect.py,sha256=jy9xxcewxeWJ9aRdPg9qhVmgZ7K3a2j2p3xCBewCKfA,8723
|
|
462
462
|
ommlds/minichain/tools/types.py,sha256=77O0ufX6YSdijYXSSxHhamBC9MEIdcL2Cq3ihLJOPzI,4769
|
|
463
463
|
ommlds/minichain/tools/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
464
464
|
ommlds/minichain/tools/execution/catalog.py,sha256=4BjQFdDnpO7pJ74VTl0Pv7qDjFuz2maZvPUi5KmHfFg,2004
|
|
@@ -477,8 +477,9 @@ ommlds/minichain/vectors/stores.py,sha256=etbLCS0RXAEmqcCdqiys8twa8R7Y_DcjQ_VqnE
|
|
|
477
477
|
ommlds/minichain/vectors/types.py,sha256=xSAK1Xfkubqf95QgJhSHrwBu_C5quuye3wZAASmxJkM,3473
|
|
478
478
|
ommlds/minichain/wrappers/__init__.py,sha256=kXyc5BHVI35GXGmIf0zkKfCVIqD8q9PFENblye5qCqc,110
|
|
479
479
|
ommlds/minichain/wrappers/firstinwins.py,sha256=fqTq7siw28IsjGar8tXlxBsMJuCbogiv7nBCPcxhHe4,3464
|
|
480
|
+
ommlds/minichain/wrappers/instrument.py,sha256=I51u7k6oYG5PX2r3jGRHDl_IqbAEFUCZ_oWwlIiNbLY,3730
|
|
480
481
|
ommlds/minichain/wrappers/retry.py,sha256=1A4TTD8RXUpCDjo7a0T1qeB5n8i7bsw473bmPCOS00c,3444
|
|
481
|
-
ommlds/minichain/wrappers/services.py,sha256=
|
|
482
|
+
ommlds/minichain/wrappers/services.py,sha256=6AAwgCtzHzmJZWteKJJgdfSQtYuDBxuRFoT6NttV5RY,1912
|
|
482
483
|
ommlds/minichain/wrappers/stream.py,sha256=-H0O_Eyzsabk--mtIzobWdMdj3WnqonEZ9-k9_XdWiI,1223
|
|
483
484
|
ommlds/nanochat/LICENSE,sha256=QrsJ8zmor4uQ07SWm29uS6Sv87XGFBA7Ax_M33HI93I,1072
|
|
484
485
|
ommlds/nanochat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -511,9 +512,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
511
512
|
ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
|
|
512
513
|
ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
|
|
513
514
|
ommlds/wiki/utils/xml.py,sha256=sNJNkZ9rT8B-kJMO6bRz8J1USy4fyPx0m2PwTX7vxYY,3846
|
|
514
|
-
ommlds-0.0.0.
|
|
515
|
-
ommlds-0.0.0.
|
|
516
|
-
ommlds-0.0.0.
|
|
517
|
-
ommlds-0.0.0.
|
|
518
|
-
ommlds-0.0.0.
|
|
519
|
-
ommlds-0.0.0.
|
|
515
|
+
ommlds-0.0.0.dev501.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
516
|
+
ommlds-0.0.0.dev501.dist-info/METADATA,sha256=5bTbYGDC1rBgqoIHEZ88BxuMkXbxNQXxU4MzM3UjvLg,3495
|
|
517
|
+
ommlds-0.0.0.dev501.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
518
|
+
ommlds-0.0.0.dev501.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
|
|
519
|
+
ommlds-0.0.0.dev501.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
|
|
520
|
+
ommlds-0.0.0.dev501.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|