langflow-base-nightly 0.5.0.dev36__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.
- langflow/__main__.py +1 -1
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +24 -30
- langflow/alembic/versions/58b28437a398_modify_nullable.py +6 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +24 -30
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +12 -13
- langflow/api/build.py +21 -26
- langflow/api/health_check_router.py +3 -3
- langflow/api/utils.py +3 -3
- langflow/api/v1/callback.py +2 -2
- langflow/api/v1/chat.py +19 -31
- langflow/api/v1/endpoints.py +10 -10
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +19 -12
- langflow/api/v1/mcp.py +12 -12
- langflow/api/v1/mcp_projects.py +45 -81
- langflow/api/v1/mcp_utils.py +8 -8
- langflow/api/v1/schemas.py +1 -5
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +2 -2
- langflow/api/v1/voice_mode.py +58 -62
- langflow/api/v2/files.py +5 -3
- langflow/api/v2/mcp.py +10 -9
- langflow/base/composio/composio_base.py +21 -2
- langflow/base/data/docling_utils.py +194 -0
- langflow/base/data/kb_utils.py +33 -0
- langflow/base/embeddings/aiml_embeddings.py +1 -1
- langflow/base/flow_processing/utils.py +1 -2
- langflow/base/io/__init__.py +0 -1
- langflow/base/langwatch/utils.py +2 -1
- langflow/base/mcp/util.py +49 -47
- langflow/base/models/model.py +3 -3
- langflow/base/prompts/api_utils.py +1 -1
- langflow/base/tools/flow_tool.py +2 -2
- langflow/base/tools/run_flow.py +2 -6
- langflow/components/Notion/add_content_to_page.py +2 -2
- langflow/components/Notion/list_database_properties.py +2 -2
- langflow/components/Notion/list_pages.py +2 -2
- langflow/components/Notion/page_content_viewer.py +2 -2
- langflow/components/Notion/update_page_property.py +1 -1
- langflow/components/agentql/agentql_api.py +2 -10
- langflow/components/agents/agent.py +3 -3
- langflow/components/agents/mcp_component.py +54 -69
- langflow/components/anthropic/anthropic.py +5 -4
- langflow/components/assemblyai/assemblyai_get_subtitles.py +2 -2
- langflow/components/assemblyai/assemblyai_lemur.py +2 -2
- langflow/components/assemblyai/assemblyai_list_transcripts.py +2 -2
- langflow/components/assemblyai/assemblyai_poll_transcript.py +2 -2
- langflow/components/assemblyai/assemblyai_start_transcript.py +2 -2
- langflow/components/data/file.py +575 -55
- langflow/components/data/kb_ingest.py +116 -43
- langflow/components/data/kb_retrieval.py +24 -26
- langflow/components/data/url.py +1 -1
- langflow/components/datastax/astra_assistant_manager.py +3 -3
- langflow/components/datastax/create_assistant.py +1 -2
- langflow/components/deactivated/merge_data.py +1 -2
- langflow/components/deactivated/sub_flow.py +6 -7
- langflow/components/deactivated/vectara_self_query.py +3 -3
- langflow/components/docling/__init__.py +0 -198
- langflow/components/docling/docling_inline.py +1 -1
- langflow/components/embeddings/text_embedder.py +3 -3
- langflow/components/firecrawl/firecrawl_extract_api.py +2 -9
- langflow/components/google/gmail.py +1 -1
- langflow/components/google/google_generative_ai.py +5 -11
- langflow/components/groq/groq.py +4 -3
- langflow/components/helpers/current_date.py +2 -3
- langflow/components/helpers/memory.py +1 -1
- langflow/components/ibm/watsonx.py +1 -1
- langflow/components/ibm/watsonx_embeddings.py +1 -1
- langflow/components/langwatch/langwatch.py +3 -3
- langflow/components/logic/flow_tool.py +2 -2
- langflow/components/logic/notify.py +1 -1
- langflow/components/logic/run_flow.py +2 -3
- langflow/components/logic/sub_flow.py +4 -5
- langflow/components/mem0/mem0_chat_memory.py +2 -8
- langflow/components/nvidia/nvidia.py +3 -3
- langflow/components/olivya/olivya.py +7 -7
- langflow/components/ollama/ollama.py +8 -6
- langflow/components/processing/batch_run.py +8 -8
- langflow/components/processing/data_operations.py +2 -2
- langflow/components/processing/merge_data.py +1 -2
- langflow/components/processing/message_to_data.py +2 -3
- langflow/components/processing/parse_json_data.py +1 -1
- langflow/components/processing/save_file.py +6 -32
- langflow/components/prototypes/python_function.py +2 -3
- langflow/components/serpapi/serp.py +1 -1
- langflow/components/tavily/tavily_extract.py +1 -1
- langflow/components/tavily/tavily_search.py +1 -1
- langflow/components/tools/calculator.py +2 -2
- langflow/components/tools/python_code_structured_tool.py +3 -10
- langflow/components/tools/python_repl.py +2 -2
- langflow/components/tools/searxng.py +3 -3
- langflow/components/tools/serp_api.py +2 -2
- langflow/components/tools/tavily_search_tool.py +2 -2
- langflow/components/tools/yahoo_finance.py +1 -1
- langflow/components/twelvelabs/video_embeddings.py +4 -4
- langflow/components/vectorstores/astradb.py +30 -19
- langflow/components/vectorstores/local_db.py +1 -1
- langflow/components/yahoosearch/yahoo.py +1 -1
- langflow/components/youtube/trending.py +3 -4
- langflow/custom/attributes.py +2 -1
- langflow/custom/code_parser/code_parser.py +1 -1
- langflow/custom/custom_component/base_component.py +1 -1
- langflow/custom/custom_component/component.py +16 -2
- langflow/custom/directory_reader/directory_reader.py +7 -7
- langflow/custom/directory_reader/utils.py +1 -2
- langflow/custom/utils.py +30 -30
- langflow/events/event_manager.py +1 -1
- langflow/frontend/assets/{SlackIcon-B260Qg_R.js → SlackIcon-BhW6H3JR.js} +1 -1
- langflow/frontend/assets/{Wikipedia-BB2mbgyd.js → Wikipedia-Dx5jbiy3.js} +1 -1
- langflow/frontend/assets/{Wolfram-DytXC9hF.js → Wolfram-CIyonzwo.js} +1 -1
- langflow/frontend/assets/{index-DPX6X_bw.js → index-0XQqYgdG.js} +1 -1
- langflow/frontend/assets/{index-DtJyCbzF.js → index-1Q3VBqKn.js} +1 -1
- langflow/frontend/assets/{index-DztLFiip.js → index-35sspuLu.js} +1 -1
- langflow/frontend/assets/{index-BeNby7qF.js → index-7hzXChQz.js} +1 -1
- langflow/frontend/assets/{index-BOEf7-ty.js → index-8cuhogZP.js} +1 -1
- langflow/frontend/assets/{index-D0s9f6Re.js → index-B0m53xKd.js} +1 -1
- langflow/frontend/assets/{index-DpJiH-Rk.js → index-B1XqWJhG.js} +1 -1
- langflow/frontend/assets/{index-DuAeoC-H.js → index-B3KCdQ91.js} +1 -1
- langflow/frontend/assets/{index-Bxml6wXu.js → index-B7uEuOPK.js} +1 -1
- langflow/frontend/assets/{index-CDFLVFB4.js → index-B8UR8v-Q.js} +1 -1
- langflow/frontend/assets/{index-ci4XHjbJ.js → index-BD7Io1hL.js} +6 -6
- langflow/frontend/assets/{index-DasrI03Y.js → index-BDQrd7Tj.js} +1 -1
- langflow/frontend/assets/{index-CkQ-bJ4G.js → index-BDuk0d7P.js} +1 -1
- langflow/frontend/assets/{index-C_1RBTul.js → index-BFQ8KFK0.js} +1 -1
- langflow/frontend/assets/{index-DqSH4x-R.js → index-BFf0HTFI.js} +1 -1
- langflow/frontend/assets/{index-BXMhmvTj.js → index-BHhnpSkW.js} +1 -1
- langflow/frontend/assets/{index-Uq2ij_SS.js → index-BKKrUElc.js} +1 -1
- langflow/frontend/assets/{index-3TJWUdmx.js → index-BKeZt2hQ.js} +1 -1
- langflow/frontend/assets/{index-DHlEwAxb.js → index-BKlQbl-6.js} +1 -1
- langflow/frontend/assets/{index-Bisa4IQF.js → index-BLYw9MK2.js} +1 -1
- langflow/frontend/assets/{index-GODbXlHC.js → index-BLsVo9iW.js} +1 -1
- langflow/frontend/assets/{index-CHFO5O4g.js → index-BNQIbda3.js} +1 -1
- langflow/frontend/assets/{index-3uOAA_XX.js → index-BPR2mEFC.js} +1 -1
- langflow/frontend/assets/{index-3qMh9x6K.js → index-BPfdqCc_.js} +1 -1
- langflow/frontend/assets/{index-rcdQpNcU.js → index-BQrVDjR1.js} +1 -1
- langflow/frontend/assets/{index-4eRtaV45.js → index-BRmSeoWR.js} +1 -1
- langflow/frontend/assets/{index-Ct9_T9ox.js → index-BUse-kxM.js} +1 -1
- langflow/frontend/assets/{index-BdYgKk1d.js → index-BVFaF7HW.js} +1 -1
- langflow/frontend/assets/{index-CWWo2zOA.js → index-BWgIWfv2.js} +1 -1
- langflow/frontend/assets/{index-Du9aJK7m.js → index-BWt5xGeA.js} +1 -1
- langflow/frontend/assets/{index-Baka5dKE.js → index-BYhcGLTV.js} +1 -1
- langflow/frontend/assets/{index-BWq9GTzt.js → index-BYjw7Gk3.js} +1 -1
- langflow/frontend/assets/{index-r1LZg-PY.js → index-BZFljdMa.js} +1 -1
- langflow/frontend/assets/index-BcAgItH4.js +1 -0
- langflow/frontend/assets/{index-B8TlNgn-.js → index-Bct1s6__.js} +1 -1
- langflow/frontend/assets/{index-DZzbmg3J.js → index-Bhv79Zso.js} +1 -1
- langflow/frontend/assets/{index-CqDUqHfd.js → index-Bj3lSwvZ.js} +1 -1
- langflow/frontend/assets/{index-dkS0ek2S.js → index-Bk4mTwnI.js} +1 -1
- langflow/frontend/assets/{index-tOy_uloT.js → index-BmIx1cws.js} +1 -1
- langflow/frontend/assets/{index-BVtf6m9S.js → index-BmYJJ5YS.js} +1 -1
- langflow/frontend/assets/{index-mBjJYD9q.js → index-BnAFhkSN.js} +1 -1
- langflow/frontend/assets/{index-Ba3RTMXI.js → index-Bo-ww0Bb.js} +1 -1
- langflow/frontend/assets/{index-BsBWP-Dh.js → index-BpmqDOeZ.js} +1 -1
- langflow/frontend/assets/{index-BqUeOc7Y.js → index-BrVhdPZb.js} +1 -1
- langflow/frontend/assets/{index-DWkMJnbd.js → index-BvGQfVBD.js} +1 -1
- langflow/frontend/assets/{index-DdzVmJHE.js → index-Bwi4flFg.js} +1 -1
- langflow/frontend/assets/{index-Ccb5B8zG.js → index-BzoRPtTY.js} +1 -1
- langflow/frontend/assets/{index-Ym6gz0T6.js → index-C--IDAyc.js} +1 -1
- langflow/frontend/assets/{index-CvQ0w8Pj.js → index-C0E3_MIK.js} +1 -1
- langflow/frontend/assets/{index-DxIs8VSp.js → index-C27Jj_26.js} +1 -1
- langflow/frontend/assets/{index-BxWXWRmZ.js → index-C2eQmQsn.js} +1 -1
- langflow/frontend/assets/{index-B536IPXH.js → index-C8K0r39B.js} +1 -1
- langflow/frontend/assets/{index-BEDxAk3N.js → index-CEJNWPhA.js} +1 -1
- langflow/frontend/assets/{index-G_U_kPAd.js → index-CFNTYfFK.js} +1 -1
- langflow/frontend/assets/{index-CMGZGIx_.js → index-CMHpjHZl.js} +1 -1
- langflow/frontend/assets/{index-C76aBV_h.js → index-CSu8KHOi.js} +1 -1
- langflow/frontend/assets/{index-B-c82Fnu.js → index-CUKmGsI6.js} +1 -1
- langflow/frontend/assets/{index-DX7XsAcx.js → index-CWYiSeWV.js} +1 -1
- langflow/frontend/assets/{index-COL0eiWI.js → index-CY7_TBTC.js} +1 -1
- langflow/frontend/assets/{index-BlBl2tvQ.js → index-CbnWRlYY.js} +1 -1
- langflow/frontend/assets/{index-BQB-iDYl.js → index-CfPBgkqg.js} +1 -1
- langflow/frontend/assets/{index-DWr_zPkx.js → index-Cg53lrYh.js} +1 -1
- langflow/frontend/assets/{index-BcgB3rXH.js → index-CgU7KF4I.js} +1 -1
- langflow/frontend/assets/{index-CkSzjCqM.js → index-CgwykVGh.js} +1 -1
- langflow/frontend/assets/{index-BbsND1Qg.js → index-Ch5r0oW6.js} +1 -1
- langflow/frontend/assets/{index-AY5Dm2mG.js → index-CjsommIr.js} +1 -1
- langflow/frontend/assets/{index-BtJ2o21k.js → index-CkK25zZO.js} +1 -1
- langflow/frontend/assets/{index-BKvKC-12.js → index-CkjwSTSM.js} +1 -1
- langflow/frontend/assets/{index-BVHvIhT5.js → index-CmSFKgiD.js} +1 -1
- langflow/frontend/assets/{index-D-zkHcob.js → index-Cr5v2ave.js} +1 -1
- langflow/frontend/assets/{index-js8ceOaP.js → index-CrAF-31Y.js} +1 -1
- langflow/frontend/assets/{index-BNbWMmAV.js → index-CsLQiWNf.js} +1 -1
- langflow/frontend/assets/{index-VcXZzovW.js → index-CuCM7Wu7.js} +1 -1
- langflow/frontend/assets/{index-DzeIsaBm.js → index-Cxy9sEpy.js} +1 -1
- langflow/frontend/assets/{index-LrMzDsq9.js → index-CyP3py8K.js} +1 -1
- langflow/frontend/assets/{index-C8KD3LPb.js → index-CzHzeZuA.js} +1 -1
- langflow/frontend/assets/{index-DS1EgA10.js → index-D1oynC8a.js} +1 -1
- langflow/frontend/assets/{index-ByFXr9Iq.js → index-D4tjMhfY.js} +1 -1
- langflow/frontend/assets/{index-DyJDHm2D.js → index-D6CSIrp1.js} +1 -1
- langflow/frontend/assets/{index-DIqSyDVO.js → index-D9kwEzPB.js} +1 -1
- langflow/frontend/assets/{index-D5PeCofu.js → index-DDXsm8tz.js} +1 -1
- langflow/frontend/assets/{index-CJwYfDBz.js → index-DDhJVVel.js} +1 -1
- langflow/frontend/assets/{index-C7x9R_Yo.js → index-DH6o91_s.js} +1 -1
- langflow/frontend/assets/{index-DpQKtcXu.js → index-DHngW1k8.js} +1 -1
- langflow/frontend/assets/{index-VZnN0P6C.js → index-DIKUsGLF.js} +1 -1
- langflow/frontend/assets/{index-VHmUHUUU.js → index-DJESSNJi.js} +1 -1
- langflow/frontend/assets/{index-BdIWbCEL.js → index-DMCWDJOl.js} +1 -1
- langflow/frontend/assets/{index-DK8vNpXK.js → index-DOEvKC2X.js} +1 -1
- langflow/frontend/assets/{index-C7V5U9yH.js → index-DOQDkSoK.js} +1 -1
- langflow/frontend/assets/{index-D0HmkH0H.js → index-DXAfIEvs.js} +1 -1
- langflow/frontend/assets/{index-C9N80hP8.js → index-DZP_SaHb.js} +1 -1
- langflow/frontend/assets/{index-B2ggrBuR.js → index-DZxUIhWh.js} +1 -1
- langflow/frontend/assets/{index-DS9I4y48.js → index-Dda2u_yz.js} +1 -1
- langflow/frontend/assets/{index-BLROcaSz.js → index-Dg8N3NSO.js} +1 -1
- langflow/frontend/assets/{index-Dpz3oBf5.js → index-DkGhPNeA.js} +1 -1
- langflow/frontend/assets/{index-BnLT29qW.js → index-Dka_Rk4-.js} +1 -1
- langflow/frontend/assets/{index-B5ed-sAv.js → index-DljpLeCW.js} +1 -1
- langflow/frontend/assets/{index-Cx__T92e.js → index-DnVYJtVO.js} +1 -1
- langflow/frontend/assets/{index-hOkEW3JP.js → index-DqbzUcI5.js} +1 -1
- langflow/frontend/assets/{index-BxkZkBgQ.js → index-Dr6pVDPI.js} +1 -1
- langflow/frontend/assets/{index-BIkqesA-.js → index-DsoX2o1S.js} +1 -1
- langflow/frontend/assets/{index-Cpgkb0Q3.js → index-DwfHWnX7.js} +1 -1
- langflow/frontend/assets/{index-B9Mo3ndZ.js → index-Dx-Z87KT.js} +1 -1
- langflow/frontend/assets/{index-R7q8cAek.js → index-DyqITq51.js} +1 -1
- langflow/frontend/assets/{index-DKEXZFUO.js → index-DzIv3RyR.js} +1 -1
- langflow/frontend/assets/{index-BJrY2Fiu.js → index-G4ro0MjT.js} +1 -1
- langflow/frontend/assets/{index-IFGgPiye.js → index-H7J7w7fa.js} +1 -1
- langflow/frontend/assets/{index-lKEJpUsF.js → index-KWY77KfV.js} +1 -1
- langflow/frontend/assets/{index-DDNNv4C0.js → index-U9GWm1eH.js} +1 -1
- langflow/frontend/assets/{index-BRWNIt9F.js → index-Un9pWxnP.js} +1 -1
- langflow/frontend/assets/{index-BCK-ZyIh.js → index-Xi4TplbI.js} +1 -1
- langflow/frontend/assets/{index-BEKoRwsX.js → index-_cbGmjF4.js} +1 -1
- langflow/frontend/assets/{index-7xXgqu09.js → index-cEXY6V06.js} +1 -1
- langflow/frontend/assets/{index-D87Zw62M.js → index-dyXKnkMi.js} +1 -1
- langflow/frontend/assets/{index-CG7cp0nD.js → index-eUkS6iJM.js} +1 -1
- langflow/frontend/assets/{index-CoUlHbtg.js → index-ekfMOqrF.js} +1 -1
- langflow/frontend/assets/{index-DhzEUXfr.js → index-gdb7XMS8.js} +1 -1
- langflow/frontend/assets/{index-D9eflZfP.js → index-hZUcL0MZ.js} +1 -1
- langflow/frontend/assets/{index-CwIxqYlT.js → index-kkA-qHB_.js} +1 -1
- langflow/frontend/assets/{index-sS6XLk3j.js → index-mzl9ULw5.js} +1 -1
- langflow/frontend/assets/{index-BjENqyKe.js → index-oxHBZk2v.js} +1 -1
- langflow/frontend/assets/{index-BejHxU5W.js → index-p2kStSPe.js} +1 -1
- langflow/frontend/assets/{index-BOYTBrh9.js → index-paQEWYGT.js} +1 -1
- langflow/frontend/assets/{index-Cd5zuUUK.js → index-r_8gs4nL.js} +1 -1
- langflow/frontend/assets/{index-AlJ7td-D.js → index-uiKla4UR.js} +1 -1
- langflow/frontend/assets/{index-B8y58M9b.js → index-vJOO5U8M.js} +1 -1
- langflow/frontend/assets/{index-CF4dtI6S.js → index-w72fDjpG.js} +1 -1
- langflow/frontend/assets/{index-C2Xd7UkR.js → index-zV82kQ6k.js} +1 -1
- langflow/frontend/assets/lazyIconImports-DTNgvPE-.js +2 -0
- langflow/frontend/assets/{use-post-add-user-HN0rRnhv.js → use-post-add-user-CvtuazTg.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/edge/base.py +2 -3
- langflow/graph/graph/base.py +14 -12
- langflow/graph/graph/constants.py +3 -0
- langflow/graph/utils.py +6 -6
- langflow/graph/vertex/base.py +4 -5
- langflow/graph/vertex/param_handler.py +1 -1
- langflow/graph/vertex/vertex_types.py +2 -2
- langflow/helpers/flow.py +1 -1
- langflow/initial_setup/setup.py +32 -30
- langflow/initial_setup/starter_projects/Blog Writer.json +2 -2
- langflow/initial_setup/starter_projects/Custom Component Generator.json +2 -2
- langflow/initial_setup/starter_projects/Document Q&A.json +1 -1
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +2 -2
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +3 -3
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +1 -1
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +4 -4
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +2 -2
- langflow/initial_setup/starter_projects/Market Research.json +3 -3
- langflow/initial_setup/starter_projects/Meeting Summary.json +6 -6
- langflow/initial_setup/starter_projects/Memory Chatbot.json +2 -2
- langflow/initial_setup/starter_projects/News Aggregator.json +5 -22
- langflow/initial_setup/starter_projects/Nvidia Remix.json +3 -20
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1 -1
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +1 -1
- langflow/initial_setup/starter_projects/Price Deal Finder.json +5 -5
- langflow/initial_setup/starter_projects/Research Agent.json +3 -3
- langflow/initial_setup/starter_projects/SaaS Pricing.json +1 -1
- langflow/initial_setup/starter_projects/Search agent.json +1 -1
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +7 -7
- langflow/initial_setup/starter_projects/Simple Agent.json +3 -3
- langflow/initial_setup/starter_projects/Social Media Agent.json +1 -1
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +1 -1
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +3 -3
- langflow/initial_setup/starter_projects/Vector Store RAG.json +5 -5
- langflow/initial_setup/starter_projects/Youtube Analysis.json +3 -3
- langflow/interface/components.py +23 -22
- langflow/interface/initialize/loading.py +5 -5
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +1 -1
- langflow/io/__init__.py +0 -1
- langflow/langflow_launcher.py +1 -1
- langflow/load/load.py +2 -7
- langflow/logging/__init__.py +0 -1
- langflow/logging/logger.py +191 -115
- langflow/logging/setup.py +1 -1
- langflow/main.py +37 -52
- langflow/memory.py +7 -7
- langflow/middleware.py +1 -1
- langflow/processing/process.py +4 -4
- langflow/schema/artifact.py +2 -2
- langflow/schema/data.py +10 -2
- langflow/schema/dataframe.py +1 -1
- langflow/schema/message.py +1 -1
- langflow/serialization/serialization.py +1 -1
- langflow/services/auth/utils.py +2 -2
- langflow/services/cache/disk.py +1 -1
- langflow/services/cache/service.py +3 -3
- langflow/services/database/models/flow/model.py +2 -7
- langflow/services/database/models/transactions/crud.py +2 -2
- langflow/services/database/models/user/crud.py +2 -2
- langflow/services/database/service.py +8 -8
- langflow/services/database/utils.py +6 -5
- langflow/services/deps.py +2 -3
- langflow/services/factory.py +1 -1
- langflow/services/flow/flow_runner.py +7 -12
- langflow/services/job_queue/service.py +16 -15
- langflow/services/manager.py +3 -4
- langflow/services/settings/auth.py +1 -1
- langflow/services/settings/base.py +3 -8
- langflow/services/settings/manager.py +1 -1
- langflow/services/settings/utils.py +1 -1
- langflow/services/socket/__init__.py +0 -1
- langflow/services/socket/service.py +3 -3
- langflow/services/socket/utils.py +4 -4
- langflow/services/state/service.py +1 -2
- langflow/services/storage/factory.py +1 -1
- langflow/services/storage/local.py +9 -8
- langflow/services/storage/s3.py +11 -10
- langflow/services/store/service.py +3 -3
- langflow/services/store/utils.py +3 -2
- langflow/services/task/temp_flow_cleanup.py +7 -7
- langflow/services/telemetry/service.py +10 -10
- langflow/services/tracing/arize_phoenix.py +2 -2
- langflow/services/tracing/langfuse.py +1 -1
- langflow/services/tracing/langsmith.py +1 -1
- langflow/services/tracing/langwatch.py +1 -1
- langflow/services/tracing/opik.py +1 -1
- langflow/services/tracing/service.py +25 -6
- langflow/services/tracing/traceloop.py +245 -0
- langflow/services/utils.py +7 -7
- langflow/services/variable/kubernetes.py +3 -3
- langflow/services/variable/kubernetes_secrets.py +2 -1
- langflow/services/variable/service.py +5 -5
- langflow/utils/component_utils.py +9 -6
- langflow/utils/util.py +5 -5
- langflow/utils/validate.py +3 -3
- langflow/utils/voice_utils.py +2 -2
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/METADATA +2 -1
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/RECORD +342 -340
- langflow/frontend/assets/lazyIconImports-Bh1TFfvH.js +0 -2
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/entry_points.txt +0 -0
|
@@ -2,13 +2,13 @@ from copy import deepcopy
|
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
|
|
4
4
|
from langchain_chroma import Chroma
|
|
5
|
-
from loguru import logger
|
|
6
5
|
from typing_extensions import override
|
|
7
6
|
|
|
8
7
|
from langflow.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
|
|
9
8
|
from langflow.base.vectorstores.utils import chroma_collection_to_data
|
|
10
9
|
from langflow.inputs.inputs import MultilineInput
|
|
11
10
|
from langflow.io import BoolInput, DropdownInput, HandleInput, IntInput, MessageTextInput, TabInput
|
|
11
|
+
from langflow.logging.logger import logger
|
|
12
12
|
from langflow.schema.data import Data
|
|
13
13
|
from langflow.schema.dataframe import DataFrame
|
|
14
14
|
from langflow.template.field.base import Output
|
|
@@ -4,12 +4,12 @@ from enum import Enum
|
|
|
4
4
|
|
|
5
5
|
import yfinance as yf
|
|
6
6
|
from langchain_core.tools import ToolException
|
|
7
|
-
from loguru import logger
|
|
8
7
|
from pydantic import BaseModel, Field
|
|
9
8
|
|
|
10
9
|
from langflow.custom.custom_component.component import Component
|
|
11
10
|
from langflow.inputs.inputs import DropdownInput, IntInput, MessageTextInput
|
|
12
11
|
from langflow.io import Output
|
|
12
|
+
from langflow.logging.logger import logger
|
|
13
13
|
from langflow.schema.data import Data
|
|
14
14
|
from langflow.schema.dataframe import DataFrame
|
|
15
15
|
|
|
@@ -6,6 +6,7 @@ from googleapiclient.errors import HttpError
|
|
|
6
6
|
|
|
7
7
|
from langflow.custom.custom_component.component import Component
|
|
8
8
|
from langflow.inputs.inputs import BoolInput, DropdownInput, IntInput, SecretStrInput
|
|
9
|
+
from langflow.logging.logger import logger
|
|
9
10
|
from langflow.schema.dataframe import DataFrame
|
|
10
11
|
from langflow.template.field.base import Output
|
|
11
12
|
|
|
@@ -279,8 +280,6 @@ class YouTubeTrendingComponent(Component):
|
|
|
279
280
|
|
|
280
281
|
return DataFrame(pd.DataFrame({"error": [error_message]}))
|
|
281
282
|
|
|
282
|
-
except Exception as e:
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
logging.exception("An unexpected error occurred:")
|
|
283
|
+
except Exception as e: # noqa: BLE001
|
|
284
|
+
logger.exception("An unexpected error occurred:")
|
|
286
285
|
return DataFrame(pd.DataFrame({"error": [str(e)]}))
|
langflow/custom/attributes.py
CHANGED
|
@@ -8,10 +8,10 @@ from typing import Any
|
|
|
8
8
|
|
|
9
9
|
from cachetools import TTLCache, keys
|
|
10
10
|
from fastapi import HTTPException
|
|
11
|
-
from loguru import logger
|
|
12
11
|
|
|
13
12
|
from langflow.custom.eval import eval_custom_component_code
|
|
14
13
|
from langflow.custom.schema import CallableCodeDetails, ClassCodeDetails, MissingDefault
|
|
14
|
+
from langflow.logging.logger import logger
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class CodeSyntaxError(HTTPException):
|
|
@@ -5,11 +5,11 @@ from typing import TYPE_CHECKING, Any, ClassVar
|
|
|
5
5
|
|
|
6
6
|
from cachetools import TTLCache, cachedmethod
|
|
7
7
|
from fastapi import HTTPException
|
|
8
|
-
from loguru import logger
|
|
9
8
|
|
|
10
9
|
from langflow.custom.attributes import ATTR_FUNC_MAPPING
|
|
11
10
|
from langflow.custom.code_parser.code_parser import CodeParser
|
|
12
11
|
from langflow.custom.eval import eval_custom_component_code
|
|
12
|
+
from langflow.logging.logger import logger
|
|
13
13
|
from langflow.utils import validate
|
|
14
14
|
|
|
15
15
|
if TYPE_CHECKING:
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import ast
|
|
4
4
|
import asyncio
|
|
5
5
|
import inspect
|
|
6
|
+
import json
|
|
6
7
|
from collections.abc import AsyncIterator, Iterator
|
|
7
8
|
from copy import deepcopy
|
|
8
9
|
from textwrap import dedent
|
|
@@ -1019,10 +1020,23 @@ class Component(CustomComponent):
|
|
|
1019
1020
|
return {**predefined_inputs, **runtime_inputs}
|
|
1020
1021
|
|
|
1021
1022
|
def get_trace_as_metadata(self):
|
|
1023
|
+
def safe_list_values(items):
|
|
1024
|
+
return [v if isinstance(v, str | int | float | bool) or v is None else str(v) for v in items]
|
|
1025
|
+
|
|
1026
|
+
def safe_value(val):
|
|
1027
|
+
if isinstance(val, str | int | float | bool) or val is None:
|
|
1028
|
+
return val
|
|
1029
|
+
if isinstance(val, list | tuple):
|
|
1030
|
+
return safe_list_values(val)
|
|
1031
|
+
try:
|
|
1032
|
+
return json.dumps(val)
|
|
1033
|
+
except (TypeError, ValueError):
|
|
1034
|
+
return str(val)
|
|
1035
|
+
|
|
1022
1036
|
return {
|
|
1023
|
-
input_.name: input_.value
|
|
1037
|
+
input_.name: safe_value(getattr(self, input_.name, input_.value))
|
|
1024
1038
|
for input_ in self.inputs
|
|
1025
|
-
if
|
|
1039
|
+
if getattr(input_, "trace_as_metadata", False)
|
|
1026
1040
|
}
|
|
1027
1041
|
|
|
1028
1042
|
async def _build_with_tracing(self):
|
|
@@ -5,9 +5,9 @@ from pathlib import Path
|
|
|
5
5
|
|
|
6
6
|
import anyio
|
|
7
7
|
from aiofile import async_open
|
|
8
|
-
from loguru import logger
|
|
9
8
|
|
|
10
9
|
from langflow.custom.custom_component.component import Component
|
|
10
|
+
from langflow.logging.logger import logger
|
|
11
11
|
|
|
12
12
|
MAX_DEPTH = 2
|
|
13
13
|
|
|
@@ -255,7 +255,7 @@ class DirectoryReader:
|
|
|
255
255
|
try:
|
|
256
256
|
output_types = self.get_output_types_from_code(result_content)
|
|
257
257
|
except Exception: # noqa: BLE001
|
|
258
|
-
logger.
|
|
258
|
+
logger.debug("Error while getting output types from code", exc_info=True)
|
|
259
259
|
output_types = [component_name_camelcase]
|
|
260
260
|
else:
|
|
261
261
|
output_types = [component_name_camelcase]
|
|
@@ -278,7 +278,7 @@ class DirectoryReader:
|
|
|
278
278
|
try:
|
|
279
279
|
file_content = await self.aread_file_content(file_path)
|
|
280
280
|
except Exception: # noqa: BLE001
|
|
281
|
-
logger.
|
|
281
|
+
await logger.aexception(f"Error while reading file {file_path}")
|
|
282
282
|
return False, f"Could not read {file_path}"
|
|
283
283
|
|
|
284
284
|
if file_content is None:
|
|
@@ -300,7 +300,7 @@ class DirectoryReader:
|
|
|
300
300
|
|
|
301
301
|
async def abuild_component_menu_list(self, file_paths):
|
|
302
302
|
response = {"menu": []}
|
|
303
|
-
logger.
|
|
303
|
+
await logger.adebug("-------------------- Async Building component menu list --------------------")
|
|
304
304
|
|
|
305
305
|
tasks = [self.process_file_async(file_path) for file_path in file_paths]
|
|
306
306
|
results = await asyncio.gather(*tasks)
|
|
@@ -311,7 +311,7 @@ class DirectoryReader:
|
|
|
311
311
|
filename = file_path_.name
|
|
312
312
|
|
|
313
313
|
if not validation_result:
|
|
314
|
-
logger.
|
|
314
|
+
await logger.aerror(f"Error while processing file {file_path}")
|
|
315
315
|
|
|
316
316
|
menu_result = self.find_menu(response, menu_name) or {
|
|
317
317
|
"name": menu_name,
|
|
@@ -329,7 +329,7 @@ class DirectoryReader:
|
|
|
329
329
|
try:
|
|
330
330
|
output_types = await asyncio.to_thread(self.get_output_types_from_code, result_content)
|
|
331
331
|
except Exception: # noqa: BLE001
|
|
332
|
-
logger.
|
|
332
|
+
await logger.aexception("Error while getting output types from code")
|
|
333
333
|
output_types = [component_name_camelcase]
|
|
334
334
|
else:
|
|
335
335
|
output_types = [component_name_camelcase]
|
|
@@ -346,7 +346,7 @@ class DirectoryReader:
|
|
|
346
346
|
if menu_result not in response["menu"]:
|
|
347
347
|
response["menu"].append(menu_result)
|
|
348
348
|
|
|
349
|
-
logger.
|
|
349
|
+
await logger.adebug("-------------------- Component menu list built --------------------")
|
|
350
350
|
return response
|
|
351
351
|
|
|
352
352
|
@staticmethod
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
|
|
3
|
-
from loguru import logger
|
|
4
|
-
|
|
5
3
|
from langflow.custom.directory_reader.directory_reader import DirectoryReader
|
|
4
|
+
from langflow.logging.logger import logger
|
|
6
5
|
from langflow.template.frontend_node.custom_components import CustomComponentFrontendNode
|
|
7
6
|
|
|
8
7
|
|
langflow/custom/utils.py
CHANGED
|
@@ -11,7 +11,6 @@ from typing import Any
|
|
|
11
11
|
from uuid import UUID
|
|
12
12
|
|
|
13
13
|
from fastapi import HTTPException
|
|
14
|
-
from loguru import logger
|
|
15
14
|
from pydantic import BaseModel
|
|
16
15
|
|
|
17
16
|
from langflow.custom.custom_component.component import Component
|
|
@@ -25,6 +24,7 @@ from langflow.custom.eval import eval_custom_component_code
|
|
|
25
24
|
from langflow.custom.schema import MissingDefault
|
|
26
25
|
from langflow.field_typing.range_spec import RangeSpec
|
|
27
26
|
from langflow.helpers.custom import format_type
|
|
27
|
+
from langflow.logging.logger import logger
|
|
28
28
|
from langflow.schema.dotdict import dotdict
|
|
29
29
|
from langflow.template.field.base import Input
|
|
30
30
|
from langflow.template.frontend_node.custom_components import ComponentFrontendNode, CustomComponentFrontendNode
|
|
@@ -500,7 +500,7 @@ def build_custom_component_template_from_inputs(
|
|
|
500
500
|
if code_hash:
|
|
501
501
|
frontend_node.metadata["code_hash"] = code_hash
|
|
502
502
|
except Exception as exc: # noqa: BLE001
|
|
503
|
-
logger.
|
|
503
|
+
logger.debug(f"Error generating code hash for {custom_component.__class__.__name__}", exc_info=exc)
|
|
504
504
|
|
|
505
505
|
return frontend_node.to_dict(keep_name=False), cc_instance
|
|
506
506
|
|
|
@@ -573,7 +573,7 @@ def build_custom_component_template(
|
|
|
573
573
|
if code_hash:
|
|
574
574
|
frontend_node.metadata["code_hash"] = code_hash
|
|
575
575
|
except Exception as exc: # noqa: BLE001
|
|
576
|
-
logger.
|
|
576
|
+
logger.debug(f"Error generating code hash for {custom_component.__class__.__name__}", exc_info=exc)
|
|
577
577
|
|
|
578
578
|
return frontend_node.to_dict(keep_name=False), custom_instance
|
|
579
579
|
except Exception as exc:
|
|
@@ -646,7 +646,7 @@ async def abuild_custom_components(components_paths: list[str]):
|
|
|
646
646
|
if not components_paths:
|
|
647
647
|
return {}
|
|
648
648
|
|
|
649
|
-
logger.
|
|
649
|
+
await logger.adebug(f"Building custom components from {components_paths}")
|
|
650
650
|
custom_components_from_file: dict = {}
|
|
651
651
|
processed_paths = set()
|
|
652
652
|
for path in components_paths:
|
|
@@ -657,7 +657,7 @@ async def abuild_custom_components(components_paths: list[str]):
|
|
|
657
657
|
custom_component_dict = await abuild_custom_component_list_from_path(path_str)
|
|
658
658
|
if custom_component_dict:
|
|
659
659
|
category = next(iter(custom_component_dict))
|
|
660
|
-
logger.
|
|
660
|
+
await logger.adebug(f"Loading {len(custom_component_dict[category])} component(s) from category {category}")
|
|
661
661
|
custom_components_from_file = merge_nested_dicts_with_renaming(
|
|
662
662
|
custom_components_from_file, custom_component_dict
|
|
663
663
|
)
|
|
@@ -745,18 +745,18 @@ async def get_single_component_dict(component_type: str, component_name: str, co
|
|
|
745
745
|
if hasattr(module, "template"):
|
|
746
746
|
return module.template
|
|
747
747
|
except ImportError as e:
|
|
748
|
-
logger.
|
|
748
|
+
await logger.aerror(f"Import error loading component {module_path}: {e!s}")
|
|
749
749
|
except AttributeError as e:
|
|
750
|
-
logger.
|
|
750
|
+
await logger.aerror(f"Attribute error loading component {module_path}: {e!s}")
|
|
751
751
|
except ValueError as e:
|
|
752
|
-
logger.
|
|
752
|
+
await logger.aerror(f"Value error loading component {module_path}: {e!s}")
|
|
753
753
|
except (KeyError, IndexError) as e:
|
|
754
|
-
logger.
|
|
754
|
+
await logger.aerror(f"Data structure error loading component {module_path}: {e!s}")
|
|
755
755
|
except RuntimeError as e:
|
|
756
|
-
logger.
|
|
757
|
-
logger.
|
|
756
|
+
await logger.aerror(f"Runtime error loading component {module_path}: {e!s}")
|
|
757
|
+
await logger.adebug("Full traceback for runtime error", exc_info=True)
|
|
758
758
|
except OSError as e:
|
|
759
|
-
logger.
|
|
759
|
+
await logger.aerror(f"OS error loading component {module_path}: {e!s}")
|
|
760
760
|
|
|
761
761
|
# If we get here, the component wasn't found or couldn't be loaded
|
|
762
762
|
return None
|
|
@@ -811,43 +811,43 @@ async def load_custom_component(component_name: str, components_paths: list[str]
|
|
|
811
811
|
if hasattr(module, "get_template"):
|
|
812
812
|
return module.get_template()
|
|
813
813
|
except ImportError as e:
|
|
814
|
-
logger.
|
|
815
|
-
logger.
|
|
814
|
+
await logger.aerror(f"Import error loading component {component_file}: {e!s}")
|
|
815
|
+
await logger.adebug("Import error traceback", exc_info=True)
|
|
816
816
|
except AttributeError as e:
|
|
817
|
-
logger.
|
|
818
|
-
logger.
|
|
817
|
+
await logger.aerror(f"Attribute error loading component {component_file}: {e!s}")
|
|
818
|
+
await logger.adebug("Attribute error traceback", exc_info=True)
|
|
819
819
|
except (ValueError, TypeError) as e:
|
|
820
|
-
logger.
|
|
821
|
-
logger.
|
|
820
|
+
await logger.aerror(f"Value/Type error loading component {component_file}: {e!s}")
|
|
821
|
+
await logger.adebug("Value/Type error traceback", exc_info=True)
|
|
822
822
|
except (KeyError, IndexError) as e:
|
|
823
|
-
logger.
|
|
824
|
-
logger.
|
|
823
|
+
await logger.aerror(f"Data structure error loading component {component_file}: {e!s}")
|
|
824
|
+
await logger.adebug("Data structure error traceback", exc_info=True)
|
|
825
825
|
except RuntimeError as e:
|
|
826
|
-
logger.
|
|
827
|
-
logger.
|
|
826
|
+
await logger.aerror(f"Runtime error loading component {component_file}: {e!s}")
|
|
827
|
+
await logger.adebug("Runtime error traceback", exc_info=True)
|
|
828
828
|
except OSError as e:
|
|
829
|
-
logger.
|
|
830
|
-
logger.
|
|
829
|
+
await logger.aerror(f"OS error loading component {component_file}: {e!s}")
|
|
830
|
+
await logger.adebug("OS error traceback", exc_info=True)
|
|
831
831
|
|
|
832
832
|
except ImportError as e:
|
|
833
|
-
logger.
|
|
833
|
+
await logger.aerror(f"Import error loading custom component {component_name}: {e!s}")
|
|
834
834
|
return None
|
|
835
835
|
except AttributeError as e:
|
|
836
|
-
logger.
|
|
836
|
+
await logger.aerror(f"Attribute error loading custom component {component_name}: {e!s}")
|
|
837
837
|
return None
|
|
838
838
|
except ValueError as e:
|
|
839
|
-
logger.
|
|
839
|
+
await logger.aerror(f"Value error loading custom component {component_name}: {e!s}")
|
|
840
840
|
return None
|
|
841
841
|
except (KeyError, IndexError) as e:
|
|
842
|
-
logger.
|
|
842
|
+
await logger.aerror(f"Data structure error loading custom component {component_name}: {e!s}")
|
|
843
843
|
return None
|
|
844
844
|
except RuntimeError as e:
|
|
845
|
-
logger.
|
|
845
|
+
await logger.aerror(f"Runtime error loading custom component {component_name}: {e!s}")
|
|
846
846
|
logger.debug("Full traceback for runtime error", exc_info=True)
|
|
847
847
|
return None
|
|
848
848
|
|
|
849
849
|
# If we get here, the component wasn't found in any of the paths
|
|
850
|
-
logger.
|
|
850
|
+
await logger.awarning(f"Component {component_name} not found in any of the provided paths")
|
|
851
851
|
return None
|
|
852
852
|
|
|
853
853
|
|
langflow/events/event_manager.py
CHANGED
|
@@ -8,9 +8,9 @@ from functools import partial
|
|
|
8
8
|
from typing import TYPE_CHECKING
|
|
9
9
|
|
|
10
10
|
from fastapi.encoders import jsonable_encoder
|
|
11
|
-
from loguru import logger
|
|
12
11
|
from typing_extensions import Protocol
|
|
13
12
|
|
|
13
|
+
from langflow.logging.logger import logger
|
|
14
14
|
from langflow.schema.playground_events import create_event_by_type
|
|
15
15
|
|
|
16
16
|
if TYPE_CHECKING:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as a}from"./index-
|
|
1
|
+
import{j as a}from"./index-BD7Io1hL.js";const s=l=>a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 54 54",width:"1em",height:"1em",...l,children:a.jsxs("g",{fill:"none",fillRule:"evenodd",children:[a.jsx("path",{fill:"#36C5F0",d:"M19.712.133a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386h5.376V5.52A5.381 5.381 0 0 0 19.712.133m0 14.365H5.376A5.381 5.381 0 0 0 0 19.884a5.381 5.381 0 0 0 5.376 5.387h14.336a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386"}),a.jsx("path",{fill:"#2EB67D",d:"M53.76 19.884a5.381 5.381 0 0 0-5.376-5.386 5.381 5.381 0 0 0-5.376 5.386v5.387h5.376a5.381 5.381 0 0 0 5.376-5.387m-14.336 0V5.52A5.381 5.381 0 0 0 34.048.133a5.381 5.381 0 0 0-5.376 5.387v14.364a5.381 5.381 0 0 0 5.376 5.387 5.381 5.381 0 0 0 5.376-5.387"}),a.jsx("path",{fill:"#ECB22E",d:"M34.048 54a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386h-5.376v5.386A5.381 5.381 0 0 0 34.048 54m0-14.365h14.336a5.381 5.381 0 0 0 5.376-5.386 5.381 5.381 0 0 0-5.376-5.387H34.048a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386"}),a.jsx("path",{fill:"#E01E5A",d:"M0 34.249a5.381 5.381 0 0 0 5.376 5.386 5.381 5.381 0 0 0 5.376-5.386v-5.387H5.376A5.381 5.381 0 0 0 0 34.25m14.336-.001v14.364A5.381 5.381 0 0 0 19.712 54a5.381 5.381 0 0 0 5.376-5.387V34.25a5.381 5.381 0 0 0-5.376-5.387 5.381 5.381 0 0 0-5.376 5.387"})]})});export{s as default};
|