Skip to content

Commit

Permalink
Merge branch 'main' into atomicjon/dataset_versions
Browse files Browse the repository at this point in the history
  • Loading branch information
AtomicJon authored Sep 29, 2024
2 parents 15427e7 + bcfe123 commit cdef55f
Show file tree
Hide file tree
Showing 140 changed files with 14,957 additions and 2,416 deletions.
88 changes: 88 additions & 0 deletions .github/actions/poetry_setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# An action for setting up poetry install with caching.
# Using a custom action since the default action does not
# take poetry install groups into account.
# Action code from:
# https://github.com/actions/setup-python/issues/505#issuecomment-1273013236
name: poetry-install-with-caching
description: Poetry install with support for caching of dependency groups.

inputs:
python-version:
description: Python version, supporting MAJOR.MINOR only
required: true

poetry-version:
description: Poetry version
required: true

cache-key:
description: Cache key to use for manual handling of caching
required: true

runs:
using: composite
steps:
- uses: actions/setup-python@v5
name: Setup python ${{ inputs.python-version }}
id: setup-python
with:
python-version: ${{ inputs.python-version }}

- uses: actions/cache@v3
id: cache-bin-poetry
name: Cache Poetry binary - Python ${{ inputs.python-version }}
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "1"
with:
path: |
/opt/pipx/venvs/poetry
# This step caches the poetry installation, so make sure it's keyed on the poetry version as well.
key: bin-poetry-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }}-${{ inputs.poetry-version }}

- name: Refresh shell hashtable and fixup softlinks
if: steps.cache-bin-poetry.outputs.cache-hit == 'true'
shell: bash
env:
POETRY_VERSION: ${{ inputs.poetry-version }}
PYTHON_VERSION: ${{ inputs.python-version }}
run: |
set -eux
# Refresh the shell hashtable, to ensure correct `which` output.
hash -r
# `actions/cache@v3` doesn't always seem able to correctly unpack softlinks.
# Delete and recreate the softlinks pipx expects to have.
rm /opt/pipx/venvs/poetry/bin/python
cd /opt/pipx/venvs/poetry/bin
ln -s "$(which "python$PYTHON_VERSION")" python
chmod +x python
cd /opt/pipx_bin/
ln -s /opt/pipx/venvs/poetry/bin/poetry poetry
chmod +x poetry
# Ensure everything got set up correctly.
/opt/pipx/venvs/poetry/bin/python --version
/opt/pipx_bin/poetry --version
- name: Install poetry
if: steps.cache-bin-poetry.outputs.cache-hit != 'true'
shell: bash
env:
POETRY_VERSION: ${{ inputs.poetry-version }}
PYTHON_VERSION: ${{ inputs.python-version }}
# Install poetry using the python version installed by setup-python step.
run: pipx install "poetry==$POETRY_VERSION" --python '${{ steps.setup-python.outputs.python-path }}' --verbose

- name: Restore pip and poetry cached dependencies
uses: actions/cache@v3
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "4"
with:
path: |
~/.cache/pip
~/.cache/pypoetry/virtualenvs
~/.cache/pypoetry/cache
~/.cache/pypoetry/artifacts
./.venv
key: py-deps-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }}-poetry-${{ inputs.poetry-version }}-${{ inputs.cache-key }}-${{ hashFiles('./poetry.lock') }}
4 changes: 2 additions & 2 deletions .github/workflows/js_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18.x, 19.x, 20.x, 21.x, 22.x]
node-version: [18.x, 20.x, "22.4.1"]
# See Node.js release schedule at https://nodejs.org/en/about/releases/
include:
- os: windows-latest
Expand All @@ -107,4 +107,4 @@ jobs:
- name: Check version
run: yarn run check-version
- name: Test
run: yarn run test
run: yarn run test
37 changes: 37 additions & 0 deletions .github/workflows/py-baseline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: py-baseline

on:
workflow_dispatch:
push:
branches: [main]
paths:
- "python/langsmith/**"

env:
POETRY_VERSION: "1.7.1"

jobs:
benchmark:
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v4
- run: SHA=$(git rev-parse HEAD) && echo "SHA=$SHA" >> $GITHUB_ENV
- name: Set up Python 3.11 + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
with:
python-version: "3.11"
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: py-benchi
- name: Install dependencies
run: poetry install --with dev
- name: Run benchmarks
run: OUTPUT=out/benchmark-baseline.json make -s benchmark
- name: Save outputs
uses: actions/cache/save@v4
with:
key: ${{ runner.os }}-benchmark-baseline-${{ env.SHA }}
path: |
python/out/benchmark-baseline.json
71 changes: 71 additions & 0 deletions .github/workflows/py-bench.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: py-bench

on:
pull_request:
paths:
- "python/langsmith/**"

env:
POETRY_VERSION: "1.7.1"

jobs:
benchmark:
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v4
- id: files
name: Get changed files
uses: Ana06/[email protected]
with:
format: json
- name: Set up Python 3.11 + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
with:
python-version: "3.11"
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: py-bench
- name: Install dependencies
run: poetry install --with dev
- name: Download baseline
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-benchmark-baseline
restore-keys: |
${{ runner.os }}-benchmark-baseline-
fail-on-cache-miss: true
path: |
python/out/benchmark-baseline.json
- name: Run benchmarks
id: benchmark
run: |
{
echo 'OUTPUT<<EOF'
make -s benchmark
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Compare benchmarks
id: compare
run: |
{
echo 'OUTPUT<<EOF'
mv out/benchmark-baseline.json out/main.json
mv out/benchmark.json out/changes.json
poetry run pyperf compare_to out/main.json out/changes.json --table --group-by-speed
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Annotation
uses: actions/github-script@v7
with:
script: |
const file = JSON.parse(`${{ steps.files.outputs.added_modified_renamed }}`)[0]
core.notice(`${{ steps.benchmark.outputs.OUTPUT }}`, {
title: 'Benchmark results',
file,
})
core.notice(`${{ steps.compare.outputs.OUTPUT }}`, {
title: 'Comparison against main',
file,
})
18 changes: 6 additions & 12 deletions .github/workflows/python_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,20 @@ jobs:
working-directory: python
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v5
name: Setup python ${{ matrix.python-version }}
id: setup-python
- name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install poetry
shell: bash
env:
PYTHON_VERSION: ${{ matrix.python-version }}
# Install poetry using the python version installed by setup-python step.
run: pipx install "poetry==$POETRY_VERSION" --python '${{ steps.setup-python.outputs.python-path }}' --verbose
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: build-and-test
- name: Install dependencies
run: |
poetry install --with dev,lint
poetry run pip install -U langchain langchain-core
poetry run pip install -U langchain langchain-core langchain_anthropic langchain_openai
- name: Build ${{ matrix.python-version }}
run: poetry build
- name: Lint ${{ matrix.python-version }}
run: make lint
- name: Run Unit tests ${{ matrix.python-version }}
run: make tests
shell: bash
shell: bash
24 changes: 15 additions & 9 deletions .github/workflows/release_js.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
name: JS Release

on:
push:
branches:
- main
paths:
- "js/package.json"
workflow_dispatch:

jobs:
Expand All @@ -11,33 +16,34 @@ jobs:
permissions:
contents: write
id-token: write
defaults:
run:
working-directory: "js"
steps:
- uses: actions/checkout@v3
# JS Build
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
node-version: 20.x
cache: "yarn"
cache-dependency-path: "js/yarn.lock"
- name: Install dependencies
run: cd js && yarn install --immutable
run: yarn install --immutable
- name: Build
run: cd js && yarn run build
run: yarn run build
- name: Check version
run: cd js && yarn run check-version
run: yarn run check-version
- name: Check NPM version
id: check_npm_version
run: |
cd js
if yarn run check-npm-version; then
echo "::set-output name=should_publish::true"
echo "should_publish=true" >> $GITHUB_OUTPUT
else
echo "::set-output name=should_publish::false"
echo "should_publish=false" >> $GITHUB_OUTPUT
fi
- name: Publish package to NPM
if: steps.check_npm_version.outputs.should_publish == 'true'
run: |
cd js
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
yarn publish --non-interactive
45 changes: 45 additions & 0 deletions .github/workflows/test_docker_compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: "CI: Test Docker Compose"

on:
push:
branches: [ main ]
paths:
pull_request:
branches: [ main ]
paths:
- ".github/workflows/test_docker_compose.yml"
- "python/langsmith/cli/docker-compose.yaml"


concurrency:
group: "test-docker-compose"
cancel-in-progress: true

jobs:

docker-compose:
timeout-minutes: 10
runs-on: ubuntu-latest

env:
LANGSMITH_LICENSE_KEY: ${{ secrets.LANGSMITH_LICENSE_KEY }}
API_KEY_SALT: test

steps:
- name: Checkout
uses: actions/checkout@v1

- uses: KengoTODA/actions-setup-docker-compose@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Start containers
working-directory: python/langsmith/cli
run: docker compose up -d

- name: sleep 30 seconds
run: sleep 30

- name: Check backend health
run: curl localhost:1980/api/info

35 changes: 35 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

formats:
- pdf

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
commands:
- mkdir -p $READTHEDOCS_OUTPUT
- echo "Building docs"
- pip install -U uv
- uv venv
- . .venv/bin/activate
- uv pip install -r python/docs/requirements.txt
- . .venv/bin/activate && cd python/docs && make clobber generate-api-rst html && cd ../..
- cp -r python/docs/_build/html $READTHEDOCS_OUTPUT
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: python/docs/conf.py

# If using Sphinx, optionally build your docs in additional formats such as PDF
# formats:
# - pdf

# Optionally declare the Python requirements required to build your docs
python:
install:
- requirements: python/docs/requirements.txt
Loading

0 comments on commit cdef55f

Please sign in to comment.