langflow-base-nightly 0.5.0.dev37__py3-none-any.whl → 0.5.0.dev38__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. langflow/__main__.py +1 -1
  2. langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +24 -30
  3. langflow/alembic/versions/58b28437a398_modify_nullable.py +6 -6
  4. langflow/alembic/versions/79e675cb6752_change_datetime_type.py +24 -30
  5. langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +12 -13
  6. langflow/api/build.py +21 -26
  7. langflow/api/health_check_router.py +3 -3
  8. langflow/api/utils.py +3 -3
  9. langflow/api/v1/callback.py +2 -2
  10. langflow/api/v1/chat.py +19 -31
  11. langflow/api/v1/endpoints.py +10 -10
  12. langflow/api/v1/flows.py +1 -1
  13. langflow/api/v1/knowledge_bases.py +3 -3
  14. langflow/api/v1/mcp.py +12 -12
  15. langflow/api/v1/mcp_projects.py +45 -81
  16. langflow/api/v1/mcp_utils.py +8 -8
  17. langflow/api/v1/schemas.py +1 -5
  18. langflow/api/v1/store.py +1 -1
  19. langflow/api/v1/validate.py +2 -2
  20. langflow/api/v1/voice_mode.py +58 -62
  21. langflow/api/v2/files.py +2 -2
  22. langflow/api/v2/mcp.py +10 -9
  23. langflow/base/composio/composio_base.py +21 -2
  24. langflow/base/data/docling_utils.py +194 -0
  25. langflow/base/embeddings/aiml_embeddings.py +1 -1
  26. langflow/base/flow_processing/utils.py +1 -2
  27. langflow/base/io/__init__.py +0 -1
  28. langflow/base/langwatch/utils.py +2 -1
  29. langflow/base/mcp/util.py +49 -47
  30. langflow/base/prompts/api_utils.py +1 -1
  31. langflow/base/tools/flow_tool.py +2 -2
  32. langflow/base/tools/run_flow.py +2 -6
  33. langflow/components/Notion/add_content_to_page.py +2 -2
  34. langflow/components/Notion/list_database_properties.py +2 -2
  35. langflow/components/Notion/list_pages.py +2 -2
  36. langflow/components/Notion/page_content_viewer.py +2 -2
  37. langflow/components/Notion/update_page_property.py +1 -1
  38. langflow/components/agentql/agentql_api.py +2 -10
  39. langflow/components/agents/agent.py +3 -3
  40. langflow/components/agents/mcp_component.py +14 -14
  41. langflow/components/anthropic/anthropic.py +5 -4
  42. langflow/components/assemblyai/assemblyai_get_subtitles.py +2 -2
  43. langflow/components/assemblyai/assemblyai_lemur.py +2 -2
  44. langflow/components/assemblyai/assemblyai_list_transcripts.py +2 -2
  45. langflow/components/assemblyai/assemblyai_poll_transcript.py +2 -2
  46. langflow/components/assemblyai/assemblyai_start_transcript.py +2 -2
  47. langflow/components/data/file.py +575 -55
  48. langflow/components/data/url.py +1 -1
  49. langflow/components/datastax/astra_assistant_manager.py +3 -3
  50. langflow/components/datastax/create_assistant.py +1 -2
  51. langflow/components/deactivated/merge_data.py +1 -2
  52. langflow/components/deactivated/sub_flow.py +6 -7
  53. langflow/components/deactivated/vectara_self_query.py +3 -3
  54. langflow/components/docling/__init__.py +0 -198
  55. langflow/components/docling/docling_inline.py +1 -1
  56. langflow/components/embeddings/text_embedder.py +3 -3
  57. langflow/components/firecrawl/firecrawl_extract_api.py +2 -9
  58. langflow/components/google/gmail.py +1 -1
  59. langflow/components/google/google_generative_ai.py +5 -11
  60. langflow/components/groq/groq.py +4 -3
  61. langflow/components/helpers/current_date.py +2 -3
  62. langflow/components/helpers/memory.py +1 -1
  63. langflow/components/ibm/watsonx.py +1 -1
  64. langflow/components/ibm/watsonx_embeddings.py +1 -1
  65. langflow/components/langwatch/langwatch.py +3 -3
  66. langflow/components/logic/flow_tool.py +2 -2
  67. langflow/components/logic/notify.py +1 -1
  68. langflow/components/logic/run_flow.py +2 -3
  69. langflow/components/logic/sub_flow.py +4 -5
  70. langflow/components/mem0/mem0_chat_memory.py +2 -8
  71. langflow/components/nvidia/nvidia.py +3 -3
  72. langflow/components/olivya/olivya.py +7 -7
  73. langflow/components/ollama/ollama.py +8 -6
  74. langflow/components/processing/batch_run.py +8 -8
  75. langflow/components/processing/data_operations.py +2 -2
  76. langflow/components/processing/merge_data.py +1 -2
  77. langflow/components/processing/message_to_data.py +2 -3
  78. langflow/components/processing/parse_json_data.py +1 -1
  79. langflow/components/prototypes/python_function.py +2 -3
  80. langflow/components/serpapi/serp.py +1 -1
  81. langflow/components/tavily/tavily_extract.py +1 -1
  82. langflow/components/tavily/tavily_search.py +1 -1
  83. langflow/components/tools/calculator.py +2 -2
  84. langflow/components/tools/python_code_structured_tool.py +3 -10
  85. langflow/components/tools/python_repl.py +2 -2
  86. langflow/components/tools/searxng.py +3 -3
  87. langflow/components/tools/serp_api.py +2 -2
  88. langflow/components/tools/tavily_search_tool.py +2 -2
  89. langflow/components/tools/yahoo_finance.py +1 -1
  90. langflow/components/twelvelabs/video_embeddings.py +4 -4
  91. langflow/components/vectorstores/local_db.py +1 -1
  92. langflow/components/yahoosearch/yahoo.py +1 -1
  93. langflow/components/youtube/trending.py +3 -4
  94. langflow/custom/attributes.py +2 -1
  95. langflow/custom/code_parser/code_parser.py +1 -1
  96. langflow/custom/custom_component/base_component.py +1 -1
  97. langflow/custom/custom_component/component.py +16 -2
  98. langflow/custom/directory_reader/directory_reader.py +7 -7
  99. langflow/custom/directory_reader/utils.py +1 -2
  100. langflow/custom/utils.py +30 -30
  101. langflow/events/event_manager.py +1 -1
  102. langflow/frontend/assets/{SlackIcon-CnvyOamQ.js → SlackIcon-BhW6H3JR.js} +1 -1
  103. langflow/frontend/assets/{Wikipedia-nyTEXdr2.js → Wikipedia-Dx5jbiy3.js} +1 -1
  104. langflow/frontend/assets/{Wolfram-BYMQkNSq.js → Wolfram-CIyonzwo.js} +1 -1
  105. langflow/frontend/assets/{index-HK3bVMYA.js → index-0XQqYgdG.js} +1 -1
  106. langflow/frontend/assets/{index-BZgXW854.js → index-1Q3VBqKn.js} +1 -1
  107. langflow/frontend/assets/{index-BQ6NUdMY.js → index-35sspuLu.js} +1 -1
  108. langflow/frontend/assets/{index-DPCzHdsC.js → index-7hzXChQz.js} +1 -1
  109. langflow/frontend/assets/{index-CFDvOtKC.js → index-8cuhogZP.js} +1 -1
  110. langflow/frontend/assets/{index-CYDAYm-i.js → index-B0m53xKd.js} +1 -1
  111. langflow/frontend/assets/{index-Q9vDw0Xl.js → index-B1XqWJhG.js} +1 -1
  112. langflow/frontend/assets/{index-Gkrq-vzm.js → index-B3KCdQ91.js} +1 -1
  113. langflow/frontend/assets/{index-DytJENYD.js → index-B7uEuOPK.js} +1 -1
  114. langflow/frontend/assets/{index-DkXy1WFo.js → index-B8UR8v-Q.js} +1 -1
  115. langflow/frontend/assets/{index-BChjg6Az.js → index-BD7Io1hL.js} +6 -6
  116. langflow/frontend/assets/{index-CyPvTB63.js → index-BDQrd7Tj.js} +1 -1
  117. langflow/frontend/assets/{index-BbJjt5m4.js → index-BDuk0d7P.js} +1 -1
  118. langflow/frontend/assets/{index-BBxAPk1y.js → index-BFQ8KFK0.js} +1 -1
  119. langflow/frontend/assets/{index-BqPpO6KG.js → index-BFf0HTFI.js} +1 -1
  120. langflow/frontend/assets/{index-yCHsaqs8.js → index-BHhnpSkW.js} +1 -1
  121. langflow/frontend/assets/{index-Bd6WtbKA.js → index-BKKrUElc.js} +1 -1
  122. langflow/frontend/assets/{index-DHq8TQPB.js → index-BKeZt2hQ.js} +1 -1
  123. langflow/frontend/assets/{index-BCCGvqay.js → index-BKlQbl-6.js} +1 -1
  124. langflow/frontend/assets/{index-Boso-xEw.js → index-BLYw9MK2.js} +1 -1
  125. langflow/frontend/assets/{index-DmMDPoi0.js → index-BLsVo9iW.js} +1 -1
  126. langflow/frontend/assets/{index-Car-zdor.js → index-BNQIbda3.js} +1 -1
  127. langflow/frontend/assets/{index-Dg-63Si_.js → index-BPR2mEFC.js} +1 -1
  128. langflow/frontend/assets/{index-CTrt1Q_j.js → index-BPfdqCc_.js} +1 -1
  129. langflow/frontend/assets/{index-CVQmT7ZL.js → index-BQrVDjR1.js} +1 -1
  130. langflow/frontend/assets/{index-BB15_iOb.js → index-BRmSeoWR.js} +1 -1
  131. langflow/frontend/assets/{index-BX5D-USa.js → index-BUse-kxM.js} +1 -1
  132. langflow/frontend/assets/{index-CaQ_H9ww.js → index-BVFaF7HW.js} +1 -1
  133. langflow/frontend/assets/{index-C26RqKWL.js → index-BWgIWfv2.js} +1 -1
  134. langflow/frontend/assets/{index-DbMFlnHE.js → index-BWt5xGeA.js} +1 -1
  135. langflow/frontend/assets/{index-Db71w3lq.js → index-BYhcGLTV.js} +1 -1
  136. langflow/frontend/assets/{index-DzW2mfkK.js → index-BYjw7Gk3.js} +1 -1
  137. langflow/frontend/assets/{index-DJB12jIC.js → index-BZFljdMa.js} +1 -1
  138. langflow/frontend/assets/{index-nVwHLjuV.js → index-BcAgItH4.js} +1 -1
  139. langflow/frontend/assets/{index-DkelbYy7.js → index-Bct1s6__.js} +1 -1
  140. langflow/frontend/assets/{index-ChXJpBz4.js → index-Bhv79Zso.js} +1 -1
  141. langflow/frontend/assets/{index-BxEuHa76.js → index-Bj3lSwvZ.js} +1 -1
  142. langflow/frontend/assets/{index-BkPYpfgw.js → index-Bk4mTwnI.js} +1 -1
  143. langflow/frontend/assets/{index-BvT7L317.js → index-BmIx1cws.js} +1 -1
  144. langflow/frontend/assets/{index-DIDDfmlJ.js → index-BmYJJ5YS.js} +1 -1
  145. langflow/frontend/assets/{index-C7QWbnLK.js → index-BnAFhkSN.js} +1 -1
  146. langflow/frontend/assets/{index-CJo_cyWW.js → index-Bo-ww0Bb.js} +1 -1
  147. langflow/frontend/assets/{index-DjQETUy8.js → index-BpmqDOeZ.js} +1 -1
  148. langflow/frontend/assets/{index-ya2uXE8v.js → index-BrVhdPZb.js} +1 -1
  149. langflow/frontend/assets/{index-DCRk27Tp.js → index-BvGQfVBD.js} +1 -1
  150. langflow/frontend/assets/{index-BTrsh9LS.js → index-Bwi4flFg.js} +1 -1
  151. langflow/frontend/assets/{index-BRxvproo.js → index-BzoRPtTY.js} +1 -1
  152. langflow/frontend/assets/{index-BIQQCMvz.js → index-C--IDAyc.js} +1 -1
  153. langflow/frontend/assets/{index-DfngcQxO.js → index-C0E3_MIK.js} +1 -1
  154. langflow/frontend/assets/{index-Bvxg4_ux.js → index-C27Jj_26.js} +1 -1
  155. langflow/frontend/assets/{index-D8lOi1GI.js → index-C2eQmQsn.js} +1 -1
  156. langflow/frontend/assets/{index-rXV1G1aB.js → index-C8K0r39B.js} +1 -1
  157. langflow/frontend/assets/{index-B3Sur4Z3.js → index-CEJNWPhA.js} +1 -1
  158. langflow/frontend/assets/{index-BR0bkVqX.js → index-CFNTYfFK.js} +1 -1
  159. langflow/frontend/assets/{index-Bnqod3vk.js → index-CMHpjHZl.js} +1 -1
  160. langflow/frontend/assets/{index-BLGYN-9b.js → index-CSu8KHOi.js} +1 -1
  161. langflow/frontend/assets/{index-BOB_zsjl.js → index-CUKmGsI6.js} +1 -1
  162. langflow/frontend/assets/{index-BzEUlaw_.js → index-CWYiSeWV.js} +1 -1
  163. langflow/frontend/assets/{index-DVlceYFD.js → index-CY7_TBTC.js} +1 -1
  164. langflow/frontend/assets/{index-D3DDfngy.js → index-CbnWRlYY.js} +1 -1
  165. langflow/frontend/assets/{index-cvZdgWHQ.js → index-CfPBgkqg.js} +1 -1
  166. langflow/frontend/assets/{index-Ui4xUImO.js → index-Cg53lrYh.js} +1 -1
  167. langflow/frontend/assets/{index-C6jri9Wm.js → index-CgU7KF4I.js} +1 -1
  168. langflow/frontend/assets/{index-BVEZDXxS.js → index-CgwykVGh.js} +1 -1
  169. langflow/frontend/assets/{index-BOeo01QB.js → index-Ch5r0oW6.js} +1 -1
  170. langflow/frontend/assets/{index-D6PSjHxP.js → index-CjsommIr.js} +1 -1
  171. langflow/frontend/assets/{index-pCQ_yw8m.js → index-CkK25zZO.js} +1 -1
  172. langflow/frontend/assets/{index-BFp_O-c9.js → index-CkjwSTSM.js} +1 -1
  173. langflow/frontend/assets/{index-Du_18NCU.js → index-CmSFKgiD.js} +1 -1
  174. langflow/frontend/assets/{index-BvwZfF2i.js → index-Cr5v2ave.js} +1 -1
  175. langflow/frontend/assets/{index-FUxmznS-.js → index-CrAF-31Y.js} +1 -1
  176. langflow/frontend/assets/{index-C-2hghRJ.js → index-CsLQiWNf.js} +1 -1
  177. langflow/frontend/assets/{index-C_TdzfAn.js → index-CuCM7Wu7.js} +1 -1
  178. langflow/frontend/assets/{index-D5_DsUJc.js → index-Cxy9sEpy.js} +1 -1
  179. langflow/frontend/assets/{index-C_veJlEb.js → index-CyP3py8K.js} +1 -1
  180. langflow/frontend/assets/{index-OazXJdEl.js → index-CzHzeZuA.js} +1 -1
  181. langflow/frontend/assets/{index-CvcEzq4x.js → index-D1oynC8a.js} +1 -1
  182. langflow/frontend/assets/{index-CZQ9rXNa.js → index-D4tjMhfY.js} +1 -1
  183. langflow/frontend/assets/{index-B1YN7oMV.js → index-D6CSIrp1.js} +1 -1
  184. langflow/frontend/assets/{index-DfxYyS3M.js → index-D9kwEzPB.js} +1 -1
  185. langflow/frontend/assets/{index-BbRm7beF.js → index-DDXsm8tz.js} +1 -1
  186. langflow/frontend/assets/{index-xuIrH2Dq.js → index-DDhJVVel.js} +1 -1
  187. langflow/frontend/assets/{index-CmplyEaa.js → index-DH6o91_s.js} +1 -1
  188. langflow/frontend/assets/{index-DnEGCgih.js → index-DHngW1k8.js} +1 -1
  189. langflow/frontend/assets/{index-ajRge-Mg.js → index-DIKUsGLF.js} +1 -1
  190. langflow/frontend/assets/{index-DpClkXIV.js → index-DJESSNJi.js} +1 -1
  191. langflow/frontend/assets/{index-8WdfSTTz.js → index-DMCWDJOl.js} +1 -1
  192. langflow/frontend/assets/{index-DZTC5pdT.js → index-DOEvKC2X.js} +1 -1
  193. langflow/frontend/assets/{index-DysKpOuj.js → index-DOQDkSoK.js} +1 -1
  194. langflow/frontend/assets/{index-C82JjCPD.js → index-DXAfIEvs.js} +1 -1
  195. langflow/frontend/assets/{index-D8GJngXa.js → index-DZP_SaHb.js} +1 -1
  196. langflow/frontend/assets/{index-DIkNW9Cd.js → index-DZxUIhWh.js} +1 -1
  197. langflow/frontend/assets/{index-DK1Ptcc4.js → index-Dda2u_yz.js} +1 -1
  198. langflow/frontend/assets/{index-BWmPX4iQ.js → index-Dg8N3NSO.js} +1 -1
  199. langflow/frontend/assets/{index-CWdkbVsd.js → index-DkGhPNeA.js} +1 -1
  200. langflow/frontend/assets/{index-DF5VwgU6.js → index-Dka_Rk4-.js} +1 -1
  201. langflow/frontend/assets/{index-Bsa0xZyL.js → index-DljpLeCW.js} +1 -1
  202. langflow/frontend/assets/{index-CLPdN-q6.js → index-DnVYJtVO.js} +1 -1
  203. langflow/frontend/assets/{index-CxvP91st.js → index-DqbzUcI5.js} +1 -1
  204. langflow/frontend/assets/{index-BIzTEqFh.js → index-Dr6pVDPI.js} +1 -1
  205. langflow/frontend/assets/{index-tVYiABdp.js → index-DsoX2o1S.js} +1 -1
  206. langflow/frontend/assets/{index-CCePCqkT.js → index-DwfHWnX7.js} +1 -1
  207. langflow/frontend/assets/{index-BEMw2Np8.js → index-Dx-Z87KT.js} +1 -1
  208. langflow/frontend/assets/{index-BRYjyhAd.js → index-DyqITq51.js} +1 -1
  209. langflow/frontend/assets/{index-l7bzB8Ex.js → index-DzIv3RyR.js} +1 -1
  210. langflow/frontend/assets/{index-D-9TI74R.js → index-G4ro0MjT.js} +1 -1
  211. langflow/frontend/assets/{index-CCxGSSTT.js → index-H7J7w7fa.js} +1 -1
  212. langflow/frontend/assets/{index-_UcqeEjm.js → index-KWY77KfV.js} +1 -1
  213. langflow/frontend/assets/{index-Dqd4RjYA.js → index-U9GWm1eH.js} +1 -1
  214. langflow/frontend/assets/{index-Dq5ilsem.js → index-Un9pWxnP.js} +1 -1
  215. langflow/frontend/assets/{index-BzL_EoKd.js → index-Xi4TplbI.js} +1 -1
  216. langflow/frontend/assets/{index-LbYjHKkn.js → index-_cbGmjF4.js} +1 -1
  217. langflow/frontend/assets/{index-DGRMNe9n.js → index-cEXY6V06.js} +1 -1
  218. langflow/frontend/assets/{index-8yMsjVV2.js → index-dyXKnkMi.js} +1 -1
  219. langflow/frontend/assets/{index-DKHNourL.js → index-eUkS6iJM.js} +1 -1
  220. langflow/frontend/assets/{index-Bv8h2Z-q.js → index-ekfMOqrF.js} +1 -1
  221. langflow/frontend/assets/{index-B748uLP1.js → index-gdb7XMS8.js} +1 -1
  222. langflow/frontend/assets/{index-CpvYQ0ug.js → index-hZUcL0MZ.js} +1 -1
  223. langflow/frontend/assets/{index-BIXaW2aY.js → index-kkA-qHB_.js} +1 -1
  224. langflow/frontend/assets/{index-BhIOhlCH.js → index-mzl9ULw5.js} +1 -1
  225. langflow/frontend/assets/{index-CYe8Ipef.js → index-oxHBZk2v.js} +1 -1
  226. langflow/frontend/assets/{index-WPFivmdQ.js → index-p2kStSPe.js} +1 -1
  227. langflow/frontend/assets/{index-BmX5CoED.js → index-paQEWYGT.js} +1 -1
  228. langflow/frontend/assets/{index-CpcbQZIF.js → index-r_8gs4nL.js} +1 -1
  229. langflow/frontend/assets/{index-dcnYpT9N.js → index-uiKla4UR.js} +1 -1
  230. langflow/frontend/assets/{index-BTEW9e8P.js → index-vJOO5U8M.js} +1 -1
  231. langflow/frontend/assets/{index-CQMoqLAu.js → index-w72fDjpG.js} +1 -1
  232. langflow/frontend/assets/{index-Dsps-jKu.js → index-zV82kQ6k.js} +1 -1
  233. langflow/frontend/assets/lazyIconImports-DTNgvPE-.js +2 -0
  234. langflow/frontend/assets/{use-post-add-user-BrBYH9eR.js → use-post-add-user-CvtuazTg.js} +1 -1
  235. langflow/frontend/index.html +1 -1
  236. langflow/graph/edge/base.py +2 -3
  237. langflow/graph/graph/base.py +14 -12
  238. langflow/graph/graph/constants.py +3 -0
  239. langflow/graph/utils.py +6 -6
  240. langflow/graph/vertex/base.py +4 -5
  241. langflow/graph/vertex/param_handler.py +1 -1
  242. langflow/graph/vertex/vertex_types.py +2 -2
  243. langflow/helpers/flow.py +1 -1
  244. langflow/initial_setup/setup.py +32 -30
  245. langflow/initial_setup/starter_projects/Blog Writer.json +2 -2
  246. langflow/initial_setup/starter_projects/Custom Component Generator.json +2 -2
  247. langflow/initial_setup/starter_projects/Document Q&A.json +1 -1
  248. langflow/initial_setup/starter_projects/Instagram Copywriter.json +3 -3
  249. langflow/initial_setup/starter_projects/Invoice Summarizer.json +1 -1
  250. langflow/initial_setup/starter_projects/Knowledge Ingestion.json +2 -2
  251. langflow/initial_setup/starter_projects/Market Research.json +3 -3
  252. langflow/initial_setup/starter_projects/Meeting Summary.json +6 -6
  253. langflow/initial_setup/starter_projects/Memory Chatbot.json +2 -2
  254. langflow/initial_setup/starter_projects/News Aggregator.json +3 -3
  255. langflow/initial_setup/starter_projects/Nvidia Remix.json +3 -3
  256. langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1 -1
  257. langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +1 -1
  258. langflow/initial_setup/starter_projects/Price Deal Finder.json +5 -5
  259. langflow/initial_setup/starter_projects/Research Agent.json +3 -3
  260. langflow/initial_setup/starter_projects/SaaS Pricing.json +1 -1
  261. langflow/initial_setup/starter_projects/Search agent.json +1 -1
  262. langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +7 -7
  263. langflow/initial_setup/starter_projects/Simple Agent.json +3 -3
  264. langflow/initial_setup/starter_projects/Social Media Agent.json +1 -1
  265. langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +1 -1
  266. langflow/initial_setup/starter_projects/Travel Planning Agents.json +3 -3
  267. langflow/initial_setup/starter_projects/Vector Store RAG.json +1 -1
  268. langflow/initial_setup/starter_projects/Youtube Analysis.json +3 -3
  269. langflow/interface/components.py +23 -22
  270. langflow/interface/initialize/loading.py +5 -5
  271. langflow/interface/run.py +1 -1
  272. langflow/interface/utils.py +1 -1
  273. langflow/io/__init__.py +0 -1
  274. langflow/langflow_launcher.py +1 -1
  275. langflow/load/load.py +2 -7
  276. langflow/logging/__init__.py +0 -1
  277. langflow/logging/logger.py +191 -115
  278. langflow/logging/setup.py +1 -1
  279. langflow/main.py +37 -52
  280. langflow/memory.py +7 -7
  281. langflow/middleware.py +1 -1
  282. langflow/processing/process.py +3 -3
  283. langflow/schema/artifact.py +2 -2
  284. langflow/schema/data.py +10 -2
  285. langflow/schema/dataframe.py +1 -1
  286. langflow/schema/message.py +1 -1
  287. langflow/serialization/serialization.py +1 -1
  288. langflow/services/auth/utils.py +2 -2
  289. langflow/services/cache/disk.py +1 -1
  290. langflow/services/cache/service.py +3 -3
  291. langflow/services/database/models/flow/model.py +2 -7
  292. langflow/services/database/models/transactions/crud.py +2 -2
  293. langflow/services/database/models/user/crud.py +2 -2
  294. langflow/services/database/service.py +8 -8
  295. langflow/services/database/utils.py +6 -5
  296. langflow/services/deps.py +2 -3
  297. langflow/services/factory.py +1 -1
  298. langflow/services/flow/flow_runner.py +7 -12
  299. langflow/services/job_queue/service.py +16 -15
  300. langflow/services/manager.py +3 -4
  301. langflow/services/settings/auth.py +1 -1
  302. langflow/services/settings/base.py +3 -8
  303. langflow/services/settings/manager.py +1 -1
  304. langflow/services/settings/utils.py +1 -1
  305. langflow/services/socket/__init__.py +0 -1
  306. langflow/services/socket/service.py +3 -3
  307. langflow/services/socket/utils.py +4 -4
  308. langflow/services/state/service.py +1 -2
  309. langflow/services/storage/factory.py +1 -1
  310. langflow/services/storage/local.py +9 -8
  311. langflow/services/storage/s3.py +11 -10
  312. langflow/services/store/service.py +3 -3
  313. langflow/services/store/utils.py +3 -2
  314. langflow/services/task/temp_flow_cleanup.py +7 -7
  315. langflow/services/telemetry/service.py +10 -10
  316. langflow/services/tracing/arize_phoenix.py +2 -2
  317. langflow/services/tracing/langfuse.py +1 -1
  318. langflow/services/tracing/langsmith.py +1 -1
  319. langflow/services/tracing/langwatch.py +1 -1
  320. langflow/services/tracing/opik.py +1 -1
  321. langflow/services/tracing/service.py +25 -6
  322. langflow/services/tracing/traceloop.py +245 -0
  323. langflow/services/utils.py +7 -7
  324. langflow/services/variable/kubernetes.py +3 -3
  325. langflow/services/variable/kubernetes_secrets.py +2 -1
  326. langflow/services/variable/service.py +5 -5
  327. langflow/utils/component_utils.py +9 -6
  328. langflow/utils/util.py +5 -5
  329. langflow/utils/validate.py +3 -3
  330. langflow/utils/voice_utils.py +2 -2
  331. {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/METADATA +2 -1
  332. {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/RECORD +334 -333
  333. langflow/frontend/assets/lazyIconImports-t6wEndt1.js +0 -2
  334. {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/WHEEL +0 -0
  335. {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/entry_points.txt +0 -0
@@ -3,12 +3,12 @@ import re
3
3
  import requests
4
4
  from bs4 import BeautifulSoup
5
5
  from langchain_community.document_loaders import RecursiveUrlLoader
6
- from loguru import logger
7
6
 
8
7
  from langflow.custom.custom_component.component import Component
9
8
  from langflow.field_typing.range_spec import RangeSpec
10
9
  from langflow.helpers.data import safe_convert
11
10
  from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, Output, SliderInput, TableInput
11
+ from langflow.logging.logger import logger
12
12
  from langflow.schema.dataframe import DataFrame
13
13
  from langflow.schema.message import Message
14
14
  from langflow.services.deps import get_settings_service
@@ -4,7 +4,6 @@ from typing import TYPE_CHECKING, Any, cast
4
4
 
5
5
  from astra_assistants.astra_assistants_manager import AssistantManager
6
6
  from langchain_core.agents import AgentFinish
7
- from loguru import logger
8
7
 
9
8
  from langflow.base.agents.events import ExceptionWithMessageError, process_agent_events
10
9
  from langflow.base.astra_assistants.util import (
@@ -15,6 +14,7 @@ from langflow.base.astra_assistants.util import (
15
14
  )
16
15
  from langflow.custom.custom_component.component_with_cache import ComponentWithCache
17
16
  from langflow.inputs.inputs import DropdownInput, FileInput, HandleInput, MultilineInput
17
+ from langflow.logging.logger import logger
18
18
  from langflow.memory import delete_message
19
19
  from langflow.schema.content_block import ContentBlock
20
20
  from langflow.schema.message import Message
@@ -186,8 +186,8 @@ class AstraAssistantManager(ComponentWithCache):
186
186
  self.initialized = True
187
187
 
188
188
  async def process_inputs(self) -> None:
189
- logger.info(f"env_set is {self.env_set}")
190
- logger.info(self.input_tools)
189
+ await logger.ainfo(f"env_set is {self.env_set}")
190
+ await logger.ainfo(self.input_tools)
191
191
  tools = []
192
192
  tool_obj = None
193
193
  if self.input_tools is None:
@@ -1,8 +1,7 @@
1
- from loguru import logger
2
-
3
1
  from langflow.base.astra_assistants.util import get_patched_openai_client
4
2
  from langflow.custom.custom_component.component_with_cache import ComponentWithCache
5
3
  from langflow.inputs.inputs import MultilineInput, StrInput
4
+ from langflow.logging.logger import logger
6
5
  from langflow.schema.message import Message
7
6
  from langflow.template.field.base import Output
8
7
 
@@ -1,7 +1,6 @@
1
- from loguru import logger
2
-
3
1
  from langflow.custom.custom_component.component import Component
4
2
  from langflow.io import DataInput, Output
3
+ from langflow.logging.logger import logger
5
4
  from langflow.schema.data import Data
6
5
 
7
6
 
@@ -1,12 +1,11 @@
1
1
  from typing import TYPE_CHECKING, Any
2
2
 
3
- from loguru import logger
4
-
5
3
  from langflow.base.flow_processing.utils import build_data_from_result_data
6
4
  from langflow.custom.custom_component.custom_component import CustomComponent
7
5
  from langflow.graph.graph.base import Graph
8
6
  from langflow.graph.vertex.base import Vertex
9
7
  from langflow.helpers.flow import get_flow_inputs
8
+ from langflow.logging.logger import logger
10
9
  from langflow.schema.data import Data
11
10
  from langflow.schema.dotdict import dotdict
12
11
  from langflow.template.field.base import Input
@@ -36,7 +35,7 @@ class SubFlowComponent(CustomComponent):
36
35
  return None
37
36
 
38
37
  async def update_build_config(self, build_config: dotdict, field_value: Any, field_name: str | None = None):
39
- logger.debug(f"Updating build config with field value {field_value} and field name {field_name}")
38
+ await logger.adebug(f"Updating build config with field value {field_value} and field name {field_name}")
40
39
  if field_name == "flow_name":
41
40
  build_config["flow_name"]["options"] = await self.get_flow_names()
42
41
  # Clean up the build config
@@ -47,11 +46,11 @@ class SubFlowComponent(CustomComponent):
47
46
  try:
48
47
  flow_data = await self.get_flow(field_value)
49
48
  except Exception: # noqa: BLE001
50
- logger.exception(f"Error getting flow {field_value}")
49
+ await logger.aexception(f"Error getting flow {field_value}")
51
50
  else:
52
51
  if not flow_data:
53
52
  msg = f"Flow {field_value} not found."
54
- logger.error(msg)
53
+ await logger.aerror(msg)
55
54
  else:
56
55
  try:
57
56
  graph = Graph.from_payload(flow_data.data["data"])
@@ -60,7 +59,7 @@ class SubFlowComponent(CustomComponent):
60
59
  # Add inputs to the build config
61
60
  build_config = self.add_inputs_to_build_config(inputs, build_config)
62
61
  except Exception: # noqa: BLE001
63
- logger.exception(f"Error building graph for flow {field_value}")
62
+ await logger.aexception(f"Error building graph for flow {field_value}")
64
63
 
65
64
  return build_config
66
65
 
@@ -121,5 +120,5 @@ class SubFlowComponent(CustomComponent):
121
120
  data.extend(build_data_from_result_data(output))
122
121
 
123
122
  self.status = data
124
- logger.debug(data)
123
+ await logger.adebug(data)
125
124
  return data
@@ -68,9 +68,9 @@ class VectaraSelfQueryRetriverComponent(CustomComponent):
68
68
  metadata_field_obj.append(attribute_info)
69
69
 
70
70
  return SelfQueryRetriever.from_llm(
71
- self.llm, # noqa: ignore[attr-defined]
72
- self.vectorstore, # noqa: ignore[attr-defined]
73
- self.document_content_description, # noqa: ignore[attr-defined]
71
+ self.llm, # type: ignore[attr-defined]
72
+ self.vectorstore, # type: ignore[attr-defined]
73
+ self.document_content_description, # type: ignore[attr-defined]
74
74
  metadata_field_obj,
75
75
  verbose=True,
76
76
  )
@@ -1,13 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- import signal
4
- import sys
5
- import traceback
6
- from contextlib import suppress
7
3
  from typing import TYPE_CHECKING, Any
8
4
 
9
- from loguru import logger
10
-
11
5
  from langflow.components._importing import import_mod
12
6
 
13
7
  if TYPE_CHECKING:
@@ -47,195 +41,3 @@ def __getattr__(attr_name: str) -> Any:
47
41
 
48
42
  def __dir__() -> list[str]:
49
43
  return list(__all__)
50
-
51
-
52
- def docling_worker(file_paths: list[str], queue, pipeline: str, ocr_engine: str):
53
- """Worker function for processing files with Docling in a separate process."""
54
- # Signal handling for graceful shutdown
55
- shutdown_requested = False
56
-
57
- def signal_handler(signum: int, frame) -> None: # noqa: ARG001
58
- """Handle shutdown signals gracefully."""
59
- nonlocal shutdown_requested
60
- signal_names: dict[int, str] = {signal.SIGTERM: "SIGTERM", signal.SIGINT: "SIGINT"}
61
- signal_name = signal_names.get(signum, f"signal {signum}")
62
-
63
- logger.debug(f"Docling worker received {signal_name}, initiating graceful shutdown...")
64
- shutdown_requested = True
65
-
66
- # Send shutdown notification to parent process
67
- with suppress(Exception):
68
- queue.put({"error": f"Worker interrupted by {signal_name}", "shutdown": True})
69
-
70
- # Exit gracefully
71
- sys.exit(0)
72
-
73
- def check_shutdown() -> None:
74
- """Check if shutdown was requested and exit if so."""
75
- if shutdown_requested:
76
- logger.info("Shutdown requested, exiting worker...")
77
-
78
- with suppress(Exception):
79
- queue.put({"error": "Worker shutdown requested", "shutdown": True})
80
-
81
- sys.exit(0)
82
-
83
- # Register signal handlers early
84
- try:
85
- signal.signal(signal.SIGTERM, signal_handler)
86
- signal.signal(signal.SIGINT, signal_handler)
87
- logger.debug("Signal handlers registered for graceful shutdown")
88
- except (OSError, ValueError) as e:
89
- # Some signals might not be available on all platforms
90
- logger.warning(f"Warning: Could not register signal handlers: {e}")
91
-
92
- # Check for shutdown before heavy imports
93
- check_shutdown()
94
-
95
- try:
96
- from docling.datamodel.base_models import ConversionStatus, InputFormat
97
- from docling.datamodel.pipeline_options import (
98
- OcrOptions,
99
- PdfPipelineOptions,
100
- VlmPipelineOptions,
101
- )
102
- from docling.document_converter import DocumentConverter, FormatOption, PdfFormatOption
103
- from docling.models.factories import get_ocr_factory
104
- from docling.pipeline.vlm_pipeline import VlmPipeline
105
-
106
- # Check for shutdown after imports
107
- check_shutdown()
108
- logger.debug("Docling dependencies loaded successfully")
109
-
110
- except ModuleNotFoundError:
111
- msg = (
112
- "Docling is an optional dependency of Langflow. "
113
- "Install with `uv pip install 'langflow[docling]'` "
114
- "or refer to the documentation"
115
- )
116
- queue.put({"error": msg})
117
- return
118
- except ImportError as e:
119
- # A different import failed (e.g., a transitive dependency); preserve details.
120
- queue.put({"error": f"Failed to import a Docling dependency: {e}"})
121
- return
122
- except KeyboardInterrupt:
123
- logger.warning("KeyboardInterrupt during imports, exiting...")
124
- queue.put({"error": "Worker interrupted during imports", "shutdown": True})
125
- return
126
-
127
- # Configure the standard PDF pipeline
128
- def _get_standard_opts() -> PdfPipelineOptions:
129
- check_shutdown() # Check before heavy operations
130
-
131
- pipeline_options = PdfPipelineOptions()
132
- pipeline_options.do_ocr = ocr_engine != ""
133
- if pipeline_options.do_ocr:
134
- ocr_factory = get_ocr_factory(
135
- allow_external_plugins=False,
136
- )
137
-
138
- ocr_options: OcrOptions = ocr_factory.create_options(
139
- kind=ocr_engine,
140
- )
141
- pipeline_options.ocr_options = ocr_options
142
- return pipeline_options
143
-
144
- # Configure the VLM pipeline
145
- def _get_vlm_opts() -> VlmPipelineOptions:
146
- check_shutdown() # Check before heavy operations
147
- return VlmPipelineOptions()
148
-
149
- # Configure the main format options and create the DocumentConverter()
150
- def _get_converter() -> DocumentConverter:
151
- check_shutdown() # Check before heavy operations
152
-
153
- if pipeline == "standard":
154
- pdf_format_option = PdfFormatOption(
155
- pipeline_options=_get_standard_opts(),
156
- )
157
- elif pipeline == "vlm":
158
- pdf_format_option = PdfFormatOption(pipeline_cls=VlmPipeline, pipeline_options=_get_vlm_opts())
159
- else:
160
- msg = f"Unknown pipeline: {pipeline!r}"
161
- raise ValueError(msg)
162
-
163
- format_options: dict[InputFormat, FormatOption] = {
164
- InputFormat.PDF: pdf_format_option,
165
- InputFormat.IMAGE: pdf_format_option,
166
- }
167
-
168
- return DocumentConverter(format_options=format_options)
169
-
170
- try:
171
- # Check for shutdown before creating converter (can be slow)
172
- check_shutdown()
173
- logger.info(f"Initializing {pipeline} pipeline with OCR: {ocr_engine or 'disabled'}")
174
-
175
- converter = _get_converter()
176
-
177
- # Check for shutdown before processing files
178
- check_shutdown()
179
- logger.info(f"Starting to process {len(file_paths)} files...")
180
-
181
- # Process files with periodic shutdown checks
182
- results = []
183
- for i, file_path in enumerate(file_paths):
184
- # Check for shutdown before processing each file
185
- check_shutdown()
186
-
187
- logger.debug(f"Processing file {i + 1}/{len(file_paths)}: {file_path}")
188
-
189
- try:
190
- # Process single file (we can't easily interrupt convert_all)
191
- single_result = converter.convert_all([file_path])
192
- results.extend(single_result)
193
-
194
- # Check for shutdown after each file
195
- check_shutdown()
196
-
197
- except (OSError, ValueError, RuntimeError, ImportError) as file_error:
198
- # Handle specific file processing errors
199
- logger.error(f"Error processing file {file_path}: {file_error}")
200
- # Continue with other files, but check for shutdown
201
- check_shutdown()
202
- except Exception as file_error: # noqa: BLE001
203
- # Catch any other unexpected errors to prevent worker crash
204
- logger.error(f"Unexpected error processing file {file_path}: {file_error}")
205
- # Continue with other files, but check for shutdown
206
- check_shutdown()
207
-
208
- # Final shutdown check before sending results
209
- check_shutdown()
210
-
211
- # Process the results while maintaining the original structure
212
- processed_data = [
213
- {"document": res.document, "file_path": str(res.input.file), "status": res.status.name}
214
- if res.status == ConversionStatus.SUCCESS
215
- else None
216
- for res in results
217
- ]
218
-
219
- logger.info(f"Successfully processed {len([d for d in processed_data if d])} files")
220
- queue.put(processed_data)
221
-
222
- except KeyboardInterrupt:
223
- logger.warning("KeyboardInterrupt during processing, exiting gracefully...")
224
- queue.put({"error": "Worker interrupted during processing", "shutdown": True})
225
- return
226
- except Exception as e: # noqa: BLE001
227
- if shutdown_requested:
228
- logger.exception("Exception occurred during shutdown, exiting...")
229
- return
230
-
231
- # Send any processing error to the main process with traceback
232
- error_info = {"error": str(e), "traceback": traceback.format_exc()}
233
- logger.error(f"Error in worker: {error_info}")
234
- queue.put(error_info)
235
- finally:
236
- logger.info("Docling worker finishing...")
237
- # Ensure we don't leave any hanging processes
238
- if shutdown_requested:
239
- logger.debug("Worker shutdown completed")
240
- else:
241
- logger.debug("Worker completed normally")
@@ -3,7 +3,7 @@ from multiprocessing import Queue, get_context
3
3
  from queue import Empty
4
4
 
5
5
  from langflow.base.data import BaseFileComponent
6
- from langflow.components.docling import docling_worker
6
+ from langflow.base.data.docling_utils import docling_worker
7
7
  from langflow.inputs import DropdownInput
8
8
  from langflow.schema import Data
9
9
 
@@ -1,8 +1,8 @@
1
- import logging
2
1
  from typing import TYPE_CHECKING
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.io import HandleInput, MessageInput, Output
5
+ from langflow.logging.logger import logger
6
6
  from langflow.schema.data import Data
7
7
 
8
8
  if TYPE_CHECKING:
@@ -57,8 +57,8 @@ class TextEmbedderComponent(Component):
57
57
  embedding_vector = embeddings[0]
58
58
  self.status = {"text": text_content, "embeddings": embedding_vector}
59
59
  return Data(data={"text": text_content, "embeddings": embedding_vector})
60
- except Exception as e:
61
- logging.exception("Error generating embeddings")
60
+ except Exception as e: # noqa: BLE001
61
+ logger.exception("Error generating embeddings")
62
62
  error_data = Data(data={"text": "", "embeddings": [], "error": str(e)})
63
63
  self.status = {"error": str(e)}
64
64
  return error_data
@@ -1,13 +1,6 @@
1
- from loguru import logger
2
-
3
1
  from langflow.custom.custom_component.component import Component
4
- from langflow.io import (
5
- BoolInput,
6
- DataInput,
7
- MultilineInput,
8
- Output,
9
- SecretStrInput,
10
- )
2
+ from langflow.io import BoolInput, DataInput, MultilineInput, Output, SecretStrInput
3
+ from langflow.logging.logger import logger
11
4
  from langflow.schema.data import Data
12
5
 
13
6
 
@@ -11,11 +11,11 @@ from googleapiclient.discovery import build
11
11
  from langchain_core.chat_sessions import ChatSession
12
12
  from langchain_core.messages import HumanMessage
13
13
  from langchain_google_community.gmail.loader import GMailLoader
14
- from loguru import logger
15
14
 
16
15
  from langflow.custom.custom_component.component import Component
17
16
  from langflow.inputs.inputs import MessageTextInput
18
17
  from langflow.io import SecretStrInput
18
+ from langflow.logging.logger import logger
19
19
  from langflow.schema.data import Data
20
20
  from langflow.template.field.base import Output
21
21
 
@@ -1,21 +1,14 @@
1
1
  from typing import Any
2
2
 
3
3
  import requests
4
- from loguru import logger
5
4
  from pydantic.v1 import SecretStr
6
5
 
7
6
  from langflow.base.models.google_generative_ai_constants import GOOGLE_GENERATIVE_AI_MODELS
8
7
  from langflow.base.models.model import LCModelComponent
9
8
  from langflow.field_typing import LanguageModel
10
9
  from langflow.field_typing.range_spec import RangeSpec
11
- from langflow.inputs.inputs import (
12
- BoolInput,
13
- DropdownInput,
14
- FloatInput,
15
- IntInput,
16
- SecretStrInput,
17
- SliderInput,
18
- )
10
+ from langflow.inputs.inputs import BoolInput, DropdownInput, FloatInput, IntInput, SecretStrInput, SliderInput
11
+ from langflow.logging.logger import logger
19
12
  from langflow.schema.dotdict import dotdict
20
13
 
21
14
 
@@ -105,7 +98,7 @@ class GoogleGenerativeAIComponent(LCModelComponent):
105
98
  google_api_key=SecretStr(google_api_key).get_secret_value(),
106
99
  )
107
100
 
108
- def get_models(self, tool_model_enabled: bool | None = None) -> list[str]:
101
+ def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
109
102
  try:
110
103
  import google.generativeai as genai
111
104
 
@@ -145,8 +138,9 @@ class GoogleGenerativeAIComponent(LCModelComponent):
145
138
  except (ImportError, ValueError, requests.exceptions.RequestException) as e:
146
139
  logger.exception(f"Error getting model names: {e}")
147
140
  ids = GOOGLE_GENERATIVE_AI_MODELS
141
+ build_config.setdefault("model_name", {})
148
142
  build_config["model_name"]["options"] = ids
149
- build_config["model_name"]["value"] = ids[0]
143
+ build_config["model_name"].setdefault("value", ids[0])
150
144
  except Exception as e:
151
145
  msg = f"Error getting model names: {e}"
152
146
  raise ValueError(msg) from e
@@ -1,5 +1,4 @@
1
1
  import requests
2
- from loguru import logger
3
2
  from pydantic.v1 import SecretStr
4
3
 
5
4
  from langflow.base.models.groq_constants import (
@@ -11,6 +10,7 @@ from langflow.base.models.model import LCModelComponent
11
10
  from langflow.field_typing import LanguageModel
12
11
  from langflow.field_typing.range_spec import RangeSpec
13
12
  from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, SecretStrInput, SliderInput
13
+ from langflow.logging.logger import logger
14
14
 
15
15
 
16
16
  class GroqModel(LCModelComponent):
@@ -74,7 +74,7 @@ class GroqModel(LCModelComponent):
74
74
  ),
75
75
  ]
76
76
 
77
- def get_models(self, tool_model_enabled: bool | None = None) -> list[str]:
77
+ def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
78
78
  try:
79
79
  url = f"{self.base_url}/openai/v1/models"
80
80
  headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json"}
@@ -114,8 +114,9 @@ class GroqModel(LCModelComponent):
114
114
  except (ImportError, ValueError, requests.exceptions.RequestException) as e:
115
115
  logger.exception(f"Error getting model names: {e}")
116
116
  ids = GROQ_MODELS
117
+ build_config.setdefault("model_name", {})
117
118
  build_config["model_name"]["options"] = ids
118
- build_config["model_name"]["value"] = ids[0]
119
+ build_config["model_name"].setdefault("value", ids[0])
119
120
  except Exception as e:
120
121
  msg = f"Error getting model names: {e}"
121
122
  raise ValueError(msg) from e
@@ -1,10 +1,9 @@
1
1
  from datetime import datetime
2
2
  from zoneinfo import ZoneInfo, available_timezones
3
3
 
4
- from loguru import logger
5
-
6
4
  from langflow.custom.custom_component.component import Component
7
5
  from langflow.io import DropdownInput, Output
6
+ from langflow.logging.logger import logger
8
7
  from langflow.schema.message import Message
9
8
 
10
9
 
@@ -37,7 +36,7 @@ class CurrentDateComponent(Component):
37
36
  self.status = result
38
37
  return Message(text=result)
39
38
  except Exception as e: # noqa: BLE001
40
- logger.opt(exception=True).debug("Error getting current date")
39
+ logger.debug("Error getting current date", exc_info=True)
41
40
  error_message = f"Error: {e}"
42
41
  self.status = error_message
43
42
  return Message(text=error_message)
@@ -220,7 +220,7 @@ class MemoryComponent(Component):
220
220
  stored = stored[-n_messages:] if order == "ASC" else stored[:n_messages]
221
221
 
222
222
  # self.status = stored
223
- return cast(Data, stored)
223
+ return cast("Data", stored)
224
224
 
225
225
  async def retrieve_messages_as_text(self) -> Message:
226
226
  stored_text = data_to_text(self.template, await self.retrieve_messages())
@@ -3,13 +3,13 @@ from typing import Any
3
3
 
4
4
  import requests
5
5
  from langchain_ibm import ChatWatsonx
6
- from loguru import logger
7
6
  from pydantic.v1 import SecretStr
8
7
 
9
8
  from langflow.base.models.model import LCModelComponent
10
9
  from langflow.field_typing import LanguageModel
11
10
  from langflow.field_typing.range_spec import RangeSpec
12
11
  from langflow.inputs.inputs import BoolInput, DropdownInput, IntInput, SecretStrInput, SliderInput, StrInput
12
+ from langflow.logging.logger import logger
13
13
  from langflow.schema.dotdict import dotdict
14
14
 
15
15
 
@@ -4,12 +4,12 @@ import requests
4
4
  from ibm_watsonx_ai import APIClient, Credentials
5
5
  from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames
6
6
  from langchain_ibm import WatsonxEmbeddings
7
- from loguru import logger
8
7
  from pydantic.v1 import SecretStr
9
8
 
10
9
  from langflow.base.embeddings.model import LCEmbeddingsModel
11
10
  from langflow.field_typing import Embeddings
12
11
  from langflow.io import BoolInput, DropdownInput, IntInput, SecretStrInput, StrInput
12
+ from langflow.logging.logger import logger
13
13
  from langflow.schema.dotdict import dotdict
14
14
 
15
15
 
@@ -3,7 +3,6 @@ import os
3
3
  from typing import Any
4
4
 
5
5
  import httpx
6
- from loguru import logger
7
6
 
8
7
  from langflow.base.langwatch.utils import get_cached_evaluators
9
8
  from langflow.custom.custom_component.component import Component
@@ -18,6 +17,7 @@ from langflow.io import (
18
17
  Output,
19
18
  SecretStrInput,
20
19
  )
20
+ from langflow.logging.logger import logger
21
21
  from langflow.schema.data import Data
22
22
  from langflow.schema.dotdict import dotdict
23
23
 
@@ -226,7 +226,7 @@ class LangWatchComponent(Component):
226
226
  if not evaluator_name:
227
227
  if self.evaluators:
228
228
  evaluator_name = next(iter(self.evaluators))
229
- logger.info(f"No evaluator was selected. Using default: {evaluator_name}")
229
+ await logger.ainfo(f"No evaluator was selected. Using default: {evaluator_name}")
230
230
  else:
231
231
  return Data(
232
232
  data={"error": "No evaluator selected and no evaluators available. Please choose an evaluator."}
@@ -237,7 +237,7 @@ class LangWatchComponent(Component):
237
237
  if not evaluator:
238
238
  return Data(data={"error": f"Selected evaluator '{evaluator_name}' not found."})
239
239
 
240
- logger.info(f"Evaluating with evaluator: {evaluator_name}")
240
+ await logger.ainfo(f"Evaluating with evaluator: {evaluator_name}")
241
241
 
242
242
  endpoint = f"/api/evaluations/{evaluator_name}/evaluate"
243
243
  url = f"{os.getenv('LANGWATCH_ENDPOINT', 'https://app.langwatch.ai')}{endpoint}"
@@ -1,6 +1,5 @@
1
1
  from typing import Any
2
2
 
3
- from loguru import logger
4
3
  from typing_extensions import override
5
4
 
6
5
  from langflow.base.langchain_utilities.model import LCToolComponent
@@ -9,6 +8,7 @@ from langflow.field_typing import Tool
9
8
  from langflow.graph.graph.base import Graph
10
9
  from langflow.helpers.flow import get_flow_inputs
11
10
  from langflow.io import BoolInput, DropdownInput, Output, StrInput
11
+ from langflow.logging.logger import logger
12
12
  from langflow.schema.data import Data
13
13
  from langflow.schema.dotdict import dotdict
14
14
 
@@ -91,7 +91,7 @@ class FlowToolComponent(LCToolComponent):
91
91
  try:
92
92
  graph.set_run_id(self.graph.run_id)
93
93
  except Exception: # noqa: BLE001
94
- logger.opt(exception=True).warning("Failed to set run_id")
94
+ logger.warning("Failed to set run_id", exc_info=True)
95
95
  inputs = get_flow_inputs(graph)
96
96
  tool_description = self.tool_description.strip() or flow_data.description
97
97
  tool = FlowTool(
@@ -85,4 +85,4 @@ class NotifyComponent(Component):
85
85
  self.status = "No record provided."
86
86
  self._vertex.is_state = True
87
87
  self.graph.activate_state_vertices(name=self.context_key, caller=self._id)
88
- return cast(Data, input_value)
88
+ return cast("Data", input_value)
@@ -1,9 +1,8 @@
1
1
  from typing import Any
2
2
 
3
- from loguru import logger
4
-
5
3
  from langflow.base.tools.run_flow import RunFlowBaseComponent
6
4
  from langflow.helpers.flow import run_flow
5
+ from langflow.logging.logger import logger
7
6
  from langflow.schema.dotdict import dotdict
8
7
 
9
8
 
@@ -34,7 +33,7 @@ class RunFlowComponent(RunFlowBaseComponent):
34
33
  build_config = self.update_build_config_from_graph(build_config, graph)
35
34
  except Exception as e:
36
35
  msg = f"Error building graph for flow {field_value}"
37
- logger.exception(msg)
36
+ await logger.aexception(msg)
38
37
  raise RuntimeError(msg) from e
39
38
  return build_config
40
39
 
@@ -1,13 +1,12 @@
1
1
  from typing import Any
2
2
 
3
- from loguru import logger
4
-
5
3
  from langflow.base.flow_processing.utils import build_data_from_result_data
6
4
  from langflow.custom.custom_component.component import Component
7
5
  from langflow.graph.graph.base import Graph
8
6
  from langflow.graph.vertex.base import Vertex
9
7
  from langflow.helpers.flow import get_flow_inputs
10
8
  from langflow.io import DropdownInput, Output
9
+ from langflow.logging.logger import logger
11
10
  from langflow.schema.data import Data
12
11
  from langflow.schema.dotdict import dotdict
13
12
 
@@ -41,11 +40,11 @@ class SubFlowComponent(Component):
41
40
  try:
42
41
  flow_data = await self.get_flow(field_value)
43
42
  except Exception: # noqa: BLE001
44
- logger.exception(f"Error getting flow {field_value}")
43
+ await logger.aexception(f"Error getting flow {field_value}")
45
44
  else:
46
45
  if not flow_data:
47
46
  msg = f"Flow {field_value} not found."
48
- logger.error(msg)
47
+ await logger.aerror(msg)
49
48
  else:
50
49
  try:
51
50
  graph = Graph.from_payload(flow_data.data["data"])
@@ -54,7 +53,7 @@ class SubFlowComponent(Component):
54
53
  # Add inputs to the build config
55
54
  build_config = self.add_inputs_to_build_config(inputs, build_config)
56
55
  except Exception: # noqa: BLE001
57
- logger.exception(f"Error building graph for flow {field_value}")
56
+ await logger.aexception(f"Error building graph for flow {field_value}")
58
57
 
59
58
  return build_config
60
59