lionagi 0.0.306__py3-none-any.whl → 0.0.308__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/__init__.py +2 -5
- lionagi/core/__init__.py +7 -5
- lionagi/core/agent/__init__.py +3 -0
- lionagi/core/agent/base_agent.py +10 -12
- lionagi/core/branch/__init__.py +4 -0
- lionagi/core/branch/base_branch.py +81 -81
- lionagi/core/branch/branch.py +16 -28
- lionagi/core/branch/branch_flow_mixin.py +3 -7
- lionagi/core/branch/executable_branch.py +86 -56
- lionagi/core/branch/util.py +77 -162
- lionagi/core/{flow/direct → direct}/__init__.py +1 -1
- lionagi/core/{flow/direct/predict.py → direct/parallel_predict.py} +39 -17
- lionagi/core/direct/parallel_react.py +0 -0
- lionagi/core/direct/parallel_score.py +0 -0
- lionagi/core/direct/parallel_select.py +0 -0
- lionagi/core/direct/parallel_sentiment.py +0 -0
- lionagi/core/direct/predict.py +174 -0
- lionagi/core/{flow/direct → direct}/react.py +2 -2
- lionagi/core/{flow/direct → direct}/score.py +28 -23
- lionagi/core/{flow/direct → direct}/select.py +48 -45
- lionagi/core/direct/utils.py +83 -0
- lionagi/core/flow/monoflow/ReAct.py +6 -5
- lionagi/core/flow/monoflow/__init__.py +9 -0
- lionagi/core/flow/monoflow/chat.py +10 -10
- lionagi/core/flow/monoflow/chat_mixin.py +11 -10
- lionagi/core/flow/monoflow/followup.py +6 -5
- lionagi/core/flow/polyflow/__init__.py +1 -0
- lionagi/core/flow/polyflow/chat.py +15 -3
- lionagi/core/mail/mail_manager.py +18 -19
- lionagi/core/mail/schema.py +5 -4
- lionagi/core/messages/schema.py +18 -20
- lionagi/core/prompt/__init__.py +0 -0
- lionagi/core/prompt/prompt_template.py +0 -0
- lionagi/core/schema/__init__.py +2 -2
- lionagi/core/schema/action_node.py +11 -3
- lionagi/core/schema/base_mixin.py +56 -59
- lionagi/core/schema/base_node.py +34 -37
- lionagi/core/schema/condition.py +24 -0
- lionagi/core/schema/data_logger.py +96 -99
- lionagi/core/schema/data_node.py +19 -19
- lionagi/core/schema/prompt_template.py +0 -0
- lionagi/core/schema/structure.py +171 -169
- lionagi/core/session/__init__.py +1 -3
- lionagi/core/session/session.py +196 -214
- lionagi/core/tool/tool_manager.py +95 -103
- lionagi/integrations/__init__.py +1 -3
- lionagi/integrations/bridge/langchain_/documents.py +17 -18
- lionagi/integrations/bridge/langchain_/langchain_bridge.py +14 -14
- lionagi/integrations/bridge/llamaindex_/llama_index_bridge.py +22 -22
- lionagi/integrations/bridge/llamaindex_/node_parser.py +12 -12
- lionagi/integrations/bridge/llamaindex_/reader.py +11 -11
- lionagi/integrations/bridge/llamaindex_/textnode.py +7 -7
- lionagi/integrations/config/openrouter_configs.py +0 -1
- lionagi/integrations/provider/oai.py +26 -26
- lionagi/integrations/provider/services.py +38 -38
- lionagi/libs/__init__.py +34 -1
- lionagi/libs/ln_api.py +211 -221
- lionagi/libs/ln_async.py +53 -60
- lionagi/libs/ln_convert.py +118 -120
- lionagi/libs/ln_dataframe.py +32 -33
- lionagi/libs/ln_func_call.py +334 -342
- lionagi/libs/ln_nested.py +99 -107
- lionagi/libs/ln_parse.py +161 -165
- lionagi/libs/sys_util.py +52 -52
- lionagi/tests/test_core/test_session.py +254 -266
- lionagi/tests/test_core/test_session_base_util.py +299 -300
- lionagi/tests/test_core/test_tool_manager.py +70 -74
- lionagi/tests/test_libs/test_nested.py +2 -7
- lionagi/tests/test_libs/test_parse.py +2 -2
- lionagi/version.py +1 -1
- {lionagi-0.0.306.dist-info → lionagi-0.0.308.dist-info}/METADATA +4 -2
- lionagi-0.0.308.dist-info/RECORD +115 -0
- lionagi/core/flow/direct/utils.py +0 -43
- lionagi-0.0.306.dist-info/RECORD +0 -106
- /lionagi/core/{flow/direct → direct}/sentiment.py +0 -0
- {lionagi-0.0.306.dist-info → lionagi-0.0.308.dist-info}/LICENSE +0 -0
- {lionagi-0.0.306.dist-info → lionagi-0.0.308.dist-info}/WHEEL +0 -0
- {lionagi-0.0.306.dist-info → lionagi-0.0.308.dist-info}/top_level.txt +0 -0
lionagi/libs/ln_dataframe.py
CHANGED
@@ -4,7 +4,6 @@ import pandas as pd
|
|
4
4
|
|
5
5
|
from lionagi.libs import ln_convert as convert
|
6
6
|
|
7
|
-
|
8
7
|
ln_DataFrame = pd.DataFrame
|
9
8
|
ln_Series = pd.Series
|
10
9
|
|
@@ -21,13 +20,13 @@ def extend_dataframe(
|
|
21
20
|
Merges two DataFrames while ensuring no duplicate entries based on a specified unique column.
|
22
21
|
|
23
22
|
Args:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
df1: The primary DataFrame.
|
24
|
+
df2: The DataFrame to merge with the primary DataFrame.
|
25
|
+
unique_col: The column name to check for duplicate entries. Defaults to 'node_id'.
|
26
|
+
**kwargs: Additional keyword arguments for `drop_duplicates`.
|
28
27
|
|
29
28
|
Returns:
|
30
|
-
|
29
|
+
A DataFrame combined from df1 and df2 with duplicates removed based on the unique column.
|
31
30
|
"""
|
32
31
|
try:
|
33
32
|
if len(df2.dropna(how="all")) > 0 and len(df1.dropna(how="all")) > 0:
|
@@ -40,7 +39,7 @@ def extend_dataframe(
|
|
40
39
|
raise ValueError("No data to extend")
|
41
40
|
|
42
41
|
except Exception as e:
|
43
|
-
raise ValueError(f"Error in extending messages: {e}")
|
42
|
+
raise ValueError(f"Error in extending messages: {e}") from e
|
44
43
|
|
45
44
|
|
46
45
|
def search_keywords(
|
@@ -57,16 +56,16 @@ def search_keywords(
|
|
57
56
|
Filters a DataFrame for rows where a specified column contains given keywords.
|
58
57
|
|
59
58
|
Args:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
df: The DataFrame to search through.
|
60
|
+
keywords: A keyword or list of keywords to search for.
|
61
|
+
col: The column to perform the search in. Defaults to "content".
|
62
|
+
case_sensitive: Whether the search should be case-sensitive. Defaults to False.
|
63
|
+
reset_index: Whether to reset the DataFrame's index after filtering. Defaults to False.
|
64
|
+
dropna: Whether to drop rows with NA values before searching. Defaults to False.
|
66
65
|
|
67
66
|
Returns:
|
68
|
-
|
69
|
-
|
67
|
+
A filtered DataFrame containing only rows where the specified column contains
|
68
|
+
any of the provided keywords.
|
70
69
|
"""
|
71
70
|
|
72
71
|
if isinstance(keywords, list):
|
@@ -99,11 +98,11 @@ def replace_keyword(
|
|
99
98
|
Replaces occurrences of a specified keyword with a replacement string in a DataFrame column.
|
100
99
|
|
101
100
|
Args:
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
101
|
+
df: The DataFrame to modify.
|
102
|
+
keyword: The keyword to be replaced.
|
103
|
+
replacement: The string to replace the keyword with.
|
104
|
+
col: The column in which to perform the replacement.
|
105
|
+
case_sensitive: If True, performs a case-sensitive replacement. Defaults to False.
|
107
106
|
"""
|
108
107
|
|
109
108
|
df_ = df.copy(deep=False) if inplace else df.copy()
|
@@ -123,11 +122,11 @@ def read_csv(filepath: str, **kwargs) -> pd.DataFrame:
|
|
123
122
|
Reads a CSV file into a DataFrame with optional additional pandas read_csv parameters.
|
124
123
|
|
125
124
|
Args:
|
126
|
-
|
127
|
-
|
125
|
+
filepath: The path to the CSV file to read.
|
126
|
+
**kwargs: Additional keyword arguments to pass to pandas.read_csv function.
|
128
127
|
|
129
128
|
Returns:
|
130
|
-
|
129
|
+
A DataFrame containing the data read from the CSV file.
|
131
130
|
"""
|
132
131
|
df = pd.read_csv(filepath, **kwargs)
|
133
132
|
return convert.to_df(df)
|
@@ -143,14 +142,14 @@ def remove_last_n_rows(df: pd.DataFrame, steps: int) -> pd.DataFrame:
|
|
143
142
|
Removes the last 'n' rows from a DataFrame.
|
144
143
|
|
145
144
|
Args:
|
146
|
-
|
147
|
-
|
145
|
+
df: The DataFrame from which to remove rows.
|
146
|
+
steps: The number of rows to remove from the end of the DataFrame.
|
148
147
|
|
149
148
|
Returns:
|
150
|
-
|
149
|
+
A DataFrame with the last 'n' rows removed.
|
151
150
|
|
152
151
|
Raises:
|
153
|
-
|
152
|
+
ValueError: If 'steps' is negative or greater than the number of rows in the DataFrame.
|
154
153
|
"""
|
155
154
|
|
156
155
|
if steps < 0 or steps > len(df):
|
@@ -166,17 +165,17 @@ def update_row(df: pd.DataFrame, row: str | int, column: str | int, value: Any)
|
|
166
165
|
Updates a row's value for a specified column in a DataFrame.
|
167
166
|
|
168
167
|
Args:
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
168
|
+
df: The DataFrame to update.
|
169
|
+
col: The column whose value is to be updated.
|
170
|
+
old_value: The current value to search for in the specified column.
|
171
|
+
new_value: The new value to replace the old value with.
|
173
172
|
|
174
173
|
Returns:
|
175
|
-
|
174
|
+
True if the update was successful, False otherwise.
|
176
175
|
"""
|
177
176
|
|
178
177
|
try:
|
179
178
|
df.loc[row, column] = value
|
180
179
|
return True
|
181
|
-
except:
|
180
|
+
except Exception:
|
182
181
|
return False
|