langflow-base-nightly 0.5.1.dev3__py3-none-any.whl → 0.5.1.dev5__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/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev5.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev3.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/entry_points.txt +0 -0
langflow/__init__.py
CHANGED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"""Langflow backwards compatibility layer.
|
|
2
|
+
|
|
3
|
+
This module provides backwards compatibility by forwarding imports from
|
|
4
|
+
langflow.* to lfx.* to maintain compatibility with existing code that
|
|
5
|
+
references the old langflow module structure.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import importlib
|
|
9
|
+
import importlib.util
|
|
10
|
+
import sys
|
|
11
|
+
from types import ModuleType
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class LangflowCompatibilityModule(ModuleType):
|
|
16
|
+
"""A module that forwards attribute access to the corresponding lfx module."""
|
|
17
|
+
|
|
18
|
+
def __init__(self, name: str, lfx_module_name: str):
|
|
19
|
+
super().__init__(name)
|
|
20
|
+
self._lfx_module_name = lfx_module_name
|
|
21
|
+
self._lfx_module = None
|
|
22
|
+
|
|
23
|
+
def _get_lfx_module(self):
|
|
24
|
+
"""Lazily import and cache the lfx module."""
|
|
25
|
+
if self._lfx_module is None:
|
|
26
|
+
try:
|
|
27
|
+
self._lfx_module = importlib.import_module(self._lfx_module_name)
|
|
28
|
+
except ImportError as e:
|
|
29
|
+
msg = f"Cannot import {self._lfx_module_name} for backwards compatibility with {self.__name__}"
|
|
30
|
+
raise ImportError(msg) from e
|
|
31
|
+
return self._lfx_module
|
|
32
|
+
|
|
33
|
+
def __getattr__(self, name: str) -> Any:
|
|
34
|
+
"""Forward attribute access to the lfx module with caching."""
|
|
35
|
+
lfx_module = self._get_lfx_module()
|
|
36
|
+
try:
|
|
37
|
+
attr = getattr(lfx_module, name)
|
|
38
|
+
except AttributeError as e:
|
|
39
|
+
msg = f"module '{self.__name__}' has no attribute '{name}'"
|
|
40
|
+
raise AttributeError(msg) from e
|
|
41
|
+
else:
|
|
42
|
+
# Cache the attribute in our __dict__ for faster subsequent access
|
|
43
|
+
setattr(self, name, attr)
|
|
44
|
+
return attr
|
|
45
|
+
|
|
46
|
+
def __dir__(self):
|
|
47
|
+
"""Return directory of the lfx module."""
|
|
48
|
+
try:
|
|
49
|
+
lfx_module = self._get_lfx_module()
|
|
50
|
+
return dir(lfx_module)
|
|
51
|
+
except ImportError:
|
|
52
|
+
return []
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _setup_compatibility_modules():
|
|
56
|
+
"""Set up comprehensive compatibility modules for langflow.base imports."""
|
|
57
|
+
# First, set up the base attribute on this module (langflow)
|
|
58
|
+
current_module = sys.modules[__name__]
|
|
59
|
+
|
|
60
|
+
# Define all the modules we need to support
|
|
61
|
+
module_mappings = {
|
|
62
|
+
# Core base module
|
|
63
|
+
"langflow.base": "lfx.base",
|
|
64
|
+
# Inputs module - critical for class identity
|
|
65
|
+
"langflow.inputs": "lfx.inputs",
|
|
66
|
+
"langflow.inputs.inputs": "lfx.inputs.inputs",
|
|
67
|
+
# Schema modules - also critical for class identity
|
|
68
|
+
"langflow.schema": "lfx.schema",
|
|
69
|
+
"langflow.schema.data": "lfx.schema.data",
|
|
70
|
+
"langflow.schema.serialize": "lfx.schema.serialize",
|
|
71
|
+
# Template modules
|
|
72
|
+
"langflow.template": "lfx.template",
|
|
73
|
+
"langflow.template.field": "lfx.template.field",
|
|
74
|
+
"langflow.template.field.base": "lfx.template.field.base",
|
|
75
|
+
# Components modules
|
|
76
|
+
"langflow.components": "lfx.components",
|
|
77
|
+
"langflow.components.helpers": "lfx.components.helpers",
|
|
78
|
+
"langflow.components.helpers.calculator_core": "lfx.components.helpers.calculator_core",
|
|
79
|
+
"langflow.components.helpers.create_list": "lfx.components.helpers.create_list",
|
|
80
|
+
"langflow.components.helpers.current_date": "lfx.components.helpers.current_date",
|
|
81
|
+
"langflow.components.helpers.id_generator": "lfx.components.helpers.id_generator",
|
|
82
|
+
"langflow.components.helpers.memory": "lfx.components.helpers.memory",
|
|
83
|
+
"langflow.components.helpers.output_parser": "lfx.components.helpers.output_parser",
|
|
84
|
+
"langflow.components.helpers.store_message": "lfx.components.helpers.store_message",
|
|
85
|
+
# Individual modules that exist in lfx
|
|
86
|
+
"langflow.base.agents": "lfx.base.agents",
|
|
87
|
+
"langflow.base.chains": "lfx.base.chains",
|
|
88
|
+
"langflow.base.data": "lfx.base.data",
|
|
89
|
+
"langflow.base.data.utils": "lfx.base.data.utils",
|
|
90
|
+
"langflow.base.document_transformers": "lfx.base.document_transformers",
|
|
91
|
+
"langflow.base.embeddings": "lfx.base.embeddings",
|
|
92
|
+
"langflow.base.flow_processing": "lfx.base.flow_processing",
|
|
93
|
+
"langflow.base.io": "lfx.base.io",
|
|
94
|
+
"langflow.base.io.chat": "lfx.base.io.chat",
|
|
95
|
+
"langflow.base.io.text": "lfx.base.io.text",
|
|
96
|
+
"langflow.base.langchain_utilities": "lfx.base.langchain_utilities",
|
|
97
|
+
"langflow.base.memory": "lfx.base.memory",
|
|
98
|
+
"langflow.base.models": "lfx.base.models",
|
|
99
|
+
"langflow.base.models.google_generative_ai_constants": "lfx.base.models.google_generative_ai_constants",
|
|
100
|
+
"langflow.base.models.openai_constants": "lfx.base.models.openai_constants",
|
|
101
|
+
"langflow.base.models.anthropic_constants": "lfx.base.models.anthropic_constants",
|
|
102
|
+
"langflow.base.models.aiml_constants": "lfx.base.models.aiml_constants",
|
|
103
|
+
"langflow.base.models.aws_constants": "lfx.base.models.aws_constants",
|
|
104
|
+
"langflow.base.models.groq_constants": "lfx.base.models.groq_constants",
|
|
105
|
+
"langflow.base.models.novita_constants": "lfx.base.models.novita_constants",
|
|
106
|
+
"langflow.base.models.ollama_constants": "lfx.base.models.ollama_constants",
|
|
107
|
+
"langflow.base.models.sambanova_constants": "lfx.base.models.sambanova_constants",
|
|
108
|
+
"langflow.base.prompts": "lfx.base.prompts",
|
|
109
|
+
"langflow.base.prompts.api_utils": "lfx.base.prompts.api_utils",
|
|
110
|
+
"langflow.base.prompts.utils": "lfx.base.prompts.utils",
|
|
111
|
+
"langflow.base.textsplitters": "lfx.base.textsplitters",
|
|
112
|
+
"langflow.base.tools": "lfx.base.tools",
|
|
113
|
+
"langflow.base.vectorstores": "lfx.base.vectorstores",
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Create compatibility modules for each mapping
|
|
117
|
+
for langflow_name, lfx_name in module_mappings.items():
|
|
118
|
+
if langflow_name not in sys.modules:
|
|
119
|
+
# Check if the lfx module exists
|
|
120
|
+
try:
|
|
121
|
+
spec = importlib.util.find_spec(lfx_name)
|
|
122
|
+
if spec is not None:
|
|
123
|
+
# Create compatibility module
|
|
124
|
+
compat_module = LangflowCompatibilityModule(langflow_name, lfx_name)
|
|
125
|
+
sys.modules[langflow_name] = compat_module
|
|
126
|
+
|
|
127
|
+
# Set up the module hierarchy
|
|
128
|
+
parts = langflow_name.split(".")
|
|
129
|
+
if len(parts) > 1:
|
|
130
|
+
parent_name = ".".join(parts[:-1])
|
|
131
|
+
parent_module = sys.modules.get(parent_name)
|
|
132
|
+
if parent_module is not None:
|
|
133
|
+
setattr(parent_module, parts[-1], compat_module)
|
|
134
|
+
|
|
135
|
+
# Special handling for top-level modules
|
|
136
|
+
if langflow_name == "langflow.base":
|
|
137
|
+
current_module.base = compat_module
|
|
138
|
+
elif langflow_name == "langflow.inputs":
|
|
139
|
+
current_module.inputs = compat_module
|
|
140
|
+
elif langflow_name == "langflow.schema":
|
|
141
|
+
current_module.schema = compat_module
|
|
142
|
+
elif langflow_name == "langflow.template":
|
|
143
|
+
current_module.template = compat_module
|
|
144
|
+
elif langflow_name == "langflow.components":
|
|
145
|
+
current_module.components = compat_module
|
|
146
|
+
except (ImportError, ValueError):
|
|
147
|
+
# Skip modules that don't exist in lfx
|
|
148
|
+
continue
|
|
149
|
+
|
|
150
|
+
# Handle modules that exist only in langflow (like knowledge_bases)
|
|
151
|
+
# These need special handling because they're not in lfx yet
|
|
152
|
+
langflow_only_modules = {
|
|
153
|
+
"langflow.base.data.kb_utils": "langflow.base.data.kb_utils",
|
|
154
|
+
"langflow.base.knowledge_bases": "langflow.base.knowledge_bases",
|
|
155
|
+
"langflow.components.knowledge_bases": "langflow.components.knowledge_bases",
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
for langflow_name in langflow_only_modules:
|
|
159
|
+
if langflow_name not in sys.modules:
|
|
160
|
+
try:
|
|
161
|
+
# Try to find the actual physical module file
|
|
162
|
+
from pathlib import Path
|
|
163
|
+
|
|
164
|
+
base_dir = Path(__file__).parent
|
|
165
|
+
|
|
166
|
+
if langflow_name == "langflow.base.data.kb_utils":
|
|
167
|
+
kb_utils_file = base_dir / "base" / "data" / "kb_utils.py"
|
|
168
|
+
if kb_utils_file.exists():
|
|
169
|
+
spec = importlib.util.spec_from_file_location(langflow_name, kb_utils_file)
|
|
170
|
+
if spec is not None and spec.loader is not None:
|
|
171
|
+
module = importlib.util.module_from_spec(spec)
|
|
172
|
+
sys.modules[langflow_name] = module
|
|
173
|
+
spec.loader.exec_module(module)
|
|
174
|
+
|
|
175
|
+
# Also add to parent module
|
|
176
|
+
parent_module = sys.modules.get("langflow.base.data")
|
|
177
|
+
if parent_module is not None:
|
|
178
|
+
parent_module.kb_utils = module
|
|
179
|
+
|
|
180
|
+
elif langflow_name == "langflow.base.knowledge_bases":
|
|
181
|
+
kb_dir = base_dir / "base" / "knowledge_bases"
|
|
182
|
+
kb_init_file = kb_dir / "__init__.py"
|
|
183
|
+
if kb_init_file.exists():
|
|
184
|
+
spec = importlib.util.spec_from_file_location(langflow_name, kb_init_file)
|
|
185
|
+
if spec is not None and spec.loader is not None:
|
|
186
|
+
module = importlib.util.module_from_spec(spec)
|
|
187
|
+
sys.modules[langflow_name] = module
|
|
188
|
+
spec.loader.exec_module(module)
|
|
189
|
+
|
|
190
|
+
# Also add to parent module
|
|
191
|
+
parent_module = sys.modules.get("langflow.base")
|
|
192
|
+
if parent_module is not None:
|
|
193
|
+
parent_module.knowledge_bases = module
|
|
194
|
+
|
|
195
|
+
elif langflow_name == "langflow.components.knowledge_bases":
|
|
196
|
+
components_kb_dir = base_dir / "components" / "knowledge_bases"
|
|
197
|
+
components_kb_init_file = components_kb_dir / "__init__.py"
|
|
198
|
+
if components_kb_init_file.exists():
|
|
199
|
+
spec = importlib.util.spec_from_file_location(langflow_name, components_kb_init_file)
|
|
200
|
+
if spec is not None and spec.loader is not None:
|
|
201
|
+
module = importlib.util.module_from_spec(spec)
|
|
202
|
+
sys.modules[langflow_name] = module
|
|
203
|
+
spec.loader.exec_module(module)
|
|
204
|
+
|
|
205
|
+
# Also add to parent module
|
|
206
|
+
parent_module = sys.modules.get("langflow.components")
|
|
207
|
+
if parent_module is not None:
|
|
208
|
+
parent_module.knowledge_bases = module
|
|
209
|
+
except (ImportError, AttributeError):
|
|
210
|
+
# If direct file loading fails, skip silently
|
|
211
|
+
continue
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
# Set up all the compatibility modules
|
|
215
|
+
_setup_compatibility_modules()
|
langflow/__main__.py
CHANGED
|
@@ -18,6 +18,8 @@ from dotenv import load_dotenv
|
|
|
18
18
|
from fastapi import HTTPException
|
|
19
19
|
from httpx import HTTPError
|
|
20
20
|
from jose import JWTError
|
|
21
|
+
from lfx.log.logger import configure, logger
|
|
22
|
+
from lfx.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD
|
|
21
23
|
from multiprocess import cpu_count
|
|
22
24
|
from multiprocess.context import Process
|
|
23
25
|
from packaging import version as pkg_version
|
|
@@ -29,11 +31,9 @@ from sqlmodel import select
|
|
|
29
31
|
|
|
30
32
|
from langflow.cli.progress import create_langflow_progress
|
|
31
33
|
from langflow.initial_setup.setup import get_or_create_default_folder
|
|
32
|
-
from langflow.logging.logger import configure, logger
|
|
33
34
|
from langflow.main import setup_app
|
|
34
35
|
from langflow.services.auth.utils import check_key, get_current_user_by_jwt
|
|
35
36
|
from langflow.services.deps import get_db_service, get_settings_service, session_scope
|
|
36
|
-
from langflow.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD
|
|
37
37
|
from langflow.services.utils import initialize_services
|
|
38
38
|
from langflow.utils.version import fetch_latest_version, get_version_info
|
|
39
39
|
from langflow.utils.version import is_pre_release as langflow_is_pre_release
|
|
@@ -43,6 +43,20 @@ console = Console(legacy_windows=True, emoji=False) if platform.system() == "Win
|
|
|
43
43
|
|
|
44
44
|
app = typer.Typer(no_args_is_help=True)
|
|
45
45
|
|
|
46
|
+
# Add LFX commands as a sub-app
|
|
47
|
+
try:
|
|
48
|
+
from lfx.cli.commands import serve_command
|
|
49
|
+
from lfx.cli.run import run as lfx_run
|
|
50
|
+
|
|
51
|
+
lfx_app = typer.Typer(name="lfx", help="Langflow Executor commands")
|
|
52
|
+
lfx_app.command(name="serve", help="Serve a flow as an API", no_args_is_help=True)(serve_command)
|
|
53
|
+
lfx_app.command(name="run", help="Run a flow directly", no_args_is_help=True)(lfx_run)
|
|
54
|
+
|
|
55
|
+
app.add_typer(lfx_app, name="lfx")
|
|
56
|
+
except ImportError:
|
|
57
|
+
# LFX not available, skip adding the sub-app
|
|
58
|
+
pass
|
|
59
|
+
|
|
46
60
|
|
|
47
61
|
class ProcessManager:
|
|
48
62
|
"""Manages the lifecycle of the backend process."""
|
|
@@ -6,17 +6,16 @@ Create Date: 2023-12-13 18:55:52.587360
|
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from collections.abc import Sequence
|
|
10
10
|
|
|
11
11
|
import sqlalchemy as sa
|
|
12
12
|
from alembic import op
|
|
13
|
-
from sqlalchemy.engine.reflection import Inspector
|
|
14
13
|
|
|
15
14
|
# revision identifiers, used by Alembic.
|
|
16
15
|
revision: str = "006b3990db50"
|
|
17
|
-
down_revision:
|
|
18
|
-
branch_labels:
|
|
19
|
-
depends_on:
|
|
16
|
+
down_revision: str | None = "1ef9c4f3765d"
|
|
17
|
+
branch_labels: str | Sequence[str] | None = None
|
|
18
|
+
depends_on: str | Sequence[str] | None = None
|
|
20
19
|
|
|
21
20
|
|
|
22
21
|
def upgrade() -> None:
|
|
@@ -38,7 +37,6 @@ def upgrade() -> None:
|
|
|
38
37
|
batch_op.create_unique_constraint("uq_user_id", ["id"])
|
|
39
38
|
except Exception as e:
|
|
40
39
|
print(e)
|
|
41
|
-
pass
|
|
42
40
|
|
|
43
41
|
# ### end Alembic commands ###
|
|
44
42
|
|
|
@@ -62,5 +60,4 @@ def downgrade() -> None:
|
|
|
62
60
|
batch_op.drop_constraint("uq_apikey_id", type_="unique")
|
|
63
61
|
except Exception as e:
|
|
64
62
|
print(e)
|
|
65
|
-
pass
|
|
66
63
|
# ### end Alembic commands ###
|
|
@@ -6,18 +6,17 @@ Create Date: 2024-05-07 12:52:16.954691
|
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from collections.abc import Sequence
|
|
10
10
|
|
|
11
11
|
import sqlalchemy as sa
|
|
12
12
|
import sqlmodel
|
|
13
13
|
from alembic import op
|
|
14
|
-
from sqlalchemy.engine.reflection import Inspector
|
|
15
14
|
|
|
16
15
|
# revision identifiers, used by Alembic.
|
|
17
16
|
revision: str = "012fb73ac359"
|
|
18
|
-
down_revision:
|
|
19
|
-
branch_labels:
|
|
20
|
-
depends_on:
|
|
17
|
+
down_revision: str | None = "c153816fd85f"
|
|
18
|
+
branch_labels: str | Sequence[str] | None = None
|
|
19
|
+
depends_on: str | Sequence[str] | None = None
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
def upgrade() -> None:
|
|
@@ -5,21 +5,20 @@ Revises: d2d475a1f7c0
|
|
|
5
5
|
Create Date: 2024-10-04 17:30:12.924809
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
from collections.abc import Sequence
|
|
9
10
|
|
|
10
11
|
import sqlalchemy as sa
|
|
11
|
-
import sqlmodel
|
|
12
12
|
from alembic import op
|
|
13
|
-
from sqlalchemy.dialects import sqlite
|
|
14
|
-
from sqlalchemy.engine.reflection import Inspector
|
|
15
13
|
|
|
16
14
|
from langflow.utils import migration
|
|
17
15
|
|
|
18
16
|
# revision identifiers, used by Alembic.
|
|
19
|
-
revision: str =
|
|
20
|
-
down_revision:
|
|
21
|
-
branch_labels:
|
|
22
|
-
depends_on:
|
|
17
|
+
revision: str = "0ae3a2674f32"
|
|
18
|
+
down_revision: str | None = "d2d475a1f7c0"
|
|
19
|
+
branch_labels: str | Sequence[str] | None = None
|
|
20
|
+
depends_on: str | Sequence[str] | None = None
|
|
21
|
+
|
|
23
22
|
|
|
24
23
|
def upgrade() -> None:
|
|
25
24
|
conn = op.get_bind()
|
|
@@ -31,18 +30,14 @@ def upgrade() -> None:
|
|
|
31
30
|
columns = inspector.get_columns("vertex_build")
|
|
32
31
|
params_column = next((column for column in columns if column["name"] == "params"), None)
|
|
33
32
|
if params_column is not None and isinstance(params_column["type"], sa.VARCHAR):
|
|
34
|
-
batch_op.alter_column(
|
|
35
|
-
"params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True
|
|
36
|
-
)
|
|
33
|
+
batch_op.alter_column("params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True)
|
|
37
34
|
|
|
38
35
|
with op.batch_alter_table("message", schema=None) as batch_op:
|
|
39
36
|
if migration.column_exists(table_name="message", column_name="text", conn=conn):
|
|
40
37
|
columns = inspector.get_columns("message")
|
|
41
38
|
text_column = next((column for column in columns if column["name"] == "text"), None)
|
|
42
39
|
if text_column is not None and isinstance(text_column["type"], sa.VARCHAR):
|
|
43
|
-
batch_op.alter_column(
|
|
44
|
-
"text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True
|
|
45
|
-
)
|
|
40
|
+
batch_op.alter_column("text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True)
|
|
46
41
|
|
|
47
42
|
# ### end Alembic commands ###
|
|
48
43
|
|
|
@@ -56,16 +51,12 @@ def downgrade() -> None:
|
|
|
56
51
|
columns = inspector.get_columns("message")
|
|
57
52
|
text_column = next((column for column in columns if column["name"] == "text"), None)
|
|
58
53
|
if text_column is not None and isinstance(text_column["type"], sa.VARCHAR):
|
|
59
|
-
batch_op.alter_column(
|
|
60
|
-
"text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True
|
|
61
|
-
)
|
|
54
|
+
batch_op.alter_column("text", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True)
|
|
62
55
|
|
|
63
56
|
with op.batch_alter_table("vertex_build", schema=None) as batch_op:
|
|
64
57
|
if migration.column_exists(table_name="vertex_build", column_name="params", conn=conn):
|
|
65
58
|
columns = inspector.get_columns("vertex_build")
|
|
66
59
|
params_column = next((column for column in columns if column["name"] == "params"), None)
|
|
67
60
|
if params_column is not None and isinstance(params_column["type"], sa.VARCHAR):
|
|
68
|
-
batch_op.alter_column(
|
|
69
|
-
"params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True
|
|
70
|
-
)
|
|
61
|
+
batch_op.alter_column("params", existing_type=sa.VARCHAR(), type_=sa.Text(), existing_nullable=True)
|
|
71
62
|
# ### end Alembic commands ###
|
|
@@ -6,16 +6,13 @@ Create Date: 2024-01-17 10:32:56.686287
|
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
|
|
11
|
-
import sqlalchemy as sa
|
|
12
|
-
from alembic import op
|
|
9
|
+
from collections.abc import Sequence
|
|
13
10
|
|
|
14
11
|
# revision identifiers, used by Alembic.
|
|
15
12
|
revision: str = "0b8757876a7c"
|
|
16
|
-
down_revision:
|
|
17
|
-
branch_labels:
|
|
18
|
-
depends_on:
|
|
13
|
+
down_revision: str | None = "006b3990db50"
|
|
14
|
+
branch_labels: str | Sequence[str] | None = None
|
|
15
|
+
depends_on: str | Sequence[str] | None = None
|
|
19
16
|
|
|
20
17
|
|
|
21
18
|
def upgrade() -> None:
|
|
@@ -6,7 +6,7 @@ Create Date: 2024-07-26 11:41:31.274271
|
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from collections.abc import Sequence
|
|
10
10
|
|
|
11
11
|
import sqlalchemy as sa
|
|
12
12
|
import sqlmodel
|
|
@@ -16,9 +16,9 @@ from langflow.utils import migration
|
|
|
16
16
|
|
|
17
17
|
# revision identifiers, used by Alembic.
|
|
18
18
|
revision: str = "0d60fcbd4e8e"
|
|
19
|
-
down_revision:
|
|
20
|
-
branch_labels:
|
|
21
|
-
depends_on:
|
|
19
|
+
down_revision: str | None = "90be8e2ed91e"
|
|
20
|
+
branch_labels: str | Sequence[str] | None = None
|
|
21
|
+
depends_on: str | Sequence[str] | None = None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
def upgrade() -> None:
|
|
@@ -41,11 +41,9 @@ def upgrade() -> None:
|
|
|
41
41
|
),
|
|
42
42
|
sa.PrimaryKeyConstraint("build_id"),
|
|
43
43
|
)
|
|
44
|
-
pass
|
|
45
44
|
|
|
46
45
|
|
|
47
46
|
def downgrade() -> None:
|
|
48
47
|
conn = op.get_bind()
|
|
49
48
|
if migration.table_exists("vertex_build", conn):
|
|
50
49
|
op.drop_table("vertex_build")
|
|
51
|
-
pass
|
|
@@ -6,18 +6,17 @@ Create Date: 2024-03-25 09:40:02.743453
|
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from collections.abc import Sequence
|
|
10
10
|
|
|
11
11
|
import sqlalchemy as sa
|
|
12
12
|
import sqlmodel
|
|
13
13
|
from alembic import op
|
|
14
|
-
from sqlalchemy.engine.reflection import Inspector
|
|
15
14
|
|
|
16
15
|
# revision identifiers, used by Alembic.
|
|
17
16
|
revision: str = "1a110b568907"
|
|
18
|
-
down_revision:
|
|
19
|
-
branch_labels:
|
|
20
|
-
depends_on:
|
|
17
|
+
down_revision: str | None = "63b9c451fd30"
|
|
18
|
+
branch_labels: str | Sequence[str] | None = None
|
|
19
|
+
depends_on: str | Sequence[str] | None = None
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
def upgrade() -> None:
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"""remove fk constraint in message transaction and vertex build
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
Revision ID: 1b8b740a6fa3
|
|
5
4
|
Revises: f3b2d1f1002d
|
|
6
5
|
Create Date: 2025-04-10 10:17:32.493181
|
|
7
6
|
|
|
8
7
|
"""
|
|
9
|
-
from typing import Sequence, Union
|
|
10
8
|
|
|
11
|
-
from
|
|
9
|
+
from collections.abc import Sequence
|
|
10
|
+
|
|
12
11
|
import sqlalchemy as sa
|
|
13
12
|
import sqlmodel
|
|
13
|
+
from alembic import op
|
|
14
14
|
from sqlalchemy.engine.reflection import Inspector
|
|
15
|
-
from langflow.utils import migration
|
|
16
15
|
|
|
16
|
+
from langflow.utils import migration
|
|
17
17
|
|
|
18
18
|
# revision identifiers, used by Alembic.
|
|
19
|
-
revision: str =
|
|
20
|
-
down_revision:
|
|
21
|
-
branch_labels:
|
|
22
|
-
depends_on:
|
|
19
|
+
revision: str = "1b8b740a6fa3"
|
|
20
|
+
down_revision: str | None = "f3b2d1f1002d"
|
|
21
|
+
branch_labels: str | Sequence[str] | None = None
|
|
22
|
+
depends_on: str | Sequence[str] | None = None
|
|
23
23
|
|
|
24
24
|
NAMING_CONVENTION = {
|
|
25
25
|
"ix": "ix_%(column_0_label)s",
|
|
@@ -29,6 +29,7 @@ NAMING_CONVENTION = {
|
|
|
29
29
|
"pk": "pk_%(table_name)s",
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
|
|
32
33
|
def constraint_exists(constraint_name: str, conn) -> bool:
|
|
33
34
|
"""Check if a constraint with the given name already exists in the database.
|
|
34
35
|
|
|
@@ -46,12 +47,16 @@ def constraint_exists(constraint_name: str, conn) -> bool:
|
|
|
46
47
|
|
|
47
48
|
# Check each table for the constraint
|
|
48
49
|
for table in tables:
|
|
49
|
-
for constraint in
|
|
50
|
+
for constraint in (
|
|
51
|
+
inspector.get_pk_constraint(table).get("name"),
|
|
52
|
+
*[c.get("name") for c in inspector.get_foreign_keys(table)],
|
|
53
|
+
):
|
|
50
54
|
if constraint == constraint_name:
|
|
51
55
|
return True
|
|
52
56
|
|
|
53
57
|
return False
|
|
54
58
|
|
|
59
|
+
|
|
55
60
|
def upgrade() -> None:
|
|
56
61
|
conn = op.get_bind()
|
|
57
62
|
|
|
@@ -67,7 +72,7 @@ def upgrade() -> None:
|
|
|
67
72
|
# Check if PK constraint already exists
|
|
68
73
|
if constraint_exists(pk_name, conn):
|
|
69
74
|
# Use a different PK name if it already exists
|
|
70
|
-
pk_name =
|
|
75
|
+
pk_name = "pk_temp_vertex_build"
|
|
71
76
|
|
|
72
77
|
# Create temp table with same schema but no FK constraint
|
|
73
78
|
op.create_table(
|
|
@@ -85,7 +90,7 @@ def upgrade() -> None:
|
|
|
85
90
|
|
|
86
91
|
# Copy data - use a window function to ensure build_id uniqueness across SQLite, PostgreSQL and MySQL
|
|
87
92
|
# Filter out rows where the original 'id' (vertex id) is NULL, as the new table requires it.
|
|
88
|
-
op.execute(f
|
|
93
|
+
op.execute(f"""
|
|
89
94
|
INSERT INTO "{temp_table_name}" (timestamp, id, data, artifacts, params, build_id, flow_id, valid)
|
|
90
95
|
SELECT timestamp, id, data, artifacts, params, build_id, flow_id, valid
|
|
91
96
|
FROM (
|
|
@@ -95,7 +100,7 @@ def upgrade() -> None:
|
|
|
95
100
|
WHERE id IS NOT NULL -- Ensure vertex id is not NULL
|
|
96
101
|
) sub
|
|
97
102
|
WHERE rn = 1
|
|
98
|
-
|
|
103
|
+
""")
|
|
99
104
|
|
|
100
105
|
# Drop original table and rename temp table
|
|
101
106
|
op.drop_table("vertex_build")
|
|
@@ -110,7 +115,7 @@ def upgrade() -> None:
|
|
|
110
115
|
# Check if PK constraint already exists
|
|
111
116
|
if constraint_exists(pk_name, conn):
|
|
112
117
|
# Use a different PK name if it already exists
|
|
113
|
-
pk_name =
|
|
118
|
+
pk_name = "pk_temp_transaction"
|
|
114
119
|
|
|
115
120
|
# Create temp table with same schema but no FK constraint
|
|
116
121
|
op.create_table(
|
|
@@ -128,12 +133,12 @@ def upgrade() -> None:
|
|
|
128
133
|
)
|
|
129
134
|
|
|
130
135
|
# Copy data - explicitly list columns and filter out rows where id is NULL
|
|
131
|
-
op.execute(f
|
|
136
|
+
op.execute(f"""
|
|
132
137
|
INSERT INTO "{temp_table_name}" (timestamp, vertex_id, target_id, inputs, outputs, status, id, flow_id, error)
|
|
133
138
|
SELECT timestamp, vertex_id, target_id, inputs, outputs, status, id, flow_id, error
|
|
134
139
|
FROM "transaction"
|
|
135
140
|
WHERE id IS NOT NULL
|
|
136
|
-
|
|
141
|
+
""")
|
|
137
142
|
|
|
138
143
|
# Drop original table and rename temp table
|
|
139
144
|
op.drop_table("transaction")
|
|
@@ -148,7 +153,7 @@ def upgrade() -> None:
|
|
|
148
153
|
# Check if PK constraint already exists
|
|
149
154
|
if constraint_exists(pk_name, conn):
|
|
150
155
|
# Use a different PK name if it already exists
|
|
151
|
-
pk_name =
|
|
156
|
+
pk_name = "pk_temp_message"
|
|
152
157
|
|
|
153
158
|
# Create temp table with same schema but no FK constraint
|
|
154
159
|
op.create_table(
|
|
@@ -170,12 +175,12 @@ def upgrade() -> None:
|
|
|
170
175
|
)
|
|
171
176
|
|
|
172
177
|
# Copy data - explicitly list columns and filter out rows where id is NULL
|
|
173
|
-
op.execute(f
|
|
178
|
+
op.execute(f"""
|
|
174
179
|
INSERT INTO "{temp_table_name}" (timestamp, sender, sender_name, session_id, text, id, flow_id, files, error, edit, properties, category, content_blocks)
|
|
175
180
|
SELECT timestamp, sender, sender_name, session_id, text, id, flow_id, files, error, edit, properties, category, content_blocks
|
|
176
181
|
FROM "message"
|
|
177
182
|
WHERE id IS NOT NULL
|
|
178
|
-
|
|
183
|
+
""")
|
|
179
184
|
|
|
180
185
|
# Drop original table and rename temp table
|
|
181
186
|
op.drop_table("message")
|
|
@@ -196,7 +201,7 @@ def downgrade() -> None:
|
|
|
196
201
|
|
|
197
202
|
# Check if constraints already exist
|
|
198
203
|
if constraint_exists(pk_name, conn):
|
|
199
|
-
pk_name =
|
|
204
|
+
pk_name = "pk_temp_vertex_build"
|
|
200
205
|
|
|
201
206
|
if constraint_exists(fk_name, conn):
|
|
202
207
|
fk_name = f"fk_vertex_build_flow_id_flow_{revision[:8]}"
|
|
@@ -223,7 +228,7 @@ def downgrade() -> None:
|
|
|
223
228
|
# Copy data - use a window function to ensure build_id uniqueness.
|
|
224
229
|
# Filter out rows where build_id is NULL (PK constraint)
|
|
225
230
|
# No need to filter by 'id' here as the target column allows NULLs.
|
|
226
|
-
op.execute(f
|
|
231
|
+
op.execute(f"""
|
|
227
232
|
INSERT INTO "{temp_table_name}" (timestamp, id, data, artifacts, params, build_id, flow_id, valid)
|
|
228
233
|
SELECT timestamp, id, data, artifacts, params, build_id, flow_id, valid
|
|
229
234
|
FROM (
|
|
@@ -233,7 +238,7 @@ def downgrade() -> None:
|
|
|
233
238
|
WHERE build_id IS NOT NULL -- Ensure primary key is not NULL
|
|
234
239
|
) sub
|
|
235
240
|
WHERE rn = 1
|
|
236
|
-
|
|
241
|
+
""")
|
|
237
242
|
|
|
238
243
|
# Drop original table and rename temp table
|
|
239
244
|
op.drop_table("vertex_build")
|
|
@@ -248,7 +253,7 @@ def downgrade() -> None:
|
|
|
248
253
|
|
|
249
254
|
# Check if constraints already exist
|
|
250
255
|
if constraint_exists(pk_name, conn):
|
|
251
|
-
pk_name =
|
|
256
|
+
pk_name = "pk_temp_transaction"
|
|
252
257
|
|
|
253
258
|
if constraint_exists(fk_name, conn):
|
|
254
259
|
fk_name = f"fk_transaction_flow_id_flow_{revision[:8]}"
|
|
@@ -274,12 +279,12 @@ def downgrade() -> None:
|
|
|
274
279
|
)
|
|
275
280
|
|
|
276
281
|
# Copy data - explicitly list columns and filter out rows where id is NULL
|
|
277
|
-
op.execute(f
|
|
282
|
+
op.execute(f"""
|
|
278
283
|
INSERT INTO "{temp_table_name}" (timestamp, vertex_id, target_id, inputs, outputs, status, id, flow_id, error)
|
|
279
284
|
SELECT timestamp, vertex_id, target_id, inputs, outputs, status, id, flow_id, error
|
|
280
285
|
FROM "transaction"
|
|
281
286
|
WHERE id IS NOT NULL
|
|
282
|
-
|
|
287
|
+
""")
|
|
283
288
|
|
|
284
289
|
# Drop original table and rename temp table
|
|
285
290
|
op.drop_table("transaction")
|
|
@@ -294,7 +299,7 @@ def downgrade() -> None:
|
|
|
294
299
|
|
|
295
300
|
# Check if constraints already exist
|
|
296
301
|
if constraint_exists(pk_name, conn):
|
|
297
|
-
pk_name =
|
|
302
|
+
pk_name = "pk_temp_message"
|
|
298
303
|
|
|
299
304
|
if constraint_exists(fk_name, conn):
|
|
300
305
|
fk_name = f"fk_message_flow_id_flow_{revision[:8]}"
|
|
@@ -324,12 +329,12 @@ def downgrade() -> None:
|
|
|
324
329
|
)
|
|
325
330
|
|
|
326
331
|
# Copy data - explicitly list columns and filter out rows where id is NULL
|
|
327
|
-
op.execute(f
|
|
332
|
+
op.execute(f"""
|
|
328
333
|
INSERT INTO "{temp_table_name}" (timestamp, sender, sender_name, session_id, text, id, flow_id, files, error, edit, properties, category, content_blocks)
|
|
329
334
|
SELECT timestamp, sender, sender_name, session_id, text, id, flow_id, files, error, edit, properties, category, content_blocks
|
|
330
335
|
FROM "message"
|
|
331
336
|
WHERE id IS NOT NULL
|
|
332
|
-
|
|
337
|
+
""")
|
|
333
338
|
|
|
334
339
|
# Drop original table and rename temp table
|
|
335
340
|
op.drop_table("message")
|