mirror of
https://github.com/langchain-ai/markdown-exec.git
synced 2026-07-01 18:25:52 -04:00
248 lines
6.6 KiB
YAML
248 lines
6.6 KiB
YAML
name: ci
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
env:
|
|
LANG: en_US.utf-8
|
|
LC_ALL: en_US.utf-8
|
|
PYTHONIOENCODING: UTF-8
|
|
PYTHON_VERSIONS: ""
|
|
JUPYTER_PLATFORM_DIRS: 1
|
|
|
|
jobs:
|
|
|
|
quality:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- name: Set up Graphviz
|
|
uses: ts-graphviz/setup-graphviz@v1
|
|
|
|
- name: Set up Deno
|
|
uses: denoland/setup-deno@v2
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@v3
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: pyproject.toml
|
|
|
|
- name: Install dependencies
|
|
run: make setup
|
|
|
|
- name: Install Deno Jupyter Kernel
|
|
run: deno jupyter --install
|
|
|
|
- name: Fix deno path on macOS
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
source .venv/bin/activate
|
|
export JUPYTER_PLATFORM_DIRS=0
|
|
|
|
# ensure jupyter can find the kernel config using the old path structure
|
|
jupyter kernelspec list | grep -q deno || exit 1
|
|
|
|
ORIG_JUPYTER_KERNEL_PATH="$(jupyter --data-dir)/kernels"
|
|
|
|
export JUPYTER_PLATFORM_DIRS=1
|
|
|
|
# make the data directory for the new path structure
|
|
mkdir -p "$(jupyter --data-dir)/kernels"
|
|
|
|
cp -r "$ORIG_JUPYTER_KERNEL_PATH/deno" "$(jupyter --data-dir)/kernels"
|
|
|
|
# fail if jupyter still can't find the kernel config
|
|
jupyter kernelspec list | grep -q deno
|
|
|
|
deactivate
|
|
|
|
- name: Fix deno path on Windows
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
run: |
|
|
.\.venv\bin\activate.ps1
|
|
$env:JUPYTER_PLATFORM_DIRS = "0"
|
|
|
|
# ensure jupyter can find the kernel config using the old path structure
|
|
$kernelCheck = jupyter kernelspec list | Select-String -Pattern "deno"
|
|
if (-not $kernelCheck) { exit 1 }
|
|
|
|
$origKernelPath = Join-Path (jupyter --data-dir) "kernels"
|
|
|
|
$env:JUPYTER_PLATFORM_DIRS = "1"
|
|
|
|
# make the data directory for the new path structure
|
|
$newKernelPath = Join-Path (jupyter --data-dir) "kernels"
|
|
New-Item -ItemType Directory -Force -Path $newKernelPath
|
|
|
|
Copy-Item -Path (Join-Path $origKernelPath "deno") -Destination $newKernelPath -Recurse -Force
|
|
|
|
# fail if jupyter still can't find the kernel config
|
|
$kernelCheck = jupyter kernelspec list | Select-String -Pattern "deno"
|
|
if (-not $kernelCheck) { exit 1 }
|
|
|
|
deactivate
|
|
|
|
- name: Check if the documentation builds correctly
|
|
run: make check-docs
|
|
|
|
- name: Check the code quality
|
|
run: make check-quality
|
|
|
|
- name: Check if the code is correctly typed
|
|
run: make check-types
|
|
|
|
- name: Check for breaking changes in the API
|
|
run: make check-api
|
|
|
|
exclude-test-jobs:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
jobs: ${{ steps.exclude-jobs.outputs.jobs }}
|
|
steps:
|
|
- id: exclude-jobs
|
|
run: |
|
|
if ${{ github.repository_owner == 'pawamoy-insiders' }}; then
|
|
echo 'jobs=[
|
|
{"os": "macos-latest"},
|
|
{"os": "windows-latest"},
|
|
{"python-version": "3.10"},
|
|
{"python-version": "3.11"},
|
|
{"python-version": "3.12"},
|
|
{"python-version": "3.13"},
|
|
{"python-version": "3.14"}
|
|
]' | tr -d '[:space:]' >> $GITHUB_OUTPUT
|
|
else
|
|
echo 'jobs=[
|
|
{"os": "macos-latest", "resolution": "lowest-direct"},
|
|
{"os": "windows-latest", "resolution": "lowest-direct"}
|
|
]' | tr -d '[:space:]' >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
tests:
|
|
|
|
needs: exclude-test-jobs
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
python-version:
|
|
- "3.9"
|
|
- "3.10"
|
|
- "3.11"
|
|
- "3.12"
|
|
- "3.13"
|
|
- "3.14"
|
|
resolution:
|
|
- highest
|
|
- lowest-direct
|
|
exclude: ${{ fromJSON(needs.exclude-test-jobs.outputs.jobs) }}
|
|
runs-on: ${{ matrix.os }}
|
|
continue-on-error: ${{ matrix.python-version == '3.14' }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
allow-prereleases: true
|
|
|
|
- name: Set up Deno
|
|
uses: denoland/setup-deno@v2
|
|
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@v3
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: pyproject.toml
|
|
cache-suffix: py${{ matrix.python-version }}
|
|
|
|
- name: Install dependencies
|
|
env:
|
|
UV_RESOLUTION: ${{ matrix.resolution }}
|
|
run: make setup
|
|
|
|
- name: Install Deno Jupyter Kernel
|
|
run: deno jupyter --install
|
|
|
|
- name: Fix deno path on macOS
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
source .venv/bin/activate
|
|
export JUPYTER_PLATFORM_DIRS=0
|
|
|
|
# ensure jupyter can find the kernel config using the old path structure
|
|
jupyter kernelspec list | grep -q deno || exit 1
|
|
|
|
ORIG_JUPYTER_KERNEL_PATH="$(jupyter --data-dir)/kernels"
|
|
|
|
export JUPYTER_PLATFORM_DIRS=1
|
|
|
|
# make the data directory for the new path structure
|
|
mkdir -p "$(jupyter --data-dir)/kernels"
|
|
|
|
cp -r "$ORIG_JUPYTER_KERNEL_PATH/deno" "$(jupyter --data-dir)/kernels"
|
|
|
|
# fail if jupyter still can't find the kernel config
|
|
jupyter kernelspec list | grep -q deno
|
|
|
|
deactivate
|
|
|
|
- name: Fix deno path on Windows
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
run: |
|
|
.\.venv\bin\activate.ps1
|
|
$env:JUPYTER_PLATFORM_DIRS = "0"
|
|
|
|
# ensure jupyter can find the kernel config using the old path structure
|
|
$kernelCheck = jupyter kernelspec list | Select-String -Pattern "deno"
|
|
if (-not $kernelCheck) { exit 1 }
|
|
|
|
$origKernelPath = Join-Path (jupyter --data-dir) "kernels"
|
|
|
|
$env:JUPYTER_PLATFORM_DIRS = "1"
|
|
|
|
# make the data directory for the new path structure
|
|
$newKernelPath = Join-Path (jupyter --data-dir) "kernels"
|
|
New-Item -ItemType Directory -Force -Path $newKernelPath
|
|
|
|
Copy-Item -Path (Join-Path $origKernelPath "deno") -Destination $newKernelPath -Recurse -Force
|
|
|
|
# fail if jupyter still can't find the kernel config
|
|
$kernelCheck = jupyter kernelspec list | Select-String -Pattern "deno"
|
|
if (-not $kernelCheck) { exit 1 }
|
|
|
|
deactivate
|
|
|
|
- name: Run the test suite
|
|
run: make test
|