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 | |