lionagi 0.15.14__py3-none-any.whl → 0.16.0__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.
- lionagi/libs/validate/fuzzy_match_keys.py +5 -182
- lionagi/libs/validate/string_similarity.py +6 -331
- lionagi/ln/__init__.py +56 -66
- lionagi/ln/_async_call.py +13 -10
- lionagi/ln/_hash.py +33 -8
- lionagi/ln/_list_call.py +2 -35
- lionagi/ln/_to_list.py +51 -28
- lionagi/ln/_utils.py +156 -0
- lionagi/ln/concurrency/__init__.py +39 -31
- lionagi/ln/concurrency/_compat.py +65 -0
- lionagi/ln/concurrency/cancel.py +92 -109
- lionagi/ln/concurrency/errors.py +17 -17
- lionagi/ln/concurrency/patterns.py +249 -206
- lionagi/ln/concurrency/primitives.py +257 -216
- lionagi/ln/concurrency/resource_tracker.py +42 -155
- lionagi/ln/concurrency/task.py +55 -73
- lionagi/ln/concurrency/throttle.py +3 -0
- lionagi/ln/concurrency/utils.py +1 -0
- lionagi/ln/fuzzy/__init__.py +15 -0
- lionagi/ln/{_extract_json.py → fuzzy/_extract_json.py} +22 -9
- lionagi/ln/{_fuzzy_json.py → fuzzy/_fuzzy_json.py} +14 -8
- lionagi/ln/fuzzy/_fuzzy_match.py +172 -0
- lionagi/ln/fuzzy/_fuzzy_validate.py +46 -0
- lionagi/ln/fuzzy/_string_similarity.py +332 -0
- lionagi/ln/{_models.py → types.py} +153 -4
- lionagi/operations/flow.py +2 -1
- lionagi/operations/operate/operate.py +26 -16
- lionagi/protocols/contracts.py +46 -0
- lionagi/protocols/generic/event.py +6 -6
- lionagi/protocols/generic/processor.py +9 -5
- lionagi/protocols/ids.py +82 -0
- lionagi/protocols/types.py +10 -12
- lionagi/utils.py +34 -64
- lionagi/version.py +1 -1
- {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/METADATA +4 -2
- {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/RECORD +38 -31
- lionagi/ln/_types.py +0 -146
- {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/WHEEL +0 -0
- {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/licenses/LICENSE +0 -0
lionagi/operations/flow.py
CHANGED
@@ -12,7 +12,8 @@ using Events for synchronization and CapacityLimiter for concurrency control.
|
|
12
12
|
import os
|
13
13
|
from typing import Any
|
14
14
|
|
15
|
-
from lionagi.ln import AlcallParams
|
15
|
+
from lionagi.ln._async_call import AlcallParams
|
16
|
+
from lionagi.ln.concurrency import CapacityLimiter, ConcurrencyEvent
|
16
17
|
from lionagi.operations.node import Operation
|
17
18
|
from lionagi.protocols.types import EventStatus, Graph
|
18
19
|
from lionagi.session.branch import Branch
|
@@ -23,6 +23,29 @@ if TYPE_CHECKING:
|
|
23
23
|
from lionagi.session.branch import Branch
|
24
24
|
|
25
25
|
|
26
|
+
def _handle_response_format_kwargs(
|
27
|
+
operative_model: type[BaseModel] = None,
|
28
|
+
request_model: type[BaseModel] = None,
|
29
|
+
response_format: type[BaseModel] = None,
|
30
|
+
):
|
31
|
+
if operative_model:
|
32
|
+
logging.warning(
|
33
|
+
"`operative_model` is deprecated. Use `response_format` instead."
|
34
|
+
)
|
35
|
+
if (
|
36
|
+
(operative_model and response_format)
|
37
|
+
or (operative_model and request_model)
|
38
|
+
or (response_format and request_model)
|
39
|
+
):
|
40
|
+
raise ValueError(
|
41
|
+
"Cannot specify both `operative_model` and `response_format` (or `request_model`) "
|
42
|
+
"as they are aliases of each other."
|
43
|
+
)
|
44
|
+
|
45
|
+
# Use the final chosen format
|
46
|
+
return response_format or operative_model or request_model
|
47
|
+
|
48
|
+
|
26
49
|
async def operate(
|
27
50
|
branch: "Branch",
|
28
51
|
*,
|
@@ -66,22 +89,9 @@ async def operate(
|
|
66
89
|
include_token_usage_to_model: bool = False,
|
67
90
|
**kwargs,
|
68
91
|
) -> list | BaseModel | None | dict | str:
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
)
|
73
|
-
if (
|
74
|
-
(operative_model and response_format)
|
75
|
-
or (operative_model and request_model)
|
76
|
-
or (response_format and request_model)
|
77
|
-
):
|
78
|
-
raise ValueError(
|
79
|
-
"Cannot specify both `operative_model` and `response_format` (or `request_model`) "
|
80
|
-
"as they are aliases of each other."
|
81
|
-
)
|
82
|
-
|
83
|
-
# Use the final chosen format
|
84
|
-
response_format = response_format or operative_model or request_model
|
92
|
+
response_format = _handle_response_format_kwargs(
|
93
|
+
operative_model, request_model, response_format
|
94
|
+
)
|
85
95
|
|
86
96
|
# Decide which chat model to use
|
87
97
|
chat_model = chat_model or imodel or branch.chat_model
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
"""V1 Observable Protocol for gradual evolution.
|
6
|
+
|
7
|
+
This module provides the runtime-checkable ObservableProto for V1 components
|
8
|
+
while maintaining compatibility with V0's nominal Observable ABC.
|
9
|
+
"""
|
10
|
+
|
11
|
+
from __future__ import annotations
|
12
|
+
|
13
|
+
from typing import Protocol, runtime_checkable
|
14
|
+
|
15
|
+
__all__ = (
|
16
|
+
"ObservableProto",
|
17
|
+
"Observable",
|
18
|
+
"LegacyObservable",
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
@runtime_checkable
|
23
|
+
class ObservableProto(Protocol):
|
24
|
+
"""Structural Observable Protocol for V1 components.
|
25
|
+
|
26
|
+
This protocol defines the minimal contract for observable objects:
|
27
|
+
they must have an 'id' property. The return type is permissive (Any)
|
28
|
+
to maintain compatibility with V0's IDType wrapper while enabling
|
29
|
+
V1 evolution.
|
30
|
+
|
31
|
+
All V0 Element subclasses automatically satisfy this protocol without
|
32
|
+
any code changes, enabling zero-risk gradual migration.
|
33
|
+
"""
|
34
|
+
|
35
|
+
@property
|
36
|
+
def id(self) -> object:
|
37
|
+
"""Unique identifier. Accepts IDType, UUID, or string."""
|
38
|
+
...
|
39
|
+
|
40
|
+
|
41
|
+
# Convenience alias for V1 consumers (keeps import names short)
|
42
|
+
Observable = ObservableProto
|
43
|
+
|
44
|
+
# Keep legacy nominal ABC for places that need issubclass checks (e.g., Pile)
|
45
|
+
# Do NOT remove – Pile and others rely on issubclass(..., Observable) nominal checks.
|
46
|
+
from ._concepts import Observable as LegacyObservable
|
@@ -5,13 +5,13 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
7
|
import contextlib
|
8
|
-
from enum import Enum
|
8
|
+
from enum import Enum as _Enum
|
9
9
|
from typing import Any
|
10
10
|
|
11
11
|
from pydantic import Field, field_serializer
|
12
12
|
|
13
13
|
from lionagi import ln
|
14
|
-
from lionagi.utils import to_dict
|
14
|
+
from lionagi.utils import Unset, to_dict
|
15
15
|
|
16
16
|
from .element import Element
|
17
17
|
|
@@ -22,10 +22,10 @@ __all__ = (
|
|
22
22
|
)
|
23
23
|
|
24
24
|
|
25
|
-
_SIMPLE_TYPE = (str, bytes, bytearray, int, float, type(None),
|
25
|
+
_SIMPLE_TYPE = (str, bytes, bytearray, int, float, type(None), _Enum)
|
26
26
|
|
27
27
|
|
28
|
-
class EventStatus(str, ln.Enum):
|
28
|
+
class EventStatus(str, ln.types.Enum):
|
29
29
|
"""Status states for tracking action execution progress.
|
30
30
|
|
31
31
|
Attributes:
|
@@ -96,7 +96,7 @@ class Execution:
|
|
96
96
|
Returns:
|
97
97
|
dict: A dictionary representation of the execution state.
|
98
98
|
"""
|
99
|
-
res_ =
|
99
|
+
res_ = Unset
|
100
100
|
json_serializable = True
|
101
101
|
|
102
102
|
if not isinstance(self.response, _SIMPLE_TYPE):
|
@@ -119,7 +119,7 @@ class Execution:
|
|
119
119
|
res_ = d_
|
120
120
|
json_serializable = True
|
121
121
|
|
122
|
-
if res_ is
|
122
|
+
if res_ is Unset and not json_serializable:
|
123
123
|
res_ = "<unserializable>"
|
124
124
|
|
125
125
|
return {
|
@@ -5,7 +5,11 @@
|
|
5
5
|
import asyncio
|
6
6
|
from typing import Any, ClassVar
|
7
7
|
|
8
|
-
from lionagi.ln import
|
8
|
+
from lionagi.ln.concurrency import (
|
9
|
+
ConcurrencyEvent,
|
10
|
+
Semaphore,
|
11
|
+
create_task_group,
|
12
|
+
)
|
9
13
|
|
10
14
|
from .._concepts import Observer
|
11
15
|
from .element import ID
|
@@ -166,9 +170,9 @@ class Processor(Observer):
|
|
166
170
|
async with self._concurrency_sem:
|
167
171
|
await consume_stream(event)
|
168
172
|
|
169
|
-
|
173
|
+
tg.start_soon(stream_with_sem, next_event)
|
170
174
|
else:
|
171
|
-
|
175
|
+
tg.start_soon(consume_stream, next_event)
|
172
176
|
else:
|
173
177
|
# For non-streaming, just invoke
|
174
178
|
if self._concurrency_sem:
|
@@ -177,9 +181,9 @@ class Processor(Observer):
|
|
177
181
|
async with self._concurrency_sem:
|
178
182
|
await event.invoke()
|
179
183
|
|
180
|
-
|
184
|
+
tg.start_soon(invoke_with_sem, next_event)
|
181
185
|
else:
|
182
|
-
|
186
|
+
tg.start_soon(next_event.invoke)
|
183
187
|
events_processed += 1
|
184
188
|
|
185
189
|
prev_event = next_event
|
lionagi/protocols/ids.py
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
# Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
"""ID bridge utilities for V0/V1 compatibility.
|
6
|
+
|
7
|
+
This module provides utilities to convert between V0's IDType and V1's
|
8
|
+
canonical UUID representation, enabling seamless interoperability during
|
9
|
+
the gradual evolution process.
|
10
|
+
"""
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
from typing import Any
|
15
|
+
from uuid import UUID
|
16
|
+
|
17
|
+
from .generic.element import Element, IDType
|
18
|
+
|
19
|
+
__all__ = (
|
20
|
+
"to_uuid",
|
21
|
+
"canonical_id",
|
22
|
+
)
|
23
|
+
|
24
|
+
|
25
|
+
def to_uuid(value: Any) -> UUID:
|
26
|
+
"""Convert ID-like values (IDType | UUID | str | Element) to UUID (v4).
|
27
|
+
|
28
|
+
Optimized version that avoids string conversion when possible by directly
|
29
|
+
accessing IDType's internal UUID. Falls back to V0's IDType.validate()
|
30
|
+
for validation semantics only when necessary.
|
31
|
+
|
32
|
+
Args:
|
33
|
+
value: An ID-like value to convert (IDType, UUID, str, or Element)
|
34
|
+
|
35
|
+
Returns:
|
36
|
+
UUID: A validated UUIDv4
|
37
|
+
|
38
|
+
Raises:
|
39
|
+
IDError: If the value cannot be converted to a valid UUIDv4
|
40
|
+
|
41
|
+
Examples:
|
42
|
+
>>> element = Element()
|
43
|
+
>>> uuid_val = to_uuid(element)
|
44
|
+
>>> isinstance(uuid_val, UUID)
|
45
|
+
True
|
46
|
+
>>> to_uuid("550e8400-e29b-41d4-a716-446655440000")
|
47
|
+
UUID('550e8400-e29b-41d4-a716-446655440000')
|
48
|
+
"""
|
49
|
+
if isinstance(value, Element):
|
50
|
+
return value.id._id
|
51
|
+
if isinstance(value, UUID):
|
52
|
+
return value
|
53
|
+
if hasattr(value, "_id") and isinstance(value._id, UUID):
|
54
|
+
return value._id
|
55
|
+
# Fallback: Validate then access ._id directly (no string conversion)
|
56
|
+
validated_id = IDType.validate(value)
|
57
|
+
return validated_id._id
|
58
|
+
|
59
|
+
|
60
|
+
def canonical_id(obj: Any) -> UUID:
|
61
|
+
"""Accept an Observable-like object or raw ID and return canonical UUID.
|
62
|
+
|
63
|
+
Safe to use across V0/V1 without changing class definitions. Prefers
|
64
|
+
attribute access (.id) but falls back to treating the object as a raw ID.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
obj: An Observable object with .id attribute, or a raw ID value
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
UUID: The canonical UUID representation
|
71
|
+
|
72
|
+
Examples:
|
73
|
+
>>> element = Element()
|
74
|
+
>>> uuid_val = canonical_id(element)
|
75
|
+
>>> isinstance(uuid_val, UUID)
|
76
|
+
True
|
77
|
+
>>> canonical_id("550e8400-e29b-41d4-a716-446655440000")
|
78
|
+
UUID('550e8400-e29b-41d4-a716-446655440000')
|
79
|
+
"""
|
80
|
+
# Prefer attribute access; fall back to treating obj as a raw id
|
81
|
+
id_like = getattr(obj, "id", obj)
|
82
|
+
return to_uuid(id_like)
|
lionagi/protocols/types.py
CHANGED
@@ -2,18 +2,11 @@
|
|
2
2
|
#
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
4
4
|
|
5
|
-
from ._concepts import
|
6
|
-
|
7
|
-
|
8
|
-
Condition,
|
9
|
-
Manager,
|
10
|
-
Observable,
|
11
|
-
Observer,
|
12
|
-
Ordering,
|
13
|
-
Relational,
|
14
|
-
Sendable,
|
15
|
-
)
|
5
|
+
from ._concepts import Collective, Communicatable, Condition, Manager
|
6
|
+
from ._concepts import Observable as LegacyObservable
|
7
|
+
from ._concepts import Observer, Ordering, Relational, Sendable
|
16
8
|
from .action.manager import ActionManager, FunctionCalling, Tool, ToolRef
|
9
|
+
from .contracts import Observable, ObservableProto
|
17
10
|
from .forms.flow import FlowDefinition, FlowStep
|
18
11
|
from .forms.report import BaseForm, Form, Report
|
19
12
|
from .generic.element import ID, Element, IDError, IDType, validate_order
|
@@ -30,6 +23,7 @@ from .generic.processor import Executor, Processor
|
|
30
23
|
from .generic.progression import Progression, prog
|
31
24
|
from .graph.edge import EdgeCondition
|
32
25
|
from .graph.graph import Edge, Graph, Node
|
26
|
+
from .ids import canonical_id, to_uuid
|
33
27
|
from .mail.exchange import Exchange, Mail, Mailbox, Package, PackageCategory
|
34
28
|
from .mail.manager import MailManager
|
35
29
|
from .messages.base import (
|
@@ -56,11 +50,15 @@ __all__ = (
|
|
56
50
|
"Communicatable",
|
57
51
|
"Condition",
|
58
52
|
"Manager",
|
59
|
-
"Observable",
|
53
|
+
"Observable", # V1 Protocol (preferred)
|
54
|
+
"ObservableProto", # Explicit V1 Protocol name
|
55
|
+
"LegacyObservable", # V0 ABC (deprecated)
|
60
56
|
"Observer",
|
61
57
|
"Ordering",
|
62
58
|
"Relational",
|
63
59
|
"Sendable",
|
60
|
+
"canonical_id", # V0/V1 bridge utility
|
61
|
+
"to_uuid", # ID conversion utility
|
64
62
|
"ID",
|
65
63
|
"Element",
|
66
64
|
"IDError",
|
lionagi/utils.py
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
import contextlib
|
6
6
|
import copy as _copy
|
7
7
|
import dataclasses
|
8
|
-
import importlib.util
|
9
8
|
import json
|
10
9
|
import logging
|
11
10
|
import types
|
@@ -37,11 +36,29 @@ from pydantic_core import PydanticUndefinedType
|
|
37
36
|
from typing_extensions import deprecated
|
38
37
|
|
39
38
|
from .libs.validate.xml_parser import xml_to_dict
|
40
|
-
from .ln import
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
from .ln import (
|
40
|
+
extract_json,
|
41
|
+
fuzzy_json,
|
42
|
+
get_bins,
|
43
|
+
hash_dict,
|
44
|
+
import_module,
|
45
|
+
is_coro_func,
|
46
|
+
is_import_installed,
|
47
|
+
to_list,
|
48
|
+
)
|
49
|
+
from .ln.types import (
|
50
|
+
DataClass,
|
51
|
+
Enum,
|
52
|
+
KeysDict,
|
53
|
+
MaybeSentinel,
|
54
|
+
MaybeUndefined,
|
55
|
+
MaybeUnset,
|
56
|
+
Params,
|
57
|
+
Undefined,
|
58
|
+
UndefinedType,
|
59
|
+
Unset,
|
60
|
+
UnsetType,
|
61
|
+
)
|
45
62
|
from .settings import Settings
|
46
63
|
|
47
64
|
R = TypeVar("R")
|
@@ -52,6 +69,9 @@ logger = logging.getLogger(__name__)
|
|
52
69
|
|
53
70
|
UNDEFINED = Undefined
|
54
71
|
|
72
|
+
to_json = extract_json
|
73
|
+
fuzzy_parse_json = fuzzy_json
|
74
|
+
|
55
75
|
__all__ = (
|
56
76
|
"UndefinedType",
|
57
77
|
"KeysDict",
|
@@ -76,7 +96,6 @@ __all__ = (
|
|
76
96
|
"get_bins",
|
77
97
|
"EventStatus",
|
78
98
|
"logger",
|
79
|
-
"throttle",
|
80
99
|
"max_concurrent",
|
81
100
|
"force_async",
|
82
101
|
"breakdown_pydantic_annotation",
|
@@ -87,6 +106,14 @@ __all__ = (
|
|
87
106
|
"is_union_type",
|
88
107
|
"union_members",
|
89
108
|
"to_json",
|
109
|
+
"Unset",
|
110
|
+
"UnsetType",
|
111
|
+
"Undefined",
|
112
|
+
"MaybeSentinel",
|
113
|
+
"MaybeUndefined",
|
114
|
+
"MaybeUnset",
|
115
|
+
"is_import_installed",
|
116
|
+
"import_module",
|
90
117
|
)
|
91
118
|
|
92
119
|
|
@@ -888,60 +915,3 @@ def _is_pydantic_model(x: Any) -> bool:
|
|
888
915
|
return isclass(x) and issubclass(x, BaseModel)
|
889
916
|
except TypeError:
|
890
917
|
return False
|
891
|
-
|
892
|
-
|
893
|
-
def import_module(
|
894
|
-
package_name: str,
|
895
|
-
module_name: str = None,
|
896
|
-
import_name: str | list = None,
|
897
|
-
) -> Any:
|
898
|
-
"""
|
899
|
-
Import a module by its path.
|
900
|
-
|
901
|
-
Args:
|
902
|
-
module_path: The path of the module to import.
|
903
|
-
|
904
|
-
Returns:
|
905
|
-
The imported module.
|
906
|
-
|
907
|
-
Raises:
|
908
|
-
ImportError: If the module cannot be imported.
|
909
|
-
"""
|
910
|
-
try:
|
911
|
-
full_import_path = (
|
912
|
-
f"{package_name}.{module_name}" if module_name else package_name
|
913
|
-
)
|
914
|
-
|
915
|
-
if import_name:
|
916
|
-
import_name = (
|
917
|
-
[import_name]
|
918
|
-
if not isinstance(import_name, list)
|
919
|
-
else import_name
|
920
|
-
)
|
921
|
-
a = __import__(
|
922
|
-
full_import_path,
|
923
|
-
fromlist=import_name,
|
924
|
-
)
|
925
|
-
if len(import_name) == 1:
|
926
|
-
return getattr(a, import_name[0])
|
927
|
-
return [getattr(a, name) for name in import_name]
|
928
|
-
else:
|
929
|
-
return __import__(full_import_path)
|
930
|
-
|
931
|
-
except ImportError as e:
|
932
|
-
raise ImportError(
|
933
|
-
f"Failed to import module {full_import_path}: {e}"
|
934
|
-
) from e
|
935
|
-
|
936
|
-
|
937
|
-
def is_import_installed(package_name: str) -> bool:
|
938
|
-
"""
|
939
|
-
Check if a package is installed.
|
940
|
-
|
941
|
-
Args:
|
942
|
-
package_name: The name of the package to check.
|
943
|
-
|
944
|
-
Returns:
|
945
|
-
bool: True if the package is installed, False otherwise.
|
946
|
-
"""
|
947
|
-
return importlib.util.find_spec(package_name) is not None
|
lionagi/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.
|
1
|
+
__version__ = "0.16.0"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lionagi
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.16.0
|
4
4
|
Summary: An Intelligence Operating System.
|
5
5
|
Author-email: HaiyangLi <quantocean.li@gmail.com>
|
6
6
|
License: Apache License
|
@@ -223,12 +223,14 @@ Requires-Dist: aiocache>=0.12.0
|
|
223
223
|
Requires-Dist: aiohttp>=3.11.0
|
224
224
|
Requires-Dist: anyio>=4.7.0
|
225
225
|
Requires-Dist: backoff>=2.0.0
|
226
|
+
Requires-Dist: exceptiongroup>=1.3.0
|
226
227
|
Requires-Dist: jinja2>=3.0.0
|
227
228
|
Requires-Dist: json-repair>=0.40.0
|
229
|
+
Requires-Dist: msgspec>=0.18.0
|
228
230
|
Requires-Dist: pillow>=10.0.0
|
229
231
|
Requires-Dist: psutil>=6.0.0
|
230
232
|
Requires-Dist: pydantic-settings>=2.8.0
|
231
|
-
Requires-Dist: pydapter[pandas]>=1.0.
|
233
|
+
Requires-Dist: pydapter[pandas]>=1.0.5
|
232
234
|
Requires-Dist: python-dotenv>=1.1.0
|
233
235
|
Requires-Dist: tiktoken>=0.9.0
|
234
236
|
Requires-Dist: toml>=0.8.0
|
@@ -5,8 +5,8 @@ lionagi/_types.py,sha256=j8XwSGeGrYwfmSJ8o-80bsfoalLWJgQH41ZkVevc4wk,75
|
|
5
5
|
lionagi/config.py,sha256=D13nnjpgJKz_LlQrzaKKVefm4hqesz_dP9ROjWmGuLE,3811
|
6
6
|
lionagi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
lionagi/settings.py,sha256=HDuKCEJCpc4HudKodBnhoQUGuTGhRHdlIFhbtf3VBtY,1633
|
8
|
-
lionagi/utils.py,sha256=
|
9
|
-
lionagi/version.py,sha256=
|
8
|
+
lionagi/utils.py,sha256=cFUhOL2clDwsRnBjNdysnK-_0Z9SmejPIkg6_i2jLXE,27512
|
9
|
+
lionagi/version.py,sha256=3Msc5baw88UJubVj5AVFB8tExkT2OFIsNWe2leaoHhc,23
|
10
10
|
lionagi/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
lionagi/adapters/_utils.py,sha256=n4DS27CZfC-0O_UFaYtlUdjiMx9IeYsGpP7MVaFO5ZA,885
|
12
12
|
lionagi/adapters/async_postgres_adapter.py,sha256=OEJd9ie8prxRQK2_-W9qmdI3Sl6Q7xxRs7Vey16G3pQ,3172
|
@@ -75,31 +75,36 @@ lionagi/libs/unstructured/pdf_to_image.py,sha256=lJ2CVxOYh61-3-55nusHXMOGqtEyLXs
|
|
75
75
|
lionagi/libs/unstructured/read_image_to_base64.py,sha256=EJXWBJxCTa9vHBIFPRqQj0jeFXyDv1cs2oPBrWt-waQ,897
|
76
76
|
lionagi/libs/validate/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
77
77
|
lionagi/libs/validate/common_field_validators.py,sha256=1BHznXnJYcLQrHqvHKUnP6aqCptuQ0qN7KJRCExcJBU,4778
|
78
|
-
lionagi/libs/validate/fuzzy_match_keys.py,sha256=
|
78
|
+
lionagi/libs/validate/fuzzy_match_keys.py,sha256=Nec5W1CVdmUgzcyDHcHiaELY6tFsicjbVsMI5dsIilk,190
|
79
79
|
lionagi/libs/validate/fuzzy_validate_mapping.py,sha256=MZpRop3whCQQtgYwJgg66nbN0KxNuKXqulaAgA0Y1_g,4935
|
80
|
-
lionagi/libs/validate/string_similarity.py,sha256=
|
80
|
+
lionagi/libs/validate/string_similarity.py,sha256=kuOQFNnI773bV8KKj_PUYxx8vLRdWay8PhuvkOWsU9E,186
|
81
81
|
lionagi/libs/validate/to_num.py,sha256=ZRHDjpTCykPfDIZZa4rZKNaR_8ZHbPDFlw9rc02DrII,11610
|
82
82
|
lionagi/libs/validate/validate_boolean.py,sha256=bjiX_WZ3Bg8XcqoWLzE1G9BpO0AisrlZUxrpye_mlGk,3614
|
83
83
|
lionagi/libs/validate/xml_parser.py,sha256=PHBYAre4hhthPpDP9Yrp3UYSWdANPx60F1qhxe0m4uw,7004
|
84
|
-
lionagi/ln/__init__.py,sha256=
|
85
|
-
lionagi/ln/_async_call.py,sha256=
|
86
|
-
lionagi/ln/
|
87
|
-
lionagi/ln/_fuzzy_json.py,sha256=zJGyyBoEidLFSIF9i8sactTrQOhyAecQhtvhls9w4mU,3541
|
88
|
-
lionagi/ln/_hash.py,sha256=g20yJfuVhAsfsBOWlkO889DHte6cbUCl6vV5QMT8nUo,3499
|
84
|
+
lionagi/ln/__init__.py,sha256=w38jHMfmmdUJc6_ZVo5x7Ieh2ugmbcTxkb4yLlmmAHI,1487
|
85
|
+
lionagi/ln/_async_call.py,sha256=mnqq5l-hNIBWrWh7X7CtmwPafg1kT-lnWWm3nJnbPoI,9384
|
86
|
+
lionagi/ln/_hash.py,sha256=WLwKsbJISE7KtOrpiE30AFtfwyOCSBjb1GslBlvj5ac,4529
|
89
87
|
lionagi/ln/_json_dump.py,sha256=M4ceccjkU7AN6wd5fUWKFmHytE-EVe8wqoQEFP0OkoA,2026
|
90
|
-
lionagi/ln/_list_call.py,sha256=
|
91
|
-
lionagi/ln/
|
92
|
-
lionagi/ln/
|
93
|
-
lionagi/ln/
|
94
|
-
lionagi/ln/concurrency/__init__.py,sha256=
|
95
|
-
lionagi/ln/concurrency/
|
96
|
-
lionagi/ln/concurrency/
|
97
|
-
lionagi/ln/concurrency/
|
98
|
-
lionagi/ln/concurrency/
|
99
|
-
lionagi/ln/concurrency/
|
100
|
-
lionagi/ln/concurrency/
|
101
|
-
lionagi/ln/concurrency/
|
102
|
-
lionagi/ln/concurrency/
|
88
|
+
lionagi/ln/_list_call.py,sha256=zvISmCeNAH7yjBcusQI1s17n556tILgePhRMdAM2plA,2831
|
89
|
+
lionagi/ln/_to_list.py,sha256=YOlrMplSpQhXDSTK4fkMF7Mhuw1wS0jGip5mS88Otro,6610
|
90
|
+
lionagi/ln/_utils.py,sha256=5Z_AsDxdtH5wNB-P4IiihhH0dYUcZMT-hTxFQBQPwL0,4303
|
91
|
+
lionagi/ln/types.py,sha256=MfLUa5iZnOdAJI4owNXA-w41l1ZL7Fs8DVE4OGXQPF8,8517
|
92
|
+
lionagi/ln/concurrency/__init__.py,sha256=xt_GLZ1Zb-nC-RnrNt8jOBWb_uf1md__B1R5cplMShg,1190
|
93
|
+
lionagi/ln/concurrency/_compat.py,sha256=itxdRzl95PLEBQvNY0zTriF39kymaNRpKncT8QsOomA,2065
|
94
|
+
lionagi/ln/concurrency/cancel.py,sha256=8JlWy_EVto4Fls1yQLBteCbpn4zP6ydnqIa_EL5kxZc,3313
|
95
|
+
lionagi/ln/concurrency/errors.py,sha256=Tg76ods-CG_9rz7TksTiRGqpTzWHi-Wm9JPotGB9iEM,869
|
96
|
+
lionagi/ln/concurrency/patterns.py,sha256=08eebVxbBxkcMFgJqZB-cXS7lRZduH1Y-zorb8fTTZs,9447
|
97
|
+
lionagi/ln/concurrency/primitives.py,sha256=-mXU-mUThbr9YUH2viw8mY5iOuKn5E5CoiTlG41NO3k,9543
|
98
|
+
lionagi/ln/concurrency/resource_tracker.py,sha256=ffLr0FkHyaHsUa4UDyWwse-8wGLaLMnAyfyeTDyzrDA,1512
|
99
|
+
lionagi/ln/concurrency/task.py,sha256=VS5keFI3Ct0fqCKbFl4kEWT5I2CgjIYizPU-S2YjGKo,2675
|
100
|
+
lionagi/ln/concurrency/throttle.py,sha256=yUAM4hnone6VzlFEos0fWERkZU9YC4J6TncZL-MqkG4,2319
|
101
|
+
lionagi/ln/concurrency/utils.py,sha256=MUWupnFtWxR15hWnligLZrS4Z1SAQ7j3cuCG08cK3GQ,431
|
102
|
+
lionagi/ln/fuzzy/__init__.py,sha256=_OE6Scyw99uU7gcCmYS4mB29LrpPayUJXeYlGhZTjlg,445
|
103
|
+
lionagi/ln/fuzzy/_extract_json.py,sha256=rYHaK36yzRpie8qO-T7mZKOue2yqCLx3ixiuKhsaKvg,2224
|
104
|
+
lionagi/ln/fuzzy/_fuzzy_json.py,sha256=S0lCkNvprn7XZHoYdRfzXueexSbjxTeLPkpyJ9IAO3A,3860
|
105
|
+
lionagi/ln/fuzzy/_fuzzy_match.py,sha256=MBL2qB180MsGkIvhiHQpVObfikBFjcLcFWG9T6vLZQ0,5915
|
106
|
+
lionagi/ln/fuzzy/_fuzzy_validate.py,sha256=ISC6EulV9VhIfR5Hh8JIq6WMcZOqt3AJPLUY6ZqpM1Y,1458
|
107
|
+
lionagi/ln/fuzzy/_string_similarity.py,sha256=axgLjDgDfBT-soxZFU2iH2bZYmGePSzc9Mxl3WlOxAA,8718
|
103
108
|
lionagi/models/__init__.py,sha256=R7DEGWuhH-izP7eN6SOw24-I4Mr2IVPXF4gNysmF2zQ,457
|
104
109
|
lionagi/models/field_model.py,sha256=JdmCp2pmwoy5HuduF21ivqyvMaJ04CTXu6Un-AeSwLU,23652
|
105
110
|
lionagi/models/hashable_model.py,sha256=oOqR3OJCU9cJfWHiG0WaEw0GMqfE2WTt4cy7WsAsiRg,829
|
@@ -109,7 +114,7 @@ lionagi/models/operable_model.py,sha256=Zm_Hxdauqyh0za3_TJLCZ3g6nR4F45Rrnc0ZM3d5
|
|
109
114
|
lionagi/models/schema_model.py,sha256=ghRIM8aBNaToAknwNlhQKpuKXcwzyCw5pDE31bVKxs0,667
|
110
115
|
lionagi/operations/__init__.py,sha256=a1EqxC5jRgVM1z_srZsxXtTC2Q6iA79ofpcd7cyT3B8,632
|
111
116
|
lionagi/operations/builder.py,sha256=tMl3zZkp-dQAdR27chrAmjmYVaJGshP7tf6AyNJyCUw,23177
|
112
|
-
lionagi/operations/flow.py,sha256=
|
117
|
+
lionagi/operations/flow.py,sha256=ZfCN_xlPuI2ZJAPL4opYNkTvNMaVQxTq-HKRZ4Lybjk,22248
|
113
118
|
lionagi/operations/manager.py,sha256=YZr3VjPAZVVFd_bIjF1aoQqzzKZHNA1kcqefNi5QFFM,683
|
114
119
|
lionagi/operations/node.py,sha256=qmjhv-8UzQMO5ocBlNWuv9nqQiLh5CV7AW_tno8jIUM,3183
|
115
120
|
lionagi/operations/types.py,sha256=fM8HphnbBifMzhoKKvdl3JxGCBHlEGPJEYkLWj9b7vE,704
|
@@ -131,7 +136,7 @@ lionagi/operations/instruct/instruct.py,sha256=7pxhyP5jxwpgqjmQNb1rnGF4QAVlbMENp
|
|
131
136
|
lionagi/operations/interpret/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
132
137
|
lionagi/operations/interpret/interpret.py,sha256=yl1NSp2iOm3dbycVLEcnV3absnqKoubfH15v6lQgySU,1500
|
133
138
|
lionagi/operations/operate/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
134
|
-
lionagi/operations/operate/operate.py,sha256=
|
139
|
+
lionagi/operations/operate/operate.py,sha256=SHk-BqjUWnN5aT7Xrm3lzR6yDppq_i2sbN8Iny8PelE,7512
|
135
140
|
lionagi/operations/parse/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
136
141
|
lionagi/operations/parse/parse.py,sha256=xS9uIxBzHLGD-1VpBVgGUhxF-tQDkF2KLmIpErM47RQ,6661
|
137
142
|
lionagi/operations/plan/__init__.py,sha256=yGBPll6lOqVjadbTvDLGrTlMx3FfBW-e00z7AMvg7Uo,156
|
@@ -144,7 +149,9 @@ lionagi/operations/translate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
144
149
|
lionagi/operations/translate/translate.py,sha256=6eBVoQRarGEJ8Tfcl6Z__PLHQTTIbM5MaPVYNeKHRIs,1397
|
145
150
|
lionagi/protocols/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
146
151
|
lionagi/protocols/_concepts.py,sha256=ZBN5OYpLMWLrl9uZqSg9GD4uwf60V4VHcxRnBTRWIRc,1555
|
147
|
-
lionagi/protocols/
|
152
|
+
lionagi/protocols/contracts.py,sha256=ii7luaPJsEKOb3J-rcaNysPDGU3nEzpgy_8g1z5_CCA,1398
|
153
|
+
lionagi/protocols/ids.py,sha256=RM40pP_4waMJcfCGmEK_PfS8-k_DuDbC1fG-2Peuf6s,2472
|
154
|
+
lionagi/protocols/types.py,sha256=EEmgYcaMCbgLU2rk7lTyKyRh_B15BeMccciv097j3Eg,2828
|
148
155
|
lionagi/protocols/action/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
149
156
|
lionagi/protocols/action/function_calling.py,sha256=rfuzIowjJpyqO5Ynfs5fGnxsDIU5aKinTj1NI6bGlEU,5106
|
150
157
|
lionagi/protocols/action/manager.py,sha256=XmdQIaVgSpmFBFW9kbW_rdwdQmlBteP4VRanxh_f918,8549
|
@@ -156,10 +163,10 @@ lionagi/protocols/forms/form.py,sha256=B4903km_Ljz-OxYkb1ZT_cpHZSaAYYJpZMsffWloo
|
|
156
163
|
lionagi/protocols/forms/report.py,sha256=SvJJjOSCTfVuqK7AKaY8ldQIGJeSK2zoyPWUV41ge2c,1609
|
157
164
|
lionagi/protocols/generic/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
158
165
|
lionagi/protocols/generic/element.py,sha256=5R9cLodaPzSPbellgFEudRxZIOMJDiCV8emyQKuEbPI,18621
|
159
|
-
lionagi/protocols/generic/event.py,sha256=
|
166
|
+
lionagi/protocols/generic/event.py,sha256=n5EraAJ5bPiwegTdkxsILs7-vFJwmnXhB2om4xMQnK0,6529
|
160
167
|
lionagi/protocols/generic/log.py,sha256=Y06zAQewkNlaIWjut_c6c45KY_LJfLHwzUaDGLULaas,8212
|
161
168
|
lionagi/protocols/generic/pile.py,sha256=mc10zh9RdqfozPEBOgRdkrTgIWUHBz8enAcQ-8pFhRQ,37046
|
162
|
-
lionagi/protocols/generic/processor.py,sha256=
|
169
|
+
lionagi/protocols/generic/processor.py,sha256=uiNIldAYPEujuboLFyrIJADMlhRghy3H86hYintj5D4,11705
|
163
170
|
lionagi/protocols/generic/progression.py,sha256=HCV_EnQCFvjg6D7eF4ygGrZNQPEOtu75zvW1sJbAVrM,15190
|
164
171
|
lionagi/protocols/graph/__init__.py,sha256=UPu3OmUpjSgX2aBuBJUdG2fppGlfqAH96hU0qIMBMp0,253
|
165
172
|
lionagi/protocols/graph/_utils.py,sha256=mts4M2wcGKdY9hC-1917lxIJT5oycW9VnRgfRx8ydbI,605
|
@@ -236,7 +243,7 @@ lionagi/tools/types.py,sha256=XtJLY0m-Yi_ZLWhm0KycayvqMCZd--HxfQ0x9vFUYDE,230
|
|
236
243
|
lionagi/tools/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
|
237
244
|
lionagi/tools/file/reader.py,sha256=2YKgU3VKo76zfL_buDAUQJoPLC56f6WJ4_mdJjlMDIM,9509
|
238
245
|
lionagi/tools/memory/tools.py,sha256=earYkKxSOz_iXkqVZYTEDfE3dwZYIWPXZrqQ1DYGz4I,15941
|
239
|
-
lionagi-0.
|
240
|
-
lionagi-0.
|
241
|
-
lionagi-0.
|
242
|
-
lionagi-0.
|
246
|
+
lionagi-0.16.0.dist-info/METADATA,sha256=GGDAE5nFDfUE01hTZxmw1FWJ8XwSnPSsxNoNuHHQR1g,23119
|
247
|
+
lionagi-0.16.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
248
|
+
lionagi-0.16.0.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
|
249
|
+
lionagi-0.16.0.dist-info/RECORD,,
|