Spaces:
Runtime error
Runtime error
| name: lint | |
| on: | |
| workflow_call: | |
| inputs: | |
| working-directory: | |
| required: true | |
| type: string | |
| description: "From which folder this pipeline executes" | |
| langchain-location: | |
| required: false | |
| type: string | |
| description: "Relative path to the langchain library folder" | |
| env: | |
| POETRY_VERSION: "1.7.1" | |
| WORKDIR: ${{ inputs.working-directory == '' && '.' || inputs.working-directory }} | |
| # This env var allows us to get inline annotations when ruff has complaints. | |
| RUFF_OUTPUT_FORMAT: github | |
| jobs: | |
| build: | |
| name: "make lint #${{ matrix.python-version }}" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| # Only lint on the min and max supported Python versions. | |
| # It's extremely unlikely that there's a lint issue on any version in between | |
| # that doesn't show up on the min or max versions. | |
| # | |
| # GitHub rate-limits how many jobs can be running at any one time. | |
| # Starting new jobs is also relatively slow, | |
| # so linting on fewer versions makes CI faster. | |
| python-version: | |
| - "3.8" | |
| - "3.11" | |
| 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: ${{ inputs.working-directory }} | |
| cache-key: lint-with-extras | |
| - name: Check Poetry File | |
| shell: bash | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| poetry check | |
| - name: Check lock file | |
| shell: bash | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| poetry lock --check | |
| - name: Install dependencies | |
| # 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: | |
| # https://github.com/langchain-ai/langchain/pull/10249/files#diff-935185cd488d015f026dcd9e19616ff62863e8cde8c0bee70318d3ccbca98341 | |
| # | |
| # If you change this configuration, make sure to change the `cache-key` | |
| # in the `poetry_setup` action above to stop using the old cache. | |
| # It doesn't matter how you change it, any change will cause a cache-bust. | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| poetry install --with lint,typing | |
| - name: Install langchain editable | |
| working-directory: ${{ inputs.working-directory }} | |
| if: ${{ inputs.langchain-location }} | |
| env: | |
| LANGCHAIN_LOCATION: ${{ inputs.langchain-location }} | |
| run: | | |
| poetry run pip install -e "$LANGCHAIN_LOCATION" | |
| - name: Get .mypy_cache to speed up mypy | |
| uses: actions/cache@v4 | |
| env: | |
| SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2" | |
| with: | |
| path: | | |
| ${{ env.WORKDIR }}/.mypy_cache | |
| key: mypy-lint-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }} | |
| - name: Analysing the code with our lint | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| make lint_package | |
| - name: Install unit test dependencies | |
| # 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: | |
| # https://github.com/langchain-ai/langchain/pull/10249/files#diff-935185cd488d015f026dcd9e19616ff62863e8cde8c0bee70318d3ccbca98341 | |
| # | |
| # If you change this configuration, make sure to change the `cache-key` | |
| # in the `poetry_setup` action above to stop using the old cache. | |
| # It doesn't matter how you change it, any change will cause a cache-bust. | |
| if: ${{ ! startsWith(inputs.working-directory, 'libs/partners/') }} | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| poetry install --with test | |
| - name: Install unit+integration test dependencies | |
| if: ${{ startsWith(inputs.working-directory, 'libs/partners/') }} | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| poetry install --with test,test_integration | |
| - name: Get .mypy_cache_test to speed up mypy | |
| uses: actions/cache@v4 | |
| env: | |
| SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2" | |
| with: | |
| path: | | |
| ${{ env.WORKDIR }}/.mypy_cache_test | |
| key: mypy-test-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }} | |
| - name: Analysing the code with our lint | |
| working-directory: ${{ inputs.working-directory }} | |
| run: | | |
| make lint_tests | |