diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a258949e..908c5fc51 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,11 +45,3 @@ jobs: POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }} run: | poetry publish - - - name: Trigger build and push on langchain-serve - uses: peter-evans/repository-dispatch@v2 - with: - token: ${{ secrets.SERVE_GITHUB_TOKEN }} - repository: jina-ai/langchain-serve - event-type: langflow-push - client-payload: '{"push_token": "${{ secrets.LCSERVE_PUSH_TOKEN }}", "branch": "main"}' diff --git a/.github/workflows/test-lcserve-push.yml b/.github/workflows/test-lcserve-push.yml deleted file mode 100644 index f207c0a91..000000000 --- a/.github/workflows/test-lcserve-push.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Trigger build and push on langchain-serve - -on: - workflow_dispatch: - - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Trigger build and push on langchain-serve - uses: peter-evans/repository-dispatch@v2 - with: - token: ${{ secrets.SERVE_GITHUB_TOKEN }} - repository: jina-ai/langchain-serve - event-type: langflow-push - client-payload: '{"push_token": "${{ secrets.LCSERVE_PUSH_TOKEN }}", "branch": "dev"}' diff --git a/Makefile b/Makefile index 65d4253f0..32198730f 100644 --- a/Makefile +++ b/Makefile @@ -87,17 +87,6 @@ build: poetry build --format sdist rm -rf src/backend/langflow/frontend -lcserve_push: - make build_frontend - @version=$$(poetry version --short); \ - lc-serve push --app langflow.lcserve:app --app-dir . \ - --image-name langflow --image-tag $${version} --verbose --public - -lcserve_deploy: - @:$(if $(uses),,$(error `uses` is not set. Please run `make uses=... lcserve_deploy`)) - lc-serve deploy jcloud --app langflow.lcserve:app --app-dir . \ - --uses $(uses) --config src/backend/langflow/jcloud.yml --verbose - dev: make install_frontend ifeq ($(build),1) diff --git a/README.md b/README.md index 0f0113bac..538d53bef 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,6 @@ - [Environment Variables](#environment-variables) - [Deployment](#deployment) - [Deploy Langflow on Google Cloud Platform](#deploy-langflow-on-google-cloud-platform) - - [Deploy Langflow on Jina AI Cloud](#deploy-langflow-on-jina-ai-cloud) - - [API Usage](#api-usage) - [Deploy on Railway](#deploy-on-railway) - [Deploy on Render](#deploy-on-render) - [🎨 Creating Flows](#-creating-flows) @@ -110,7 +108,6 @@ Each option is detailed below: - `--components-path`: Specifies the path to the directory containing custom components. Can be set using the `LANGFLOW_COMPONENTS_PATH` environment variable. The default is `langflow/components`. - `--log-file`: Specifies the path to the log file. Can be set using the `LANGFLOW_LOG_FILE` environment variable. The default is `logs/langflow.log`. - `--cache`: Selects the type of cache to use. Options are `InMemoryCache` and `SQLiteCache`. Can be set using the `LANGFLOW_LANGCHAIN_CACHE` environment variable. The default is `SQLiteCache`. -- `--jcloud/--no-jcloud`: Toggles the option to deploy on Jina AI Cloud. The default is `no-jcloud`. - `--dev/--no-dev`: Toggles the development mode. The default is `no-dev`. - `--path`: Specifies the path to the frontend directory containing build files. This option is for development purposes only. Can be set using the `LANGFLOW_FRONTEND_PATH` environment variable. - `--open-browser/--no-open-browser`: Toggles the option to open the browser after starting the server. Can be set using the `LANGFLOW_OPEN_BROWSER` environment variable. The default is `open-browser`. @@ -134,114 +131,6 @@ Alternatively, click the **"Open in Cloud Shell"** button below to launch Google [![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/logspace-ai/langflow&working_dir=scripts&shellonly=true&tutorial=walkthroughtutorial_spot.md) -## Deploy Langflow on [Jina AI Cloud](https://github.com/jina-ai/langchain-serve) - -Langflow integrates with langchain-serve to provide a one-command deployment to Jina AI Cloud. - -Start by installing `langchain-serve` with - -```bash -pip install langflow[deploy] -# or -pip install -U langchain-serve -``` - -Then, run: - -```bash -langflow --jcloud -``` - -```text -🎉 Langflow server successfully deployed on Jina AI Cloud 🎉 -🔗 Click on the link to open the server (please allow ~1-2 minutes for the server to startup): https://.wolf.jina.ai/ -📖 Read more about managing the server: https://github.com/jina-ai/langchain-serve -``` - -
- Show complete (example) output - -```text - 🚀 Deploying Langflow server on Jina AI Cloud - ╭───────────────────────── 🎉 Flow is available! ──────────────────────────╮ - │ │ - │ ID langflow-e3dd8820ec │ - │ Gateway (Websocket) wss://langflow-e3dd8820ec.wolf.jina.ai │ - │ Dashboard https://dashboard.wolf.jina.ai/flow/e3dd8820ec │ - │ │ - ╰──────────────────────────────────────────────────────────────────────────╯ - ╭──────────────┬──────────────────────────────────────────────────────────────────────────────╮ - │ App ID │ langflow-e3dd8820ec │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Phase │ Serving │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Endpoint │ wss://langflow-e3dd8820ec.wolf.jina.ai │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ App logs │ dashboards.wolf.jina.ai │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Swagger UI │ https://langflow-e3dd8820ec.wolf.jina.ai/docs │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ OpenAPI JSON │ https://langflow-e3dd8820ec.wolf.jina.ai/openapi.json │ - ╰──────────────┴──────────────────────────────────────────────────────────────────────────────╯ - - 🎉 Langflow server successfully deployed on Jina AI Cloud 🎉 - 🔗 Click on the link to open the server (please allow ~1-2 minutes for the server to startup): https://langflow-e3dd8820ec.wolf.jina.ai/ - 📖 Read more about managing the server: https://github.com/jina-ai/langchain-serve -``` - -
- -#### API Usage - -You can use Langflow directly on your browser, or use the API endpoints on Jina AI Cloud to interact with the server. - -
- Show API usage (with python) - -```python -import requests - -BASE_API_URL = "https://langflow-e3dd8820ec.wolf.jina.ai/api/v1/predict" -FLOW_ID = "864c4f98-2e59-468b-8e13-79cd8da07468" -# You can tweak the flow by adding a tweaks dictionary -# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}} -TWEAKS = { -"ChatOpenAI-g4jEr": {}, -"ConversationChain-UidfJ": {} -} - -def run_flow(message: str, flow_id: str, tweaks: dict = None) -> dict: - """ - Run a flow with a given message and optional tweaks. - - :param message: The message to send to the flow - :param flow_id: The ID of the flow to run - :param tweaks: Optional tweaks to customize the flow - :return: The JSON response from the flow - """ - api_url = f"{BASE_API_URL}/{flow_id}" - - payload = {"message": message} - - if tweaks: - payload["tweaks"] = tweaks - - response = requests.post(api_url, json=payload) - return response.json() - -# Setup any tweaks you want to apply to the flow -print(run_flow("Your message", flow_id=FLOW_ID, tweaks=TWEAKS)) -``` - -```json -{ - "result": "Great choice! Bangalore in the 1920s was a vibrant city with a rich cultural and political scene. Here are some suggestions for things to see and do:\n\n1. Visit the Bangalore Palace - built in 1887, this stunning palace is a perfect example of Tudor-style architecture. It was home to the Maharaja of Mysore and is now open to the public.\n\n2. Attend a performance at the Ravindra Kalakshetra - this cultural center was built in the 1920s and is still a popular venue for music and dance performances.\n\n3. Explore the neighborhoods of Basavanagudi and Malleswaram - both of these areas have retained much of their old-world charm and are great places to walk around and soak up the atmosphere.\n\n4. Check out the Bangalore Club - founded in 1868, this exclusive social club was a favorite haunt of the British expat community in the 1920s.\n\n5. Attend a meeting of the Indian National Congress - founded in 1885, the INC was a major force in the Indian independence movement and held many meetings and rallies in Bangalore in the 1920s.\n\nHope you enjoy your trip to 1920s Bangalore!" -} -``` - -
- -> Read more about resource customization, cost, and management of Langflow apps on Jina AI Cloud in the **[langchain-serve](https://github.com/jina-ai/langchain-serve)** repository. ## Deploy on Railway diff --git a/docs/docs/deployment/jina-deployment.md b/docs/docs/deployment/jina-deployment.md index bf9df051d..e69de29bb 100644 --- a/docs/docs/deployment/jina-deployment.md +++ b/docs/docs/deployment/jina-deployment.md @@ -1,101 +0,0 @@ -# Deploy on Jina AI Cloud - -Langflow integrates with langchain-serve to provide a one-command deployment to [Jina AI Cloud](https://github.com/jina-ai/langchain-serve). - -Start by installing `langchain-serve` with - -```bash -pip install -U langchain-serve -``` - -Then, run: - -```bash -langflow --jcloud -``` - -```text -🎉 Langflow server successfully deployed on Jina AI Cloud 🎉 -🔗 Click on the link to open the server (please allow ~1-2 minutes for the server to startup): https://.wolf.jina.ai/ -📖 Read more about managing the server: https://github.com/jina-ai/langchain-serve -``` - -**Complete (example) output:** - -```text - 🚀 Deploying Langflow server on Jina AI Cloud - ╭───────────────────────── 🎉 Flow is available! ──────────────────────────╮ - │ │ - │ ID langflow-e3dd8820ec │ - │ Gateway (Websocket) wss://langflow-e3dd8820ec.wolf.jina.ai │ - │ Dashboard https://dashboard.wolf.jina.ai/flow/e3dd8820ec │ - │ │ - ╰──────────────────────────────────────────────────────────────────────────╯ - ╭──────────────┬──────────────────────────────────────────────────────────────────────────────╮ - │ App ID │ langflow-e3dd8820ec │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Phase │ Serving │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Endpoint │ wss://langflow-e3dd8820ec.wolf.jina.ai │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ App logs │ dashboards.wolf.jina.ai │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ Swagger UI │ https://langflow-e3dd8820ec.wolf.jina.ai/docs │ - ├──────────────┼──────────────────────────────────────────────────────────────────────────────┤ - │ OpenAPI JSON │ https://langflow-e3dd8820ec.wolf.jina.ai/openapi.json │ - ╰──────────────┴──────────────────────────────────────────────────────────────────────────────╯ - - 🎉 Langflow server successfully deployed on Jina AI Cloud 🎉 - 🔗 Click on the link to open the server (please allow ~1-2 minutes for the server to startup): https://langflow-e3dd8820ec.wolf.jina.ai/ - 📖 Read more about managing the server: https://github.com/jina-ai/langchain-serve - ``` -## API Usage (with python) - -You can use Langflow directly on your browser or the API endpoints on Jina AI Cloud to interact with the server. - -```python -import requests - -BASE_API_URL = "https://langflow-e3dd8820ec.wolf.jina.ai/api/v1/predict" -FLOW_ID = "864c4f98-2e59-468b-8e13-79cd8da07468" -# You can tweak the flow by adding a tweaks dictionary -# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}} -TWEAKS = { -"ChatOpenAI-g4jEr": {}, -"ConversationChain-UidfJ": {} -} - -def run_flow(message: str, flow_id: str, tweaks: dict = None) -> dict: - """ - Run a flow with a given message and optional tweaks. - - :param message: The message to send to the flow - :param flow_id: The ID of the flow to run - :param tweaks: Optional tweaks to customize the flow - :return: The JSON response from the flow - """ - api_url = f"{BASE_API_URL}/{flow_id}" - - payload = {"message": message} - - if tweaks: - payload["tweaks"] = tweaks - - response = requests.post(api_url, json=payload) - return response.json() - -# Setup any tweaks you want to apply to the flow -print(run_flow("Your message", flow_id=FLOW_ID, tweaks=TWEAKS)) - ``` - - ```json -{ - "result": "Great choice! Bangalore in the 1920s was a vibrant city with a rich cultural and political scene. Here are some suggestions for things to see and do:\n\n1. Visit the Bangalore Palace - built in 1887, this stunning palace is a perfect example of Tudor-style architecture. It was home to the Maharaja of Mysore and is now open to the public.\n\n2. Attend a performance at the Ravindra Kalakshetra - this cultural center was built in the 1920s and is still a popular venue for music and dance performances.\n\n3. Explore the neighborhoods of Basavanagudi and Malleswaram - both of these areas have retained much of their old-world charm and are great places to walk around and soak up the atmosphere.\n\n4. Check out the Bangalore Club - founded in 1868, this exclusive social club was a favorite haunt of the British expat community in the 1920s.\n\n5. Attend a meeting of the Indian National Congress - founded in 1885, the INC was a major force in the Indian independence movement and held many meetings and rallies in Bangalore in the 1920s.\n\nHope you enjoy your trip to 1920s Bangalore!" -} - ``` - -:::info - -Read more about resource customization, cost, and management of Langflow apps on Jina AI Cloud in the **[langchain-serve](https://github.com/jina-ai/langchain-serve)** repository. - -::: \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index 116e54616..2c28775bf 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -89,7 +89,7 @@ module.exports = { type: "category", label: "Deployment", collapsed: false, - items: ["deployment/gcp-deployment", "deployment/jina-deployment"], + items: ["deployment/gcp-deployment"], }, { type: "category", diff --git a/poetry.lock b/poetry.lock index 4a2bf4fb2..b08b2c2aa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3489,31 +3489,6 @@ files = [ [package.dependencies] langchain = ">=0.0.239" -[[package]] -name = "langchain-serve" -version = "0.0.61" -description = "Langchain Serve - serve your langchain apps on Jina AI Cloud." -optional = true -python-versions = "*" -files = [ - {file = "langchain-serve-0.0.61.tar.gz", hash = "sha256:f13d8b84f46b3789e7813deba798c04fa1d0a155bf5e1bf8b9addb7d6c01614c"}, -] - -[package.dependencies] -click = "*" -jcloud = ">=0.2.16" -jina = "3.15.2" -jina-hubble-sdk = "*" -langchain = "*" -nest-asyncio = "*" -requests = "*" -slack_bolt = "*" -textual = "*" -toml = "*" - -[package.extras] -test = ["psutil", "pytest", "pytest-asyncio"] - [[package]] name = "langfuse" version = "1.0.25" @@ -3549,26 +3524,6 @@ files = [ pydantic = ">=1,<3" requests = ">=2,<3" -[[package]] -name = "linkify-it-py" -version = "2.0.2" -description = "Links recognition library with FULL unicode support." -optional = true -python-versions = ">=3.7" -files = [ - {file = "linkify-it-py-2.0.2.tar.gz", hash = "sha256:19f3060727842c254c808e99d465c80c49d2c7306788140987a1a7a29b0d6ad2"}, - {file = "linkify_it_py-2.0.2-py3-none-any.whl", hash = "sha256:a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541"}, -] - -[package.dependencies] -uc-micro-py = "*" - -[package.extras] -benchmark = ["pytest", "pytest-benchmark"] -dev = ["black", "flake8", "isort", "pre-commit", "pyproject-flake8"] -doc = ["myst-parser", "sphinx", "sphinx-book-theme"] -test = ["coverage", "pytest", "pytest-cov"] - [[package]] name = "llama-cpp-python" version = "0.1.85" @@ -3808,8 +3763,6 @@ files = [ ] [package.dependencies] -linkify-it-py = {version = ">=1,<3", optional = true, markers = "extra == \"linkify\""} -mdit-py-plugins = {version = "*", optional = true, markers = "extra == \"plugins\""} mdurl = ">=0.1,<1.0" [package.extras] @@ -3915,25 +3868,6 @@ files = [ [package.dependencies] traitlets = "*" -[[package]] -name = "mdit-py-plugins" -version = "0.4.0" -description = "Collection of plugins for markdown-it-py" -optional = true -python-versions = ">=3.8" -files = [ - {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, - {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, -] - -[package.dependencies] -markdown-it-py = ">=1.0.0,<4.0.0" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["myst-parser", "sphinx-book-theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - [[package]] name = "mdurl" version = "0.1.2" @@ -6817,42 +6751,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "slack-bolt" -version = "1.18.0" -description = "The Bolt Framework for Python" -optional = true -python-versions = ">=3.6" -files = [ - {file = "slack_bolt-1.18.0-py2.py3-none-any.whl", hash = "sha256:63089a401ae3900c37698890249acd008a4651d06e86194edc7b72a00819bbac"}, - {file = "slack_bolt-1.18.0.tar.gz", hash = "sha256:43b121acf78440303ce5129e53be36bdfe5d926a193daef7daf2860688e65dd3"}, -] - -[package.dependencies] -slack-sdk = ">=3.21.2,<4" - -[package.extras] -adapter = ["CherryPy (>=18,<19)", "Django (>=3,<5)", "Flask (>=1,<3)", "Werkzeug (>=2,<3)", "boto3 (<=2)", "bottle (>=0.12,<1)", "chalice (>=1.28,<2)", "falcon (>=2,<4)", "fastapi (>=0.70.0,<1)", "gunicorn (>=20,<21)", "pyramid (>=1,<3)", "sanic (>=22,<23)", "starlette (>=0.14,<1)", "tornado (>=6,<7)", "uvicorn (<1)", "websocket-client (>=1.2.3,<2)"] -adapter-testing = ["Flask (>=1,<2)", "Werkzeug (>=1,<2)", "boddle (>=0.2,<0.3)", "docker (>=5,<6)", "moto (>=3,<4)", "requests (>=2,<3)", "sanic-testing (>=0.7)"] -async = ["aiohttp (>=3,<4)", "websockets (>=10,<11)"] -testing = ["Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (>=1,<2)", "aiohttp (>=3,<4)", "black (==22.8.0)", "click (<=8.0.4)", "itsdangerous (==2.0.1)", "pytest (>=6.2.5,<7)", "pytest-asyncio (>=0.18.2,<1)", "pytest-cov (>=3,<4)"] -testing-without-asyncio = ["Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (>=1,<2)", "black (==22.8.0)", "click (<=8.0.4)", "itsdangerous (==2.0.1)", "pytest (>=6.2.5,<7)", "pytest-cov (>=3,<4)"] - -[[package]] -name = "slack-sdk" -version = "3.22.0" -description = "The Slack API Platform SDK for Python" -optional = true -python-versions = ">=3.6.0" -files = [ - {file = "slack_sdk-3.22.0-py2.py3-none-any.whl", hash = "sha256:f102a4902115dff3b97c3e8883ad4e22d54732221886fc5ef29bfc290f063b4a"}, - {file = "slack_sdk-3.22.0.tar.gz", hash = "sha256:6eacce0fa4f8cfb4d84eac0d7d7e1b1926040a2df654ae86b94179bdf2bc4d8c"}, -] - -[package.extras] -optional = ["SQLAlchemy (>=1.4,<3)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)"] -testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] - [[package]] name = "smmap" version = "5.0.1" @@ -7149,25 +7047,6 @@ files = [ [package.extras] tests = ["pytest", "pytest-cov"] -[[package]] -name = "textual" -version = "0.38.1" -description = "Modern Text User Interface framework" -optional = true -python-versions = ">=3.7,<4.0" -files = [ - {file = "textual-0.38.1-py3-none-any.whl", hash = "sha256:8d38cbad6ac0b1320e52c7516e96b817e448d7c58d991269d3cf300108bbd191"}, - {file = "textual-0.38.1.tar.gz", hash = "sha256:504c934c3281217a29e7a95d498aacb7fbc629f6430895f7ac51ea7ba66e5d99"}, -] - -[package.dependencies] -importlib-metadata = ">=4.11.3" -markdown-it-py = {version = ">=2.1.0", extras = ["linkify", "plugins"]} -rich = ">=13.3.3" -tree-sitter = ">=0.20.1,<0.21.0" -tree_sitter_languages = {version = ">=1.7.0", markers = "python_version >= \"3.8\" and python_version < \"4.0\""} -typing-extensions = ">=4.4.0,<5.0.0" - [[package]] name = "threadpoolctl" version = "3.2.0" @@ -7339,17 +7218,6 @@ dev = ["tokenizers[testing]"] docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"] testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = true -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - [[package]] name = "tomli" version = "2.0.1" @@ -7566,132 +7434,6 @@ torch-speech = ["librosa", "phonemizer", "pyctcdecode (>=0.3.0)", "torchaudio"] torchhub = ["filelock", "huggingface-hub (>=0.1.0,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.11.1,!=0.11.3)", "torch (>=1.0)", "tqdm (>=4.27)"] vision = ["Pillow"] -[[package]] -name = "tree-sitter" -version = "0.20.2" -description = "Python bindings for the Tree-Sitter parsing library" -optional = true -python-versions = ">=3.3" -files = [ - {file = "tree_sitter-0.20.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1a151ccf9233b0b84850422654247f68a4d78f548425c76520402ea6fb6cdb24"}, - {file = "tree_sitter-0.20.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52ca2738c3c4c660c83054ac3e44a49cbecb9f89dc26bb8e154d6ca288aa06b0"}, - {file = "tree_sitter-0.20.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8d51478ea078da7cc6f626e9e36f131bbc5fac036cf38ea4b5b81632cbac37d"}, - {file = "tree_sitter-0.20.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0b2b59e1633efbf19cd2ed1ceb8d51b2c44a278153b1113998c70bc1570b750"}, - {file = "tree_sitter-0.20.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7f691c57d2a65d6e53e2f3574153c9cd0c157ff938b8d6f252edd5e619811403"}, - {file = "tree_sitter-0.20.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba72a363387eebaff9a0b788f864fe47da425136cbd4cac6cd125051f043c296"}, - {file = "tree_sitter-0.20.2-cp310-cp310-win32.whl", hash = "sha256:55e33eb206446d5046d3b5fe36ab300840f5a8a844246adb0ccc68c55c30b722"}, - {file = "tree_sitter-0.20.2-cp310-cp310-win_amd64.whl", hash = "sha256:24ce9d14daba0a71a778417d9d61dd4038ca96981ddec19e1e8990881469321c"}, - {file = "tree_sitter-0.20.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:942dbfb8bc380f09b0e323d3884de07d19022930516f33b7503a6eb5f6e18979"}, - {file = "tree_sitter-0.20.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ee5651c11924d426f8d6858a40fd5090ae31574f81ef180bef2055282f43bf62"}, - {file = "tree_sitter-0.20.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fb6982b480031628dad7f229c4c8d90b17d4c281ba97848d3b100666d7fa45f"}, - {file = "tree_sitter-0.20.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:067609c6c7cb6e5a6c4be50076a380fe52b6e8f0641ee9d0da33b24a5b972e82"}, - {file = "tree_sitter-0.20.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:849d7e6b66fe7ded08a633943b30e0ed807eee76104288e6c6841433f4a9651b"}, - {file = "tree_sitter-0.20.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e85689573797e49f86e2d7cf48b9dd23bc044c477df074a78546e666d6990a29"}, - {file = "tree_sitter-0.20.2-cp311-cp311-win32.whl", hash = "sha256:098906148e44ea391a91b019d584dd8d0ea1437af62a9744e280e93163fd35ca"}, - {file = "tree_sitter-0.20.2-cp311-cp311-win_amd64.whl", hash = "sha256:2753a87094b72fe7f02276b3948155618f53aa14e1ca20588f0eeed510f68512"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5de192cb9e7b1c882d45418decb7899f1547f7056df756bcae186bbf4966d96e"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3a77e663293a73a97edbf2a2e05001de08933eb5d311a16bdc25b9b2fac54f3"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:415da4a70c56a003758537517fe9e60b8b0c5f70becde54cc8b8f3ba810adc70"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:707fb4d7a6123b8f9f2b005d61194077c3168c0372556e7418802280eddd4892"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:75fcbfb0a61ad64e7f787eb3f8fbf29b8e2b858dc011897ad039d838a06cee02"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-win32.whl", hash = "sha256:622926530895d939fa6e1e2487e71a311c71d3b09f4c4f19301695ea866304a4"}, - {file = "tree_sitter-0.20.2-cp36-cp36m-win_amd64.whl", hash = "sha256:5c0712f031271d9bc462f1db7623d23703ed9fbcbaa6dc19ba535f58d6110774"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2dfdf680ecf5619447243c4c20e4040a7b5e7afca4e1569f03c814e86bfda248"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79650ee23a15559b69542c71ed9eb3297dce21932a7c5c148be384dd0f2cd49d"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63059746b4b2f2f87dd19c208141c69452694aae32459b7a4ebca8539d13bf4"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9398d1e214d4915032cf68a678de7eb803f64d25ef04724d70b88db7bb7746e9"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b506fb2e2bd7a5a1603c644bbb90401fe488f86bbca39706addaa8d2bfc80815"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-win32.whl", hash = "sha256:405e83804ba60ca1c3dbd258adbe0d7b0f1bdce948e5eec5587a2ebedcf930ba"}, - {file = "tree_sitter-0.20.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a1e66d211c04144484e223922ac094a2367476e6f57000f986c5560dc5a83c6e"}, - {file = "tree_sitter-0.20.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f8adc325c74c042204ed47d095e0ec86f83de3c7ec4979645f86b58514f60297"}, - {file = "tree_sitter-0.20.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb49c861e1d111e0df119ecbfaa409e6413b8d91e8f56bcdb15f07fbc35594e"}, - {file = "tree_sitter-0.20.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e17ee83409b01fdd09021997b0c747be2f773bb2bb140ba6fb48b7e12fdd039a"}, - {file = "tree_sitter-0.20.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ab841647a0d1bc1266c8978279f8e4f7b9520b9a7336d532e5dfc8910214d"}, - {file = "tree_sitter-0.20.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:222350189675d9814966a5c88c6c1378a2ee2f3041c439a6f1d1ff2006f403aa"}, - {file = "tree_sitter-0.20.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:31ea52f0deee70f2cb00aff01e40aae325a34ebe1661de274c9107322fb95f54"}, - {file = "tree_sitter-0.20.2-cp38-cp38-win32.whl", hash = "sha256:cceaf7287137cbca707006624a4a8d4b5ccbfec025793fde84d90524c2bb0946"}, - {file = "tree_sitter-0.20.2-cp38-cp38-win_amd64.whl", hash = "sha256:25b9669911f21ec2b3727bb2f4dfeff6ddb6f81898c3e968d378a660e0d7f90e"}, - {file = "tree_sitter-0.20.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ce30a17f46a6b39a04a599dea88c127a19e3e1f43a2ad0ced71b5c032d585077"}, - {file = "tree_sitter-0.20.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e9576e8b2e663639527e01ab251b87f0bd370bfdd40515588689ebc424aec786"}, - {file = "tree_sitter-0.20.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d03731a498f624ce3536c821ef23b03d1ad569b3845b326a5b7149ef189d732c"}, - {file = "tree_sitter-0.20.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef0116ecb163573ebaa0fc04cc99c90bd94c0be5cc4d0a1ebeb102de9cc9a054"}, - {file = "tree_sitter-0.20.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0943b00d3700f253c3ee6a53a71b9a6ca46defd9c0a33edb07a9388e70dc3a9e"}, - {file = "tree_sitter-0.20.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cb566b6f0b5457148cb8310a1ca3d764edf28e47fcccfe0b167861ecaa50c12"}, - {file = "tree_sitter-0.20.2-cp39-cp39-win32.whl", hash = "sha256:4544204a24c2b4d25d1731b0df83f7c819ce87c4f2538a19724b8753815ef388"}, - {file = "tree_sitter-0.20.2-cp39-cp39-win_amd64.whl", hash = "sha256:9517b204e471d6aa59ee2232f6220f315ed5336079034d5c861a24660d6511d6"}, - {file = "tree_sitter-0.20.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:84343678f58cb354d22ed14b627056ffb33c540cf16c35a83db4eeee8827b935"}, - {file = "tree_sitter-0.20.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:611a80171d8fa6833dd0c8b022714d2ea789de15a955ec42ec4fd5fcc1032edb"}, - {file = "tree_sitter-0.20.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bacecfb61694c95ccee462742b3fcea50ba1baf115c42e60adf52b549ef642ce"}, - {file = "tree_sitter-0.20.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f344ae94a268479456f19712736cc7398de5822dc74cca7d39538c28085721d0"}, - {file = "tree_sitter-0.20.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:221784d7f326fe81ce7174ac5972800f58b9a7c5c48a03719cad9830c22e5a76"}, - {file = "tree_sitter-0.20.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64210ed8d2a1b7e2951f6576aa0cb7be31ad06d87da26c52961318fc54c7fe77"}, - {file = "tree_sitter-0.20.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2634ac73b39ceacfa431d6d95692eae7465977fa0b9e9f7ae6cb445991e829a5"}, - {file = "tree_sitter-0.20.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:71663a0e8230dae99d9c55e6895bd2c9e42534ec861b255775f704ae2db70c1d"}, - {file = "tree_sitter-0.20.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:32c3e0f30b45a58d36bf6a0ec982ca3eaa23c7f924628da499b7ad22a8abad71"}, - {file = "tree_sitter-0.20.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b02e4ab2158c25f6f520c93318d562da58fa4ba53e1dbd434be008f48104980"}, - {file = "tree_sitter-0.20.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10e567eb6961a1e86aebbe26a9ca07d324f8529bca90937a924f8aa0ea4dc127"}, - {file = "tree_sitter-0.20.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:63f8e8e69f5f25c2b565449e1b8a2aa7b6338b4f37c8658c5fbdec04858c30be"}, - {file = "tree_sitter-0.20.2.tar.gz", hash = "sha256:0a6c06abaa55de174241a476b536173bba28241d2ea85d198d33aa8bf009f028"}, -] - -[[package]] -name = "tree-sitter-languages" -version = "1.7.0" -description = "Binary Python wheels for all tree sitter languages." -optional = true -python-versions = "*" -files = [ - {file = "tree_sitter_languages-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fd8b856c224a74c395ed9495761c3ef8ba86014dbf6037d73634436ae683c808"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:277d1bec6e101a26a4445cd7cb1eb8f8cf5a9bbad1ca80692bfae1af63568272"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0473bd896799ccc87f428766813ddedd3506cad8430dbe863b663c81d7387680"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb6799419bc7e3029112f2a3f8b77b6c299f94f03bb70e5c31a437b3180486be"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e5b705c8ce6ef47fc461484878956ecd42a67cbeb0a17e323b86a4439a8fdc3d"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:28a732be6fced2f70184c1b34f64961e3b6259fe6d5f7540c91028c2a43a7109"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-win32.whl", hash = "sha256:f5cdb1ec88f0b8c617330c953555a20cc7e96ca6b1f5c68ab6db347e869cfeeb"}, - {file = "tree_sitter_languages-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:26cb344a75798fce1a73b690504d8e7789f6ba25a178efcd203444d7868caf38"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:433b56cb3dca02b30f21c596f431a2cff90905326be1f8913c3515acb984b21e"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96686390e1a01af44aedef7b33d6be82de3cf674a98a5c7b417e540e6afa62cc"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25a4b6d559fbd76c6ec1b73cf03d09f53aaa5a1b61078a3f518b162866d9d97e"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e504f199c7a4c8b1b1efb05a063450aa23234feea6fa6c06f4077f7248ea9c98"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6b29856e9314b5f68f05dfa45e6674f47535229dda32294ba6d129077a97759c"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:786fdaf3d2120eef9384b0f22d7e2e42a561073ba753c7b438e90a1e7b351650"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-win32.whl", hash = "sha256:a55a7007056d0927b78481b437d79ea0487cc991c7f9c19d67adcceac3d47f53"}, - {file = "tree_sitter_languages-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:4b01d3bdf7ce2aeee4d0df62071a0ca91e618a29845686a5bd714d93c5ef3b36"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b603f1ad01bfb9d178f965125e2528cb7da9666d180f4a9a1acfaedbf5862ea"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70610aa26dd985d2fb9eb07ea8eacc3ceb0cc9c2e91416f51305120cfd919e28"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0444ebc8bdb7dc0d66a816050cfd52376c4e62a94a9c54fde90b29acf3e4bab1"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7eeb5a3307ff1c0994ffff5ea37ec656a716a728b8c9359374104da521a76ded"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:6c319cef16f2df667f1c165fe4eee160f2b51a0c4b61db1e70de2ab86420ca9a"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-win32.whl", hash = "sha256:b216650126d95d494f927393903e836a7ef5f0c4db0834f3a0b576f97c13abaf"}, - {file = "tree_sitter_languages-1.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6c96e5785d164a205962a10256808b3d12dccee9827ec88a46899063a2a2d28"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:adafeabbd8d47b80122fad18bb61c25ed3da04f5347b7d774b53826accb27b7a"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50e2bc5d2da770ecd5af94f9d716faa4764f890fd61bc0a488e9269653d9fb71"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac773097cff7de6cf265c5be9990b4c6690161452da1d9fc41021d4bf7e8c73a"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b233bfc48cf0f16436200afc7d7643cd87101c321de25b919b61f21f1693aa52"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:eab3caedf50467045ed5cab776a57b494332616376d387c6600fd7ea4f5483cf"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-win32.whl", hash = "sha256:d533f743a22f5696494d3a5a60adb4cfbef63d58b8b5622993d93d6d0a602444"}, - {file = "tree_sitter_languages-1.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:aab96f64be30c9f73d6dc958ec22bb1a9fe70e90b2d2a3d233d537b347cea729"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1bf89d771621e28847036b377f865f947e555a6654356d21beab738bb2531a69"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b2f171089ec3c4f1de275edc8f0722e1e3dc7a54e83107098315ea2f0952cfcd"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a091577d3a8454c40f813ee2834314c73cc504522f70f9e33d7c2268d33973f9"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8287efa87d080b340b583a6e81266cc3d8266deb61b8f3312649a9d1562e665a"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9c5080c06a2df7a59c69d2422a6ae83a5e37e92d57c4bd5e572d0eb5226ab3b0"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ca8f629cfb406a2f9b9f8a3a5c804d4d1ba4cdca41cccba63f51fc1bab13e5de"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-win32.whl", hash = "sha256:fd3561b37a99c9d501719819a8736529ae3a6d597128c15be432d1855f3cb0d9"}, - {file = "tree_sitter_languages-1.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:377ad60f7a7bf27315676c4fa84cc766aa0019c1e556083763136ed951e934c0"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1dc71b68e48f58cd5b6a9ab7a541714201815629a6554a969cfc579a6ee6e53"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb1521367b14c275bef70997ea90526e7049f840ba1bbd3ef56c72f5b15596e9"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f73651f7e78371dc3d455e8aba510cc6fb9e1ac1d648c3334157950781eb295"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:049b0dd63be721fe3f9642a2b5a044bea2852de2b35818467996242ae4b7f01f"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c428a8e1f5ecc4eb5c79abff3eb2881123446cde16fd1d8866d527470a6fdd2f"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:40fb3fc11ff90caf65b4713feeb6c4852e5d2a04ef8ae6a2ac734a702a6a6c7e"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-win32.whl", hash = "sha256:f28e9904833b7a909f8227c4560401049bd3310cebe3e0a884d9461f783b9af2"}, - {file = "tree_sitter_languages-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ea47ee390ec2e1c9bf96d7b418775263766021a834910c9f2d578f95a3e27d0f"}, -] - -[package.dependencies] -tree-sitter = "*" - [[package]] name = "twine" version = "3.8.0" @@ -7940,20 +7682,6 @@ files = [ {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, ] -[[package]] -name = "uc-micro-py" -version = "1.0.2" -description = "Micro subset of unicode data files for linkify-it-py projects." -optional = true -python-versions = ">=3.7" -files = [ - {file = "uc-micro-py-1.0.2.tar.gz", hash = "sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54"}, - {file = "uc_micro_py-1.0.2-py3-none-any.whl", hash = "sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0"}, -] - -[package.extras] -test = ["coverage", "pytest", "pytest-cov"] - [[package]] name = "unstructured" version = "0.10.16" @@ -8680,10 +8408,10 @@ cffi = ["cffi (>=1.11)"] [extras] all = [] -deploy = ["celery", "flower", "langchain-serve", "redis"] +deploy = ["celery", "flower", "redis"] local = ["ctransformers", "llama-cpp-python", "sentence-transformers"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.11" -content-hash = "ebf83fe66c2a78ceffc2c9228b439db10b37d0e444dd3f275e1a1addab1fd164" +content-hash = "d6c40b61e57b81511fbc91972f94686751c220850fd72599483b232fa22b70ad" diff --git a/pyproject.toml b/pyproject.toml index b39111715..3a848803d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,6 @@ psycopg2-binary = "^2.9.6" pyarrow = "^12.0.0" tiktoken = "~0.4.0" wikipedia = "^1.4.0" -langchain-serve = { version = ">0.0.51", optional = true } qdrant-client = "^1.4.0" websockets = "^10.3" weaviate-client = "^3.23.0" diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index c17d39d91..cb290d4a3 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -1,5 +1,8 @@ +import platform +import socket import sys import time +import webbrowser import httpx from langflow.services.database.utils import session_getter from langflow.services.manager import initialize_services, initialize_settings_service @@ -9,18 +12,22 @@ from multiprocess import Process, cpu_count # type: ignore import platform from pathlib import Path from typing import Optional -import socket -from rich.panel import Panel + +import httpx +import typer +from dotenv import load_dotenv +from multiprocess import Process, cpu_count # type: ignore from rich import box from rich import print as rprint -from rich.table import Table -import typer -from langflow.main import setup_app -from langflow.utils.logger import configure, logger -import webbrowser -from dotenv import load_dotenv - from rich.console import Console +from rich.panel import Panel +from rich.table import Table + +from langflow.main import setup_app +from langflow.services.database.utils import session_getter +from langflow.services.getters import get_db_manager, get_settings_manager +from langflow.services.utils import initialize_services, initialize_settings_manager +from langflow.utils.logger import configure, logger console = Console() @@ -79,52 +86,6 @@ def update_settings( settings_service.settings.update_settings(COMPONENTS_PATH=components_path) -def serve_on_jcloud(): - """ - Deploy Langflow server on Jina AI Cloud - """ - import asyncio - from importlib.metadata import version as mod_version - - import click - - try: - from lcserve.__main__ import serve_on_jcloud # type: ignore - except ImportError: - click.secho( - "🚨 Please install langchain-serve to deploy Langflow server on Jina AI Cloud " - "using `pip install langchain-serve`", - fg="red", - ) - return - - app_name = "langflow.lcserve:app" - app_dir = str(Path(__file__).parent) - version = mod_version("langflow") - base_image = "jinaai+docker://deepankarm/langflow" - - click.echo("🚀 Deploying Langflow server on Jina AI Cloud") - app_id = asyncio.run( - serve_on_jcloud( - fastapi_app_str=app_name, - app_dir=app_dir, - uses=f"{base_image}:{version}", - name="langflow", - ) - ) - click.secho( - "🎉 Langflow server successfully deployed on Jina AI Cloud 🎉", fg="green" - ) - click.secho( - "🔗 Click on the link to open the server (please allow ~1-2 minutes for the server to startup): ", - nl=False, - fg="green", - ) - click.secho(f"https://{app_id}.wolf.jina.ai/", fg="blue") - click.secho("📖 Read more about managing the server: ", nl=False, fg="green") - click.secho("https://github.com/jina-ai/langchain-serve", fg="blue") - - @app.command() def run( host: str = typer.Option( @@ -158,7 +119,6 @@ def run( help="Type of cache to use. (InMemoryCache, SQLiteCache)", default=None, ), - jcloud: bool = typer.Option(False, help="Deploy on Jina AI Cloud"), dev: bool = typer.Option(False, help="Run in development mode (may contain bugs)"), # This variable does not work but is set by the .env file # and works with Pydantic @@ -195,9 +155,6 @@ def run( if env_file: load_dotenv(env_file, override=True) - if jcloud: - return serve_on_jcloud() - configure(log_level=log_level, log_file=log_file) update_settings( config, diff --git a/src/backend/langflow/jcloud.yml b/src/backend/langflow/jcloud.yml deleted file mode 100644 index ffc1c9b8a..000000000 --- a/src/backend/langflow/jcloud.yml +++ /dev/null @@ -1,2 +0,0 @@ -instance: C4 -autoscale_min: 1 \ No newline at end of file diff --git a/src/backend/langflow/lcserve.py b/src/backend/langflow/lcserve.py deleted file mode 100644 index 87f69e014..000000000 --- a/src/backend/langflow/lcserve.py +++ /dev/null @@ -1,15 +0,0 @@ -# This file is used by lc-serve to load the mounted app and serve it. - -import os - -# Use the JCLOUD_WORKSPACE for db URL if it's provided by JCloud. -if "JCLOUD_WORKSPACE" in os.environ: - os.environ[ - "LANGFLOW_DATABASE_URL" - ] = f"sqlite:///{os.environ['JCLOUD_WORKSPACE']}/langflow.db" - -from langflow.main import setup_app -from langflow.utils.logger import configure - -configure(log_level="DEBUG") -app = setup_app() diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts index 8ef65d140..65eab3207 100644 --- a/src/frontend/src/utils/utils.ts +++ b/src/frontend/src/utils/utils.ts @@ -324,8 +324,14 @@ TWEAKS = ${tweak && tweak.length > 0 : JSON.stringify(tweaks, null, 2) } +<<<<<<< HEAD def run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None${!isAuth ? `, apiKey: str=""` : "" }) -> dict: +======= +def run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None${ + !isAuth ? `, api_key: Optional[str] = None` : "" + }) -> dict: +>>>>>>> 1773f3fda830988438e7f3e3aa40959f1df692f5 """ Run a flow with a given message and optional tweaks. @@ -337,18 +343,25 @@ def run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None${!isAuth api_url = f"{BASE_API_URL}/{flow_id}" payload = {"inputs": inputs} - + headers = None if tweaks: payload["tweaks"] = tweaks - ${!isAuth ? 'headers = {"api-key": apiKey}' : ""} - response = requests.post(api_url, json=payload,headers=headers) + if api_key: + headers = {"x-api-key": api_key} + response = requests.post(api_url, json=payload, headers=headers) return response.json() # Setup any tweaks you want to apply to the flow inputs = ${inputs} ${!isAuth ? `api_key = ""` : ""} +<<<<<<< HEAD print(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS${!isAuth ? `, apiKey=api_key` : "" }))`; +======= +print(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS${ + !isAuth ? `, api_key=api_key` : "" + }))`; +>>>>>>> 1773f3fda830988438e7f3e3aa40959f1df692f5 } /** @@ -367,11 +380,22 @@ export function getCurlCode( const inputs = buildInputs(tabsState!, flow.id); return `curl -X POST \\ +<<<<<<< HEAD ${window.location.protocol}//${window.location.host }/api/v1/process/${flowId} \\ -H 'Content-Type: application/json'\\ ${!isAuth ? `-H 'api-key: '\\` : ""} -d '{"inputs": ${inputs}, "tweaks": ${tweak && tweak.length > 0 +======= + ${window.location.protocol}//${ + window.location.host + }/api/v1/process/${flowId} \\ + -H 'Content-Type: application/json'\\${ + !isAuth ? `\n -H 'x-api-key: '\\` : "" + } + -d '{"inputs": ${inputs}, "tweaks": ${ + tweak && tweak.length > 0 +>>>>>>> 1773f3fda830988438e7f3e3aa40959f1df692f5 ? buildTweakObject(tweak) : JSON.stringify(tweaks, null, 2) }}'`; @@ -433,8 +457,13 @@ chat_input_field: Input key that you want the chat to send the user message with ? ` api_key="..."` : "" +<<<<<<< HEAD } +======= + } + +>>>>>>> 1773f3fda830988438e7f3e3aa40959f1df692f5 >`; }