Skip to content

Commit

Permalink
(WIP) set up experimental (langchain-ai#7959)
Browse files Browse the repository at this point in the history
  • Loading branch information
hwchase17 authored Jul 21, 2023
1 parent 623b321 commit f35db9f
Show file tree
Hide file tree
Showing 1,540 changed files with 2,399 additions and 2,180 deletions.
2 changes: 1 addition & 1 deletion .devcontainer/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: '3'
services:
langchain:
build:
dockerfile: dev.Dockerfile
dockerfile: libs/langchain/dev.Dockerfile
context: ..
volumes:
# Update this to wherever you want VS Code to mount the folder of your project
Expand Down
2 changes: 2 additions & 0 deletions .github/actions/poetry_setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,13 @@ runs:

- 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
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/lint.yml → .github/workflows/_lint.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
name: lint

on:
push:
branches: [master]
pull_request:
workflow_call:
inputs:
working-directory:
required: true
type: string
description: "From which folder this pipeline executes"

env:
POETRY_VERSION: "1.4.2"

jobs:
build:
defaults:
run:
working-directory: ${{ inputs.working-directory }}
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down
16 changes: 9 additions & 7 deletions .github/workflows/release.yml → .github/workflows/_release.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
name: release

on:
pull_request:
types:
- closed
branches:
- master
paths:
- 'pyproject.toml'
workflow_call:
inputs:
working-directory:
required: true
type: string
description: "From which folder this pipeline executes"

env:
POETRY_VERSION: "1.4.2"
Expand All @@ -18,6 +17,9 @@ jobs:
${{ github.event.pull_request.merged == true }}
&& ${{ contains(github.event.pull_request.labels.*.name, 'release') }}
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{ inputs.working-directory }}
steps:
- uses: actions/checkout@v3
- name: Install poetry
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/test.yml → .github/workflows/_test.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
name: test

on:
push:
branches: [master]
pull_request:
workflow_dispatch:
workflow_call:
inputs:
working-directory:
required: true
type: string
description: "From which folder this pipeline executes"

env:
POETRY_VERSION: "1.4.2"

jobs:
build:
defaults:
run:
working-directory: ${{ inputs.working-directory }}
runs-on: ubuntu-latest
strategy:
matrix:
Expand All @@ -29,6 +34,7 @@ jobs:
uses: "./.github/actions/poetry_setup"
with:
python-version: ${{ matrix.python-version }}
working-directory: ${{ inputs.working-directory }}
poetry-version: "1.4.2"
cache-key: ${{ matrix.test_type }}
install-command: |
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/langchain_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: libs/langchain CI

on:
push:
branches: [ master ]
pull_request:
paths:
- '.github/workflows/_lint.yml'
- '.github/workflows/_test.yml'
- '.github/workflows/langchain_ci.yml'
- 'libs/langchain/**'
workflow_dispatch: # Allows to trigger the workflow manually in GitHub UI

jobs:
lint:
uses:
./.github/workflows/_lint.yml
with:
working-directory: libs/langchain
secrets: inherit
test:
uses:
./.github/workflows/_test.yml
with:
working-directory: libs/langchain
secrets: inherit
19 changes: 19 additions & 0 deletions .github/workflows/langchain_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: libs/langchain Release

on:
pull_request:
types:
- closed
branches:
- master
paths:
- 'libs/langchain/pyproject.toml'

jobs:
release:
uses:
./.github/workflows/_release.yml
with:
working-directory: libs/langchain
secrets: inherit
60 changes: 1 addition & 59 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck format lint test tests test_watch integration_tests docker_tests help extended_tests
.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck

# Default target executed when no arguments are given to make.
all: help

######################
# TESTING AND COVERAGE
######################

# Run unit tests and generate a coverage report.
coverage:
poetry run pytest --cov \
--cov-config=.coveragerc \
--cov-report xml \
--cov-report term-missing:skip-covered

######################
# DOCUMENTATION
Expand Down Expand Up @@ -41,45 +31,6 @@ api_docs_clean:
api_docs_linkcheck:
poetry run linkchecker docs/api_reference/_build/html/index.html

# Define a variable for the test file path.
TEST_FILE ?= tests/unit_tests/

test:
poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE)

tests:
poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE)

extended_tests:
poetry run pytest --disable-socket --allow-unix-socket --only-extended tests/unit_tests

test_watch:
poetry run ptw --now . -- tests/unit_tests

integration_tests:
poetry run pytest tests/integration_tests

docker_tests:
docker build -t my-langchain-image:test .
docker run --rm my-langchain-image:test

######################
# LINTING AND FORMATTING
######################

# Define a variable for Python and notebook files.
PYTHON_FILES=.
lint format: PYTHON_FILES=.
lint_diff format_diff: PYTHON_FILES=$(shell git diff --name-only --diff-filter=d master | grep -E '\.py$$|\.ipynb$$')

lint lint_diff:
poetry run mypy $(PYTHON_FILES)
poetry run black $(PYTHON_FILES) --check
poetry run ruff .

format format_diff:
poetry run black $(PYTHON_FILES)
poetry run ruff --select I --fix $(PYTHON_FILES)

spell_check:
poetry run codespell --toml pyproject.toml
Expand All @@ -97,12 +48,3 @@ help:
@echo 'docs_build - build the documentation'
@echo 'docs_clean - clean the documentation build artifacts'
@echo 'docs_linkcheck - run linkchecker on the documentation'
@echo 'format - run code formatters'
@echo 'lint - run linters'
@echo 'test - run unit tests'
@echo 'tests - run unit tests'
@echo 'test TEST_FILE=<test_file> - run all tests in file'
@echo 'extended_tests - run only extended unit tests'
@echo 'test_watch - run unit tests in watch mode'
@echo 'integration_tests - run integration tests'
@echo 'docker_tests - run unit tests in docker'
2 changes: 1 addition & 1 deletion docs/api_reference/create_api_rst.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from pathlib import Path

ROOT_DIR = Path(__file__).parents[2].absolute()
PKG_DIR = ROOT_DIR / "langchain"
PKG_DIR = ROOT_DIR / "libs" / "langchain"
WRITE_FILE = Path(__file__).parent / "api_reference.rst"


Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
108 changes: 108 additions & 0 deletions libs/langchain/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck format lint test tests test_watch integration_tests docker_tests help extended_tests

# Default target executed when no arguments are given to make.
all: help

######################
# TESTING AND COVERAGE
######################

# Run unit tests and generate a coverage report.
coverage:
poetry run pytest --cov \
--cov-config=.coveragerc \
--cov-report xml \
--cov-report term-missing:skip-covered

######################
# DOCUMENTATION
######################

clean: docs_clean api_docs_clean


docs_build:
docs/.local_build.sh

docs_clean:
rm -r docs/_dist

docs_linkcheck:
poetry run linkchecker docs/_dist/docs_skeleton/ --ignore-url node_modules

api_docs_build:
poetry run python docs/api_reference/create_api_rst.py
cd docs/api_reference && poetry run make html

api_docs_clean:
rm -f docs/api_reference/api_reference.rst
cd docs/api_reference && poetry run make clean

api_docs_linkcheck:
poetry run linkchecker docs/api_reference/_build/html/index.html

# Define a variable for the test file path.
TEST_FILE ?= tests/unit_tests/

test:
poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE)

tests:
poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE)

extended_tests:
poetry run pytest --disable-socket --allow-unix-socket --only-extended tests/unit_tests

test_watch:
poetry run ptw --now . -- tests/unit_tests

integration_tests:
poetry run pytest tests/integration_tests

docker_tests:
docker build -t my-langchain-image:test .
docker run --rm my-langchain-image:test

######################
# LINTING AND FORMATTING
######################

# Define a variable for Python and notebook files.
PYTHON_FILES=.
lint format: PYTHON_FILES=.
lint_diff format_diff: PYTHON_FILES=$(shell git diff --name-only --diff-filter=d master | grep -E '\.py$$|\.ipynb$$')

lint lint_diff:
poetry run mypy $(PYTHON_FILES)
poetry run black $(PYTHON_FILES) --check
poetry run ruff .

format format_diff:
poetry run black $(PYTHON_FILES)
poetry run ruff --select I --fix $(PYTHON_FILES)

spell_check:
poetry run codespell --toml pyproject.toml

spell_fix:
poetry run codespell --toml pyproject.toml -w

######################
# HELP
######################

help:
@echo '----'
@echo 'coverage - run unit tests and generate coverage report'
@echo 'docs_build - build the documentation'
@echo 'docs_clean - clean the documentation build artifacts'
@echo 'docs_linkcheck - run linkchecker on the documentation'
@echo 'format - run code formatters'
@echo 'lint - run linters'
@echo 'test - run unit tests'
@echo 'tests - run unit tests'
@echo 'test TEST_FILE=<test_file> - run all tests in file'
@echo 'extended_tests - run only extended unit tests'
@echo 'test_watch - run unit tests in watch mode'
@echo 'integration_tests - run integration tests'
@echo 'docker_tests - run unit tests in docker'
Loading

0 comments on commit f35db9f

Please sign in to comment.