lionagi 0.10.2__py3-none-any.whl → 0.10.3__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.
@@ -141,7 +141,7 @@ class TomlFileAdapter(Adapter):
141
141
  dict | list[dict]
142
142
  The loaded data from file.
143
143
  """
144
- with open(obj, "r", encoding="utf-8") as f:
144
+ with open(obj, encoding="utf-8") as f:
145
145
  result = toml.load(f, **kwargs)
146
146
 
147
147
  # Handle array of tables in TOML for "many" case
@@ -1,7 +1,4 @@
1
- from .action import (
2
- ActionRequestModel,
3
- ActionResponseModel,
4
- )
1
+ from .action import ActionRequestModel, ActionResponseModel
5
2
  from .base import (
6
3
  CodeSnippet,
7
4
  Outline,
@@ -11,10 +8,7 @@ from .base import (
11
8
  TextSnippet,
12
9
  )
13
10
  from .file import CodeFile, Documentation, File
14
- from .instruct import (
15
- Instruct,
16
- InstructResponse,
17
- )
11
+ from .instruct import Instruct, InstructResponse
18
12
  from .reason import Reason
19
13
 
20
14
  __all__ = (
lionagi/fields/file.py CHANGED
@@ -13,15 +13,17 @@ __all__ = (
13
13
 
14
14
  class File(HashableModel):
15
15
  """
16
- Represents a generic file with an optional name, content, and brief description.
17
- Useful for capturing and validating metadata about any kind of file within a project.
16
+ Represents a generic file with an optional name, content, and brief
17
+ description. Useful for capturing and validating metadata about any
18
+ kind of file within a project.
18
19
  """
19
20
 
20
21
  file_name: str | None = Field(
21
22
  default=None,
22
23
  description=(
23
- "Provide the name of the file or its relative path in the project. "
24
- "If an absolute path is given, it will be converted to a string. "
24
+ "Provide the name of the file or its relative path in the "
25
+ "project. If an absolute path is given, it will be converted"
26
+ " to a string. "
25
27
  ),
26
28
  examples=[
27
29
  "session.py",
@@ -33,8 +35,8 @@ class File(HashableModel):
33
35
  default=None,
34
36
  description=(
35
37
  "Paste or generate the full textual content of the file here. "
36
- "For example, this might include plain text, Markdown, or any other text format.\n"
37
- "Examples:\n"
38
+ "For example, this might include plain text, Markdown, or any "
39
+ "other text format.\nExamples:\n"
38
40
  " - '# My Title\\nSome description...'\n"
39
41
  " - 'function greet() { return \"Hello\"; }'"
40
42
  ),
@@ -42,8 +44,9 @@ class File(HashableModel):
42
44
  description: str | None = Field(
43
45
  default=None,
44
46
  description=(
45
- "Briefly explain the file's purpose or function within the project. "
46
- "This can be a short summary describing why this file exists or what it does.\n"
47
+ "Briefly explain the file's purpose or function within the "
48
+ "project. This can be a short summary describing why this "
49
+ "file is needed and/or what it does."
47
50
  ),
48
51
  examples=[
49
52
  "Manages user session logic for the LionAGI framework.",
@@ -57,6 +60,38 @@ class File(HashableModel):
57
60
  return str(value)
58
61
  return value
59
62
 
63
+ def render_content(
64
+ self,
65
+ header: str | None = None,
66
+ footer: str | None = None,
67
+ ) -> str:
68
+ text = f"\n{header}\n\n" if header else ""
69
+ text += self.content if self.content else ""
70
+ if not footer:
71
+ return text
72
+ return text + f"\n\n{footer}\n"
73
+
74
+ def persist(
75
+ self,
76
+ directory: Path | str,
77
+ overwrite: bool = True,
78
+ timestamp: bool = False,
79
+ random_hash_digits: int = None,
80
+ header: str | None = None,
81
+ footer: str | None = None,
82
+ ) -> Path:
83
+ from lionagi.utils import create_path
84
+
85
+ fp = create_path(
86
+ directory=directory,
87
+ filename=self.file_name,
88
+ file_exist_ok=overwrite,
89
+ timestamp=timestamp,
90
+ random_hash_digits=random_hash_digits,
91
+ )
92
+ fp.write_text(self.render_content(header=header, footer=footer))
93
+ return fp
94
+
60
95
 
61
96
  class CodeFile(File):
62
97
  """
@@ -84,7 +119,7 @@ class CodeFile(File):
84
119
  default=None,
85
120
  description=(
86
121
  "Provide or generate the **full source code**. This should be the primary text content "
87
- "of the code file, including all function/class definitions.\n"
122
+ "of the code file, including all function/class definitions.\nNo md codeblock, only raw code"
88
123
  ),
89
124
  examples=[
90
125
  'def my_function():\\n print("Hello, world!")',
@@ -113,10 +148,6 @@ class Documentation(File):
113
148
  "Provide the primary Markdown (or similar) content for the documentation. "
114
149
  "This can include headings, bullet points, tables, code snippets, etc.\n"
115
150
  ),
116
- examples=[
117
- "# Getting Started\\nThis guide walks you through ...",
118
- "# API Reference\\n## Session Class\\n...",
119
- ],
120
151
  )
121
152
  sources: list[Source] | None = Field(
122
153
  default=None,
@@ -126,5 +157,22 @@ class Documentation(File):
126
157
  ),
127
158
  )
128
159
 
160
+ def render_content(
161
+ self,
162
+ header: str | None = None,
163
+ footer: str | None = None,
164
+ include_source: bool = False,
165
+ ) -> str:
166
+ """
167
+ Renders the documentation content, optionally including citations for sources.
168
+ """
169
+ footer = footer or ""
170
+ if include_source and self.sources:
171
+ footer = "\n\n## Sources\n"
172
+ for source in self.sources:
173
+ footer += f"- [{source.title}]({source.url})\n"
174
+ footer += f" - {source.note}\n" if source.note else ""
175
+ return super().render_content(header=header, footer=footer)
176
+
129
177
 
130
178
  # File: lionagi/fields/file.py
lionagi/fields/reason.py CHANGED
@@ -22,10 +22,9 @@ class Reason(BaseModel):
22
22
  "how well you've met user expectations. Use this guide:\n"
23
23
  " • 1.0: Highly confident\n"
24
24
  " • 0.8-1.0: Reasonably sure\n"
25
- " • 0.5-0.8: Re-check or refine\n"
26
- " • 0.0-0.5: Off track"
25
+ " • 0.5-0.8: Re-check, refine or backtrack\n"
26
+ " • 0.0-0.5: Off track, stop"
27
27
  ),
28
- examples=[0.821, 0.257, 0.923, 0.439],
29
28
  )
30
29
 
31
30
  @field_validator("confidence_score", mode="before")
@@ -31,7 +31,7 @@ class SynthlangFramework(Resource):
31
31
  import json
32
32
 
33
33
  fp = here / FRAMEWORK_PATH / "framework_options.json"
34
- with open(fp, "r", encoding="utf-8") as f:
34
+ with open(fp, encoding="utf-8") as f:
35
35
  return json.load(f)
36
36
 
37
37
  @classmethod
@@ -58,4 +58,4 @@ False = "⊭"
58
58
  "⧦⧦⧦" = "⧦"
59
59
  " " = "◻︎"
60
60
  "◻︎◻︎" = "◼︎"
61
- "###" = "#"
61
+ "###" = "#"
@@ -38,4 +38,4 @@ False = "⊭"
38
38
  "⧦⧦⧦" = "⧦"
39
39
  " " = "◻︎"
40
40
  "◻︎◻︎" = "◼︎"
41
- "###" = "#"
41
+ "###" = "#"
@@ -57,4 +57,4 @@ self = "自"
57
57
  Clone = "隆"
58
58
  clone = "隆"
59
59
  derive = "衍"
60
- "println!" = "印"
60
+ "println!" = "印"
@@ -4,34 +4,45 @@
4
4
 
5
5
  from typing import ClassVar, Literal
6
6
 
7
- from pydantic import BaseModel, Field
7
+ from pydantic import Field, field_validator
8
8
 
9
+ from lionagi.models import HashableModel
9
10
 
10
- class PlannedAction(BaseModel):
11
+
12
+ class PlannedAction(HashableModel):
11
13
  """
12
- Short descriptor for an upcoming action/tool invocation the LLM wants to perform.
13
- The model can hold multiple actions in a single round if needed.
14
+ Short descriptor for an upcoming action/tool invocation the LLM wants to
15
+ perform. The model can hold multiple actions in a single round if needed.
14
16
  """
15
17
 
16
- action_type: str = Field(
17
- ...,
18
- description="The name or type of tool/action to invoke (e.g., 'search_exa', 'reader_tool').",
18
+ action_type: str | None = Field(
19
+ default=None,
20
+ description=(
21
+ "The name or type of tool/action to invoke. "
22
+ "(e.g., 'search_exa', 'reader_tool')"
23
+ ),
19
24
  )
20
- description: str = Field(
21
- ...,
22
- description="A short explanation of why or what is intended to achieve with this action.",
25
+ description: str | None = Field(
26
+ default=None,
27
+ description=(
28
+ "A short description of the action to perform. "
29
+ "This should be a concise summary of what the action entails."
30
+ "Also include your rationale for this action, if applicable."
31
+ ),
23
32
  )
24
33
 
25
34
 
26
- class ReActAnalysis(BaseModel):
35
+ class ReActAnalysis(HashableModel):
27
36
  """
28
37
  Captures the ReAct chain-of-thought output each round:
29
38
  1) The LLM's 'analysis' (reasoning),
30
39
  2) A list of planned actions to perform before finalizing,
31
40
  3) Indication whether more expansions/rounds are needed,
32
41
  4) Additional tuning knobs: how to handle validation, how to execute actions, etc.
33
- Remember do not repeat yourself, and aim to use the most efficient way to achieve
34
- the goal to user's satisfaction.
42
+
43
+ Note:
44
+ - Retain from repeating yourself
45
+ - use the most efficient way to achieve the goal to user's satisfaction
35
46
  """
36
47
 
37
48
  # Standard ReAct strings for controlling expansions:
@@ -101,6 +112,16 @@ class ReActAnalysis(BaseModel):
101
112
  )
102
113
 
103
114
 
104
- class Analysis(BaseModel):
115
+ class Analysis(HashableModel):
116
+
117
+ answer: str | None = None
105
118
 
106
- answer: str
119
+ @field_validator("answer", mode="before")
120
+ def _validate_answer(cls, value):
121
+ if not value:
122
+ return None
123
+ if isinstance(value, str) and not value.strip():
124
+ return None
125
+ if not isinstance(value, str):
126
+ raise ValueError("Answer must be a non-empty string.")
127
+ return value.strip()
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.10.2"
1
+ __version__ = "0.10.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.10.2
3
+ Version: 0.10.3
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -221,11 +221,11 @@ Classifier: Programming Language :: Python :: 3.13
221
221
  Requires-Python: >=3.10
222
222
  Requires-Dist: aiocache>=0.12.0
223
223
  Requires-Dist: aiohttp>=3.11.0
224
- Requires-Dist: jinja2>=3.1.0
224
+ Requires-Dist: jinja2>=3.0.0
225
225
  Requires-Dist: pandas>=2.0.0
226
226
  Requires-Dist: pillow>=10.0.0
227
227
  Requires-Dist: pydantic>=2.0.0
228
- Requires-Dist: python-dotenv>=1.0.1
228
+ Requires-Dist: python-dotenv>=1.1.0
229
229
  Requires-Dist: tiktoken>=0.8.0
230
230
  Requires-Dist: toml>=0.9.0
231
231
  Provides-Extra: llms
@@ -4,23 +4,23 @@ lionagi/_errors.py,sha256=JlBTFJnRWtVYcRxKb7fWFiJHLbykl1E19mSJ8sXYVxg,455
4
4
  lionagi/_types.py,sha256=iDdYewsP9rDrM7QY19_NDTcWUk7swp8vnGCrloHMtUM,53
5
5
  lionagi/settings.py,sha256=W52mM34E6jXF3GyqCFzVREKZrmnUqtZm_BVDsUiDI_s,1627
6
6
  lionagi/utils.py,sha256=uLTJKl7aTnFXV6ehA6zwiwEB7G2nQYKsO2pZ6mqFzUk,78908
7
- lionagi/version.py,sha256=A_AARqtxTOj_AQTpjpgOxNx-UOBio5wYFfZ2mrdMKfs,23
7
+ lionagi/version.py,sha256=0C8KcY1dzs3hdkAre06v0NCQ0Uxcqv6g9a93bRcVLW0,23
8
8
  lionagi/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  lionagi/adapters/adapter.py,sha256=aW7s1OKAdxHd8HBv2UcThn-r2Q08EyArssNyFobMLuA,3357
10
10
  lionagi/adapters/json_adapter.py,sha256=EJj0Jev46ZhU3ZMnlYwyzN2rLxjLCVrMDpHkEuggBvk,4561
11
- lionagi/adapters/toml_adapter.py,sha256=WyfMDgp49jH0u_ksZ_vLxdnm6KTrYLIlWDo7GBWaST8,5446
11
+ lionagi/adapters/toml_adapter.py,sha256=XOx0Q41g9FoNVuGrce96ck3gxPo4G-3mwqSin5kGq9s,5441
12
12
  lionagi/adapters/types.py,sha256=CHfB39BSeyU11SDkXXkU_vzqy4v7kaR-2r0y6DYkhXc,660
13
13
  lionagi/adapters/pandas_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  lionagi/adapters/pandas_/csv_adapter.py,sha256=HWie6Jlt8nR-EVJC_zmCFilaWszLNuk7EWUp8Xvr-H8,2358
15
15
  lionagi/adapters/pandas_/excel_adapter.py,sha256=ZqRT2xF93NLKNyMp16ePNzwUN3ntNkUy1dO3nbsrfak,2287
16
16
  lionagi/adapters/pandas_/pd_dataframe_adapter.py,sha256=ULGZVhK5aaOuTrmFq4x5SiuDScYetyYYUHeL8Hh13Eg,2279
17
17
  lionagi/adapters/pandas_/pd_series_adapter.py,sha256=TX3cqFtgEip8JqVqkjdJYOu4PQGpW1yYU6POhvz8Jeg,1388
18
- lionagi/fields/__init__.py,sha256=kaKavoiVZ_S49DHr2uPzN3KiX5AHFsUs5JzWUJkbz4c,593
18
+ lionagi/fields/__init__.py,sha256=BrFzn3wOb9oCF_7iXH0b28-XwfZQNmee8sMDQD0HQBk,567
19
19
  lionagi/fields/action.py,sha256=iWSApCM77jS0Oc28lb7G601Etkp-yjx5U1hfI_FQgfA,5792
20
20
  lionagi/fields/base.py,sha256=5CJc7j8kTTWzXwpYzkSAFzx4BglABfx3AElIATKB7bg,3857
21
- lionagi/fields/file.py,sha256=gzR2rZF2rU76AJJLjdD6TUJCj9VKXPaAH_Ow4oCsTfQ,4124
21
+ lionagi/fields/file.py,sha256=GkOxOtCTWjb4S0vwxLei6sNyONcbV8QRIMTyXkWwV1A,5601
22
22
  lionagi/fields/instruct.py,sha256=sMbCxEv0HQLa31JkJDmdrWWEzIfeKbcmN2hYOehz3Q0,4773
23
- lionagi/fields/reason.py,sha256=TY2zQbounGU4DGDhbBqBW-jJPuJHmcoePSCKLgJxaL0,1460
23
+ lionagi/fields/reason.py,sha256=iNjgcIC2yWa0m0hkEZTCwKwknTkjVbhGLS2TWp6CE8s,1430
24
24
  lionagi/libs/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
25
25
  lionagi/libs/parse.py,sha256=JRS3bql0InHJqATnAatl-hQv4N--XXw4P77JHhTFnrc,1011
26
26
  lionagi/libs/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
@@ -58,20 +58,20 @@ lionagi/libs/token_transform/perplexity.py,sha256=tcVRjPBX3nuVqsoTkowCf6RBXuybO-
58
58
  lionagi/libs/token_transform/symbolic_compress_context.py,sha256=Nr4vSJSN6sUQgaA1QxHhidWH3pUG_5RnoYeLHjMsoLA,4603
59
59
  lionagi/libs/token_transform/synthlang.py,sha256=W6e-_265UXqVosM9X0TLKW53rNHvWCKhsWbVAop49Ac,259
60
60
  lionagi/libs/token_transform/types.py,sha256=4HgAfNDlJ_Hu18kLt59GHr_76eF3xLpNCTbOXlAYVlA,491
61
- lionagi/libs/token_transform/synthlang_/base.py,sha256=diDFrm-1Zf3PerKjODo-uFQMEjxPeaGtbZ5N1lK59Kg,4114
61
+ lionagi/libs/token_transform/synthlang_/base.py,sha256=GDle72c8EjFz_3hg_k-y0YmksBsn5TSRVTw5_cwfWTo,4109
62
62
  lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py,sha256=lRBpeKGhyNlf8ngigjYAw56QbIAVZWLQUzRg2wpwMfQ,4956
63
63
  lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml,sha256=2TuOAo97g8mNhdPH96HP8vYZpnC8neiP-KlhVqbp1Us,970
64
64
  lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml,sha256=Stg9W3h8o7VkQ9tdAfSZmR3LctFqcH6OhOPdaw9BlIg,1064
65
65
  lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml,sha256=iE6FS7Cn5_uJRG5-StLuMM4XVAk95bxhbYWwlstw_tA,1044
66
- lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json,sha256=42I5bRegSUp-60LNWa7k6eXurdWf8aCemhrFqw2s7qc,1759
66
+ lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json,sha256=phAkedPGrwgNGW8hgPyH6pKU47pvKEAnG7vheWFvOLc,1760
67
67
  lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml,sha256=iVlcS250YMosNRv3l8bz3BT9Tx1xCmiwhfNt4CjjRYc,713
68
68
  lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml,sha256=jeFOF8gjRhb4hYXpW7AxTX8uk9c6DvGulJK5Bowxhq4,1037
69
69
  lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml,sha256=LxBIVLHNLfvVdXjLAzqivrYaHNix514DLNYsbA-VSQ4,5730
70
70
  lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml,sha256=SZpBvUySZ3_0pIrRko24a3KfbPHd55LyNwzFHyznjs4,1457
71
71
  lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml,sha256=nnhfbIJQ5pTGlX7lo1XzjyOevaZOHuusvBuhwWHzbLk,1008
72
- lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml,sha256=CPbqoh691wfZ3Xe49iLEWGJoaIbRUyDgn2_bFlvH72E,1322
73
- lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml,sha256=3ElxIfm7Kn_f8n6fHDENhC29Z3IlofUXjwNTEAjRQMQ,963
74
- lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml,sha256=IU5qOB-a_ZJI_wMOa0OJu3foAp6tIdvegnVt-yw5URM,1216
72
+ lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml,sha256=THLrry9RTHMCMv-g6VCwrlaE4_9_fjXkABgyAyhokew,1323
73
+ lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml,sha256=Q0MqTf9t5rWuKHLsKu9WS8NSBSb9FsGAAaG5EYQiGCA,964
74
+ lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml,sha256=o-7KACVDQYkpAGSFgsMCeIy_S93CilUP9w1ZKM0w62A,1217
75
75
  lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml,sha256=8xhY14WdDRF6GIToqzRPM7EjM6-uO6-hQ9Muei1A2Iw,3458
76
76
  lionagi/libs/validate/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
77
77
  lionagi/libs/validate/common_field_validators.py,sha256=1BHznXnJYcLQrHqvHKUnP6aqCptuQ0qN7KJRCExcJBU,4778
@@ -92,7 +92,7 @@ lionagi/operations/types.py,sha256=fM8HphnbBifMzhoKKvdl3JxGCBHlEGPJEYkLWj9b7vE,7
92
92
  lionagi/operations/utils.py,sha256=Cl4HuWQ1nCGkTexwOtDx7fpEWMc2L3ZQMCqylRBDy74,1219
93
93
  lionagi/operations/ReAct/ReAct.py,sha256=uoJnFMoPP1kzzmgLDFNBwEbWdfGNfG37IT22N1AM-hE,13504
94
94
  lionagi/operations/ReAct/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
95
- lionagi/operations/ReAct/utils.py,sha256=84Giel5ToqfbN5F6Tm0uw8yZTTnxiM_jWuFEhnKOxM8,3800
95
+ lionagi/operations/ReAct/utils.py,sha256=w8hf8-L1VCV5ZF8gjeFBfR81tmO9u2Ud2Wz3VlUn7AU,4437
96
96
  lionagi/operations/_act/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
97
97
  lionagi/operations/_act/act.py,sha256=l1-mrOoWLP0reATBD4PTqGyuSUSH41sL6YbfzzFfJMk,2811
98
98
  lionagi/operations/brainstorm/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
@@ -220,7 +220,7 @@ lionagi/tools/file/writer.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,
220
220
  lionagi/tools/file/providers/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
221
221
  lionagi/tools/file/providers/docling_.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
222
222
  lionagi/tools/query/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
223
- lionagi-0.10.2.dist-info/METADATA,sha256=Z0QWQpl1aCFgNhWCem5QNx5BJmYPOG_gXyDpiiLQW3E,18464
224
- lionagi-0.10.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
225
- lionagi-0.10.2.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
226
- lionagi-0.10.2.dist-info/RECORD,,
223
+ lionagi-0.10.3.dist-info/METADATA,sha256=NX6-ma5E2CK-UUTpfp6aZXUXuWHI2OukvBSRSUHjBzc,18464
224
+ lionagi-0.10.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
225
+ lionagi-0.10.3.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
226
+ lionagi-0.10.3.dist-info/RECORD,,