lionagi 0.5.4__tar.gz → 0.6.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (454) hide show
  1. {lionagi-0.5.4 → lionagi-0.6.0}/.env.example +1 -1
  2. {lionagi-0.5.4 → lionagi-0.6.0}/.github/workflows/ci.yml +1 -1
  3. {lionagi-0.5.4 → lionagi-0.6.0}/.github/workflows/release.yml +1 -1
  4. {lionagi-0.5.4 → lionagi-0.6.0}/PKG-INFO +7 -6
  5. {lionagi-0.5.4 → lionagi-0.6.0}/README.md +2 -2
  6. lionagi-0.6.0/dev_tools/count_code_base_lines.py +113 -0
  7. lionagi-0.6.0/lionagi/__init__.py +21 -0
  8. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi}/_class_registry.py +51 -10
  9. lionagi-0.6.0/lionagi/_errors.py +35 -0
  10. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/compress/models.py +6 -2
  11. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/compress/utils.py +4 -16
  12. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/file/chunk.py +4 -0
  13. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/file/file_ops.py +4 -0
  14. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/file/params.py +4 -41
  15. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/file/process.py +4 -0
  16. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/file/save.py +5 -1
  17. {lionagi-0.5.4/lionagi/libs/parse/flatten → lionagi-0.6.0/lionagi/libs/nested}/flatten.py +4 -0
  18. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/nfilter.py +4 -0
  19. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/nget.py +6 -1
  20. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/ninsert.py +5 -1
  21. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/nmerge.py +4 -0
  22. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/npop.py +5 -2
  23. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/nset.py +6 -1
  24. {lionagi-0.5.4/lionagi/libs/parse/flatten → lionagi-0.6.0/lionagi/libs/nested}/unflatten.py +4 -0
  25. {lionagi-0.5.4/lionagi/libs/parse → lionagi-0.6.0/lionagi/libs}/nested/utils.py +5 -1
  26. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/package/imports.py +6 -2
  27. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/package/management.py +7 -3
  28. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/package/params.py +4 -0
  29. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/libs/package/system.py +4 -0
  30. lionagi-0.6.0/lionagi/libs/parse.py +30 -0
  31. {lionagi-0.5.4/lionagi/libs/parse/json → lionagi-0.6.0/lionagi/libs/schema}/as_readable.py +10 -4
  32. lionagi-0.5.4/lionagi/libs/parse/string_parse/code_block.py → lionagi-0.6.0/lionagi/libs/schema/extract_code_block.py +4 -0
  33. lionagi-0.5.4/lionagi/libs/parse/string_parse/docstring.py → lionagi-0.6.0/lionagi/libs/schema/extract_docstring.py +4 -0
  34. lionagi-0.5.4/lionagi/libs/parse/string_parse/function_.py → lionagi-0.6.0/lionagi/libs/schema/function_to_schema.py +21 -9
  35. lionagi-0.5.4/lionagi/libs/parse/json/schema.py → lionagi-0.6.0/lionagi/libs/schema/json_schema.py +5 -1
  36. lionagi-0.6.0/lionagi/libs/validate/common_field_validators.py +170 -0
  37. lionagi-0.5.4/lionagi/libs/parse/validate/keys.py → lionagi-0.6.0/lionagi/libs/validate/fuzzy_match_keys.py +42 -8
  38. lionagi-0.5.4/lionagi/libs/parse/validate/mapping.py → lionagi-0.6.0/lionagi/libs/validate/fuzzy_validate_mapping.py +41 -6
  39. lionagi-0.5.4/lionagi/libs/string_similarity/algorithms.py → lionagi-0.6.0/lionagi/libs/validate/string_similarity.py +115 -1
  40. lionagi-0.5.4/lionagi/libs/parse/validate/boolean.py → lionagi-0.6.0/lionagi/libs/validate/validate_boolean.py +42 -3
  41. lionagi-0.6.0/lionagi/operations/__init__.py +13 -0
  42. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/brainstorm/brainstorm.py +33 -19
  43. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/brainstorm/prompt.py +4 -0
  44. {lionagi-0.5.4/lionagi/core/models → lionagi-0.6.0/lionagi/operations/plan}/__init__.py +3 -1
  45. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/plan/plan.py +16 -13
  46. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/plan/prompt.py +4 -0
  47. lionagi-0.5.4/lionagi/integrations/anthropic_/version.py → lionagi-0.6.0/lionagi/operations/select/__init__.py +3 -1
  48. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/select/prompt.py +4 -0
  49. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/select/select.py +1 -1
  50. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/select/utils.py +4 -4
  51. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/base.py +6 -2
  52. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/concurrent.py +8 -5
  53. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/concurrent_chunk.py +6 -3
  54. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/concurrent_sequential_chunk.py +8 -4
  55. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/params.py +10 -6
  56. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/sequential.py +6 -2
  57. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/sequential_chunk.py +7 -3
  58. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/sequential_concurrent_chunk.py +9 -4
  59. {lionagi-0.5.4/lionagi → lionagi-0.6.0/lionagi/operations}/strategies/utils.py +6 -3
  60. lionagi-0.5.4/lionagi/integrations/groq_/version.py → lionagi-0.6.0/lionagi/operations/types.py +3 -1
  61. {lionagi-0.5.4 → lionagi-0.6.0}/lionagi/operations/utils.py +6 -3
  62. lionagi-0.6.0/lionagi/operatives/action/function_calling.py +136 -0
  63. lionagi-0.6.0/lionagi/operatives/action/manager.py +239 -0
  64. lionagi-0.6.0/lionagi/operatives/action/request_response_model.py +90 -0
  65. lionagi-0.6.0/lionagi/operatives/action/tool.py +141 -0
  66. lionagi-0.5.4/lionagi/protocols/operatives/action.py → lionagi-0.6.0/lionagi/operatives/action/utils.py +52 -90
  67. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/forms/base.py +9 -4
  68. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/forms/form.py +8 -13
  69. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/forms/report.py +5 -3
  70. lionagi-0.6.0/lionagi/operatives/instruct/base.py +79 -0
  71. lionagi-0.6.0/lionagi/operatives/instruct/instruct.py +105 -0
  72. lionagi-0.6.0/lionagi/operatives/instruct/instruct_collection.py +52 -0
  73. lionagi-0.6.0/lionagi/operatives/instruct/node.py +13 -0
  74. {lionagi-0.5.4/lionagi/protocols/operatives → lionagi-0.6.0/lionagi/operatives/instruct}/prompts.py +0 -34
  75. {lionagi-0.5.4/lionagi/protocols/operatives → lionagi-0.6.0/lionagi/operatives/instruct}/reason.py +14 -7
  76. lionagi-0.6.0/lionagi/operatives/manager.py +9 -0
  77. lionagi-0.6.0/lionagi/operatives/models/field_model.py +194 -0
  78. lionagi-0.6.0/lionagi/operatives/models/model_params.py +307 -0
  79. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/models/note.py +20 -28
  80. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/models/operable_model.py +153 -71
  81. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/models/schema_model.py +4 -3
  82. {lionagi-0.5.4/lionagi/protocols → lionagi-0.6.0/lionagi}/operatives/operative.py +10 -7
  83. {lionagi-0.5.4/lionagi/protocols → lionagi-0.6.0/lionagi}/operatives/step.py +67 -26
  84. lionagi-0.6.0/lionagi/operatives/types.py +69 -0
  85. lionagi-0.6.0/lionagi/protocols/_adapter.py +224 -0
  86. lionagi-0.6.0/lionagi/protocols/_concepts.py +94 -0
  87. lionagi-0.6.0/lionagi/protocols/generic/element.py +460 -0
  88. lionagi-0.6.0/lionagi/protocols/generic/event.py +177 -0
  89. lionagi-0.6.0/lionagi/protocols/generic/log.py +237 -0
  90. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/protocols}/generic/pile.py +172 -131
  91. lionagi-0.6.0/lionagi/protocols/generic/processor.py +316 -0
  92. lionagi-0.6.0/lionagi/protocols/generic/progression.py +500 -0
  93. lionagi-0.6.0/lionagi/protocols/graph/edge.py +166 -0
  94. lionagi-0.6.0/lionagi/protocols/graph/graph.py +290 -0
  95. lionagi-0.6.0/lionagi/protocols/graph/node.py +109 -0
  96. lionagi-0.6.0/lionagi/protocols/mail/exchange.py +116 -0
  97. lionagi-0.6.0/lionagi/protocols/mail/mail.py +25 -0
  98. lionagi-0.6.0/lionagi/protocols/mail/mailbox.py +47 -0
  99. lionagi-0.6.0/lionagi/protocols/mail/manager.py +168 -0
  100. lionagi-0.6.0/lionagi/protocols/mail/package.py +55 -0
  101. lionagi-0.6.0/lionagi/protocols/messages/action_request.py +165 -0
  102. lionagi-0.6.0/lionagi/protocols/messages/action_response.py +132 -0
  103. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/assistant_response.py +65 -79
  104. lionagi-0.6.0/lionagi/protocols/messages/base.py +73 -0
  105. lionagi-0.6.0/lionagi/protocols/messages/instruction.py +582 -0
  106. lionagi-0.6.0/lionagi/protocols/messages/manager.py +429 -0
  107. lionagi-0.6.0/lionagi/protocols/messages/message.py +216 -0
  108. lionagi-0.6.0/lionagi/protocols/messages/system.py +115 -0
  109. lionagi-0.6.0/lionagi/protocols/messages/templates/assistant_response.jinja2 +6 -0
  110. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/instruction_message.jinja2 +2 -2
  111. lionagi-0.6.0/lionagi/protocols/types.py +96 -0
  112. lionagi-0.6.0/lionagi/service/__init__.py +14 -0
  113. lionagi-0.6.0/lionagi/service/endpoints/base.py +517 -0
  114. lionagi-0.6.0/lionagi/service/endpoints/chat_completion.py +102 -0
  115. lionagi-0.6.0/lionagi/service/endpoints/match_endpoint.py +60 -0
  116. lionagi-0.6.0/lionagi/service/endpoints/rate_limited_processor.py +145 -0
  117. lionagi-0.6.0/lionagi/service/endpoints/token_calculator.py +209 -0
  118. lionagi-0.6.0/lionagi/service/imodel.py +297 -0
  119. lionagi-0.6.0/lionagi/service/manager.py +45 -0
  120. lionagi-0.6.0/lionagi/service/providers/__init__.py +3 -0
  121. lionagi-0.6.0/lionagi/service/providers/anthropic_/__init__.py +3 -0
  122. lionagi-0.6.0/lionagi/service/providers/anthropic_/messages.py +64 -0
  123. lionagi-0.6.0/lionagi/service/providers/groq_/__init__.py +3 -0
  124. lionagi-0.6.0/lionagi/service/providers/groq_/chat_completions.py +56 -0
  125. lionagi-0.6.0/lionagi/service/providers/openai_/__init__.py +3 -0
  126. lionagi-0.6.0/lionagi/service/providers/openai_/chat_completions.py +62 -0
  127. lionagi-0.6.0/lionagi/service/providers/openrouter_/__init__.py +3 -0
  128. lionagi-0.6.0/lionagi/service/providers/openrouter_/chat_completions.py +62 -0
  129. lionagi-0.6.0/lionagi/service/providers/perplexity_/__init__.py +3 -0
  130. lionagi-0.6.0/lionagi/service/providers/perplexity_/chat_completions.py +40 -0
  131. lionagi-0.6.0/lionagi/session/__init__.py +3 -0
  132. lionagi-0.6.0/lionagi/session/branch.py +1287 -0
  133. lionagi-0.6.0/lionagi/session/session.py +296 -0
  134. lionagi-0.6.0/lionagi/settings.py +72 -0
  135. lionagi-0.6.0/lionagi/utils.py +2386 -0
  136. lionagi-0.6.0/lionagi/version.py +1 -0
  137. {lionagi-0.5.4 → lionagi-0.6.0}/pyproject.toml +5 -4
  138. {lionagi-0.5.4 → lionagi-0.6.0}/uv.lock +119 -115
  139. lionagi-0.5.4/lionagi/__init__.py +0 -29
  140. lionagi-0.5.4/lionagi/core/action/action_manager.py +0 -287
  141. lionagi-0.5.4/lionagi/core/action/base.py +0 -109
  142. lionagi-0.5.4/lionagi/core/action/function_calling.py +0 -153
  143. lionagi-0.5.4/lionagi/core/action/tool.py +0 -202
  144. lionagi-0.5.4/lionagi/core/action/types.py +0 -16
  145. lionagi-0.5.4/lionagi/core/communication/action_request.py +0 -163
  146. lionagi-0.5.4/lionagi/core/communication/action_response.py +0 -149
  147. lionagi-0.5.4/lionagi/core/communication/base_mail.py +0 -49
  148. lionagi-0.5.4/lionagi/core/communication/instruction.py +0 -376
  149. lionagi-0.5.4/lionagi/core/communication/message.py +0 -286
  150. lionagi-0.5.4/lionagi/core/communication/message_manager.py +0 -530
  151. lionagi-0.5.4/lionagi/core/communication/system.py +0 -116
  152. lionagi-0.5.4/lionagi/core/communication/templates/assistant_response.jinja2 +0 -2
  153. lionagi-0.5.4/lionagi/core/communication/types.py +0 -27
  154. lionagi-0.5.4/lionagi/core/communication/utils.py +0 -254
  155. lionagi-0.5.4/lionagi/core/forms/types.py +0 -13
  156. lionagi-0.5.4/lionagi/core/generic/component.py +0 -422
  157. lionagi-0.5.4/lionagi/core/generic/edge.py +0 -163
  158. lionagi-0.5.4/lionagi/core/generic/element.py +0 -199
  159. lionagi-0.5.4/lionagi/core/generic/graph.py +0 -377
  160. lionagi-0.5.4/lionagi/core/generic/log.py +0 -151
  161. lionagi-0.5.4/lionagi/core/generic/log_manager.py +0 -320
  162. lionagi-0.5.4/lionagi/core/generic/node.py +0 -11
  163. lionagi-0.5.4/lionagi/core/generic/progression.py +0 -395
  164. lionagi-0.5.4/lionagi/core/generic/types.py +0 -23
  165. lionagi-0.5.4/lionagi/core/generic/utils.py +0 -53
  166. lionagi-0.5.4/lionagi/core/models/base.py +0 -28
  167. lionagi-0.5.4/lionagi/core/models/field_model.py +0 -145
  168. lionagi-0.5.4/lionagi/core/models/model_params.py +0 -194
  169. lionagi-0.5.4/lionagi/core/models/types.py +0 -19
  170. lionagi-0.5.4/lionagi/core/session/branch.py +0 -130
  171. lionagi-0.5.4/lionagi/core/session/branch_mixins.py +0 -544
  172. lionagi-0.5.4/lionagi/core/session/session.py +0 -163
  173. lionagi-0.5.4/lionagi/core/session/types.py +0 -8
  174. lionagi-0.5.4/lionagi/core/typing/__init__.py +0 -9
  175. lionagi-0.5.4/lionagi/core/typing/_concepts.py +0 -173
  176. lionagi-0.5.4/lionagi/core/typing/_id.py +0 -104
  177. lionagi-0.5.4/lionagi/core/typing/_pydantic.py +0 -33
  178. lionagi-0.5.4/lionagi/core/typing/_typing.py +0 -54
  179. lionagi-0.5.4/lionagi/integrations/__init__.py +0 -0
  180. lionagi-0.5.4/lionagi/integrations/_services.py +0 -17
  181. lionagi-0.5.4/lionagi/integrations/anthropic_/AnthropicModel.py +0 -273
  182. lionagi-0.5.4/lionagi/integrations/anthropic_/AnthropicService.py +0 -117
  183. lionagi-0.5.4/lionagi/integrations/anthropic_/anthropic_max_output_token_data.yaml +0 -7
  184. lionagi-0.5.4/lionagi/integrations/anthropic_/anthropic_price_data.yaml +0 -14
  185. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/api_request.py +0 -277
  186. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/data_models.py +0 -40
  187. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/match_response.py +0 -119
  188. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/request/message_models.py +0 -14
  189. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/request/request_body.py +0 -74
  190. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/response/__init__.py +0 -0
  191. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/response/content_models.py +0 -32
  192. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/response/response_body.py +0 -101
  193. lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/response/usage_models.py +0 -25
  194. lionagi-0.5.4/lionagi/integrations/groq_/GroqModel.py +0 -325
  195. lionagi-0.5.4/lionagi/integrations/groq_/GroqService.py +0 -151
  196. lionagi-0.5.4/lionagi/integrations/groq_/api_endpoints/__init__.py +0 -0
  197. lionagi-0.5.4/lionagi/integrations/groq_/api_endpoints/data_models.py +0 -187
  198. lionagi-0.5.4/lionagi/integrations/groq_/api_endpoints/groq_request.py +0 -288
  199. lionagi-0.5.4/lionagi/integrations/groq_/api_endpoints/match_response.py +0 -106
  200. lionagi-0.5.4/lionagi/integrations/groq_/api_endpoints/response_utils.py +0 -105
  201. lionagi-0.5.4/lionagi/integrations/groq_/groq_max_output_token_data.yaml +0 -21
  202. lionagi-0.5.4/lionagi/integrations/groq_/groq_price_data.yaml +0 -58
  203. lionagi-0.5.4/lionagi/integrations/groq_/groq_rate_limits.yaml +0 -105
  204. lionagi-0.5.4/lionagi/integrations/litellm_/imodel.py +0 -71
  205. lionagi-0.5.4/lionagi/integrations/ollama_/OllamaModel.py +0 -244
  206. lionagi-0.5.4/lionagi/integrations/ollama_/OllamaService.py +0 -142
  207. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/api_request.py +0 -179
  208. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/chat_completion/message_models.py +0 -31
  209. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/chat_completion/request_body.py +0 -46
  210. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/chat_completion/response_body.py +0 -67
  211. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/chat_completion/tool_models.py +0 -49
  212. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/completion/__init__.py +0 -0
  213. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/completion/request_body.py +0 -72
  214. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/completion/response_body.py +0 -59
  215. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/data_models.py +0 -15
  216. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/embedding/__init__.py +0 -0
  217. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/embedding/request_body.py +0 -33
  218. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/embedding/response_body.py +0 -29
  219. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/match_data_model.py +0 -62
  220. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/match_response.py +0 -190
  221. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/copy_model.py +0 -13
  222. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/create_model.py +0 -28
  223. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/delete_model.py +0 -11
  224. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/list_model.py +0 -60
  225. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/pull_model.py +0 -34
  226. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/push_model.py +0 -35
  227. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model/show_model.py +0 -36
  228. lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/option_models.py +0 -68
  229. lionagi-0.5.4/lionagi/integrations/openai_/OpenAIModel.py +0 -423
  230. lionagi-0.5.4/lionagi/integrations/openai_/OpenAIService.py +0 -426
  231. lionagi-0.5.4/lionagi/integrations/openai_/__init__.py +0 -0
  232. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/__init__.py +0 -3
  233. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/api_request.py +0 -277
  234. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/audio/__init__.py +0 -9
  235. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/audio/speech_models.py +0 -34
  236. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/audio/transcription_models.py +0 -136
  237. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/audio/translation_models.py +0 -41
  238. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/audio/types.py +0 -41
  239. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/__init__.py +0 -17
  240. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/batch_models.py +0 -146
  241. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/cancel_batch.py +0 -7
  242. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/create_batch.py +0 -26
  243. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/list_batch.py +0 -37
  244. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/request_object_models.py +0 -65
  245. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/retrieve_batch.py +0 -7
  246. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/batch/types.py +0 -4
  247. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/__init__.py +0 -1
  248. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/__init__.py +0 -39
  249. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/message_models.py +0 -121
  250. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/request_body.py +0 -221
  251. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/response_format.py +0 -71
  252. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/stream_options.py +0 -14
  253. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/tool_choice_models.py +0 -17
  254. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/tool_models.py +0 -54
  255. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/request/types.py +0 -18
  256. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/__init__.py +0 -0
  257. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/choice_models.py +0 -62
  258. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/function_models.py +0 -16
  259. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/log_prob_models.py +0 -47
  260. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/message_models.py +0 -25
  261. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/response_body.py +0 -99
  262. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/types.py +0 -8
  263. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/response/usage_models.py +0 -24
  264. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/chat_completions/util.py +0 -46
  265. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/data_models.py +0 -23
  266. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/embeddings/__init__.py +0 -3
  267. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/embeddings/request_body.py +0 -79
  268. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/embeddings/response_body.py +0 -67
  269. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/__init__.py +0 -11
  270. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/delete_file.py +0 -20
  271. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/file_models.py +0 -56
  272. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/list_files.py +0 -27
  273. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/retrieve_file.py +0 -9
  274. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/files/upload_file.py +0 -38
  275. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/__init__.py +0 -37
  276. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/cancel_jobs.py +0 -9
  277. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/create_jobs.py +0 -133
  278. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_checkpoint_models.py +0 -58
  279. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_event_models.py +0 -31
  280. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/fine_tuning_job_models.py +0 -140
  281. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_checkpoints.py +0 -51
  282. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_events.py +0 -42
  283. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/list_fine_tuning_jobs.py +0 -31
  284. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/retrieve_jobs.py +0 -9
  285. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/fine_tuning/training_format.py +0 -30
  286. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/images/__init__.py +0 -9
  287. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/images/image_edit_models.py +0 -69
  288. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/images/image_models.py +0 -56
  289. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/images/image_variation_models.py +0 -56
  290. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/images/response_body.py +0 -30
  291. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/match_data_model.py +0 -197
  292. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/match_response.py +0 -336
  293. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/models/__init__.py +0 -7
  294. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/models/delete_fine_tuned_model.py +0 -17
  295. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/models/models_models.py +0 -31
  296. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/models/retrieve_model.py +0 -9
  297. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/moderations/__init__.py +0 -3
  298. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/moderations/request_body.py +0 -20
  299. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/moderations/response_body.py +0 -139
  300. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/__init__.py +0 -19
  301. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/add_upload_part.py +0 -11
  302. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/cancel_upload.py +0 -7
  303. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/complete_upload.py +0 -18
  304. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/create_upload.py +0 -17
  305. lionagi-0.5.4/lionagi/integrations/openai_/api_endpoints/uploads/uploads_models.py +0 -52
  306. lionagi-0.5.4/lionagi/integrations/openai_/image_token_calculator/__init__.py +0 -0
  307. lionagi-0.5.4/lionagi/integrations/openai_/image_token_calculator/image_token_calculator.py +0 -98
  308. lionagi-0.5.4/lionagi/integrations/openai_/image_token_calculator/openai_image_token_data.yaml +0 -15
  309. lionagi-0.5.4/lionagi/integrations/openai_/openai_max_output_token_data.yaml +0 -12
  310. lionagi-0.5.4/lionagi/integrations/openai_/openai_price_data.yaml +0 -26
  311. lionagi-0.5.4/lionagi/integrations/openai_/version.py +0 -1
  312. lionagi-0.5.4/lionagi/integrations/pandas_/__init__.py +0 -24
  313. lionagi-0.5.4/lionagi/integrations/pandas_/extend_df.py +0 -61
  314. lionagi-0.5.4/lionagi/integrations/pandas_/read.py +0 -103
  315. lionagi-0.5.4/lionagi/integrations/pandas_/remove_rows.py +0 -61
  316. lionagi-0.5.4/lionagi/integrations/pandas_/replace_keywords.py +0 -65
  317. lionagi-0.5.4/lionagi/integrations/pandas_/save.py +0 -131
  318. lionagi-0.5.4/lionagi/integrations/pandas_/search_keywords.py +0 -69
  319. lionagi-0.5.4/lionagi/integrations/pandas_/to_df.py +0 -196
  320. lionagi-0.5.4/lionagi/integrations/pandas_/update_cells.py +0 -54
  321. lionagi-0.5.4/lionagi/integrations/perplexity_/PerplexityModel.py +0 -274
  322. lionagi-0.5.4/lionagi/integrations/perplexity_/PerplexityService.py +0 -113
  323. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/__init__.py +0 -0
  324. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/api_request.py +0 -171
  325. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/chat_completions/__init__.py +0 -0
  326. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/chat_completions/request/__init__.py +0 -0
  327. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/chat_completions/request/request_body.py +0 -121
  328. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/chat_completions/response/__init__.py +0 -0
  329. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/chat_completions/response/response_body.py +0 -146
  330. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/data_models.py +0 -63
  331. lionagi-0.5.4/lionagi/integrations/perplexity_/api_endpoints/match_response.py +0 -26
  332. lionagi-0.5.4/lionagi/integrations/perplexity_/perplexity_max_output_token_data.yaml +0 -3
  333. lionagi-0.5.4/lionagi/integrations/perplexity_/perplexity_price_data.yaml +0 -10
  334. lionagi-0.5.4/lionagi/integrations/perplexity_/version.py +0 -1
  335. lionagi-0.5.4/lionagi/integrations/pydantic_/__init__.py +0 -8
  336. lionagi-0.5.4/lionagi/integrations/pydantic_/break_down_annotation.py +0 -81
  337. lionagi-0.5.4/lionagi/integrations/pydantic_/new_model.py +0 -208
  338. lionagi-0.5.4/lionagi/libs/__init__.py +0 -0
  339. lionagi-0.5.4/lionagi/libs/compress/__init__.py +0 -0
  340. lionagi-0.5.4/lionagi/libs/constants.py +0 -98
  341. lionagi-0.5.4/lionagi/libs/file/__init__.py +0 -0
  342. lionagi-0.5.4/lionagi/libs/file/path.py +0 -301
  343. lionagi-0.5.4/lionagi/libs/file/types.py +0 -22
  344. lionagi-0.5.4/lionagi/libs/func/__init__.py +0 -0
  345. lionagi-0.5.4/lionagi/libs/func/async_calls/__init__.py +0 -24
  346. lionagi-0.5.4/lionagi/libs/func/async_calls/alcall.py +0 -210
  347. lionagi-0.5.4/lionagi/libs/func/async_calls/bcall.py +0 -130
  348. lionagi-0.5.4/lionagi/libs/func/async_calls/mcall.py +0 -134
  349. lionagi-0.5.4/lionagi/libs/func/async_calls/pcall.py +0 -149
  350. lionagi-0.5.4/lionagi/libs/func/async_calls/rcall.py +0 -217
  351. lionagi-0.5.4/lionagi/libs/func/async_calls/tcall.py +0 -114
  352. lionagi-0.5.4/lionagi/libs/func/async_calls/ucall.py +0 -85
  353. lionagi-0.5.4/lionagi/libs/func/decorators.py +0 -277
  354. lionagi-0.5.4/lionagi/libs/func/lcall.py +0 -57
  355. lionagi-0.5.4/lionagi/libs/func/params.py +0 -64
  356. lionagi-0.5.4/lionagi/libs/func/throttle.py +0 -119
  357. lionagi-0.5.4/lionagi/libs/func/types.py +0 -39
  358. lionagi-0.5.4/lionagi/libs/func/utils.py +0 -96
  359. lionagi-0.5.4/lionagi/libs/package/__init__.py +0 -0
  360. lionagi-0.5.4/lionagi/libs/package/types.py +0 -26
  361. lionagi-0.5.4/lionagi/libs/parse/__init__.py +0 -1
  362. lionagi-0.5.4/lionagi/libs/parse/flatten/__init__.py +0 -9
  363. lionagi-0.5.4/lionagi/libs/parse/flatten/params.py +0 -52
  364. lionagi-0.5.4/lionagi/libs/parse/json/__init__.py +0 -27
  365. lionagi-0.5.4/lionagi/libs/parse/json/extract.py +0 -102
  366. lionagi-0.5.4/lionagi/libs/parse/json/parse.py +0 -179
  367. lionagi-0.5.4/lionagi/libs/parse/json/to_json.py +0 -71
  368. lionagi-0.5.4/lionagi/libs/parse/nested/__init__.py +0 -33
  369. lionagi-0.5.4/lionagi/libs/parse/nested/to_flat_list.py +0 -64
  370. lionagi-0.5.4/lionagi/libs/parse/params.py +0 -0
  371. lionagi-0.5.4/lionagi/libs/parse/string_parse/__init__.py +0 -11
  372. lionagi-0.5.4/lionagi/libs/parse/type_convert/__init__.py +0 -19
  373. lionagi-0.5.4/lionagi/libs/parse/type_convert/params.py +0 -145
  374. lionagi-0.5.4/lionagi/libs/parse/type_convert/to_dict.py +0 -333
  375. lionagi-0.5.4/lionagi/libs/parse/type_convert/to_list.py +0 -186
  376. lionagi-0.5.4/lionagi/libs/parse/type_convert/to_num.py +0 -358
  377. lionagi-0.5.4/lionagi/libs/parse/type_convert/to_str.py +0 -195
  378. lionagi-0.5.4/lionagi/libs/parse/types.py +0 -9
  379. lionagi-0.5.4/lionagi/libs/parse/validate/__init__.py +0 -14
  380. lionagi-0.5.4/lionagi/libs/parse/validate/params.py +0 -62
  381. lionagi-0.5.4/lionagi/libs/parse/xml/__init__.py +0 -10
  382. lionagi-0.5.4/lionagi/libs/parse/xml/convert.py +0 -56
  383. lionagi-0.5.4/lionagi/libs/parse/xml/parser.py +0 -93
  384. lionagi-0.5.4/lionagi/libs/string_similarity/__init__.py +0 -32
  385. lionagi-0.5.4/lionagi/libs/string_similarity/matcher.py +0 -102
  386. lionagi-0.5.4/lionagi/libs/string_similarity/utils.py +0 -15
  387. lionagi-0.5.4/lionagi/libs/utils.py +0 -266
  388. lionagi-0.5.4/lionagi/operations/__init__.py +0 -3
  389. lionagi-0.5.4/lionagi/operations/brainstorm/__init__.py +0 -3
  390. lionagi-0.5.4/lionagi/operations/plan/__init__.py +0 -3
  391. lionagi-0.5.4/lionagi/operations/select/__init__.py +0 -3
  392. lionagi-0.5.4/lionagi/protocols/adapters/__init__.py +0 -0
  393. lionagi-0.5.4/lionagi/protocols/adapters/adapter.py +0 -79
  394. lionagi-0.5.4/lionagi/protocols/adapters/json_adapter.py +0 -43
  395. lionagi-0.5.4/lionagi/protocols/adapters/pandas_adapter.py +0 -96
  396. lionagi-0.5.4/lionagi/protocols/configs/__init__.py +0 -0
  397. lionagi-0.5.4/lionagi/protocols/configs/branch_config.py +0 -86
  398. lionagi-0.5.4/lionagi/protocols/configs/id_config.py +0 -15
  399. lionagi-0.5.4/lionagi/protocols/configs/imodel_config.py +0 -73
  400. lionagi-0.5.4/lionagi/protocols/configs/log_config.py +0 -93
  401. lionagi-0.5.4/lionagi/protocols/configs/retry_config.py +0 -29
  402. lionagi-0.5.4/lionagi/protocols/configs/types.py +0 -15
  403. lionagi-0.5.4/lionagi/protocols/operatives/instruct.py +0 -194
  404. lionagi-0.5.4/lionagi/protocols/operatives/types.py +0 -19
  405. lionagi-0.5.4/lionagi/protocols/registries/_component_registry.py +0 -23
  406. lionagi-0.5.4/lionagi/protocols/registries/_pile_registry.py +0 -30
  407. lionagi-0.5.4/lionagi/service/__init__.py +0 -16
  408. lionagi-0.5.4/lionagi/service/complete_request_info.py +0 -11
  409. lionagi-0.5.4/lionagi/service/imodel.py +0 -125
  410. lionagi-0.5.4/lionagi/service/rate_limiter.py +0 -108
  411. lionagi-0.5.4/lionagi/service/service.py +0 -41
  412. lionagi-0.5.4/lionagi/service/service_match_util.py +0 -131
  413. lionagi-0.5.4/lionagi/service/service_util.py +0 -72
  414. lionagi-0.5.4/lionagi/service/token_calculator.py +0 -51
  415. lionagi-0.5.4/lionagi/settings.py +0 -128
  416. lionagi-0.5.4/lionagi/strategies/__init__.py +0 -0
  417. lionagi-0.5.4/lionagi/strategies/types.py +0 -21
  418. lionagi-0.5.4/lionagi/version.py +0 -1
  419. {lionagi-0.5.4 → lionagi-0.6.0}/.github/FUNDING.yml +0 -0
  420. {lionagi-0.5.4 → lionagi-0.6.0}/.github/dependabot.yml +0 -0
  421. {lionagi-0.5.4 → lionagi-0.6.0}/.github/workflows/codeql.yml +0 -0
  422. {lionagi-0.5.4 → lionagi-0.6.0}/.gitignore +0 -0
  423. {lionagi-0.5.4 → lionagi-0.6.0}/.pre-commit-config.yaml +0 -0
  424. {lionagi-0.5.4 → lionagi-0.6.0}/.python-version +0 -0
  425. {lionagi-0.5.4 → lionagi-0.6.0}/CODE_OF_CONDUCT.md +0 -0
  426. {lionagi-0.5.4 → lionagi-0.6.0}/CONTRIBUTING.md +0 -0
  427. {lionagi-0.5.4 → lionagi-0.6.0}/LICENSE +0 -0
  428. {lionagi-0.5.4 → lionagi-0.6.0}/docs/api_reference/action.md +0 -0
  429. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/libs}/__init__.py +0 -0
  430. {lionagi-0.5.4/lionagi/core/action → lionagi-0.6.0/lionagi/libs/compress}/__init__.py +0 -0
  431. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/libs/file}/__init__.py +0 -0
  432. {lionagi-0.5.4/lionagi/core/forms → lionagi-0.6.0/lionagi/libs/nested}/__init__.py +0 -0
  433. {lionagi-0.5.4/lionagi/core/generic → lionagi-0.6.0/lionagi/libs/package}/__init__.py +0 -0
  434. {lionagi-0.5.4/lionagi/core/session → lionagi-0.6.0/lionagi/libs/schema}/__init__.py +0 -0
  435. {lionagi-0.5.4/lionagi/integrations/anthropic_ → lionagi-0.6.0/lionagi/libs/validate}/__init__.py +0 -0
  436. {lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints → lionagi-0.6.0/lionagi/operations/brainstorm}/__init__.py +0 -0
  437. {lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages → lionagi-0.6.0/lionagi/operations/strategies}/__init__.py +0 -0
  438. {lionagi-0.5.4/lionagi/integrations/anthropic_/api_endpoints/messages/request → lionagi-0.6.0/lionagi/operatives}/__init__.py +0 -0
  439. {lionagi-0.5.4/lionagi/integrations/groq_ → lionagi-0.6.0/lionagi/operatives/action}/__init__.py +0 -0
  440. {lionagi-0.5.4/lionagi/integrations/litellm_ → lionagi-0.6.0/lionagi/operatives/forms}/__init__.py +0 -0
  441. {lionagi-0.5.4/lionagi/core → lionagi-0.6.0/lionagi/operatives}/forms/utils.py +0 -0
  442. {lionagi-0.5.4/lionagi/integrations/ollama_ → lionagi-0.6.0/lionagi/operatives/instruct}/__init__.py +0 -0
  443. {lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints → lionagi-0.6.0/lionagi/operatives/models}/__init__.py +0 -0
  444. {lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/chat_completion → lionagi-0.6.0/lionagi/protocols}/__init__.py +0 -0
  445. {lionagi-0.5.4/lionagi/integrations/ollama_/api_endpoints/model → lionagi-0.6.0/lionagi/protocols/generic}/__init__.py +0 -0
  446. {lionagi-0.5.4/lionagi/integrations/perplexity_ → lionagi-0.6.0/lionagi/protocols/graph}/__init__.py +0 -0
  447. {lionagi-0.5.4/lionagi/protocols → lionagi-0.6.0/lionagi/protocols/mail}/__init__.py +0 -0
  448. {lionagi-0.5.4/lionagi/protocols/operatives → lionagi-0.6.0/lionagi/protocols/messages}/__init__.py +0 -0
  449. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/README.md +0 -0
  450. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/action_request.jinja2 +0 -0
  451. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/action_response.jinja2 +0 -0
  452. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/system_message.jinja2 +0 -0
  453. {lionagi-0.5.4/lionagi/core/communication → lionagi-0.6.0/lionagi/protocols/messages}/templates/tool_schemas.jinja2 +0 -0
  454. {lionagi-0.5.4/lionagi/protocols/registries → lionagi-0.6.0/lionagi/service/endpoints}/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
-
2
1
  # model providers
3
2
  # OPENAI_API_KEY=
4
3
  # ANTHROPIC_API_KEY=
5
4
  # PERPLEXITY_API_KEY=
6
5
  # GROQ_API_KEY=
6
+ # OPENROUTER_API_KEY=
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- python-version: ['3.11', '3.12', '3.13']
14
+ python-version: ['3.10', '3.11', '3.12', '3.13']
15
15
  steps:
16
16
  - uses: actions/checkout@v4
17
17
  - name: Set up Python ${{ matrix.python-version }}
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- python-version: ['3.11', '3.12', '3.13']
15
+ python-version: ['3.10', '3.11', '3.12', '3.13']
16
16
  steps:
17
17
  - uses: actions/checkout@v4
18
18
  - name: Set up Python ${{ matrix.python-version }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.5.4
3
+ Version: 0.6.0
4
4
  Summary: An AGentic Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -218,18 +218,19 @@ Classifier: Programming Language :: Python :: 3.11
218
218
  Classifier: Programming Language :: Python :: 3.12
219
219
  Classifier: Programming Language :: Python :: 3.13
220
220
  Requires-Python: >=3.11
221
- Requires-Dist: aiohttp>=3.11.10
222
- Requires-Dist: jinja2>=3.1.4
221
+ Requires-Dist: aiocache>=0.12.0
222
+ Requires-Dist: aiohttp>=3.11.0
223
+ Requires-Dist: jinja2>=3.1.0
223
224
  Requires-Dist: litellm>=1.55.3
224
225
  Requires-Dist: pandas>=2.0.0
225
226
  Requires-Dist: pillow>=11.0.0
226
- Requires-Dist: pydantic>=2.10.3
227
+ Requires-Dist: pydantic>=2.0.0
227
228
  Requires-Dist: python-dotenv>=1.0.1
228
229
  Description-Content-Type: text/markdown
229
230
 
230
231
  ![PyPI - Version](https://img.shields.io/pypi/v/lionagi?labelColor=233476aa&color=231fc935)
231
232
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?color=blue)
232
- ![Python Version](https://img.shields.io/badge/python-3.11%2B-blue)
233
+ ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)
233
234
 
234
235
  [Documentation](https://ocean-lion.com/Welcome) | [Discord](https://discord.gg/aqSJ2v46vu) | [PyPI](https://pypi.org/project/lionagi/) | [Roadmap](https://trello.com/b/3seomsrI/lionagi)
235
236
 
@@ -541,7 +542,7 @@ Join our [Discord community](https://discord.gg/aqSJ2v46vu) to:
541
542
  author = {Haiyang Li},
542
543
  month = {12},
543
544
  year = {2023},
544
- title = {LionAGI: Intelligent Integration Framework},
545
+ title = {LionAGI: Towards Automated General Intelligence},
545
546
  url = {https://github.com/lion-agi/lionagi},
546
547
  }
547
548
  ```
@@ -1,6 +1,6 @@
1
1
  ![PyPI - Version](https://img.shields.io/pypi/v/lionagi?labelColor=233476aa&color=231fc935)
2
2
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?color=blue)
3
- ![Python Version](https://img.shields.io/badge/python-3.11%2B-blue)
3
+ ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)
4
4
 
5
5
  [Documentation](https://ocean-lion.com/Welcome) | [Discord](https://discord.gg/aqSJ2v46vu) | [PyPI](https://pypi.org/project/lionagi/) | [Roadmap](https://trello.com/b/3seomsrI/lionagi)
6
6
 
@@ -312,7 +312,7 @@ Join our [Discord community](https://discord.gg/aqSJ2v46vu) to:
312
312
  author = {Haiyang Li},
313
313
  month = {12},
314
314
  year = {2023},
315
- title = {LionAGI: Intelligent Integration Framework},
315
+ title = {LionAGI: Towards Automated General Intelligence},
316
316
  url = {https://github.com/lion-agi/lionagi},
317
317
  }
318
318
  ```
@@ -0,0 +1,113 @@
1
+ import os
2
+ from collections import defaultdict
3
+
4
+
5
+ def analyze_file(file_path):
6
+ with open(file_path, encoding="utf-8") as file:
7
+ lines = file.readlines()
8
+
9
+ stats = {
10
+ "total_lines": len(lines),
11
+ "code_lines": 0,
12
+ "comment_lines": 0,
13
+ "blank_lines": 0,
14
+ "docstring_lines": 0,
15
+ }
16
+
17
+ in_docstring = False
18
+ docstring_delimiter = None
19
+
20
+ for line in lines:
21
+ stripped = line.strip()
22
+
23
+ if not stripped:
24
+ stats["blank_lines"] += 1
25
+ continue
26
+
27
+ if in_docstring:
28
+ stats["docstring_lines"] += 1
29
+ if stripped.endswith(docstring_delimiter):
30
+ in_docstring = False
31
+ continue
32
+
33
+ if stripped.startswith("'''") or stripped.startswith('"""'):
34
+ stats["docstring_lines"] += 1
35
+ in_docstring = True
36
+ docstring_delimiter = stripped[0] * 3
37
+ if stripped.endswith(docstring_delimiter) and len(stripped) > 3:
38
+ in_docstring = False
39
+ continue
40
+
41
+ if stripped.startswith("#"):
42
+ stats["comment_lines"] += 1
43
+ else:
44
+ stats["code_lines"] += 1
45
+
46
+ return stats
47
+
48
+
49
+ def analyze_package(package_path):
50
+ total_stats = defaultdict(lambda: defaultdict(int))
51
+ file_stats = {}
52
+
53
+ for root, _, files in os.walk(package_path):
54
+ for file in files:
55
+ if file.endswith((".py", ".pyx", ".pyd")):
56
+ file_path = os.path.join(root, file)
57
+ relative_path = os.path.relpath(file_path, package_path)
58
+ stats = analyze_file(file_path)
59
+ file_stats[relative_path] = stats
60
+
61
+ file_type = "Python"
62
+ if file.endswith(".pyx"):
63
+ file_type = "Cython"
64
+ elif file.endswith(".pyd"):
65
+ file_type = "Python DLL"
66
+
67
+ for key, value in stats.items():
68
+ total_stats[file_type][key] += value
69
+
70
+ return total_stats, file_stats
71
+
72
+
73
+ def print_analysis(total_stats, file_stats):
74
+ print("Package Analysis:")
75
+ print("=================")
76
+
77
+ grand_total = defaultdict(int)
78
+ for file_type, stats in total_stats.items():
79
+ print(f"\n{file_type} Files:")
80
+ print(f" Total Lines: {stats['total_lines']}")
81
+ print(f" Code Lines: {stats['code_lines']}")
82
+ print(f" Comment Lines: {stats['comment_lines']}")
83
+ print(f" Docstring Lines: {stats['docstring_lines']}")
84
+ print(f" Blank Lines: {stats['blank_lines']}")
85
+
86
+ for key, value in stats.items():
87
+ grand_total[key] += value
88
+
89
+ print("\nGrand Total:")
90
+ print(f" Total Lines: {grand_total['total_lines']}")
91
+ print(f" Code Lines: {grand_total['code_lines']}")
92
+ print(f" Comment Lines: {grand_total['comment_lines']}")
93
+ print(f" Docstring Lines: {grand_total['docstring_lines']}")
94
+ print(f" Blank Lines: {grand_total['blank_lines']}")
95
+
96
+ print("\nTop 10 Files by Code Lines:")
97
+ sorted_files = sorted(
98
+ file_stats.items(), key=lambda x: x[1]["code_lines"], reverse=True
99
+ )
100
+ for file, stats in sorted_files[:10]:
101
+ print(f" {file}: {stats['code_lines']} code lines")
102
+
103
+
104
+ if __name__ == "__main__":
105
+ print("Lion Analysis")
106
+ package_path = "./lionagi" # Replace with your package path
107
+ total_stats, file_stats = analyze_package(package_path)
108
+ print_analysis(total_stats, file_stats)
109
+
110
+ print("\nDev Tool Analysis")
111
+ package_path = "./tests" # Replace with your package path
112
+ total_stats, file_stats = analyze_package(package_path)
113
+ print_analysis(total_stats, file_stats)
@@ -0,0 +1,21 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ from lionagi.operatives import types as ops_types
6
+ from lionagi.protocols import types as types
7
+ from lionagi.service.imodel import iModel
8
+ from lionagi.session.session import Branch, Session
9
+ from lionagi.version import __version__
10
+
11
+ LiteiModel = iModel
12
+
13
+ __all__ = (
14
+ "Session",
15
+ "Branch",
16
+ "iModel",
17
+ "LiteiModel",
18
+ "types",
19
+ "ops_types",
20
+ "__version__",
21
+ )
@@ -2,23 +2,53 @@
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
+ import ast
6
+ import importlib.util
5
7
  import os
6
8
  from typing import TypeVar
7
9
 
8
- from lionagi.libs.utils import get_class_file_registry, get_class_objects
9
-
10
10
  T = TypeVar("T")
11
11
  LION_CLASS_REGISTRY: dict[str, type[T]] = {}
12
12
  LION_CLASS_FILE_REGISTRY: dict[str, str] = {}
13
13
 
14
14
  pattern_list = [
15
- "lionagi/core/generic",
16
- "lionagi/core/communication",
17
- "lionagi/core/action",
18
- "lionagi/core/session",
19
- "lionagi/core/forms",
15
+ "lionagi/protocols/generic",
16
+ "lionagi/protocols/graph",
17
+ "lionagi/protocols/messages",
20
18
  ]
21
19
 
20
+ __all__ = (
21
+ "get_class",
22
+ "LION_CLASS_REGISTRY",
23
+ )
24
+
25
+
26
+ def get_file_classes(file_path):
27
+ with open(file_path) as file:
28
+ file_content = file.read()
29
+
30
+ tree = ast.parse(file_content)
31
+
32
+ class_file_dict = {}
33
+ for node in tree.body:
34
+ if isinstance(node, ast.ClassDef):
35
+ class_file_dict[node.name] = file_path
36
+
37
+ return class_file_dict
38
+
39
+
40
+ def get_class_file_registry(folder_path, pattern_list):
41
+ class_file_registry = {}
42
+ for root, _, files in os.walk(folder_path):
43
+ for file in files:
44
+ if file.endswith(".py"):
45
+ if any(pattern in root for pattern in pattern_list):
46
+ class_file_dict = get_file_classes(
47
+ os.path.join(root, file)
48
+ )
49
+ class_file_registry.update(class_file_dict)
50
+ return class_file_registry
51
+
22
52
 
23
53
  if not LION_CLASS_FILE_REGISTRY:
24
54
  script_path = os.path.abspath(__file__)
@@ -29,6 +59,20 @@ if not LION_CLASS_FILE_REGISTRY:
29
59
  )
30
60
 
31
61
 
62
+ def get_class_objects(file_path):
63
+ class_objects = {}
64
+ spec = importlib.util.spec_from_file_location("module.name", file_path)
65
+ module = importlib.util.module_from_spec(spec)
66
+ spec.loader.exec_module(module)
67
+
68
+ for class_name in dir(module):
69
+ obj = getattr(module, class_name)
70
+ if isinstance(obj, type):
71
+ class_objects[class_name] = obj
72
+
73
+ return class_objects
74
+
75
+
32
76
  def get_class(class_name: str) -> type:
33
77
  """
34
78
  Retrieve a class by name from the registry or dynamically import it.
@@ -64,6 +108,3 @@ def get_class(class_name: str) -> type:
64
108
  return found_class_dict[class_name]
65
109
  except Exception as e:
66
110
  raise ValueError(f"Unable to find class {class_name}: {e}")
67
-
68
-
69
- # File: lionagi/core/util/class_registry_util.py
@@ -0,0 +1,35 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+
6
+ class LionError(Exception):
7
+ pass
8
+
9
+
10
+ class ItemNotFoundError(LionError):
11
+ pass
12
+
13
+
14
+ class ItemExistsError(LionError):
15
+ pass
16
+
17
+
18
+ class IDError(LionError):
19
+ pass
20
+
21
+
22
+ class RelationError(LionError):
23
+ pass
24
+
25
+
26
+ class RateLimitError(LionError):
27
+ pass
28
+
29
+
30
+ class OperationError(LionError):
31
+ pass
32
+
33
+
34
+ class ExecutionError(LionError):
35
+ pass
@@ -1,8 +1,12 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import numpy as np
2
6
  from pydantic import BaseModel
3
7
 
4
- from lionagi.core.generic import Log
5
- from lionagi.core.typing import Note
8
+ from lionagi.operatives.models.note import Note
9
+ from lionagi.protocols.generic.log import Log
6
10
 
7
11
 
8
12
  class PerplexityTokenScore(BaseModel):
@@ -1,22 +1,10 @@
1
- """
2
- Copyright 2024 HaiyangLi
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- """
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
16
4
 
17
5
  import asyncio
18
6
 
19
- from lionagi.integrations.litellm_.imodel import iModel
7
+ from lionagi.service.imodel import iModel
20
8
 
21
9
  from .models import PerplexityScores
22
10
 
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import math
2
6
  from collections.abc import Callable
3
7
  from typing import Any, Literal
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import logging
2
6
  from pathlib import Path
3
7
  from shutil import copy2
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections.abc import Callable
2
6
  from pathlib import Path
3
7
  from typing import Any, Literal
@@ -45,47 +49,6 @@ class ChunkContentParams(BaseModel):
45
49
  )
46
50
 
47
51
 
48
- class CreatePathParams(BaseModel):
49
- """Parameters for creating file paths with various options.
50
-
51
- This model defines parameters used by the create_path function to generate
52
- file paths with support for timestamps, random hashes, and existence checks.
53
- """
54
-
55
- directory: Path | str = Field(
56
- description="Directory where the file will be created"
57
- )
58
- filename: str = Field(description="Base name of the file to create")
59
- extension: str | None = Field(
60
- default=None,
61
- description="File extension (with or without leading dot)",
62
- )
63
- timestamp: bool = Field(
64
- default=False, description="If True, adds a timestamp to the filename"
65
- )
66
- dir_exist_ok: bool = Field(
67
- default=True,
68
- description="If True, doesn't raise an error if the directory exists",
69
- )
70
- file_exist_ok: bool = Field(
71
- default=False,
72
- description="If True, allows overwriting of existing files",
73
- )
74
- time_prefix: bool = Field(
75
- default=False,
76
- description="If True, adds timestamp as prefix instead of suffix",
77
- )
78
- timestamp_format: str | None = Field(
79
- default=None,
80
- description="Custom format for the timestamp (strftime format)",
81
- )
82
- random_hash_digits: int = Field(
83
- default=0,
84
- ge=0,
85
- description="Number of random hash digits to append to filename",
86
- )
87
-
88
-
89
52
  class DirToFilesParams(BaseModel):
90
53
  """Parameters for processing directories and collecting file paths.
91
54
 
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import logging
2
6
  from collections.abc import Callable
3
7
  from concurrent.futures import ThreadPoolExecutor, as_completed
@@ -1,9 +1,13 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import json
2
6
  import logging
3
7
  from pathlib import Path
4
8
  from typing import Any
5
9
 
6
- from .path import create_path
10
+ from lionagi.utils import create_path
7
11
 
8
12
 
9
13
  def save_to_file(
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections import deque
2
6
  from collections.abc import Mapping, Sequence
3
7
  from typing import Any, Literal, TypeVar, overload
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections.abc import Callable
2
6
  from typing import Any
3
7
 
@@ -1,6 +1,11 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from typing import Any
2
6
 
3
- from ...constants import UNDEFINED
7
+ from lionagi.utils import UNDEFINED
8
+
4
9
  from .utils import get_target_container
5
10
 
6
11
 
@@ -1,6 +1,10 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from typing import Any
2
6
 
3
- from ..type_convert.to_list import to_list
7
+ from lionagi.utils import to_list
4
8
 
5
9
 
6
10
  def ninsert(
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections import defaultdict
2
6
  from collections.abc import Callable, Sequence
3
7
  from itertools import chain
@@ -1,8 +1,11 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections.abc import Sequence
2
6
  from typing import Any
3
7
 
4
- from ...constants import UNDEFINED
5
- from ..type_convert.to_list import to_list
8
+ from lionagi.utils import UNDEFINED, to_list
6
9
 
7
10
 
8
11
  def npop(
@@ -1,7 +1,12 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from collections.abc import Sequence
2
6
  from typing import Any
3
7
 
4
- from ..type_convert.to_list import to_list
8
+ from lionagi.utils import to_list
9
+
5
10
  from .utils import ensure_list_index
6
11
 
7
12
 
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from typing import Any
2
6
 
3
7
 
@@ -1,6 +1,10 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from typing import Any
2
6
 
3
- from ...constants import UNDEFINED
7
+ from lionagi.utils import UNDEFINED
4
8
 
5
9
 
6
10
  def is_homogeneous(
@@ -1,10 +1,14 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import importlib.metadata
2
6
  import importlib.util
3
7
  import logging
4
8
  import subprocess
5
9
  from typing import Any
6
10
 
7
- from ..utils import run_pip_command
11
+ from lionagi.utils import run_package_manager_command
8
12
 
9
13
 
10
14
  def check_import(
@@ -135,7 +139,7 @@ def install_import(
135
139
  except ImportError:
136
140
  logging.info(f"Installing {pip_name}...")
137
141
  try:
138
- run_pip_command(["install", pip_name])
142
+ run_package_manager_command(["install", pip_name])
139
143
  return import_module(
140
144
  package_name=package_name,
141
145
  module_name=module_name,
@@ -1,8 +1,12 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import importlib.metadata
2
6
  import logging
3
7
  import subprocess
4
8
 
5
- from ..utils import run_pip_command
9
+ from lionagi.utils import run_package_manager_command
6
10
 
7
11
 
8
12
  def list_installed_packages() -> list[str]:
@@ -33,7 +37,7 @@ def uninstall_package(package_name: str) -> None:
33
37
  subprocess.CalledProcessError: If the uninstallation fails.
34
38
  """
35
39
  try:
36
- run_pip_command(["uninstall", package_name, "-y"])
40
+ run_package_manager_command(["uninstall", package_name, "-y"])
37
41
  logging.info(f"Successfully uninstalled {package_name}.")
38
42
  except subprocess.CalledProcessError as e:
39
43
  logging.error(f"Failed to uninstall {package_name}. Error: {e}")
@@ -51,7 +55,7 @@ def update_package(package_name: str) -> None:
51
55
  subprocess.CalledProcessError: If the update fails.
52
56
  """
53
57
  try:
54
- run_pip_command(["install", "--upgrade", package_name])
58
+ run_package_manager_command(["install", "--upgrade", package_name])
55
59
  logging.info(f"Successfully updated {package_name}.")
56
60
  except subprocess.CalledProcessError as e:
57
61
  logging.error(f"Failed to update {package_name}. Error: {e}")
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  from pydantic import BaseModel, Field
2
6
 
3
7
 
@@ -1,3 +1,7 @@
1
+ # Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
1
5
  import platform
2
6
 
3
7