--- name: libs/experimental CI on: push: branches: [master] pull_request: paths: - ".github/actions/poetry_setup/action.yml" - ".github/tools/**" - ".github/workflows/_lint.yml" - ".github/workflows/_test.yml" - ".github/workflows/langchain_experimental_ci.yml" - "libs/*" - "libs/experimental/**" - "libs/langchain/**" - "libs/core/**" workflow_dispatch: # Allows to trigger the workflow manually in GitHub UI # If another push to the same PR or branch happens while this workflow is still running, # cancel the earlier run in favor of the next run. # # There's no point in testing an outdated version of the code. GitHub only allows # a limited number of job runners to be active at the same time, so it's better to cancel # pointless jobs early so that more useful jobs can run sooner. concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: POETRY_VERSION: "1.6.1" WORKDIR: "libs/experimental" jobs: lint: uses: ./.github/workflows/_lint.yml with: working-directory: libs/experimental secrets: inherit test: uses: ./.github/workflows/_test.yml with: working-directory: libs/experimental secrets: inherit compile-integration-tests: uses: ./.github/workflows/_compile_integration_test.yml with: working-directory: libs/experimental secrets: inherit # It's possible that langchain-experimental works fine with the latest *published* langchain, # but is broken with the langchain on `master`. # # We want to catch situations like that *before* releasing a new langchain, hence this test. test-with-latest-langchain: runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKDIR }} strategy: matrix: python-version: - "3.8" - "3.9" - "3.10" - "3.11" name: test with unpublished langchain - Python ${{ matrix.python-version }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} poetry-version: ${{ env.POETRY_VERSION }} working-directory: ${{ env.WORKDIR }} cache-key: unpublished-langchain - name: Install dependencies shell: bash run: | echo "Running tests with unpublished langchain, installing dependencies with poetry..." poetry install echo "Editably installing langchain outside of poetry, to avoid messing up lockfile..." poetry run pip install -e ../langchain poetry run pip install -e ../core - name: Run tests run: make test extended-tests: runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKDIR }} strategy: matrix: python-version: - "3.8" - "3.9" - "3.10" - "3.11" name: Python ${{ matrix.python-version }} extended tests steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }} uses: "./.github/actions/poetry_setup" with: python-version: ${{ matrix.python-version }} poetry-version: ${{ env.POETRY_VERSION }} working-directory: libs/experimental cache-key: extended - name: Install dependencies shell: bash run: | echo "Running extended tests, installing dependencies with poetry..." poetry install -E extended_testing - name: Run extended tests run: make extended_tests - name: Ensure the tests did not create any additional files shell: bash run: | set -eu STATUS="$(git status)" echo "$STATUS" # grep will exit non-zero if the target message isn't found, # and `set -e` above will cause the step to fail. echo "$STATUS" | grep 'nothing to commit, working tree clean'