diff --git a/.github/workflows/_integration_test.yml b/.github/workflows/_integration_test.yml index 6d1cec32a..fafe5da3f 100644 --- a/.github/workflows/_integration_test.yml +++ b/.github/workflows/_integration_test.yml @@ -19,50 +19,64 @@ jobs: working-directory: libs/cli steps: - uses: actions/checkout@v4 - + - name: Get changed files + id: changed-files + uses: Ana06/get-changed-files@v2.2.0 + with: + filter: "libs/cli/**" - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} + if: steps.changed-files.outputs.all uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} poetry-version: ${{ env.POETRY_VERSION }} working-directory: libs/cli cache-key: integration-test-cli - - name: Setup env + if: steps.changed-files.outputs.all working-directory: libs/cli/examples run: cat .env.example > .env - name: Install cli globally + if: steps.changed-files.outputs.all run: pip install -e . - name: Start service A + if: steps.changed-files.outputs.all run: | langgraph up -c examples/langgraph.json --wait --verbose - name: Stop service A + if: steps.changed-files.outputs.all run: | langgraph down -c examples/langgraph.json sudo rm -rf .langgraph-data - name: Start service B + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs run: | langgraph up --wait --verbose - name: Stop service B + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs run: | langgraph down sudo rm -rf .langgraph-data - name: Start service C + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs_reqs_a run: | langgraph up --wait -d compose.yml --verbose - name: Stop service C + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs_reqs_a run: | langgraph down sudo rm -rf .langgraph-data - name: Start service D + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs_reqs_b run: | langgraph up --wait -d compose.yml --verbose - name: Stop service D + if: steps.changed-files.outputs.all working-directory: libs/cli/examples/graphs_reqs_b run: | langgraph down diff --git a/.github/workflows/_lint.yml b/.github/workflows/_lint.yml index d80d116bb..9110da7c8 100644 --- a/.github/workflows/_lint.yml +++ b/.github/workflows/_lint.yml @@ -32,8 +32,13 @@ jobs: name: "lint #${{ matrix.python-version }}" steps: - uses: actions/checkout@v4 - + - name: Get changed files + id: changed-files + uses: Ana06/get-changed-files@v2.2.0 + with: + filter: "${{ inputs.working-directory }}/**" - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} + if: steps.changed-files.outputs.all uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} @@ -42,16 +47,19 @@ jobs: cache-key: lint-with-extras - name: Check Poetry File + if: steps.changed-files.outputs.all shell: bash working-directory: ${{ inputs.working-directory }} run: poetry check - name: Check lock file + if: steps.changed-files.outputs.all shell: bash working-directory: ${{ inputs.working-directory }} run: poetry lock --check - name: Install dependencies + if: steps.changed-files.outputs.all # Also installs dev/lint/test/typing dependencies, to ensure we have # type hints for as many of our libraries as possible. # This helps catch errors that require dependencies to be spotted, for example: @@ -64,6 +72,7 @@ jobs: run: poetry install --with dev - name: Get .mypy_cache to speed up mypy + if: steps.changed-files.outputs.all uses: actions/cache@v3 env: SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2" @@ -73,6 +82,7 @@ jobs: key: mypy-lint-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }} - name: Analysing package code with our lint + if: steps.changed-files.outputs.all working-directory: ${{ inputs.working-directory }} run: | if make lint_package > /dev/null 2>&1; then @@ -83,6 +93,7 @@ jobs: fi - name: Install test dependencies + if: steps.changed-files.outputs.all # Also installs dev/lint/test/typing dependencies, to ensure we have # type hints for as many of our libraries as possible. # This helps catch errors that require dependencies to be spotted, for example: @@ -96,6 +107,7 @@ jobs: poetry install --with dev - name: Get .mypy_cache_test to speed up mypy + if: steps.changed-files.outputs.all uses: actions/cache@v3 env: SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2" @@ -105,6 +117,7 @@ jobs: key: mypy-test-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }} - name: Analysing tests with our lint + if: steps.changed-files.outputs.all working-directory: ${{ inputs.working-directory }} run: | if make lint_tests > /dev/null 2>&1; then diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml index 31177dc14..606492df2 100644 --- a/.github/workflows/_test.yml +++ b/.github/workflows/_test.yml @@ -24,8 +24,13 @@ jobs: name: "test #${{ matrix.python-version }}" steps: - uses: actions/checkout@v4 - + - name: Get changed files + id: changed-files + uses: Ana06/get-changed-files@v2.2.0 + with: + filter: "${{ inputs.working-directory }}/**" - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} + if: steps.changed-files.outputs.all uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} @@ -34,17 +39,20 @@ jobs: cache-key: core - name: Install dependencies + if: steps.changed-files.outputs.all shell: bash working-directory: ${{ inputs.working-directory }} run: poetry install --with dev - name: Run core tests + if: steps.changed-files.outputs.all shell: bash working-directory: ${{ inputs.working-directory }} run: | make test - name: Ensure the tests did not create any additional files + if: steps.changed-files.outputs.all shell: bash working-directory: ${{ inputs.working-directory }} run: | diff --git a/libs/cli/langgraph_cli/cli.py b/libs/cli/langgraph_cli/cli.py index cc4cd6b73..35f665b88 100644 --- a/libs/cli/langgraph_cli/cli.py +++ b/libs/cli/langgraph_cli/cli.py @@ -18,7 +18,7 @@ from langgraph_cli.util import clean_empty_lines OPT_DOCKER_COMPOSE = click.option( "--docker-compose", "-d", - help="Advanced: Path to docker-compose.yml file with additional services to launch", + help="Advanced: Path to docker-compose.yml file with additional services to launch.", type=click.Path( exists=True, file_okay=True, diff --git a/libs/langgraph/langgraph/prebuilt/chat_agent_executor.py b/libs/langgraph/langgraph/prebuilt/chat_agent_executor.py index 5099dd149..2a8057f32 100644 --- a/libs/langgraph/langgraph/prebuilt/chat_agent_executor.py +++ b/libs/langgraph/langgraph/prebuilt/chat_agent_executor.py @@ -52,7 +52,6 @@ def create_function_calling_executor( >>> model = ChatOpenAI() >>> >>> app = create_react_agent(model, tools) - >>> >>> inputs = {"messages": [("user", "what is the weather in sf")]} >>> for s in app.stream(inputs): ... print(list(s.values())[0]) diff --git a/libs/sdk-py/README.md b/libs/sdk-py/README.md index 74f121f68..9cea00442 100644 --- a/libs/sdk-py/README.md +++ b/libs/sdk-py/README.md @@ -1,6 +1,6 @@ # LangGraph Python SDK -This repository contains the Python SDK for interacting with the LangGraph REST API. +This repository contains the Python SDK for interacting with the LangGraph Cloud REST API. ## Quick Start @@ -32,4 +32,4 @@ thread = await client.threads.create() input = {"messages": [{"role": "human", "content": "what's the weather in la"}]} async for chunk in client.runs.stream(thread['thread_id'], agent['assistant_id'], input=input): print(chunk) -``` \ No newline at end of file +```