lionagi 0.17.4__py3-none-any.whl → 0.17.6__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 (44) hide show
  1. lionagi/__init__.py +45 -7
  2. lionagi/config.py +26 -0
  3. lionagi/fields/action.py +5 -3
  4. lionagi/libs/file/chunk.py +3 -14
  5. lionagi/libs/file/process.py +10 -92
  6. lionagi/libs/schema/breakdown_pydantic_annotation.py +45 -0
  7. lionagi/ln/_async_call.py +19 -8
  8. lionagi/ln/_hash.py +12 -2
  9. lionagi/ln/_to_list.py +23 -12
  10. lionagi/ln/fuzzy/_fuzzy_match.py +3 -6
  11. lionagi/ln/fuzzy/_fuzzy_validate.py +9 -8
  12. lionagi/ln/fuzzy/_string_similarity.py +11 -5
  13. lionagi/ln/fuzzy/_to_dict.py +19 -19
  14. lionagi/ln/types.py +15 -0
  15. lionagi/operations/operate/operate.py +7 -11
  16. lionagi/operations/parse/parse.py +5 -3
  17. lionagi/protocols/generic/element.py +3 -6
  18. lionagi/protocols/generic/event.py +1 -1
  19. lionagi/protocols/mail/package.py +2 -2
  20. lionagi/protocols/messages/instruction.py +9 -1
  21. lionagi/protocols/operatives/operative.py +4 -3
  22. lionagi/service/broadcaster.py +61 -0
  23. lionagi/service/connections/api_calling.py +22 -145
  24. lionagi/service/connections/mcp/wrapper.py +8 -15
  25. lionagi/service/hooks/__init__.py +2 -10
  26. lionagi/service/hooks/_types.py +1 -0
  27. lionagi/service/hooks/hooked_event.py +142 -0
  28. lionagi/service/imodel.py +2 -2
  29. lionagi/session/branch.py +46 -169
  30. lionagi/session/session.py +1 -44
  31. lionagi/tools/file/reader.py +6 -4
  32. lionagi/utils.py +3 -342
  33. lionagi/version.py +1 -1
  34. {lionagi-0.17.4.dist-info → lionagi-0.17.6.dist-info}/METADATA +4 -4
  35. {lionagi-0.17.4.dist-info → lionagi-0.17.6.dist-info}/RECORD +37 -41
  36. lionagi/libs/file/_utils.py +0 -10
  37. lionagi/libs/file/concat.py +0 -121
  38. lionagi/libs/file/concat_files.py +0 -85
  39. lionagi/libs/file/file_ops.py +0 -118
  40. lionagi/libs/file/save.py +0 -103
  41. lionagi/ln/concurrency/throttle.py +0 -83
  42. lionagi/settings.py +0 -71
  43. {lionagi-0.17.4.dist-info → lionagi-0.17.6.dist-info}/WHEEL +0 -0
  44. {lionagi-0.17.4.dist-info → lionagi-0.17.6.dist-info}/licenses/LICENSE +0 -0
@@ -8,6 +8,7 @@ from enum import Enum
8
8
  from pydantic import BaseModel, Field, model_validator
9
9
 
10
10
  from lionagi.libs.validate.to_num import to_num
11
+ from lionagi.ln import is_import_installed
11
12
  from lionagi.protocols.action.tool import Tool
12
13
  from lionagi.service.token_calculator import TokenCalculator
13
14
 
@@ -173,10 +174,11 @@ class ReaderTool(LionTool):
173
174
  system_tool_name = "reader_tool"
174
175
 
175
176
  def __init__(self):
176
- from lionagi.libs.file.process import _HAS_DOCLING
177
-
178
- if _HAS_DOCLING is not True:
179
- raise _HAS_DOCLING
177
+ if not is_import_installed("docling"):
178
+ raise ImportError(
179
+ "The 'docling' package is required for this feature. "
180
+ "Please install it via 'pip install lionagi[reader]'."
181
+ )
180
182
 
181
183
  from docling.document_converter import DocumentConverter
182
184
 
lionagi/utils.py CHANGED
@@ -6,22 +6,10 @@ import copy as _copy
6
6
  import logging
7
7
  import types
8
8
  import uuid
9
- from collections.abc import AsyncGenerator, Callable, Iterable, Mapping
10
- from datetime import datetime, timezone
11
- from inspect import isclass
9
+ from collections.abc import Mapping
10
+ from datetime import datetime
12
11
  from pathlib import Path
13
- from typing import (
14
- Annotated,
15
- Any,
16
- Literal,
17
- TypeVar,
18
- Union,
19
- get_args,
20
- get_origin,
21
- )
22
-
23
- from pydantic import BaseModel
24
- from typing_extensions import deprecated
12
+ from typing import Annotated, Any, TypeVar, Union, get_args, get_origin
25
13
 
26
14
  from .ln import (
27
15
  extract_json,
@@ -47,19 +35,14 @@ from .ln.types import (
47
35
  Unset,
48
36
  UnsetType,
49
37
  )
50
- from .settings import Settings
51
38
 
52
39
  R = TypeVar("R")
53
40
  T = TypeVar("T")
54
- B = TypeVar("B", bound=BaseModel)
55
41
 
56
42
  logger = logging.getLogger(__name__)
57
43
 
58
44
  UNDEFINED = Undefined
59
45
 
60
- to_json = extract_json
61
- fuzzy_parse_json = fuzzy_json
62
-
63
46
  __all__ = (
64
47
  "UndefinedType",
65
48
  "KeysDict",
@@ -72,28 +55,15 @@ __all__ = (
72
55
  "get_class_file_registry",
73
56
  "get_class_objects",
74
57
  "is_coro_func",
75
- "custom_error_handler",
76
58
  "to_list",
77
- "lcall",
78
- "alcall",
79
- "bcall",
80
59
  "create_path",
81
- "time",
82
- "fuzzy_parse_json",
83
- "fix_json_string",
84
60
  "get_bins",
85
61
  "EventStatus",
86
62
  "logger",
87
- "max_concurrent",
88
- "force_async",
89
- "breakdown_pydantic_annotation",
90
- "run_package_manager_command",
91
- "StringEnum",
92
63
  "Enum",
93
64
  "hash_dict",
94
65
  "is_union_type",
95
66
  "union_members",
96
- "to_json",
97
67
  "Unset",
98
68
  "UnsetType",
99
69
  "Undefined",
@@ -106,68 +76,6 @@ __all__ = (
106
76
  )
107
77
 
108
78
 
109
- # --- General Global Utilities Types ---
110
- @deprecated("String Enum is deprecated, use `Enum` instead.")
111
- class StringEnum(str, Enum):
112
- pass
113
-
114
-
115
- # --- General Global Utilities Functions ---
116
- def time(
117
- *,
118
- tz: timezone = Settings.Config.TIMEZONE,
119
- type_: Literal["timestamp", "datetime", "iso", "custom"] = "timestamp",
120
- sep: str | None = "T",
121
- timespec: str | None = "auto",
122
- custom_format: str | None = None,
123
- custom_sep: str | None = None,
124
- ) -> float | str | datetime:
125
- """
126
- Get current time in various formats.
127
-
128
- Args:
129
- tz: Timezone for the time (default: utc).
130
- type_: Type of time to return (default: "timestamp").
131
- Options: "timestamp", "datetime", "iso", "custom".
132
- sep: Separator for ISO format (default: "T").
133
- timespec: Timespec for ISO format (default: "auto").
134
- custom_format: Custom strftime format string for
135
- type_="custom".
136
- custom_sep: Custom separator for type_="custom",
137
- replaces "-", ":", ".".
138
-
139
- Returns:
140
- Current time in the specified format.
141
-
142
- Raises:
143
- ValueError: If an invalid type_ is provided or if custom_format
144
- is not provided when type_="custom".
145
- """
146
- now = datetime.now(tz=tz)
147
-
148
- if type_ == "iso":
149
- return now.isoformat(sep=sep, timespec=timespec)
150
- elif type_ == "timestamp":
151
- return now.timestamp()
152
- elif type_ == "datetime":
153
- return now
154
- elif type_ == "custom":
155
- if not custom_format:
156
- raise ValueError(
157
- "custom_format must be provided when type_='custom'"
158
- )
159
- formatted_time = now.strftime(custom_format)
160
- if custom_sep is not None:
161
- for old_sep in ("-", ":", "."):
162
- formatted_time = formatted_time.replace(old_sep, custom_sep)
163
- return formatted_time
164
-
165
- raise ValueError(
166
- f"Invalid value <{type_}> for `type_`, must be"
167
- " one of 'timestamp', 'datetime', 'iso', or 'custom'."
168
- )
169
-
170
-
171
79
  def copy(obj: T, /, *, deep: bool = True, num: int = 1) -> T | list[T]:
172
80
  if num < 1:
173
81
  raise ValueError("Number of copies must be at least 1")
@@ -240,214 +148,6 @@ def union_members(
240
148
  return members
241
149
 
242
150
 
243
- async def custom_error_handler(
244
- error: Exception, error_map: dict[type, Callable[[Exception], None]]
245
- ) -> None:
246
- if type(error) in error_map:
247
- if is_coro_func(error_map[type(error)]):
248
- return await error_map[type(error)](error)
249
- return error_map[type(error)](error)
250
- logging.error(f"Unhandled error: {error}")
251
- raise error
252
-
253
-
254
- @deprecated(
255
- "Use `lionagi.ln.lcall` instead, function signature has changed, this will be removed in future versions."
256
- )
257
- def lcall(
258
- input_: Iterable[T] | T,
259
- func: Callable[[T], R] | Iterable[Callable[[T], R]],
260
- /,
261
- *args: Any,
262
- sanitize_input: bool = False,
263
- unique_input: bool = False,
264
- flatten: bool = False,
265
- dropna: bool = False,
266
- unique_output: bool = False,
267
- flatten_tuple_set: bool = False,
268
- use_input_values: bool = False,
269
- **kwargs: Any,
270
- ) -> list[R]:
271
- """Apply function to each element in input list with optional processing.
272
-
273
- Maps a function over input elements and processes results. Can sanitize input
274
- and output using various filtering options.
275
-
276
- Args:
277
- input_: Single item or iterable to process.
278
- func: Function to apply or single-item iterable containing function.
279
- *args: Additional positional arguments passed to func.
280
- sanitize_input: If True, sanitize input using to_list.
281
- unique_input: If True with sanitize_input, remove input duplicates.
282
- flatten: If True, flatten output nested structures.
283
- dropna: If True, remove None values from output.
284
- unique_output: If True with flatten/dropna, remove output duplicates.
285
- flatten_tuple_set: If True, flatten tuples and sets.
286
- **kwargs: Additional keyword arguments passed to func.
287
-
288
- Returns:
289
- list: Results of applying func to each input element.
290
-
291
- Raises:
292
- ValueError: If func is not callable or unique_output used incorrectly.
293
- TypeError: If func or input processing fails.
294
-
295
- Examples:
296
- >>> lcall([1, 2, 3], str)
297
- ['1', '2', '3']
298
- >>> lcall([1, [2, 3]], str, flatten=True)
299
- ['1', '2', '3']
300
- """
301
- from lionagi.ln import lcall as _lcall
302
-
303
- return _lcall(
304
- input_,
305
- func,
306
- *args,
307
- input_flatten=sanitize_input,
308
- input_dropna=sanitize_input,
309
- input_flatten_tuple_set=flatten_tuple_set,
310
- input_unique=unique_input,
311
- input_use_values=use_input_values,
312
- output_flatten=flatten,
313
- output_dropna=dropna,
314
- output_flatten_tuple_set=flatten_tuple_set,
315
- output_unique=unique_output,
316
- **kwargs,
317
- )
318
-
319
-
320
- @deprecated(
321
- "Use `lionagi.ln.alcall` instead, function signature has changed, this will be removed in future versions."
322
- )
323
- async def alcall(
324
- input_: list[Any],
325
- func: Callable[..., T],
326
- /,
327
- *,
328
- sanitize_input: bool = False,
329
- unique_input: bool = False,
330
- num_retries: int = 0,
331
- initial_delay: float = 0,
332
- retry_delay: float = 0,
333
- backoff_factor: float = 1,
334
- retry_default: Any = UNDEFINED,
335
- retry_timeout: float | None = None,
336
- max_concurrent: int | None = None,
337
- throttle_period: float | None = None,
338
- flatten: bool = False,
339
- dropna: bool = False,
340
- unique_output: bool = False,
341
- flatten_tuple_set: bool = False,
342
- **kwargs: Any,
343
- ) -> list[T]:
344
- """
345
- Asynchronously apply a function to each element of a list, with optional input sanitization,
346
- retries, timeout, and output processing.
347
-
348
- Args:
349
- input_ (list[Any]): The list of inputs to process.
350
- func (Callable[..., T]): The function to apply (async or sync).
351
- sanitize_input (bool): If True, input is flattened, dropna applied, and made unique if unique_input.
352
- unique_input (bool): If True and sanitize_input is True, input is made unique.
353
- num_retries (int): Number of retry attempts on exception.
354
- initial_delay (float): Initial delay before starting executions.
355
- retry_delay (float): Delay between retries.
356
- backoff_factor (float): Multiplier for delay after each retry.
357
- retry_default (Any): Default value if all retries fail.
358
- retry_timeout (float | None): Timeout for each function call.
359
- max_concurrent (int | None): Maximum number of concurrent operations.
360
- throttle_period (float | None): Delay after each completed operation.
361
- flatten (bool): Flatten the final result if True.
362
- dropna (bool): Remove None values from the final result if True.
363
- unique_output (bool): Deduplicate the output if True.
364
- flatten_tuple_set (bool): Tuples and sets will be flattened if True.
365
- **kwargs: Additional arguments passed to func.
366
-
367
- Returns:
368
- list[T]: The processed results.
369
-
370
- Raises:
371
- asyncio.TimeoutError: If a call times out and no default is provided.
372
- Exception: If retries are exhausted and no default is provided.
373
- """
374
- from .ln._async_call import alcall as _alcall
375
-
376
- return await _alcall(
377
- input_,
378
- func,
379
- input_flatten=sanitize_input,
380
- input_dropna=sanitize_input,
381
- input_unique=unique_input,
382
- input_flatten_tuple_set=flatten_tuple_set,
383
- output_flatten=flatten,
384
- output_dropna=dropna,
385
- output_unique=unique_output,
386
- output_flatten_tuple_set=flatten_tuple_set,
387
- delay_before_start=initial_delay,
388
- retry_initial_deplay=retry_delay,
389
- retry_backoff=backoff_factor,
390
- retry_default=retry_default,
391
- retry_timeout=retry_timeout,
392
- retry_attempts=num_retries,
393
- max_concurrent=max_concurrent,
394
- throttle_period=throttle_period,
395
- **kwargs,
396
- )
397
-
398
-
399
- @deprecated(
400
- "Use `lionagi.ln.alcall` instead, function signature has changed, this will be removed in future versions."
401
- )
402
- async def bcall(
403
- input_: Any,
404
- func: Callable[..., T],
405
- /,
406
- batch_size: int,
407
- *,
408
- sanitize_input: bool = False,
409
- unique_input: bool = False,
410
- num_retries: int = 0,
411
- initial_delay: float = 0,
412
- retry_delay: float = 0,
413
- backoff_factor: float = 1,
414
- retry_default: Any = UNDEFINED,
415
- retry_timeout: float | None = None,
416
- max_concurrent: int | None = None,
417
- throttle_period: float | None = None,
418
- flatten: bool = False,
419
- dropna: bool = False,
420
- unique_output: bool = False,
421
- flatten_tuple_set: bool = False,
422
- **kwargs: Any,
423
- ) -> AsyncGenerator[list[T | tuple[T, float]], None]:
424
- from .ln._async_call import bcall as _bcall
425
-
426
- async for i in _bcall(
427
- input_,
428
- func,
429
- batch_size,
430
- input_flatten=sanitize_input,
431
- input_dropna=sanitize_input,
432
- input_unique=unique_input,
433
- input_flatten_tuple_set=flatten_tuple_set,
434
- output_flatten=flatten,
435
- output_dropna=dropna,
436
- output_unique=unique_output,
437
- output_flatten_tuple_set=flatten_tuple_set,
438
- delay_before_start=initial_delay,
439
- retry_initial_deplay=retry_delay,
440
- retry_backoff=backoff_factor,
441
- retry_default=retry_default,
442
- retry_timeout=retry_timeout,
443
- retry_attempts=num_retries,
444
- max_concurrent=max_concurrent,
445
- throttle_period=throttle_period,
446
- **kwargs,
447
- ):
448
- yield i
449
-
450
-
451
151
  def create_path(
452
152
  directory: Path | str,
453
153
  filename: str,
@@ -545,42 +245,3 @@ def get_bins(input_: list[str], upper: int) -> list[list[int]]:
545
245
  if current_bin:
546
246
  bins.append(current_bin)
547
247
  return bins
548
-
549
-
550
- def breakdown_pydantic_annotation(
551
- model: type[B], max_depth: int | None = None, current_depth: int = 0
552
- ) -> dict[str, Any]:
553
- if not _is_pydantic_model(model):
554
- raise TypeError("Input must be a Pydantic model")
555
-
556
- if max_depth is not None and current_depth >= max_depth:
557
- raise RecursionError("Maximum recursion depth reached")
558
-
559
- out: dict[str, Any] = {}
560
- for k, v in model.__annotations__.items():
561
- origin = get_origin(v)
562
- if _is_pydantic_model(v):
563
- out[k] = breakdown_pydantic_annotation(
564
- v, max_depth, current_depth + 1
565
- )
566
- elif origin is list:
567
- args = get_args(v)
568
- if args and _is_pydantic_model(args[0]):
569
- out[k] = [
570
- breakdown_pydantic_annotation(
571
- args[0], max_depth, current_depth + 1
572
- )
573
- ]
574
- else:
575
- out[k] = [args[0] if args else Any]
576
- else:
577
- out[k] = v
578
-
579
- return out
580
-
581
-
582
- def _is_pydantic_model(x: Any) -> bool:
583
- try:
584
- return isclass(x) and issubclass(x, BaseModel)
585
- except TypeError:
586
- return False
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.17.4"
1
+ __version__ = "0.17.6"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.17.4
3
+ Version: 0.17.6
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -228,7 +228,7 @@ Requires-Dist: json-repair>=0.40.0
228
228
  Requires-Dist: msgspec>=0.18.0
229
229
  Requires-Dist: pydantic-settings>=2.8.0
230
230
  Requires-Dist: pydantic>=2.8.0
231
- Requires-Dist: pydapter>=1.1.1
231
+ Requires-Dist: pydapter[pandas]>=1.1.1
232
232
  Requires-Dist: python-dotenv>=1.1.0
233
233
  Requires-Dist: tiktoken>=0.9.0
234
234
  Provides-Extra: all
@@ -330,8 +330,8 @@ from pydantic import BaseModel
330
330
  class Joke(BaseModel):
331
331
  joke: str
332
332
 
333
- res = await hunter.communicate(
334
- "Tell me a short dragon joke",
333
+ res = await hunter.operate(
334
+ instruction="Tell me a short dragon joke",
335
335
  response_format=Joke
336
336
  )
337
337
  print(type(res))
@@ -1,17 +1,16 @@
1
- lionagi/__init__.py,sha256=Kh_2iWIL1mvvtMAETJ5cRxIxRkiAERYAJmK1IOgNtvQ,1335
1
+ lionagi/__init__.py,sha256=MeFKg1esCCVXzKG_ZSS68dg-q2W26sVzRSju_prw37w,2398
2
2
  lionagi/_class_registry.py,sha256=pfUO1DjFZIqr3OwnNMkFqL_fiEBrrf8-swkGmP_KDLE,3112
3
3
  lionagi/_errors.py,sha256=ia_VWhPSyr5FIJLSdPpl04SrNOLI2skN40VC8ePmzeQ,3748
4
4
  lionagi/_types.py,sha256=COWRrmstmABGKKn-h_cKiAREGsMp_Ik49OdR4lSS3P8,1263
5
- lionagi/config.py,sha256=D13nnjpgJKz_LlQrzaKKVefm4hqesz_dP9ROjWmGuLE,3811
5
+ lionagi/config.py,sha256=yGnzj5D14B2TBhqVeyp1uccvAK6mk4hm0QA8dAEJUeQ,4776
6
6
  lionagi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- lionagi/settings.py,sha256=HDuKCEJCpc4HudKodBnhoQUGuTGhRHdlIFhbtf3VBtY,1633
8
- lionagi/utils.py,sha256=pfAibR84sx-aPxGNPrdlHqUAf2OXoCBGRCMseMrzhi4,18046
9
- lionagi/version.py,sha256=LisYi6U4jD61j06adgCNdZJfR0RhF_Im0hPrka6lSjc,23
7
+ lionagi/utils.py,sha256=yRHKN_v9xRnUa-nYg1lTpCCK2wNDg4pCpicUEIyFwKg,7084
8
+ lionagi/version.py,sha256=mmrB6n6zH1c3iHQ4iJcecY24GV6KoBQ8Vbb5t5vYe3E,23
10
9
  lionagi/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
10
  lionagi/adapters/_utils.py,sha256=sniMG1LDDkwJNzUF2K32jv7rA6Y1QcohgyNclYsptzI,453
12
11
  lionagi/adapters/async_postgres_adapter.py,sha256=2XlxYNPow78dFHIQs8W1oJ2zkVD5Udn3aynMBF9Nf3k,3498
13
12
  lionagi/fields/__init__.py,sha256=yrn9NDAM6_v73kK7aJeb-Pvqigeu8WASaV-My-6CDsc,939
14
- lionagi/fields/action.py,sha256=OziEpbaUeEVo34KdtbzDxXJBgkf3QLxlcKIQAfHe4O0,5791
13
+ lionagi/fields/action.py,sha256=nFr1u0d-t3gRaiA6XrqyEadHkfys2E_ReSmJwCe-oZk,5833
15
14
  lionagi/fields/base.py,sha256=mvgqxLonCROszMjnG8QWt00l-MvIr_mnGvCtaH-SQ_k,3814
16
15
  lionagi/fields/code.py,sha256=TFym51obzaSfCmeRoHZJyBtjfDI4tvl9F-1sjFc9rMw,7713
17
16
  lionagi/fields/file.py,sha256=DhQ_HE0RvTNzkvBGQHRgbMYSokDkzE8GEu814i6jw5Q,7297
@@ -20,15 +19,11 @@ lionagi/fields/reason.py,sha256=6IjgJWv-dhsGmg5O1sq2J5syBibYfRBy3--7q7_ZpMY,1452
20
19
  lionagi/fields/research.py,sha256=eEPKocx8eQy2E9FExRWVIo6MK_xvmwBAoRZciBY3RG0,1421
21
20
  lionagi/libs/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
22
21
  lionagi/libs/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
23
- lionagi/libs/file/_utils.py,sha256=lCNCD-WNUq9f8ZlNecGESIz0GncWkJei8xYtvyY8qd4,334
24
- lionagi/libs/file/chunk.py,sha256=XeVMwM33JF0X1W6udz_nhlb3DCevA_EK6A50Hn_e5SY,9300
25
- lionagi/libs/file/concat.py,sha256=YSauXVBL3WWx5Mvpn208Cj7q9TLt_aq-0M9J1fm-ins,3864
26
- lionagi/libs/file/concat_files.py,sha256=FoI983oWFzp9VfFDP7kmbRb3t1CPe5F5LCtsux0ASAs,3089
27
- lionagi/libs/file/file_ops.py,sha256=HBiIh1EljIJ5VTIXuyvJM0ppSs0YYOPUWmgDMJT634U,3430
28
- lionagi/libs/file/process.py,sha256=XTfh1JDPancjFU0qr4-ONB2OXfKKkhQxL49sChYLl-0,8672
29
- lionagi/libs/file/save.py,sha256=jTiJMTOK3IiuCz1XbYZlzFmsqiy2q_Xz6subc4ZTJps,3063
22
+ lionagi/libs/file/chunk.py,sha256=jvjSM8BNgqP1awJT5Soodoz1rHQVN3gg-1q5Lt38XoM,8974
23
+ lionagi/libs/file/process.py,sha256=_lfpPuvaeRl1q1EA7cjRlA7o08JDwsSLCU1k79S5_2k,6078
30
24
  lionagi/libs/schema/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
31
25
  lionagi/libs/schema/as_readable.py,sha256=p8ke8ZxLwLQxmsJWD_N7Q_AYDYK60nuHztUREbTa5sk,12027
26
+ lionagi/libs/schema/breakdown_pydantic_annotation.py,sha256=x-mfXroICPHXtNcLtAoC_SyFwao42dEaEAUZA9l3yWQ,1296
32
27
  lionagi/libs/schema/extract_code_block.py,sha256=PuJbJj1JnqR5fSZudowPcVPpEoKISLr0MjTOOVXSzwY,2394
33
28
  lionagi/libs/schema/extract_docstring.py,sha256=uWyUevXS4JSN60tfouoBBAyE4_jyE-fz45CiS-fvKeI,5714
34
29
  lionagi/libs/schema/function_to_schema.py,sha256=XAB031WbYu3a7eFJyYjXVMAjmtWYSYr5kC_DYgjiuyM,5604
@@ -38,13 +33,13 @@ lionagi/libs/validate/common_field_validators.py,sha256=1BHznXnJYcLQrHqvHKUnP6aq
38
33
  lionagi/libs/validate/to_num.py,sha256=ZRHDjpTCykPfDIZZa4rZKNaR_8ZHbPDFlw9rc02DrII,11610
39
34
  lionagi/libs/validate/validate_boolean.py,sha256=bjiX_WZ3Bg8XcqoWLzE1G9BpO0AisrlZUxrpye_mlGk,3614
40
35
  lionagi/ln/__init__.py,sha256=dQvfTU1MHUrG4C4KoqEs7Xg801seML-GNjihbdUtp3E,1575
41
- lionagi/ln/_async_call.py,sha256=mnqq5l-hNIBWrWh7X7CtmwPafg1kT-lnWWm3nJnbPoI,9384
42
- lionagi/ln/_hash.py,sha256=WLwKsbJISE7KtOrpiE30AFtfwyOCSBjb1GslBlvj5ac,4529
36
+ lionagi/ln/_async_call.py,sha256=hjei0sW-G92xDwQo_OI4qKVp1iP8N2eccJT1fAftV9w,9607
37
+ lionagi/ln/_hash.py,sha256=dIrQgOAdrWkVQcaCJXN-XIaA1sIZSYtAU302fywrtJU,4756
43
38
  lionagi/ln/_json_dump.py,sha256=zOeoOE3JbaGAzL-lfAdMqdgaXWYXFliqcgXsZ_pxonI,10347
44
39
  lionagi/ln/_list_call.py,sha256=zvISmCeNAH7yjBcusQI1s17n556tILgePhRMdAM2plA,2831
45
- lionagi/ln/_to_list.py,sha256=YOlrMplSpQhXDSTK4fkMF7Mhuw1wS0jGip5mS88Otro,6610
40
+ lionagi/ln/_to_list.py,sha256=V9hC3dpyMhRJwuuyOCU_wJygzEB6sJVZ0fmIRtM6uTg,6993
46
41
  lionagi/ln/_utils.py,sha256=5Z_AsDxdtH5wNB-P4IiihhH0dYUcZMT-hTxFQBQPwL0,4303
47
- lionagi/ln/types.py,sha256=MfLUa5iZnOdAJI4owNXA-w41l1ZL7Fs8DVE4OGXQPF8,8517
42
+ lionagi/ln/types.py,sha256=_6zW86nW0aq34uB94Y9iNsw19UShF5yrUv0M9ShAPjo,8870
48
43
  lionagi/ln/concurrency/__init__.py,sha256=xt_GLZ1Zb-nC-RnrNt8jOBWb_uf1md__B1R5cplMShg,1190
49
44
  lionagi/ln/concurrency/_compat.py,sha256=itxdRzl95PLEBQvNY0zTriF39kymaNRpKncT8QsOomA,2065
50
45
  lionagi/ln/concurrency/cancel.py,sha256=8JlWy_EVto4Fls1yQLBteCbpn4zP6ydnqIa_EL5kxZc,3313
@@ -53,15 +48,14 @@ lionagi/ln/concurrency/patterns.py,sha256=08eebVxbBxkcMFgJqZB-cXS7lRZduH1Y-zorb8
53
48
  lionagi/ln/concurrency/primitives.py,sha256=-mXU-mUThbr9YUH2viw8mY5iOuKn5E5CoiTlG41NO3k,9543
54
49
  lionagi/ln/concurrency/resource_tracker.py,sha256=ffLr0FkHyaHsUa4UDyWwse-8wGLaLMnAyfyeTDyzrDA,1512
55
50
  lionagi/ln/concurrency/task.py,sha256=VS5keFI3Ct0fqCKbFl4kEWT5I2CgjIYizPU-S2YjGKo,2675
56
- lionagi/ln/concurrency/throttle.py,sha256=yUAM4hnone6VzlFEos0fWERkZU9YC4J6TncZL-MqkG4,2319
57
51
  lionagi/ln/concurrency/utils.py,sha256=MUWupnFtWxR15hWnligLZrS4Z1SAQ7j3cuCG08cK3GQ,431
58
52
  lionagi/ln/fuzzy/__init__.py,sha256=Py7hPV7uk5rPRGvQ4yPjMzXS32aQ7QVkO-mX69FfsMM,544
59
53
  lionagi/ln/fuzzy/_extract_json.py,sha256=rYHaK36yzRpie8qO-T7mZKOue2yqCLx3ixiuKhsaKvg,2224
60
54
  lionagi/ln/fuzzy/_fuzzy_json.py,sha256=S0lCkNvprn7XZHoYdRfzXueexSbjxTeLPkpyJ9IAO3A,3860
61
- lionagi/ln/fuzzy/_fuzzy_match.py,sha256=MBL2qB180MsGkIvhiHQpVObfikBFjcLcFWG9T6vLZQ0,5915
62
- lionagi/ln/fuzzy/_fuzzy_validate.py,sha256=kl-IUGA6O8rY2eKXSwMMTRX6YIV4986r9zd0djidr-o,5212
63
- lionagi/ln/fuzzy/_string_similarity.py,sha256=axgLjDgDfBT-soxZFU2iH2bZYmGePSzc9Mxl3WlOxAA,8718
64
- lionagi/ln/fuzzy/_to_dict.py,sha256=H9W6f5-QWR0_40kzKLf5_CMF4iUd1IRqBDwPmthsX5c,11844
55
+ lionagi/ln/fuzzy/_fuzzy_match.py,sha256=-rmYVjPtiAYaUAacQfhSwahVqQP03FBpfZrGFH7Zq98,5832
56
+ lionagi/ln/fuzzy/_fuzzy_validate.py,sha256=XuafNXflTerQrQYV0S6MrQHR3_6DuYBv6BAYTLSxgfI,5161
57
+ lionagi/ln/fuzzy/_string_similarity.py,sha256=D_pblW4ecDJNlsC7P3bV_54XgcXSvCLs7ZOb8hngT-Q,8796
58
+ lionagi/ln/fuzzy/_to_dict.py,sha256=Crz4sDIIcTZS3idxynWK7U4EdHvZooPDJIsOH3t6xgQ,12068
65
59
  lionagi/models/__init__.py,sha256=b7A4AaVGq4pZvYyTG8N_yvtRzwWJ8MxE9Y6mDZb8U0k,422
66
60
  lionagi/models/field_model.py,sha256=JdmCp2pmwoy5HuduF21ivqyvMaJ04CTXu6Un-AeSwLU,23652
67
61
  lionagi/models/hashable_model.py,sha256=oOqR3OJCU9cJfWHiG0WaEw0GMqfE2WTt4cy7WsAsiRg,829
@@ -93,9 +87,9 @@ lionagi/operations/instruct/instruct.py,sha256=7pxhyP5jxwpgqjmQNb1rnGF4QAVlbMENp
93
87
  lionagi/operations/interpret/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
94
88
  lionagi/operations/interpret/interpret.py,sha256=yl1NSp2iOm3dbycVLEcnV3absnqKoubfH15v6lQgySU,1500
95
89
  lionagi/operations/operate/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
96
- lionagi/operations/operate/operate.py,sha256=I20CwJGx-hxlZ3kmd0-Hh6kWbqCCA3-aJMR8hHHpzd4,7532
90
+ lionagi/operations/operate/operate.py,sha256=pLGuoZkiGBsltIfT4TAs2fjFLXp-Rk6TVf-UAJog5NU,7488
97
91
  lionagi/operations/parse/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
98
- lionagi/operations/parse/parse.py,sha256=gI6xbMdc7XDHYyfJRMlH4YBorxMmKhGSQZ2oHlrmULs,6590
92
+ lionagi/operations/parse/parse.py,sha256=1JutfUx1VLYXq1wvdDBswHlMPK6PyVVOt9Gju_3uvu4,6651
99
93
  lionagi/operations/plan/__init__.py,sha256=yGBPll6lOqVjadbTvDLGrTlMx3FfBW-e00z7AMvg7Uo,156
100
94
  lionagi/operations/plan/plan.py,sha256=qonV5kJjJCBAWfsvH7gqUj5Gyo-N-Nh_2dr-OZcDQ1Q,15315
101
95
  lionagi/operations/plan/prompt.py,sha256=GUNZ8RpHIa89D-_y7GK--Spg0JADI3K13sjf_w3a2mI,993
@@ -117,8 +111,8 @@ lionagi/protocols/forms/flow.py,sha256=t9Ycvmb-stj0rCyvXXwd7WBcDtuCCTEKYst2aqFDV
117
111
  lionagi/protocols/forms/form.py,sha256=B4903km_Ljz-OxYkb1ZT_cpHZSaAYYJpZMsffWlooo8,3062
118
112
  lionagi/protocols/forms/report.py,sha256=SvJJjOSCTfVuqK7AKaY8ldQIGJeSK2zoyPWUV41ge2c,1609
119
113
  lionagi/protocols/generic/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
120
- lionagi/protocols/generic/element.py,sha256=yD4SWNOGZsLTgxtz6TKtJfqkUvDmUH9wIH3Liw6QmmA,15839
121
- lionagi/protocols/generic/event.py,sha256=n5EraAJ5bPiwegTdkxsILs7-vFJwmnXhB2om4xMQnK0,6529
114
+ lionagi/protocols/generic/element.py,sha256=w0pxw_SvDaHOgEFecQgEFg9bcGg2abTDN1v2TOe-eAQ,15717
115
+ lionagi/protocols/generic/event.py,sha256=nAhGo1-6wYprB-o5I0XkqYz0F-3xb_cqfF79G1lygPI,6550
122
116
  lionagi/protocols/generic/log.py,sha256=AnPr2RweSZcJdxOK0KGb1eyvAPZmME3hEm9HraUoftQ,8212
123
117
  lionagi/protocols/generic/pile.py,sha256=rB13BzHhGHcJlijXmKNUdTS1WzcBzpMM1wycPv9ogk4,37090
124
118
  lionagi/protocols/generic/processor.py,sha256=uiNIldAYPEujuboLFyrIJADMlhRghy3H86hYintj5D4,11705
@@ -132,13 +126,13 @@ lionagi/protocols/mail/exchange.py,sha256=P1PcrFylIBeiQa8kox9H1qyJ4kjhUlbLiTUT8r
132
126
  lionagi/protocols/mail/mail.py,sha256=RB5CUft_4J85H9nM9g6aRXomTaqKwF5xVjJacPAhoa8,1356
133
127
  lionagi/protocols/mail/mailbox.py,sha256=RFQ3oi7n0ufRgeUoXwOC2Upvagf7vUspC7rTpASXNyA,2733
134
128
  lionagi/protocols/mail/manager.py,sha256=Ldk2Kj3Z_N1__q0xUXWshw31pVT9s4mNndoHYM_3dSU,6964
135
- lionagi/protocols/mail/package.py,sha256=qcKRWP5Lk3wTK_rJhRsXFQhWz0pb2Clcs7vJcMwgzzI,2661
129
+ lionagi/protocols/mail/package.py,sha256=Rhw8zsQ7qkbvZuS7UrIqbNPTp7SnbsdWUVLIug6ugoI,2659
136
130
  lionagi/protocols/messages/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
137
131
  lionagi/protocols/messages/action_request.py,sha256=-tG9ViTSiZ2beM0onE6C552H5oth-sHLHP6KsBV8OMk,6868
138
132
  lionagi/protocols/messages/action_response.py,sha256=SM3_vA9QPXz3Gc9uPhXm3zOXYheHZZGtl67Yff48Vu8,5272
139
133
  lionagi/protocols/messages/assistant_response.py,sha256=e7seqUyYCXwInQrHWhNwIf9y40hgP_mH_-9-juItflw,7121
140
134
  lionagi/protocols/messages/base.py,sha256=Ng1Q8yIIIFauUv53LnwDeyOrM-cSCfsHM1GwkxChf2o,2317
141
- lionagi/protocols/messages/instruction.py,sha256=Qpme1oSc406V3-F2iOyqC8TVT2GWVduZaoDfdGdBnDI,21127
135
+ lionagi/protocols/messages/instruction.py,sha256=HoPvxiYY_OPoIIExcVfZa4lgpVidFOlaL1GUSsw4FU4,21336
142
136
  lionagi/protocols/messages/manager.py,sha256=ABDiN-QULbfbSrHVlPe3kqBxr7e7sYoT49wHQMLiT6c,16897
143
137
  lionagi/protocols/messages/message.py,sha256=invP8Lu7bep_y5ve97LD9engQCHmhg7BhV5H3B0umvc,7941
144
138
  lionagi/protocols/messages/system.py,sha256=x0F1C57SFHaO2-Z9cy1QshYlxv8wjl7VppooaGKbMIg,4658
@@ -150,23 +144,24 @@ lionagi/protocols/messages/templates/instruction_message.jinja2,sha256=L-ptw5OHx
150
144
  lionagi/protocols/messages/templates/system_message.jinja2,sha256=JRKJ0aFpYfaXSFouKc_N4unZ35C3yZTOWhIrIdCB5qk,215
151
145
  lionagi/protocols/messages/templates/tool_schemas.jinja2,sha256=ozIaSDCRjIAhLyA8VM6S-YqS0w2NcctALSwx4LjDwII,126
152
146
  lionagi/protocols/operatives/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
153
- lionagi/protocols/operatives/operative.py,sha256=Y_prGR7aPQtO3ws91W_KkjJTVnb5lYkfwMKaEIN2FVU,13331
147
+ lionagi/protocols/operatives/operative.py,sha256=V7SvjQf9nT9GT3Ft36atrBSOKLfylGvwS2oeykbTCfk,13368
154
148
  lionagi/protocols/operatives/step.py,sha256=uF92QO2KZiY3YR1cxhrbD844VFidOKfmeQn2Fv637iY,9280
155
149
  lionagi/service/__init__.py,sha256=qcscXOKVQtDDQ7YV-_D9jcIABDkGaxAEsCKsBBtf4XE,992
156
- lionagi/service/imodel.py,sha256=ya406sf42-KRrKN4TJJLtI6wsKeM5hAhWr7Hubg7W0E,16371
150
+ lionagi/service/broadcaster.py,sha256=XvaUaBb6awcq-DJGVNJnnAIZUrrtOPnhWcgVgZTnGq8,1941
151
+ lionagi/service/imodel.py,sha256=kdoV3X_hwZ-PuHCtE3vDP-nfHr6pp-A4ilo_gwmDcaA,16386
157
152
  lionagi/service/manager.py,sha256=tN3p0kM7pg_CEs6wXK62_B_h49Q3nrU-9qniFhw2ABE,1164
158
153
  lionagi/service/rate_limited_processor.py,sha256=h2_F71aVeBrgZ0a7ARS8-8NDaAHvfWrLykI5QcNuYbk,6099
159
154
  lionagi/service/resilience.py,sha256=91RPFtQY4QyNga_nuSNLsbzNE26pXJMTAfLaQqVdvmg,18714
160
155
  lionagi/service/token_calculator.py,sha256=piTidArzUkIMCtOLC_HBLoZNYZcENQywgeKM31bxezM,6457
161
156
  lionagi/service/types.py,sha256=KxUM3m6LMPqIO3l1nNdaSJ8vt46ozOKWFZyI4LXBTRk,1532
162
157
  lionagi/service/connections/__init__.py,sha256=yHQZ7OJpCftd6CStYR8inbxjJydYdmv9kCvbUBhJ2zU,362
163
- lionagi/service/connections/api_calling.py,sha256=n_FA_Q8R7s0KsgsUE-obyVPB73UbOxTD2c_qpi9ngso,10110
158
+ lionagi/service/connections/api_calling.py,sha256=cTPK1dEJZMkcS5qEkC_pnQQzDeVFaoDY_fnCoPaMFA0,6000
164
159
  lionagi/service/connections/endpoint.py,sha256=0r4-8NPyAvLNey09BBsUr5KGJCXchBmVZm2pCe3Nbq4,15165
165
160
  lionagi/service/connections/endpoint_config.py,sha256=6sA06uCzriT6p0kFxhDCFH8N6V6MVp8ytlOw5ctBhDI,5169
166
161
  lionagi/service/connections/header_factory.py,sha256=IYeTQQk7r8FXcdhmW7orCxHjNO-Nb1EOXhgNK7CAp-I,1821
167
162
  lionagi/service/connections/match_endpoint.py,sha256=QlOw9CbR1peExP-b-XlkRpqqGIksfNefI2EZCw9P7_E,2575
168
163
  lionagi/service/connections/mcp/__init__.py,sha256=3lzOakDoBWmMaNnT2g-YwktPKa_Wme4lnPRSmOQfayY,105
169
- lionagi/service/connections/mcp/wrapper.py,sha256=fqH2FtZa0mAehXTAfFZrxUvlj-WUSZSUWlcZb1XjkUc,9322
164
+ lionagi/service/connections/mcp/wrapper.py,sha256=M7k-XH7x1__SZ0pq7ddnM0_G0t5ZZD3c8O_AbldkSjA,9158
170
165
  lionagi/service/connections/providers/__init__.py,sha256=3lzOakDoBWmMaNnT2g-YwktPKa_Wme4lnPRSmOQfayY,105
171
166
  lionagi/service/connections/providers/anthropic_.py,sha256=vok8mIyFiuV3K83tOjdYfruA6cv1h_57ML6RtpuW-bU,3157
172
167
  lionagi/service/connections/providers/claude_code_cli.py,sha256=kqEOnCUOOh2O_3NGi6W7r-gdLsbW-Jcp11tm30VEv4Q,4455
@@ -176,11 +171,12 @@ lionagi/service/connections/providers/oai_.py,sha256=3x5d6Ei1hKu8Mix0N2V2K21O9dd
176
171
  lionagi/service/connections/providers/ollama_.py,sha256=oqYLWn81KrWoQgId4e4GD_bgrDjQLPOmhqlc5uBuFGk,4569
177
172
  lionagi/service/connections/providers/perplexity_.py,sha256=1GMmxAXsKGsB-xlqxO6hW-QdqoqkU2705NLyejetFSw,1646
178
173
  lionagi/service/connections/providers/types.py,sha256=omKWbmJYu_ozK_qJLcxQezVcauXTqhp4ClOWAyENEFU,807
179
- lionagi/service/hooks/__init__.py,sha256=Ayllxjd1fR_6NByZlE2zslQ7I0Od-s6-OVe0mzZIeu4,569
180
- lionagi/service/hooks/_types.py,sha256=AJKODnj0bWmXZrcMgIdZpJNTgaSCzouCheiQXPpxetg,1169
174
+ lionagi/service/hooks/__init__.py,sha256=WCfzc-Aco5PkKufDMvSYxbrLqlEvmOsaZELlWKAuG2w,464
175
+ lionagi/service/hooks/_types.py,sha256=piByW73lJ9sSfPFOO9NWhQ9aogyDBS6936jvvVXqMZw,1255
181
176
  lionagi/service/hooks/_utils.py,sha256=51dqdRrln2aJCkCz8g4L6Ik_v9atdFHPzjm9ASu6OvA,2560
182
177
  lionagi/service/hooks/hook_event.py,sha256=NH3PdoWwAt96GQQi99TjqAu-zU-zTgWz6pDdIaKureE,2418
183
178
  lionagi/service/hooks/hook_registry.py,sha256=IEJF3UpLCmTXkd-7daFIo_p0CVTuAoA6Z8gzXkMIGsg,7870
179
+ lionagi/service/hooks/hooked_event.py,sha256=GBM-d8OdSoB59pmmH7oFyO-bLxpJjzKuJLpVKgKLNkM,4339
184
180
  lionagi/service/third_party/README.md,sha256=qFjWnI8rmLivIyr6Tc-hRZh-rQwntROp76af4MBNJJc,2214
185
181
  lionagi/service/third_party/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
182
  lionagi/service/third_party/anthropic_models.py,sha256=oqSPSlcayYG-fS5BLiLeTtkrpaxgkPhEK_YgneumrOo,4004
@@ -189,15 +185,15 @@ lionagi/service/third_party/exa_models.py,sha256=G_hnekcy-DillPLzMoDQ8ZisVAL8Mp7
189
185
  lionagi/service/third_party/openai_model_names.py,sha256=C44tnqexgc4ZU2-3I_sn5d688hf3WWx-25xBd50bvas,5121
190
186
  lionagi/service/third_party/pplx_models.py,sha256=-EhyJgOWR6rzSv3zczUtk80X6c19p18Dg9KC6l8BFRQ,6473
191
187
  lionagi/session/__init__.py,sha256=kDypY6L3kGPnatAw7YNQAykgg-9MlIBnlhHExaXvt-c,202
192
- lionagi/session/branch.py,sha256=Gz9QOhZ2e6UJtTTkqY4P1Oa0UnjXHwIJTP7YCpcbA9o,65064
188
+ lionagi/session/branch.py,sha256=3DnAp2UmU-41bWn_So9YLo-CJHYc7VdpcNKW6RHmE_A,59915
193
189
  lionagi/session/prompts.py,sha256=GPr0jibyAAqS3awDzGC8SoCL6aWJLLCCbXY0JUuxOC0,3170
194
- lionagi/session/session.py,sha256=mPUUm-NG9UtUdn98UqIGRkxcZoFswrob70tVb_QZSf8,14536
190
+ lionagi/session/session.py,sha256=WDul2I0bODztI1nNFlgr33aOt1AFqCJqH2FOdT0ADFQ,12937
195
191
  lionagi/tools/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
196
192
  lionagi/tools/base.py,sha256=hEGnE4MD0CM4UqnF0xsDRKB0aM-pyrTFHl8utHhyJLU,1897
197
193
  lionagi/tools/types.py,sha256=XtJLY0m-Yi_ZLWhm0KycayvqMCZd--HxfQ0x9vFUYDE,230
198
194
  lionagi/tools/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
199
- lionagi/tools/file/reader.py,sha256=2YKgU3VKo76zfL_buDAUQJoPLC56f6WJ4_mdJjlMDIM,9509
200
- lionagi-0.17.4.dist-info/METADATA,sha256=mVBP2MOOqq5vysEk8mmDMc76OpXbNuIFoqSYjBVyhDI,23432
201
- lionagi-0.17.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
202
- lionagi-0.17.4.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
203
- lionagi-0.17.4.dist-info/RECORD,,
195
+ lionagi/tools/file/reader.py,sha256=Q9x1UP7YmBqN53e1kUN68OmIs-D1m9EM9VVbWfM35js,9658
196
+ lionagi-0.17.6.dist-info/METADATA,sha256=yH4RA6fcmW5nqU8Y4rbA7OIUsdUfRJEU_cly2QsMj1U,23448
197
+ lionagi-0.17.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
198
+ lionagi-0.17.6.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
199
+ lionagi-0.17.6.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- def check_docling_available():
2
- try:
3
- from docling.document_converter import DocumentConverter # noqa: F401
4
-
5
- return True
6
- except Exception:
7
- return ImportError(
8
- "The 'docling' package is required for this feature. "
9
- "Please install it via 'pip install lionagi[reader]'."
10
- )