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.
Files changed (39) hide show
  1. lionagi/libs/validate/fuzzy_match_keys.py +5 -182
  2. lionagi/libs/validate/string_similarity.py +6 -331
  3. lionagi/ln/__init__.py +56 -66
  4. lionagi/ln/_async_call.py +13 -10
  5. lionagi/ln/_hash.py +33 -8
  6. lionagi/ln/_list_call.py +2 -35
  7. lionagi/ln/_to_list.py +51 -28
  8. lionagi/ln/_utils.py +156 -0
  9. lionagi/ln/concurrency/__init__.py +39 -31
  10. lionagi/ln/concurrency/_compat.py +65 -0
  11. lionagi/ln/concurrency/cancel.py +92 -109
  12. lionagi/ln/concurrency/errors.py +17 -17
  13. lionagi/ln/concurrency/patterns.py +249 -206
  14. lionagi/ln/concurrency/primitives.py +257 -216
  15. lionagi/ln/concurrency/resource_tracker.py +42 -155
  16. lionagi/ln/concurrency/task.py +55 -73
  17. lionagi/ln/concurrency/throttle.py +3 -0
  18. lionagi/ln/concurrency/utils.py +1 -0
  19. lionagi/ln/fuzzy/__init__.py +15 -0
  20. lionagi/ln/{_extract_json.py → fuzzy/_extract_json.py} +22 -9
  21. lionagi/ln/{_fuzzy_json.py → fuzzy/_fuzzy_json.py} +14 -8
  22. lionagi/ln/fuzzy/_fuzzy_match.py +172 -0
  23. lionagi/ln/fuzzy/_fuzzy_validate.py +46 -0
  24. lionagi/ln/fuzzy/_string_similarity.py +332 -0
  25. lionagi/ln/{_models.py → types.py} +153 -4
  26. lionagi/operations/flow.py +2 -1
  27. lionagi/operations/operate/operate.py +26 -16
  28. lionagi/protocols/contracts.py +46 -0
  29. lionagi/protocols/generic/event.py +6 -6
  30. lionagi/protocols/generic/processor.py +9 -5
  31. lionagi/protocols/ids.py +82 -0
  32. lionagi/protocols/types.py +10 -12
  33. lionagi/utils.py +34 -64
  34. lionagi/version.py +1 -1
  35. {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/METADATA +4 -2
  36. {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/RECORD +38 -31
  37. lionagi/ln/_types.py +0 -146
  38. {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/WHEEL +0 -0
  39. {lionagi-0.15.14.dist-info → lionagi-0.16.0.dist-info}/licenses/LICENSE +0 -0
@@ -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, CapacityLimiter, ConcurrencyEvent
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
- if operative_model:
70
- logging.warning(
71
- "`operative_model` is deprecated. Use `response_format` instead."
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), Enum)
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_ = ln.Unset
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 ln.Unset and not json_serializable:
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 ConcurrencyEvent, Semaphore, create_task_group
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
- await tg.start_soon(stream_with_sem, next_event)
173
+ tg.start_soon(stream_with_sem, next_event)
170
174
  else:
171
- await tg.start_soon(consume_stream, next_event)
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
- await tg.start_soon(invoke_with_sem, next_event)
184
+ tg.start_soon(invoke_with_sem, next_event)
181
185
  else:
182
- await tg.start_soon(next_event.invoke)
186
+ tg.start_soon(next_event.invoke)
183
187
  events_processed += 1
184
188
 
185
189
  prev_event = next_event
@@ -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)
@@ -2,18 +2,11 @@
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
- from ._concepts import (
6
- Collective,
7
- Communicatable,
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 DataClass, Enum, KeysDict, Params, Undefined, UndefinedType
41
- from .ln import extract_json as to_json
42
- from .ln import fuzzy_json as fuzzy_parse_json
43
- from .ln import hash_dict, to_list
44
- from .ln.concurrency import is_coro_func
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.15.14"
1
+ __version__ = "0.16.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.15.14
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.4
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=7Hlt60LiShRdNPXv4y2e_xq7W2N0PM5cGRJnc8qXAVw,28660
9
- lionagi/version.py,sha256=twn0Vrxaz4hLyeNEgJYUkN06H8sXuoxF6BpefwWSUTU,24
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=M4EfpeWKE1eACLxeC4K-VDmHZXMRHeGUkDFbfny80AM,6255
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=axgLjDgDfBT-soxZFU2iH2bZYmGePSzc9Mxl3WlOxAA,8718
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=aunFi1qRkEuTzdcrkN9pv499aynmQdjlNbJJBRPwRvc,1754
85
- lionagi/ln/_async_call.py,sha256=pRwJqUELQ22YMiLVv4zS-NSuTGHftqBvxSnt5P_ReZk,9390
86
- lionagi/ln/_extract_json.py,sha256=K82UBoVQbb6hib9bIqnYgFFYefvw7hIx11D6NKMZfws,1843
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=oDCyTzz7F7KVAMjekKftJp7qgIZ9Yo8BUNMHasKoJhU,3935
91
- lionagi/ln/_models.py,sha256=Txhdtp2YNq6ZsK9kLza40hRpWu27DzaVNMthCG7-zJM,4786
92
- lionagi/ln/_to_list.py,sha256=DKjZAah6pm6frHls773yTMVK1I3OY7qxwLemOjRPr5A,5600
93
- lionagi/ln/_types.py,sha256=usVaL2tGnYVQ2W12eUhJYiXY-m55b_5e0tUOFcuDtkc,3607
94
- lionagi/ln/concurrency/__init__.py,sha256=Sv1LEvwN1hRESLtuYM5UltyJqx6DRsHvGmr8aof16cA,1286
95
- lionagi/ln/concurrency/cancel.py,sha256=TYLxQ1D7mqhs8J4qJ_yTqP0j01zBe-Qed8-YnJlgKi0,4018
96
- lionagi/ln/concurrency/errors.py,sha256=FhLgXGFSbKZYPNfXjdnkV-0ShPF_S34RBLyTO_Pk5C8,938
97
- lionagi/ln/concurrency/patterns.py,sha256=dlC7nhIYE-D5VySNAPsd6PYYlORRAqNX50oKJRR1PO8,7796
98
- lionagi/ln/concurrency/primitives.py,sha256=fgml37nggaEGuvAJHQY6-rpSuAuei56YVSjTlIieM2o,8996
99
- lionagi/ln/concurrency/resource_tracker.py,sha256=52Rq7yMWK7DlebBW90imSjYeEAp8Gp9nL0dG2PD8Ivs,5464
100
- lionagi/ln/concurrency/task.py,sha256=nVts_yPylkZVSk3l3I4MkUdC7rhoN2qQeFfrsvekVgE,3146
101
- lionagi/ln/concurrency/throttle.py,sha256=Ho5zh_3beSXi9cMDDj70xz447BLzBJVopnUlQ18k9Lc,2198
102
- lionagi/ln/concurrency/utils.py,sha256=4TvDnPKhtbesb6YWZ9QlhskiOb07ai_eJ-PrmqY14IE,346
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=JB0SnVZbqLJc9cRGHy_p7QKvTBcB63H9n1iDyhWJDRo,22202
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=G-VGjvhKxxgQLyoxigOYcYHMOazyM1ESQMfbrM33SPM,7233
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/types.py,sha256=rc1RZSxNEHSrOw72IIlWXI8vzgEmCGkZI98GIYG6sTU,2505
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=Rwke4sNLddQlJ8PTu-dTPZYBy1qmwaLAERbOLd_udpg,6512
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=GvHblXvOaZJ485L3bWcV3S4w9x0GYxWH-LkPXv00zMI,11700
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.15.14.dist-info/METADATA,sha256=B9IMnGWdUDI43F5aDYmhldz7LynHcJ8mjRp_2xubKgk,23052
240
- lionagi-0.15.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
241
- lionagi-0.15.14.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
242
- lionagi-0.15.14.dist-info/RECORD,,
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,,