Files
langflow/scripts/ci/update_starter_projects.py
Edwin Jose fbad5fad5c fix: Update Ruff issues in lfx and backend (#10006)
* Update test_exception_telemetry.py

* Refactor unused variables in subprocess and test code

Replaced unused variables 'stderr' and 'func' with underscores in subprocess communication and test telemetry code to clarify intent and avoid linting warnings.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Use re.escape for exception match in tests

Updated test cases to use re.escape for matching exception messages in pytest.raises, improving reliability when matching error strings containing special characters. Also replaced unused tuple variables with underscores for clarity.

* Fix various ruff errors in lfx

* Reorder pydantic imports in unit tests

Moved pydantic imports below other imports for consistency and improved readability across multiple unit test files.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update test_directory_component.py

* [autofix.ci] apply automated fixes

* Update test_validate.py

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
2025-09-26 22:35:00 +00:00

44 lines
1.7 KiB
Python

"""Script to update Langflow starter projects with the latest component versions."""
import asyncio
import os
import langflow.main # noqa: F401
from langflow.initial_setup.setup import (
get_project_data,
load_starter_projects,
update_edges_with_latest_component_versions,
update_project_file,
update_projects_components_with_latest_component_versions,
)
from langflow.services.utils import initialize_services
from lfx.interface.components import get_and_cache_all_types_dict
from lfx.services.deps import get_settings_service
async def main():
"""Updates the starter projects with the latest component versions.
Copies the code from langflow/initial_setup/setup.py. Doesn't use the
create_or_update_starter_projects function directly to avoid sql interactions.
"""
await initialize_services(fix_migration=False)
all_types_dict = await get_and_cache_all_types_dict(get_settings_service())
starter_projects = await load_starter_projects()
for project_path, project in starter_projects:
_, _, _, _, project_data, _, _, _, _ = get_project_data(project)
do_update_starter_projects = os.environ.get("LANGFLOW_UPDATE_STARTER_PROJECTS", "true").lower() == "true"
if do_update_starter_projects:
updated_project_data = update_projects_components_with_latest_component_versions(
project_data.copy(), all_types_dict
)
updated_project_data = update_edges_with_latest_component_versions(updated_project_data)
if updated_project_data != project_data:
project_data = updated_project_data
await update_project_file(project_path, project, updated_project_data)
if __name__ == "__main__":
asyncio.run(main())