lionagi 0.14.3__py3-none-any.whl → 0.14.5__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/utils.py CHANGED
@@ -43,9 +43,12 @@ from typing import (
43
43
  overload,
44
44
  )
45
45
 
46
+ import anyio
46
47
  from pydantic import BaseModel, model_validator
47
48
  from pydantic_core import PydanticUndefinedType
48
49
 
50
+ from .libs.concurrency import Lock as ConcurrencyLock
51
+ from .libs.concurrency import Semaphore, create_task_group
49
52
  from .settings import Settings
50
53
 
51
54
  R = TypeVar("R")
@@ -612,32 +615,6 @@ class CallParams(Params):
612
615
  )
613
616
 
614
617
 
615
- class LCallParams(CallParams):
616
- func: Any = None
617
- sanitize_input: bool = False
618
- unique_input: bool = False
619
- flatten: bool = False
620
- dropna: bool = False
621
- unique_output: bool = False
622
- flatten_tuple_set: bool = False
623
-
624
- def __call__(self, input_: Any, func=None):
625
- if self.func is None and func is None:
626
- raise ValueError("a sync func must be provided")
627
- return lcall(
628
- input_,
629
- func or self.func,
630
- *self.args,
631
- sanitize_input=self.sanitize_input,
632
- unique_input=self.unique_input,
633
- flatten=self.flatten,
634
- dropna=self.dropna,
635
- unique_output=self.unique_output,
636
- flatten_tuple_set=self.flatten_tuple_set,
637
- **self.kwargs,
638
- )
639
-
640
-
641
618
  async def alcall(
642
619
  input_: list[Any],
643
620
  func: Callable[..., T],
@@ -651,7 +628,6 @@ async def alcall(
651
628
  backoff_factor: float = 1,
652
629
  retry_default: Any = UNDEFINED,
653
630
  retry_timeout: float | None = None,
654
- retry_timing: bool = False,
655
631
  max_concurrent: int | None = None,
656
632
  throttle_period: float | None = None,
657
633
  flatten: bool = False,
@@ -659,7 +635,7 @@ async def alcall(
659
635
  unique_output: bool = False,
660
636
  flatten_tuple_set: bool = False,
661
637
  **kwargs: Any,
662
- ) -> list[T] | list[tuple[T, float]]:
638
+ ) -> list[T]:
663
639
  """
664
640
  Asynchronously apply a function to each element of a list, with optional input sanitization,
665
641
  retries, timeout, and output processing.
@@ -675,7 +651,6 @@ async def alcall(
675
651
  backoff_factor (float): Multiplier for delay after each retry.
676
652
  retry_default (Any): Default value if all retries fail.
677
653
  retry_timeout (float | None): Timeout for each function call.
678
- retry_timing (bool): If True, return (result, duration) tuples.
679
654
  max_concurrent (int | None): Maximum number of concurrent operations.
680
655
  throttle_period (float | None): Delay after each completed operation.
681
656
  flatten (bool): Flatten the final result if True.
@@ -685,7 +660,7 @@ async def alcall(
685
660
  **kwargs: Additional arguments passed to func.
686
661
 
687
662
  Returns:
688
- list[T] or list[tuple[T, float]]: The processed results, or results with timing if retry_timing is True.
663
+ list[T]: The processed results.
689
664
 
690
665
  Raises:
691
666
  asyncio.TimeoutError: If a call times out and no default is provided.
@@ -734,9 +709,9 @@ async def alcall(
734
709
 
735
710
  # Optional initial delay before processing
736
711
  if initial_delay:
737
- await asyncio.sleep(initial_delay)
712
+ await anyio.sleep(initial_delay)
738
713
 
739
- semaphore = asyncio.Semaphore(max_concurrent) if max_concurrent else None
714
+ semaphore = Semaphore(max_concurrent) if max_concurrent else None
740
715
  throttle_delay = throttle_period or 0
741
716
  coro_func = is_coro_func(func)
742
717
 
@@ -744,137 +719,92 @@ async def alcall(
744
719
  if coro_func:
745
720
  # Async function
746
721
  if retry_timeout is not None:
747
- return await asyncio.wait_for(
748
- func(item, **kwargs), timeout=retry_timeout
749
- )
722
+ with anyio.move_on_after(retry_timeout) as cancel_scope:
723
+ result = await func(item, **kwargs)
724
+ if cancel_scope.cancelled_caught:
725
+ raise asyncio.TimeoutError(
726
+ f"Function call timed out after {retry_timeout}s"
727
+ )
728
+ return result
750
729
  else:
751
730
  return await func(item, **kwargs)
752
731
  else:
753
732
  # Sync function
754
733
  if retry_timeout is not None:
755
- return await asyncio.wait_for(
756
- asyncio.to_thread(func, item, **kwargs),
757
- timeout=retry_timeout,
758
- )
734
+ with anyio.move_on_after(retry_timeout) as cancel_scope:
735
+ result = await anyio.to_thread.run_sync(
736
+ func, item, **kwargs
737
+ )
738
+ if cancel_scope.cancelled_caught:
739
+ raise asyncio.TimeoutError(
740
+ f"Function call timed out after {retry_timeout}s"
741
+ )
742
+ return result
759
743
  else:
760
- return func(item, **kwargs)
744
+ return await anyio.to_thread.run_sync(func, item, **kwargs)
761
745
 
762
746
  async def execute_task(i: Any, index: int) -> Any:
763
- start_time = asyncio.get_running_loop().time()
764
747
  attempts = 0
765
748
  current_delay = retry_delay
766
749
  while True:
767
750
  try:
768
751
  result = await call_func(i)
769
- if retry_timing:
770
- end_time = asyncio.get_running_loop().time()
771
- return index, result, end_time - start_time
772
- else:
773
- return index, result
774
- except asyncio.CancelledError as e:
775
- raise e
752
+ return index, result
753
+ except anyio.get_cancelled_exc_class():
754
+ raise
776
755
 
777
756
  except Exception:
778
757
  attempts += 1
779
758
  if attempts <= num_retries:
780
759
  if current_delay:
781
- await asyncio.sleep(current_delay)
760
+ await anyio.sleep(current_delay)
782
761
  current_delay *= backoff_factor
783
762
  # Retry loop continues
784
763
  else:
785
764
  # Exhausted retries
786
765
  if retry_default is not UNDEFINED:
787
- # Return default if provided
788
- if retry_timing:
789
- end_time = asyncio.get_running_loop().time()
790
- duration = end_time - (start_time or end_time)
791
- return index, retry_default, duration
792
- else:
793
- return index, retry_default
766
+ return index, retry_default
794
767
  # No default, re-raise
795
768
  raise
796
769
 
797
770
  async def task_wrapper(item: Any, idx: int) -> Any:
798
771
  if semaphore:
799
772
  async with semaphore:
800
- return await execute_task(item, idx)
773
+ result = await execute_task(item, idx)
801
774
  else:
802
- return await execute_task(item, idx)
775
+ result = await execute_task(item, idx)
803
776
 
804
- # Create tasks
805
- tasks = [task_wrapper(item, idx) for idx, item in enumerate(input_)]
777
+ return result
806
778
 
807
- # Collect results as they complete
779
+ # Use task group for structured concurrency
808
780
  results = []
809
- for coro in asyncio.as_completed(tasks):
810
- res = await coro
811
- results.append(res)
812
- if throttle_delay:
813
- await asyncio.sleep(throttle_delay)
781
+ results_lock = ConcurrencyLock() # Protect results list
814
782
 
815
- # Sort by original index
816
- results.sort(key=lambda x: x[0])
783
+ async def run_and_store(item: Any, idx: int):
784
+ result = await task_wrapper(item, idx)
785
+ async with results_lock:
786
+ results.append(result)
817
787
 
818
- if retry_timing:
819
- # (index, result, duration)
820
- filtered = [
821
- (r[1], r[2]) for r in results if not dropna or r[1] is not None
822
- ]
823
- return filtered
824
- else:
825
- # (index, result)
826
- output_list = [r[1] for r in results]
827
- return to_list(
828
- output_list,
829
- flatten=flatten,
830
- dropna=dropna,
831
- unique=unique_output,
832
- flatten_tuple_set=flatten_tuple_set,
833
- )
788
+ # Execute all tasks using task group
789
+ async with create_task_group() as tg:
790
+ for idx, item in enumerate(input_):
791
+ await tg.start_soon(run_and_store, item, idx)
792
+ # Apply throttle delay between starting tasks
793
+ if throttle_delay and idx < len(input_) - 1:
794
+ await anyio.sleep(throttle_delay)
834
795
 
796
+ # Sort by original index
797
+ results.sort(key=lambda x: x[0])
835
798
 
836
- class ALCallParams(CallParams):
837
- func: Any = None
838
- sanitize_input: bool = False
839
- unique_input: bool = False
840
- num_retries: int = 0
841
- initial_delay: float = 0
842
- retry_delay: float = 0
843
- backoff_factor: float = 1
844
- retry_default: Any = UNDEFINED
845
- retry_timeout: float | None = None
846
- retry_timing: bool = False
847
- max_concurrent: int | None = None
848
- throttle_period: float | None = None
849
- flatten: bool = False
850
- dropna: bool = False
851
- unique_output: bool = False
852
- flatten_tuple_set: bool = False
853
-
854
- async def __call__(self, input_: Any, func=None):
855
- if self.func is None and func is None:
856
- raise ValueError("a sync/async func must be provided")
857
- return await alcall(
858
- input_,
859
- func or self.func,
860
- *self.args,
861
- sanitize_input=self.sanitize_input,
862
- unique_input=self.unique_input,
863
- num_retries=self.num_retries,
864
- initial_delay=self.initial_delay,
865
- retry_delay=self.retry_delay,
866
- backoff_factor=self.backoff_factor,
867
- retry_default=self.retry_default,
868
- retry_timeout=self.retry_timeout,
869
- retry_timing=self.retry_timing,
870
- max_concurrent=self.max_concurrent,
871
- throttle_period=self.throttle_period,
872
- flatten=self.flatten,
873
- dropna=self.dropna,
874
- unique_output=self.unique_output,
875
- flatten_tuple_set=self.flatten_tuple_set,
876
- **self.kwargs,
877
- )
799
+ # (index, result)
800
+ output_list = [r[1] for r in results]
801
+ return to_list(
802
+ output_list,
803
+ flatten=flatten,
804
+ dropna=dropna,
805
+ unique=unique_output,
806
+ flatten_tuple_set=flatten_tuple_set,
807
+ )
878
808
 
879
809
 
880
810
  async def bcall(
@@ -891,7 +821,6 @@ async def bcall(
891
821
  backoff_factor: float = 1,
892
822
  retry_default: Any = UNDEFINED,
893
823
  retry_timeout: float | None = None,
894
- retry_timing: bool = False,
895
824
  max_concurrent: int | None = None,
896
825
  throttle_period: float | None = None,
897
826
  flatten: bool = False,
@@ -915,7 +844,6 @@ async def bcall(
915
844
  backoff_factor=backoff_factor,
916
845
  retry_default=retry_default,
917
846
  retry_timeout=retry_timeout,
918
- retry_timing=retry_timing,
919
847
  max_concurrent=max_concurrent,
920
848
  throttle_period=throttle_period,
921
849
  flatten=flatten,
@@ -926,52 +854,6 @@ async def bcall(
926
854
  )
927
855
 
928
856
 
929
- class BCallParams(CallParams):
930
- func: Any = None
931
- batch_size: int
932
- sanitize_input: bool = False
933
- unique_input: bool = False
934
- num_retries: int = 0
935
- initial_delay: float = 0
936
- retry_delay: float = 0
937
- backoff_factor: float = 1
938
- retry_default: Any = UNDEFINED
939
- retry_timeout: float | None = None
940
- retry_timing: bool = False
941
- max_concurrent: int | None = None
942
- throttle_period: float | None = None
943
- flatten: bool = False
944
- dropna: bool = False
945
- unique_output: bool = False
946
- flatten_tuple_set: bool = False
947
-
948
- async def __call__(self, input_, func=None):
949
- if self.func is None and func is None:
950
- raise ValueError("a sync/async func must be provided")
951
- return await bcall(
952
- input_,
953
- func or self.func,
954
- *self.args,
955
- batch_size=self.batch_size,
956
- sanitize_input=self.sanitize_input,
957
- unique_input=self.unique_input,
958
- num_retries=self.num_retries,
959
- initial_delay=self.initial_delay,
960
- retry_delay=self.retry_delay,
961
- backoff_factor=self.backoff_factor,
962
- retry_default=self.retry_default,
963
- retry_timeout=self.retry_timeout,
964
- retry_timing=self.retry_timing,
965
- max_concurrent=self.max_concurrent,
966
- throttle_period=self.throttle_period,
967
- flatten=self.flatten,
968
- dropna=self.dropna,
969
- unique_output=self.unique_output,
970
- flatten_tuple_set=self.flatten_tuple_set,
971
- **self.kwargs,
972
- )
973
-
974
-
975
857
  def create_path(
976
858
  directory: Path | str,
977
859
  filename: str,
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.14.3"
1
+ __version__ = "0.14.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.14.3
3
+ Version: 0.14.5
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>, Liangbingyan Luo <llby_luo@outlook.com>
6
6
  License: Apache License
@@ -224,8 +224,7 @@ Requires-Dist: aiohttp>=3.12.0
224
224
  Requires-Dist: anyio>=4.8.0
225
225
  Requires-Dist: backoff>=2.2.1
226
226
  Requires-Dist: jinja2>=3.1.0
227
- Requires-Dist: json-repair>=0.47.8
228
- Requires-Dist: matplotlib>=3.9.0
227
+ Requires-Dist: json-repair>=0.40.0
229
228
  Requires-Dist: pillow>=11.0.0
230
229
  Requires-Dist: psutil>=7.0.0
231
230
  Requires-Dist: pydantic-settings>=2.8.0
@@ -239,6 +238,8 @@ Requires-Dist: claude-code-sdk>=0.0.14; extra == 'all'
239
238
  Requires-Dist: datamodel-code-generator>=0.31.2; extra == 'all'
240
239
  Requires-Dist: docling>=2.15.1; extra == 'all'
241
240
  Requires-Dist: fastmcp>=2.10.5; extra == 'all'
241
+ Requires-Dist: matplotlib>=3.7.0; extra == 'all'
242
+ Requires-Dist: networkx>=3.0.0; extra == 'all'
242
243
  Requires-Dist: ollama>=0.4.0; extra == 'all'
243
244
  Requires-Dist: pydapter[postgres]; extra == 'all'
244
245
  Requires-Dist: rich>=13.0.0; extra == 'all'
@@ -248,6 +249,9 @@ Provides-Extra: docs
248
249
  Requires-Dist: furo>=2024.8.6; extra == 'docs'
249
250
  Requires-Dist: sphinx-autobuild>=2024.10.3; extra == 'docs'
250
251
  Requires-Dist: sphinx>=8.1.3; extra == 'docs'
252
+ Provides-Extra: graph
253
+ Requires-Dist: matplotlib>=3.7.0; extra == 'graph'
254
+ Requires-Dist: networkx>=3.0.0; extra == 'graph'
251
255
  Provides-Extra: lint
252
256
  Requires-Dist: black[jupyter]>=24.10.0; extra == 'lint'
253
257
  Requires-Dist: isort>=5.13.2; extra == 'lint'
@@ -5,10 +5,10 @@ lionagi/_types.py,sha256=9cKKDMl0l5DLGhHzDAtnlKT2XqLv1IeynmhFYBno2_k,185
5
5
  lionagi/config.py,sha256=Dxs5FA9UCv1YX5H54qOJcPsDrIF9wFokWEPZ212eH-k,3715
6
6
  lionagi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  lionagi/settings.py,sha256=HDuKCEJCpc4HudKodBnhoQUGuTGhRHdlIFhbtf3VBtY,1633
8
- lionagi/utils.py,sha256=8zCdJHKbDJv2WSzAAiFnMSpvfyZb9RnmfSNaMEqdTJE,79003
9
- lionagi/version.py,sha256=EmjQZZiU5tIcoRQexzHL_v2ve9LTA9gkL4YDPO6J0I0,23
8
+ lionagi/utils.py,sha256=n2aUMSnLLgy7HWFlfzDV1OqMDbatLNX0QYc7jIjXwQA,75023
9
+ lionagi/version.py,sha256=NAUBX_trzQBx5ZMxPGVgGrbbz9R2O-FqcIBv7OYAuIg,23
10
10
  lionagi/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- lionagi/adapters/async_postgres_adapter.py,sha256=ht8VHdBISe0EYXeW22BpR3NthcF93D-KOx3dVqGuIUY,6452
11
+ lionagi/adapters/async_postgres_adapter.py,sha256=Kf2YCzwRqKpEHY3GQCXEiMl201CCIkDvXcvddwZNkkE,12723
12
12
  lionagi/adapters/postgres_model_adapter.py,sha256=e_wfJNyihbpLCXuAs_W9tbLoMXAXbAXtkQDaHfqWz3o,4555
13
13
  lionagi/fields/__init__.py,sha256=yrn9NDAM6_v73kK7aJeb-Pvqigeu8WASaV-My-6CDsc,939
14
14
  lionagi/fields/action.py,sha256=OziEpbaUeEVo34KdtbzDxXJBgkf3QLxlcKIQAfHe4O0,5791
@@ -20,12 +20,13 @@ lionagi/fields/reason.py,sha256=eTGI9jDaaZJInUjCR9lEpYvw2_1UUF-xzCVCFP3-JRI,1437
20
20
  lionagi/fields/research.py,sha256=eEPKocx8eQy2E9FExRWVIo6MK_xvmwBAoRZciBY3RG0,1421
21
21
  lionagi/libs/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
22
22
  lionagi/libs/parse.py,sha256=JRS3bql0InHJqATnAatl-hQv4N--XXw4P77JHhTFnrc,1011
23
- lionagi/libs/concurrency/__init__.py,sha256=AZfvtBAnK4nNRQrqHU9NCMYm6_qjMEWnp4ylX3_hkso,658
23
+ lionagi/libs/concurrency/__init__.py,sha256=huQR4vk3l7mGyoYiGtsjF06xP_5fo9vgKqgB9Naq6PE,1185
24
24
  lionagi/libs/concurrency/cancel.py,sha256=21KdFjLq9HIq6MpWVE-5KrrU0e1nehmK-ZETGNjTf6Y,4028
25
25
  lionagi/libs/concurrency/errors.py,sha256=FhLgXGFSbKZYPNfXjdnkV-0ShPF_S34RBLyTO_Pk5C8,938
26
- lionagi/libs/concurrency/patterns.py,sha256=1_o_UsYaWF38YzE6H29-bMdsyhtgzhdgMz9-9LRfdQE,7857
27
- lionagi/libs/concurrency/primitives.py,sha256=k9YQAbO6SFFb2cI-PYRZiKN1FhtOADCtyZWdEH9s6to,6578
28
- lionagi/libs/concurrency/task.py,sha256=zHtgzzenHVTfyk08azHlPBrHAv67onHO3p2DxwVLoiU,3122
26
+ lionagi/libs/concurrency/patterns.py,sha256=dlC7nhIYE-D5VySNAPsd6PYYlORRAqNX50oKJRR1PO8,7796
27
+ lionagi/libs/concurrency/primitives.py,sha256=fgml37nggaEGuvAJHQY6-rpSuAuei56YVSjTlIieM2o,8996
28
+ lionagi/libs/concurrency/resource_tracker.py,sha256=52Rq7yMWK7DlebBW90imSjYeEAp8Gp9nL0dG2PD8Ivs,5464
29
+ lionagi/libs/concurrency/task.py,sha256=nVts_yPylkZVSk3l3I4MkUdC7rhoN2qQeFfrsvekVgE,3146
29
30
  lionagi/libs/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
30
31
  lionagi/libs/file/chunk.py,sha256=XeVMwM33JF0X1W6udz_nhlb3DCevA_EK6A50Hn_e5SY,9300
31
32
  lionagi/libs/file/concat.py,sha256=YSauXVBL3WWx5Mvpn208Cj7q9TLt_aq-0M9J1fm-ins,3864
@@ -142,8 +143,8 @@ lionagi/protocols/generic/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGv
142
143
  lionagi/protocols/generic/element.py,sha256=Eaij2YpTWsGk28Tqjazmjmc_tOnalH7_iGFZrL6QJb4,14420
143
144
  lionagi/protocols/generic/event.py,sha256=InjBd2K9aSYxgai1c20d4jaJOkEx5VGFfb7iZbiMiNA,5200
144
145
  lionagi/protocols/generic/log.py,sha256=vepclOaY3fdR1QgFDj9usOffsx9T-9PbgwXjTvm6twQ,7441
145
- lionagi/protocols/generic/pile.py,sha256=sSj999xPf9pAKxa3TgB6Wc7xGrY4sMYNYtIk-k9TDhw,30362
146
- lionagi/protocols/generic/processor.py,sha256=GQ_j_5f4UE-jJeqIJ9L2NdicpZnu50DSP1mvxlc7O_4,10381
146
+ lionagi/protocols/generic/pile.py,sha256=-eF7ojrg65MCNGAmogGehDNip1o6jPIU6nXL9LJjMGA,29984
147
+ lionagi/protocols/generic/processor.py,sha256=c_a7HB9WAaCY-HoI19YyStef8WOXcDj9UeiQb5bz_TM,11759
147
148
  lionagi/protocols/generic/progression.py,sha256=qlITq1qzV119iR5qR__fBAzV489S7d4t20E8uDRicEw,15189
148
149
  lionagi/protocols/graph/__init__.py,sha256=UPu3OmUpjSgX2aBuBJUdG2fppGlfqAH96hU0qIMBMp0,253
149
150
  lionagi/protocols/graph/edge.py,sha256=YxSGj4w_fG7khm-zpKduuK5fJzhJDx23JhU1dZp29d8,5241
@@ -177,7 +178,7 @@ lionagi/protocols/operatives/step.py,sha256=PHKehsJESx0I2PnWQG8lHgX7mPp3jX1eiLAQ
177
178
  lionagi/service/__init__.py,sha256=DMGXIqPsmut9H5GT0ZeSzQIzYzzPwI-2gLXydpbwiV8,21
178
179
  lionagi/service/imodel.py,sha256=jE1Y3JzGwJZesHQtRSadVTAHA2TGdBAwfmzQoOA5Meg,12651
179
180
  lionagi/service/manager.py,sha256=tN3p0kM7pg_CEs6wXK62_B_h49Q3nrU-9qniFhw2ABE,1164
180
- lionagi/service/rate_limited_processor.py,sha256=MUgMgcOXFbzLmQmDyKxnvQv0M06kzJI9rJXwf5WLVDU,5228
181
+ lionagi/service/rate_limited_processor.py,sha256=JhkuzJMHUCdndkRbAUf9wUQI9zOw-dutRy_nHf8EE5I,6101
181
182
  lionagi/service/resilience.py,sha256=uYJYZQ9M-tje8ME3vJmYabXwKHF1c3Ij4-WrdCwogcs,18742
182
183
  lionagi/service/token_calculator.py,sha256=piTidArzUkIMCtOLC_HBLoZNYZcENQywgeKM31bxezM,6457
183
184
  lionagi/service/types.py,sha256=6zavqBxK1Fj0nB9eZgJn3JICxmdT-n0nn8YWZFzM5LU,508
@@ -202,7 +203,7 @@ lionagi/service/third_party/exa_models.py,sha256=G_hnekcy-DillPLzMoDQ8ZisVAL8Mp7
202
203
  lionagi/service/third_party/openai_models.py,sha256=sF-fQ726CnaDBgLY_r2NdPqc3GicPKhZjh5F8IfjBO0,501904
203
204
  lionagi/service/third_party/pplx_models.py,sha256=Nkm1ftESBa_NwP9ITBUNqLmAZ3Jh92aL732g_i6T8LQ,5947
204
205
  lionagi/session/__init__.py,sha256=kDypY6L3kGPnatAw7YNQAykgg-9MlIBnlhHExaXvt-c,202
205
- lionagi/session/branch.py,sha256=bMNZQhCB7s_vWCOqQ3X1w2gZ9mhkDUMf21OvJGMWOyM,69713
206
+ lionagi/session/branch.py,sha256=Bm3EzkE0y6UkSGeZUx70r9YY6T7x7MQiEtibBCNFW9A,69496
206
207
  lionagi/session/prompts.py,sha256=GPr0jibyAAqS3awDzGC8SoCL6aWJLLCCbXY0JUuxOC0,3170
207
208
  lionagi/session/session.py,sha256=4zPB2E2yn7JcdlAkh757pmG6tjobvlryvvVRCO7uCW0,10795
208
209
  lionagi/tools/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
@@ -211,7 +212,7 @@ lionagi/tools/types.py,sha256=XtJLY0m-Yi_ZLWhm0KycayvqMCZd--HxfQ0x9vFUYDE,230
211
212
  lionagi/tools/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
212
213
  lionagi/tools/file/reader.py,sha256=0TdnfVGVCKuM58MmGM-NyVjhU9BFoitkNYEepdc0z_Y,9529
213
214
  lionagi/tools/memory/tools.py,sha256=zTGBenVsF8Wuh303kWntmQSGlAFKonHNdh5ePuQ26KE,15948
214
- lionagi-0.14.3.dist-info/METADATA,sha256=5sFFuqBarq1tD9bZzUJAnEgofc3AInZRecSXm8wsTQM,21051
215
- lionagi-0.14.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
216
- lionagi-0.14.3.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
217
- lionagi-0.14.3.dist-info/RECORD,,
215
+ lionagi-0.14.5.dist-info/METADATA,sha256=lrwijIFHxQRurFu-fEnD5n0-bx23rd2t8hIrpl6Tikg,21236
216
+ lionagi-0.14.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
217
+ lionagi-0.14.5.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
218
+ lionagi-0.14.5.dist-info/RECORD,,