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
@@ -4,13 +4,13 @@ from typing import Any
4
4
  import requests
5
5
  from bs4 import BeautifulSoup
6
6
  from langchain.tools import StructuredTool
7
- from loguru import logger
8
7
  from markdown import markdown
9
8
  from pydantic import BaseModel, Field
10
9
 
11
10
  from langflow.base.langchain_utilities.model import LCToolComponent
12
11
  from langflow.field_typing import Tool
13
12
  from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
13
+ from langflow.logging.logger import logger
14
14
  from langflow.schema.data import Data
15
15
 
16
16
  MIN_ROWS_IN_TABLE = 3
@@ -84,7 +84,7 @@ class AddContentToPage(LCToolComponent):
84
84
  error_message += f" Status code: {e.response.status_code}, Response: {e.response.text}"
85
85
  return error_message
86
86
  except Exception as e: # noqa: BLE001
87
- logger.opt(exception=True).debug("Error adding content to Notion page")
87
+ logger.debug("Error adding content to Notion page", exc_info=True)
88
88
  return f"Error: An unexpected error occurred while adding content to Notion page. {e}"
89
89
 
90
90
  def process_node(self, node):
@@ -1,11 +1,11 @@
1
1
  import requests
2
2
  from langchain.tools import StructuredTool
3
- from loguru import logger
4
3
  from pydantic import BaseModel, Field
5
4
 
6
5
  from langflow.base.langchain_utilities.model import LCToolComponent
7
6
  from langflow.field_typing import Tool
8
7
  from langflow.inputs.inputs import SecretStrInput, StrInput
8
+ from langflow.logging.logger import logger
9
9
  from langflow.schema.data import Data
10
10
 
11
11
 
@@ -64,5 +64,5 @@ class NotionDatabaseProperties(LCToolComponent):
64
64
  except ValueError as e:
65
65
  return f"Error parsing Notion API response: {e}"
66
66
  except Exception as e: # noqa: BLE001
67
- logger.opt(exception=True).debug("Error fetching Notion database properties")
67
+ logger.debug("Error fetching Notion database properties", exc_info=True)
68
68
  return f"An unexpected error occurred: {e}"
@@ -3,12 +3,12 @@ from typing import Any
3
3
 
4
4
  import requests
5
5
  from langchain.tools import StructuredTool
6
- from loguru import logger
7
6
  from pydantic import BaseModel, Field
8
7
 
9
8
  from langflow.base.langchain_utilities.model import LCToolComponent
10
9
  from langflow.field_typing import Tool
11
10
  from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
11
+ from langflow.logging.logger import logger
12
12
  from langflow.schema.data import Data
13
13
 
14
14
 
@@ -118,5 +118,5 @@ class NotionListPages(LCToolComponent):
118
118
  except KeyError:
119
119
  return "Unexpected response format from Notion API"
120
120
  except Exception as e: # noqa: BLE001
121
- logger.opt(exception=True).debug("Error querying Notion database")
121
+ logger.debug("Error querying Notion database", exc_info=True)
122
122
  return f"An unexpected error occurred: {e}"
@@ -1,11 +1,11 @@
1
1
  import requests
2
2
  from langchain.tools import StructuredTool
3
- from loguru import logger
4
3
  from pydantic import BaseModel, Field
5
4
 
6
5
  from langflow.base.langchain_utilities.model import LCToolComponent
7
6
  from langflow.field_typing import Tool
8
7
  from langflow.inputs.inputs import SecretStrInput, StrInput
8
+ from langflow.logging.logger import logger
9
9
  from langflow.schema.data import Data
10
10
 
11
11
 
@@ -65,7 +65,7 @@ class NotionPageContent(LCToolComponent):
65
65
  error_message += f" Status code: {e.response.status_code}, Response: {e.response.text}"
66
66
  return error_message
67
67
  except Exception as e: # noqa: BLE001
68
- logger.opt(exception=True).debug("Error retrieving Notion page content")
68
+ logger.debug("Error retrieving Notion page content", exc_info=True)
69
69
  return f"Error: An unexpected error occurred while retrieving Notion page content. {e}"
70
70
 
71
71
  def parse_blocks(self, blocks: list) -> str:
@@ -3,12 +3,12 @@ from typing import Any
3
3
 
4
4
  import requests
5
5
  from langchain.tools import StructuredTool
6
- from loguru import logger
7
6
  from pydantic import BaseModel, Field
8
7
 
9
8
  from langflow.base.langchain_utilities.model import LCToolComponent
10
9
  from langflow.field_typing import Tool
11
10
  from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
11
+ from langflow.logging.logger import logger
12
12
  from langflow.schema.data import Data
13
13
 
14
14
 
@@ -1,17 +1,9 @@
1
1
  import httpx
2
- from loguru import logger
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.field_typing.range_spec import RangeSpec
6
- from langflow.io import (
7
- BoolInput,
8
- DropdownInput,
9
- IntInput,
10
- MessageTextInput,
11
- MultilineInput,
12
- Output,
13
- SecretStrInput,
14
- )
5
+ from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, MultilineInput, Output, SecretStrInput
6
+ from langflow.logging.logger import logger
15
7
  from langflow.schema.data import Data
16
8
 
17
9
 
@@ -135,13 +135,13 @@ class AgentComponent(ToolCallingAgentComponent):
135
135
  # return result
136
136
 
137
137
  except (ValueError, TypeError, KeyError) as e:
138
- logger.error(f"{type(e).__name__}: {e!s}")
138
+ await logger.aerror(f"{type(e).__name__}: {e!s}")
139
139
  raise
140
140
  except ExceptionWithMessageError as e:
141
- logger.error(f"ExceptionWithMessageError occurred: {e}")
141
+ await logger.aerror(f"ExceptionWithMessageError occurred: {e}")
142
142
  raise
143
143
  except Exception as e:
144
- logger.error(f"Unexpected error: {e!s}")
144
+ await logger.aerror(f"Unexpected error: {e!s}")
145
145
  raise
146
146
  else:
147
147
  return result
@@ -117,12 +117,12 @@ class MCPToolsComponent(ComponentWithCache):
117
117
  schema_inputs = schema_to_langflow_inputs(input_schema)
118
118
  if not schema_inputs:
119
119
  msg = f"No input parameters defined for tool '{tool_obj.name}'"
120
- logger.warning(msg)
120
+ await logger.awarning(msg)
121
121
  return []
122
122
 
123
123
  except Exception as e:
124
124
  msg = f"Error validating schema inputs: {e!s}"
125
- logger.exception(msg)
125
+ await logger.aexception(msg)
126
126
  raise ValueError(msg) from e
127
127
  else:
128
128
  return schema_inputs
@@ -202,11 +202,11 @@ class MCPToolsComponent(ComponentWithCache):
202
202
 
203
203
  except (TimeoutError, asyncio.TimeoutError) as e:
204
204
  msg = f"Timeout updating tool list: {e!s}"
205
- logger.exception(msg)
205
+ await logger.aexception(msg)
206
206
  raise TimeoutError(msg) from e
207
207
  except Exception as e:
208
208
  msg = f"Error updating tool list: {e!s}"
209
- logger.exception(msg)
209
+ await logger.aexception(msg)
210
210
  raise ValueError(msg) from e
211
211
  else:
212
212
  return tool_list, {"name": server_name, "config": server_config}
@@ -223,7 +223,7 @@ class MCPToolsComponent(ComponentWithCache):
223
223
  build_config["tool"]["placeholder"] = "Select a tool"
224
224
  except (TimeoutError, asyncio.TimeoutError) as e:
225
225
  msg = f"Timeout updating tool list: {e!s}"
226
- logger.exception(msg)
226
+ await logger.aexception(msg)
227
227
  if not build_config["tools_metadata"]["show"]:
228
228
  build_config["tool"]["show"] = True
229
229
  build_config["tool"]["options"] = []
@@ -249,7 +249,7 @@ class MCPToolsComponent(ComponentWithCache):
249
249
  break
250
250
  if tool_obj is None:
251
251
  msg = f"Tool {field_value} not found in available tools: {self.tools}"
252
- logger.warning(msg)
252
+ await logger.awarning(msg)
253
253
  return build_config
254
254
  await self._update_tool_config(build_config, field_value)
255
255
  except Exception as e:
@@ -333,7 +333,7 @@ class MCPToolsComponent(ComponentWithCache):
333
333
 
334
334
  except Exception as e:
335
335
  msg = f"Error in update_build_config: {e!s}"
336
- logger.exception(msg)
336
+ await logger.aexception(msg)
337
337
  raise ValueError(msg) from e
338
338
  else:
339
339
  return build_config
@@ -386,7 +386,7 @@ class MCPToolsComponent(ComponentWithCache):
386
386
  msg = f"Tool {tool_name} not found in available tools: {self.tools}"
387
387
  self.remove_non_default_keys(build_config)
388
388
  build_config["tool"]["value"] = ""
389
- logger.warning(msg)
389
+ await logger.awarning(msg)
390
390
  return
391
391
 
392
392
  try:
@@ -404,14 +404,14 @@ class MCPToolsComponent(ComponentWithCache):
404
404
  self.schema_inputs = await self._validate_schema_inputs(tool_obj)
405
405
  if not self.schema_inputs:
406
406
  msg = f"No input parameters to configure for tool '{tool_name}'"
407
- logger.info(msg)
407
+ await logger.ainfo(msg)
408
408
  return
409
409
 
410
410
  # Add new inputs to build config
411
411
  for schema_input in self.schema_inputs:
412
412
  if not schema_input or not hasattr(schema_input, "name"):
413
413
  msg = "Invalid schema input detected, skipping"
414
- logger.warning(msg)
414
+ await logger.awarning(msg)
415
415
  continue
416
416
 
417
417
  try:
@@ -428,16 +428,16 @@ class MCPToolsComponent(ComponentWithCache):
428
428
 
429
429
  except (AttributeError, KeyError, TypeError) as e:
430
430
  msg = f"Error processing schema input {schema_input}: {e!s}"
431
- logger.exception(msg)
431
+ await logger.aexception(msg)
432
432
  continue
433
433
  except ValueError as e:
434
434
  msg = f"Schema validation error for tool {tool_name}: {e!s}"
435
- logger.exception(msg)
435
+ await logger.aexception(msg)
436
436
  self.schema_inputs = []
437
437
  return
438
438
  except (AttributeError, KeyError, TypeError) as e:
439
439
  msg = f"Error updating tool config: {e!s}"
440
- logger.exception(msg)
440
+ await logger.aexception(msg)
441
441
  raise ValueError(msg) from e
442
442
 
443
443
  async def build_output(self) -> DataFrame:
@@ -474,7 +474,7 @@ class MCPToolsComponent(ComponentWithCache):
474
474
  return DataFrame(data=[{"error": "You must select a tool"}])
475
475
  except Exception as e:
476
476
  msg = f"Error in build_output: {e!s}"
477
- logger.exception(msg)
477
+ await logger.aexception(msg)
478
478
  raise ValueError(msg) from e
479
479
 
480
480
  def _get_session_context(self) -> str | None:
@@ -1,7 +1,6 @@
1
1
  from typing import Any, cast
2
2
 
3
3
  import requests
4
- from loguru import logger
5
4
  from pydantic import ValidationError
6
5
 
7
6
  from langflow.base.models.anthropic_constants import (
@@ -14,6 +13,7 @@ from langflow.base.models.model import LCModelComponent
14
13
  from langflow.field_typing import LanguageModel
15
14
  from langflow.field_typing.range_spec import RangeSpec
16
15
  from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, SecretStrInput, SliderInput
16
+ from langflow.logging.logger import logger
17
17
  from langflow.schema.dotdict import dotdict
18
18
 
19
19
 
@@ -101,7 +101,7 @@ class AnthropicModelComponent(LCModelComponent):
101
101
 
102
102
  return output
103
103
 
104
- def get_models(self, tool_model_enabled: bool | None = None) -> list[str]:
104
+ def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
105
105
  try:
106
106
  import anthropic
107
107
 
@@ -129,7 +129,7 @@ class AnthropicModelComponent(LCModelComponent):
129
129
  model_with_tool = ChatAnthropic(
130
130
  model=model, # Use the current model being checked
131
131
  anthropic_api_key=self.api_key,
132
- anthropic_api_url=cast(str, self.base_url) or DEFAULT_ANTHROPIC_API_URL,
132
+ anthropic_api_url=cast("str", self.base_url) or DEFAULT_ANTHROPIC_API_URL,
133
133
  )
134
134
 
135
135
  if (
@@ -177,8 +177,9 @@ class AnthropicModelComponent(LCModelComponent):
177
177
  except (ImportError, ValueError, requests.exceptions.RequestException) as e:
178
178
  logger.exception(f"Error getting model names: {e}")
179
179
  ids = ANTHROPIC_MODELS
180
+ build_config.setdefault("model_name", {})
180
181
  build_config["model_name"]["options"] = ids
181
- build_config["model_name"]["value"] = ids[0]
182
+ build_config["model_name"].setdefault("value", ids[0])
182
183
  build_config["model_name"]["combobox"] = True
183
184
  except Exception as e:
184
185
  msg = f"Error getting model names: {e}"
@@ -1,8 +1,8 @@
1
1
  import assemblyai as aai
2
- from loguru import logger
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.io import DataInput, DropdownInput, IntInput, Output, SecretStrInput
5
+ from langflow.logging.logger import logger
6
6
  from langflow.schema.data import Data
7
7
 
8
8
 
@@ -58,7 +58,7 @@ class AssemblyAIGetSubtitles(Component):
58
58
  transcript = aai.Transcript.get_by_id(transcript_id)
59
59
  except Exception as e: # noqa: BLE001
60
60
  error = f"Getting transcription failed: {e}"
61
- logger.opt(exception=True).debug(error)
61
+ logger.debug(error, exc_info=True)
62
62
  self.status = error
63
63
  return Data(data={"error": error})
64
64
 
@@ -1,8 +1,8 @@
1
1
  import assemblyai as aai
2
- from loguru import logger
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.io import DataInput, DropdownInput, FloatInput, IntInput, MultilineInput, Output, SecretStrInput
5
+ from langflow.logging.logger import logger
6
6
  from langflow.schema.data import Data
7
7
 
8
8
 
@@ -131,7 +131,7 @@ class AssemblyAILeMUR(Component):
131
131
  try:
132
132
  response = self.perform_lemur_action(transcript_group, self.endpoint)
133
133
  except Exception as e: # noqa: BLE001
134
- logger.opt(exception=True).debug("Error running LeMUR")
134
+ logger.debug("Error running LeMUR", exc_info=True)
135
135
  error = f"An Error happened: {e}"
136
136
  self.status = error
137
137
  return Data(data={"error": error})
@@ -1,8 +1,8 @@
1
1
  import assemblyai as aai
2
- from loguru import logger
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, Output, SecretStrInput
5
+ from langflow.logging.logger import logger
6
6
  from langflow.schema.data import Data
7
7
 
8
8
 
@@ -86,7 +86,7 @@ class AssemblyAIListTranscripts(Component):
86
86
  transcripts = convert_page_to_data_list(page)
87
87
 
88
88
  except Exception as e: # noqa: BLE001
89
- logger.opt(exception=True).debug("Error listing transcripts")
89
+ logger.debug("Error listing transcripts", exc_info=True)
90
90
  error_data = Data(data={"error": f"An error occurred: {e}"})
91
91
  self.status = [error_data]
92
92
  return [error_data]
@@ -1,9 +1,9 @@
1
1
  import assemblyai as aai
2
- from loguru import logger
3
2
 
4
3
  from langflow.custom.custom_component.component import Component
5
4
  from langflow.field_typing.range_spec import RangeSpec
6
5
  from langflow.io import DataInput, FloatInput, Output, SecretStrInput
6
+ from langflow.logging.logger import logger
7
7
  from langflow.schema.data import Data
8
8
 
9
9
 
@@ -54,7 +54,7 @@ class AssemblyAITranscriptionJobPoller(Component):
54
54
  transcript = aai.Transcript.get_by_id(self.transcript_id.data["transcript_id"])
55
55
  except Exception as e: # noqa: BLE001
56
56
  error = f"Getting transcription failed: {e}"
57
- logger.opt(exception=True).debug(error)
57
+ logger.debug(error, exc_info=True)
58
58
  self.status = error
59
59
  return Data(data={"error": error})
60
60
 
@@ -1,10 +1,10 @@
1
1
  from pathlib import Path
2
2
 
3
3
  import assemblyai as aai
4
- from loguru import logger
5
4
 
6
5
  from langflow.custom.custom_component.component import Component
7
6
  from langflow.io import BoolInput, DropdownInput, FileInput, MessageTextInput, Output, SecretStrInput
7
+ from langflow.logging.logger import logger
8
8
  from langflow.schema.data import Data
9
9
 
10
10
 
@@ -176,7 +176,7 @@ class AssemblyAITranscriptionJobCreator(Component):
176
176
  try:
177
177
  transcript = aai.Transcriber().submit(audio, config=config)
178
178
  except Exception as e: # noqa: BLE001
179
- logger.opt(exception=True).debug("Error submitting transcription job")
179
+ logger.debug("Error submitting transcription job", exc_info=True)
180
180
  self.status = f"An error occurred: {e}"
181
181
  return Data(data={"error": f"An error occurred: {e}"})
182
182