fast-langgraph 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fast_langgraph-0.1.0/.github/workflows/ci.yml +73 -0
- fast_langgraph-0.1.0/.github/workflows/compatibility-tests.yml +104 -0
- fast_langgraph-0.1.0/.github/workflows/publish.yml +231 -0
- fast_langgraph-0.1.0/.gitignore +214 -0
- fast_langgraph-0.1.0/BENCHMARK.md +206 -0
- fast_langgraph-0.1.0/CLAUDE.md +162 -0
- fast_langgraph-0.1.0/COMPATIBILITY.md +72 -0
- fast_langgraph-0.1.0/Cargo.lock +1496 -0
- fast_langgraph-0.1.0/Cargo.toml +55 -0
- fast_langgraph-0.1.0/LICENSE +21 -0
- fast_langgraph-0.1.0/MANIFEST.in +31 -0
- fast_langgraph-0.1.0/PKG-INFO +256 -0
- fast_langgraph-0.1.0/README.md +206 -0
- fast_langgraph-0.1.0/benches/langgraph_benchmark.rs +198 -0
- fast_langgraph-0.1.0/benches/performance_comparison.rs +58 -0
- fast_langgraph-0.1.0/docs/ARCHITECTURE.md +206 -0
- fast_langgraph-0.1.0/docs/DEVELOPMENT.md +105 -0
- fast_langgraph-0.1.0/docs/USAGE.md +361 -0
- fast_langgraph-0.1.0/examples/basic.rs +35 -0
- fast_langgraph-0.1.0/examples/basic_usage.py +47 -0
- fast_langgraph-0.1.0/examples/function_cache_example.py +325 -0
- fast_langgraph-0.1.0/examples/monkeypatch_example.py +69 -0
- fast_langgraph-0.1.0/examples/performance_demo.py +140 -0
- fast_langgraph-0.1.0/examples/profiler_example.py +318 -0
- fast_langgraph-0.1.0/examples/python_demo.py +80 -0
- fast_langgraph-0.1.0/examples/python_example.py +35 -0
- fast_langgraph-0.1.0/examples/python_performance_comparison.py +163 -0
- fast_langgraph-0.1.0/examples/simple_test.py +176 -0
- fast_langgraph-0.1.0/examples/state_merge_example.py +261 -0
- fast_langgraph-0.1.0/examples/test_monkeypatch.py +173 -0
- fast_langgraph-0.1.0/fast_langgraph/__init__.py +179 -0
- fast_langgraph-0.1.0/fast_langgraph/accelerator.py +317 -0
- fast_langgraph-0.1.0/fast_langgraph/algo_shims.py +159 -0
- fast_langgraph-0.1.0/fast_langgraph/cache_decorator.py +75 -0
- fast_langgraph-0.1.0/fast_langgraph/checkpoint_wrapper.py +171 -0
- fast_langgraph-0.1.0/fast_langgraph/executor_cache.py +193 -0
- fast_langgraph-0.1.0/fast_langgraph/optimizations.py +228 -0
- fast_langgraph-0.1.0/fast_langgraph/profiler.py +313 -0
- fast_langgraph-0.1.0/fast_langgraph/py.typed +2 -0
- fast_langgraph-0.1.0/fast_langgraph/shim.py +327 -0
- fast_langgraph-0.1.0/pyproject.toml +202 -0
- fast_langgraph-0.1.0/scripts/benchmark_all_features.py +456 -0
- fast_langgraph-0.1.0/scripts/benchmark_complex_structures.py +719 -0
- fast_langgraph-0.1.0/scripts/benchmark_new_features.py +273 -0
- fast_langgraph-0.1.0/scripts/benchmark_optimizations.py +344 -0
- fast_langgraph-0.1.0/scripts/benchmark_rust_channels.py +274 -0
- fast_langgraph-0.1.0/scripts/benchmark_rust_strengths.py +574 -0
- fast_langgraph-0.1.0/scripts/benchmark_shimming_features.py +360 -0
- fast_langgraph-0.1.0/scripts/compare_performance.py +241 -0
- fast_langgraph-0.1.0/scripts/generate_benchmark_report.py +935 -0
- fast_langgraph-0.1.0/scripts/profile_langgraph.py +368 -0
- fast_langgraph-0.1.0/scripts/simple_comparison.py +158 -0
- fast_langgraph-0.1.0/scripts/test_compatibility.py +775 -0
- fast_langgraph-0.1.0/scripts/test_fast_channels.py +194 -0
- fast_langgraph-0.1.0/scripts/test_langgraph_compatibility.sh +284 -0
- fast_langgraph-0.1.0/src/channel_manager.rs +194 -0
- fast_langgraph-0.1.0/src/channels.rs +318 -0
- fast_langgraph-0.1.0/src/checkpoint.rs +433 -0
- fast_langgraph-0.1.0/src/checkpoint_sqlite.rs +412 -0
- fast_langgraph-0.1.0/src/conditional.rs +234 -0
- fast_langgraph-0.1.0/src/core/channel.rs +312 -0
- fast_langgraph-0.1.0/src/core/edge.rs +199 -0
- fast_langgraph-0.1.0/src/core/executor.rs +461 -0
- fast_langgraph-0.1.0/src/core/mod.rs +23 -0
- fast_langgraph-0.1.0/src/core/node.rs +303 -0
- fast_langgraph-0.1.0/src/core/state.rs +257 -0
- fast_langgraph-0.1.0/src/errors.rs +51 -0
- fast_langgraph-0.1.0/src/executor.rs +342 -0
- fast_langgraph-0.1.0/src/fast_channels.rs +209 -0
- fast_langgraph-0.1.0/src/function_cache.rs +444 -0
- fast_langgraph-0.1.0/src/graph.rs +454 -0
- fast_langgraph-0.1.0/src/hybrid.rs +352 -0
- fast_langgraph-0.1.0/src/lib.rs +50 -0
- fast_langgraph-0.1.0/src/llm_cache.rs +389 -0
- fast_langgraph-0.1.0/src/pregel.rs +349 -0
- fast_langgraph-0.1.0/src/pregel_algo.rs +234 -0
- fast_langgraph-0.1.0/src/pregel_loop.rs +452 -0
- fast_langgraph-0.1.0/src/pregel_node.rs +236 -0
- fast_langgraph-0.1.0/src/python.rs +1430 -0
- fast_langgraph-0.1.0/src/rust_checkpoint.rs +283 -0
- fast_langgraph-0.1.0/src/send.rs +178 -0
- fast_langgraph-0.1.0/src/state_merge.rs +247 -0
- fast_langgraph-0.1.0/src/stream_output.rs +292 -0
- fast_langgraph-0.1.0/test_integration.py +139 -0
- fast_langgraph-0.1.0/tests/benchmark_performance.py +337 -0
- fast_langgraph-0.1.0/tests/python_integration_test.py +84 -0
- fast_langgraph-0.1.0/tests/python_package_test.py +62 -0
- fast_langgraph-0.1.0/tests/run_all_tests.py +132 -0
- fast_langgraph-0.1.0/tests/test_channels.py +162 -0
- fast_langgraph-0.1.0/tests/test_channels_direct.py +176 -0
- fast_langgraph-0.1.0/tests/test_function_cache.py +402 -0
- fast_langgraph-0.1.0/tests/test_integration.py +371 -0
- fast_langgraph-0.1.0/tests/test_integration_full.py +335 -0
- fast_langgraph-0.1.0/tests/test_langgraph_compatibility.py +384 -0
- fast_langgraph-0.1.0/tests/test_llm_cache.py +201 -0
- fast_langgraph-0.1.0/tests/test_package.py +95 -0
- fast_langgraph-0.1.0/tests/test_pregel.py +313 -0
- fast_langgraph-0.1.0/tests/test_profiler.py +409 -0
- fast_langgraph-0.1.0/tests/test_shim.py +107 -0
- fast_langgraph-0.1.0/tests/test_sqlite_checkpoint.py +188 -0
- fast_langgraph-0.1.0/tests/test_state_merge.py +288 -0
- fast_langgraph-0.1.0/uv.lock +2596 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
CARGO_TERM_COLOR: always
|
|
11
|
+
RUST_BACKTRACE: 1
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
rust:
|
|
15
|
+
name: Rust
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Install Rust
|
|
22
|
+
uses: dtolnay/rust-toolchain@stable
|
|
23
|
+
with:
|
|
24
|
+
components: rustfmt, clippy
|
|
25
|
+
|
|
26
|
+
- name: Cache Rust
|
|
27
|
+
uses: Swatinem/rust-cache@v2
|
|
28
|
+
|
|
29
|
+
- name: Check formatting
|
|
30
|
+
run: cargo fmt -- --check
|
|
31
|
+
|
|
32
|
+
- name: Clippy
|
|
33
|
+
run: cargo clippy -- -D warnings
|
|
34
|
+
|
|
35
|
+
- name: Build
|
|
36
|
+
run: cargo build --verbose
|
|
37
|
+
|
|
38
|
+
python:
|
|
39
|
+
name: Python
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
|
|
45
|
+
- name: Install uv
|
|
46
|
+
uses: astral-sh/setup-uv@v4
|
|
47
|
+
with:
|
|
48
|
+
enable-cache: true
|
|
49
|
+
|
|
50
|
+
- name: Set up Python
|
|
51
|
+
run: uv python install 3.12
|
|
52
|
+
|
|
53
|
+
- name: Install Rust
|
|
54
|
+
uses: dtolnay/rust-toolchain@stable
|
|
55
|
+
|
|
56
|
+
- name: Cache Rust
|
|
57
|
+
uses: Swatinem/rust-cache@v2
|
|
58
|
+
|
|
59
|
+
- name: Install dependencies
|
|
60
|
+
run: uv sync --all-extras
|
|
61
|
+
|
|
62
|
+
- name: Build extension
|
|
63
|
+
run: uv run maturin develop --release
|
|
64
|
+
|
|
65
|
+
- name: Check formatting (black)
|
|
66
|
+
run: uv run black --check fast_langgraph/ tests/
|
|
67
|
+
|
|
68
|
+
- name: Lint (ruff)
|
|
69
|
+
run: uv run ruff check fast_langgraph/ tests/
|
|
70
|
+
|
|
71
|
+
- name: Run tests
|
|
72
|
+
run: uv run pytest tests/ -v
|
|
73
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
name: LangGraph Compatibility
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
langgraph_branch:
|
|
11
|
+
description: 'LangGraph branch to test against'
|
|
12
|
+
required: false
|
|
13
|
+
default: 'main'
|
|
14
|
+
|
|
15
|
+
env:
|
|
16
|
+
RUST_BACKTRACE: 1
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
compatibility:
|
|
20
|
+
name: LangGraph Compatibility
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v4
|
|
28
|
+
with:
|
|
29
|
+
enable-cache: true
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install 3.12
|
|
33
|
+
|
|
34
|
+
- name: Install Rust
|
|
35
|
+
uses: dtolnay/rust-toolchain@stable
|
|
36
|
+
|
|
37
|
+
- name: Cache Rust
|
|
38
|
+
uses: Swatinem/rust-cache@v2
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: uv sync --all-extras
|
|
42
|
+
|
|
43
|
+
- name: Build extension
|
|
44
|
+
run: uv run maturin develop --release
|
|
45
|
+
|
|
46
|
+
- name: Run compatibility tests
|
|
47
|
+
env:
|
|
48
|
+
LANGGRAPH_BRANCH: ${{ github.event.inputs.langgraph_branch || 'main' }}
|
|
49
|
+
run: |
|
|
50
|
+
# Run LangGraph tests with Fast LangGraph shim applied
|
|
51
|
+
# The script automatically ignores tests with complex fixture requirements
|
|
52
|
+
# Generates COMPATIBILITY.md report
|
|
53
|
+
python scripts/test_compatibility.py --branch $LANGGRAPH_BRANCH -v --keep -- -v -x
|
|
54
|
+
|
|
55
|
+
- name: Upload compatibility report
|
|
56
|
+
if: always()
|
|
57
|
+
uses: actions/upload-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: compatibility-report
|
|
60
|
+
path: COMPATIBILITY.md
|
|
61
|
+
retention-days: 30
|
|
62
|
+
|
|
63
|
+
- name: Upload test environment
|
|
64
|
+
if: failure()
|
|
65
|
+
uses: actions/upload-artifact@v4
|
|
66
|
+
with:
|
|
67
|
+
name: test-environment
|
|
68
|
+
path: .langgraph-test/
|
|
69
|
+
retention-days: 7
|
|
70
|
+
|
|
71
|
+
notify-failure:
|
|
72
|
+
name: Notify on Failure
|
|
73
|
+
needs: compatibility
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
if: failure() && github.event_name == 'schedule'
|
|
76
|
+
steps:
|
|
77
|
+
- name: Create Issue
|
|
78
|
+
uses: actions/github-script@v7
|
|
79
|
+
with:
|
|
80
|
+
script: |
|
|
81
|
+
const issues = await github.rest.issues.listForRepo({
|
|
82
|
+
owner: context.repo.owner,
|
|
83
|
+
repo: context.repo.repo,
|
|
84
|
+
labels: 'compatibility,automated',
|
|
85
|
+
state: 'open'
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Don't create duplicate issues
|
|
89
|
+
if (issues.data.length > 0) {
|
|
90
|
+
console.log('Issue already exists, skipping creation');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
github.rest.issues.create({
|
|
95
|
+
owner: context.repo.owner,
|
|
96
|
+
repo: context.repo.repo,
|
|
97
|
+
title: 'LangGraph Compatibility Test Failed',
|
|
98
|
+
body: `The scheduled compatibility test failed on ${new Date().toISOString()}.
|
|
99
|
+
|
|
100
|
+
[View workflow run](${context.payload.repository.html_url}/actions/runs/${context.runId})
|
|
101
|
+
|
|
102
|
+
This may indicate breaking changes in LangGraph.`,
|
|
103
|
+
labels: ['bug', 'compatibility', 'automated']
|
|
104
|
+
});
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
publish_to_pypi:
|
|
10
|
+
description: 'Publish to PyPI (false for dry run)'
|
|
11
|
+
required: true
|
|
12
|
+
default: 'false'
|
|
13
|
+
type: boolean
|
|
14
|
+
|
|
15
|
+
env:
|
|
16
|
+
PACKAGE_NAME: fast_langgraph
|
|
17
|
+
PYTHON_VERSION: '3.12'
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
# Build wheels for Linux
|
|
21
|
+
linux:
|
|
22
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
23
|
+
strategy:
|
|
24
|
+
matrix:
|
|
25
|
+
platform:
|
|
26
|
+
- runner: ubuntu-latest
|
|
27
|
+
target: x86_64
|
|
28
|
+
- runner: ubuntu-latest
|
|
29
|
+
target: aarch64
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
36
|
+
|
|
37
|
+
- name: Build wheels
|
|
38
|
+
uses: PyO3/maturin-action@v1
|
|
39
|
+
with:
|
|
40
|
+
target: ${{ matrix.platform.target }}
|
|
41
|
+
args: --release --out dist --interpreter 3.9 3.10 3.11 3.12 3.13
|
|
42
|
+
sccache: 'true'
|
|
43
|
+
manylinux: auto
|
|
44
|
+
|
|
45
|
+
- name: Upload wheels
|
|
46
|
+
uses: actions/upload-artifact@v4
|
|
47
|
+
with:
|
|
48
|
+
name: wheels-linux-${{ matrix.platform.target }}
|
|
49
|
+
path: dist
|
|
50
|
+
|
|
51
|
+
# Build wheels for Linux musllinux
|
|
52
|
+
musllinux:
|
|
53
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
54
|
+
strategy:
|
|
55
|
+
matrix:
|
|
56
|
+
platform:
|
|
57
|
+
- runner: ubuntu-latest
|
|
58
|
+
target: x86_64
|
|
59
|
+
- runner: ubuntu-latest
|
|
60
|
+
target: aarch64
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v4
|
|
63
|
+
|
|
64
|
+
- uses: actions/setup-python@v5
|
|
65
|
+
with:
|
|
66
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
67
|
+
|
|
68
|
+
- name: Build wheels
|
|
69
|
+
uses: PyO3/maturin-action@v1
|
|
70
|
+
with:
|
|
71
|
+
target: ${{ matrix.platform.target }}
|
|
72
|
+
args: --release --out dist --interpreter 3.9 3.10 3.11 3.12 3.13
|
|
73
|
+
sccache: 'true'
|
|
74
|
+
manylinux: musllinux_1_2
|
|
75
|
+
|
|
76
|
+
- name: Upload wheels
|
|
77
|
+
uses: actions/upload-artifact@v4
|
|
78
|
+
with:
|
|
79
|
+
name: wheels-musllinux-${{ matrix.platform.target }}
|
|
80
|
+
path: dist
|
|
81
|
+
|
|
82
|
+
# Build wheels for Windows
|
|
83
|
+
windows:
|
|
84
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
85
|
+
strategy:
|
|
86
|
+
matrix:
|
|
87
|
+
platform:
|
|
88
|
+
- runner: windows-latest
|
|
89
|
+
target: x64
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v4
|
|
92
|
+
|
|
93
|
+
- uses: actions/setup-python@v5
|
|
94
|
+
with:
|
|
95
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
96
|
+
architecture: ${{ matrix.platform.target }}
|
|
97
|
+
|
|
98
|
+
- name: Build wheels
|
|
99
|
+
uses: PyO3/maturin-action@v1
|
|
100
|
+
with:
|
|
101
|
+
target: ${{ matrix.platform.target }}
|
|
102
|
+
args: --release --out dist --interpreter 3.9 3.10 3.11 3.12 3.13
|
|
103
|
+
sccache: 'true'
|
|
104
|
+
|
|
105
|
+
- name: Upload wheels
|
|
106
|
+
uses: actions/upload-artifact@v4
|
|
107
|
+
with:
|
|
108
|
+
name: wheels-windows-${{ matrix.platform.target }}
|
|
109
|
+
path: dist
|
|
110
|
+
|
|
111
|
+
# Build wheels for macOS
|
|
112
|
+
macos:
|
|
113
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
114
|
+
strategy:
|
|
115
|
+
matrix:
|
|
116
|
+
platform:
|
|
117
|
+
- runner: macos-15-intel
|
|
118
|
+
target: x86_64
|
|
119
|
+
- runner: macos-14
|
|
120
|
+
target: aarch64
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@v4
|
|
123
|
+
|
|
124
|
+
- uses: actions/setup-python@v5
|
|
125
|
+
with:
|
|
126
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
127
|
+
|
|
128
|
+
- name: Build wheels
|
|
129
|
+
uses: PyO3/maturin-action@v1
|
|
130
|
+
with:
|
|
131
|
+
target: ${{ matrix.platform.target }}
|
|
132
|
+
args: --release --out dist --interpreter 3.9 3.10 3.11 3.12 3.13
|
|
133
|
+
sccache: 'true'
|
|
134
|
+
|
|
135
|
+
- name: Upload wheels
|
|
136
|
+
uses: actions/upload-artifact@v4
|
|
137
|
+
with:
|
|
138
|
+
name: wheels-macos-${{ matrix.platform.target }}
|
|
139
|
+
path: dist
|
|
140
|
+
|
|
141
|
+
# Build source distribution
|
|
142
|
+
sdist:
|
|
143
|
+
runs-on: ubuntu-latest
|
|
144
|
+
steps:
|
|
145
|
+
- uses: actions/checkout@v4
|
|
146
|
+
|
|
147
|
+
- name: Build sdist
|
|
148
|
+
uses: PyO3/maturin-action@v1
|
|
149
|
+
with:
|
|
150
|
+
command: sdist
|
|
151
|
+
args: --out dist
|
|
152
|
+
|
|
153
|
+
- name: Upload sdist
|
|
154
|
+
uses: actions/upload-artifact@v4
|
|
155
|
+
with:
|
|
156
|
+
name: wheels-sdist
|
|
157
|
+
path: dist
|
|
158
|
+
|
|
159
|
+
# Publish to PyPI
|
|
160
|
+
publish:
|
|
161
|
+
name: Publish to PyPI
|
|
162
|
+
runs-on: ubuntu-latest
|
|
163
|
+
needs: [linux, musllinux, windows, macos, sdist]
|
|
164
|
+
permissions:
|
|
165
|
+
id-token: write # Required for trusted publishing
|
|
166
|
+
environment:
|
|
167
|
+
name: pypi
|
|
168
|
+
url: https://pypi.org/p/fast-langgraph
|
|
169
|
+
# Only publish on tag push or manual trigger with publish_to_pypi=true
|
|
170
|
+
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish_to_pypi == 'true')
|
|
171
|
+
steps:
|
|
172
|
+
- name: Download all artifacts
|
|
173
|
+
uses: actions/download-artifact@v4
|
|
174
|
+
with:
|
|
175
|
+
pattern: wheels-*
|
|
176
|
+
path: dist
|
|
177
|
+
merge-multiple: true
|
|
178
|
+
|
|
179
|
+
- name: List distribution files
|
|
180
|
+
run: ls -lh dist/
|
|
181
|
+
|
|
182
|
+
- name: Publish to PyPI
|
|
183
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
184
|
+
with:
|
|
185
|
+
verbose: true
|
|
186
|
+
|
|
187
|
+
# Create GitHub Release
|
|
188
|
+
release:
|
|
189
|
+
name: Create GitHub Release
|
|
190
|
+
runs-on: ubuntu-latest
|
|
191
|
+
needs: [linux, musllinux, windows, macos, sdist]
|
|
192
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
193
|
+
permissions:
|
|
194
|
+
contents: write
|
|
195
|
+
steps:
|
|
196
|
+
- uses: actions/checkout@v4
|
|
197
|
+
|
|
198
|
+
- name: Download all artifacts
|
|
199
|
+
uses: actions/download-artifact@v4
|
|
200
|
+
with:
|
|
201
|
+
pattern: wheels-*
|
|
202
|
+
path: dist
|
|
203
|
+
merge-multiple: true
|
|
204
|
+
|
|
205
|
+
- name: Get version from tag
|
|
206
|
+
id: tag
|
|
207
|
+
run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
208
|
+
|
|
209
|
+
- name: Create Release
|
|
210
|
+
uses: softprops/action-gh-release@v1
|
|
211
|
+
with:
|
|
212
|
+
name: Release v${{ steps.tag.outputs.version }}
|
|
213
|
+
body: |
|
|
214
|
+
## Fast LangGraph v${{ steps.tag.outputs.version }}
|
|
215
|
+
|
|
216
|
+
### Installation
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
pip install fast-langgraph==${{ steps.tag.outputs.version }}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Artifacts
|
|
223
|
+
|
|
224
|
+
Pre-built wheels for:
|
|
225
|
+
- Linux (x86_64, aarch64, musllinux)
|
|
226
|
+
- macOS (x86_64, arm64/Apple Silicon)
|
|
227
|
+
- Windows (x86_64)
|
|
228
|
+
- Python 3.9, 3.10, 3.11, 3.12, 3.13
|
|
229
|
+
files: dist/*
|
|
230
|
+
draft: false
|
|
231
|
+
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.pyc
|
|
6
|
+
*.pyo
|
|
7
|
+
*.pyd
|
|
8
|
+
.Python
|
|
9
|
+
*.so
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging
|
|
12
|
+
.Python
|
|
13
|
+
build/
|
|
14
|
+
develop-eggs/
|
|
15
|
+
dist/
|
|
16
|
+
downloads/
|
|
17
|
+
eggs/
|
|
18
|
+
.eggs/
|
|
19
|
+
lib/
|
|
20
|
+
lib64/
|
|
21
|
+
parts/
|
|
22
|
+
sdist/
|
|
23
|
+
var/
|
|
24
|
+
wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
# Usually these files are written by a python script from a template
|
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
pytestdebug.log
|
|
54
|
+
|
|
55
|
+
# Translations
|
|
56
|
+
*.mo
|
|
57
|
+
*.pot
|
|
58
|
+
|
|
59
|
+
# Django stuff:
|
|
60
|
+
*.log
|
|
61
|
+
local_settings.py
|
|
62
|
+
db.sqlite3
|
|
63
|
+
db.sqlite3-journal
|
|
64
|
+
|
|
65
|
+
# Flask stuff:
|
|
66
|
+
instance/
|
|
67
|
+
.webassets-cache
|
|
68
|
+
|
|
69
|
+
# Scrapy stuff:
|
|
70
|
+
.scrapy
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
|
|
75
|
+
# PyBuilder
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
.python-version
|
|
87
|
+
|
|
88
|
+
# pipenv
|
|
89
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
90
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
91
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
92
|
+
# install all needed dependencies.
|
|
93
|
+
#Pipfile.lock
|
|
94
|
+
|
|
95
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
96
|
+
__pypackages__/
|
|
97
|
+
|
|
98
|
+
# Celery stuff
|
|
99
|
+
celerybeat-schedule
|
|
100
|
+
celerybeat.pid
|
|
101
|
+
|
|
102
|
+
# SageMath parsed files
|
|
103
|
+
*.sage.py
|
|
104
|
+
|
|
105
|
+
# Environments
|
|
106
|
+
.env
|
|
107
|
+
.venv
|
|
108
|
+
env/
|
|
109
|
+
venv/
|
|
110
|
+
ENV/
|
|
111
|
+
env.bak/
|
|
112
|
+
venv.bak/
|
|
113
|
+
|
|
114
|
+
# Spyder project settings
|
|
115
|
+
.spyderproject
|
|
116
|
+
.spyproject
|
|
117
|
+
|
|
118
|
+
# Rope project settings
|
|
119
|
+
.ropeproject
|
|
120
|
+
|
|
121
|
+
# mkdocs documentation
|
|
122
|
+
/site
|
|
123
|
+
|
|
124
|
+
# mypy
|
|
125
|
+
.mypy_cache/
|
|
126
|
+
.dmypy.json
|
|
127
|
+
dmypy.json
|
|
128
|
+
|
|
129
|
+
# Pyre type checker
|
|
130
|
+
.pyre/
|
|
131
|
+
|
|
132
|
+
# IDEs
|
|
133
|
+
.idea/
|
|
134
|
+
.vscode/
|
|
135
|
+
*.swp
|
|
136
|
+
*.swo
|
|
137
|
+
*~
|
|
138
|
+
|
|
139
|
+
# OS generated files
|
|
140
|
+
.DS_Store
|
|
141
|
+
.DS_Store?
|
|
142
|
+
._*
|
|
143
|
+
.Spotlight-V100
|
|
144
|
+
.Trashes
|
|
145
|
+
ehthumbs.db
|
|
146
|
+
Thumbs.db
|
|
147
|
+
|
|
148
|
+
# Rust
|
|
149
|
+
target/
|
|
150
|
+
**/*.rs.bk
|
|
151
|
+
Cargo.lock # Only ignore if not in a workspace
|
|
152
|
+
|
|
153
|
+
# Build artifacts
|
|
154
|
+
dist/
|
|
155
|
+
build/
|
|
156
|
+
*.egg-info/
|
|
157
|
+
|
|
158
|
+
# Environment files
|
|
159
|
+
.env
|
|
160
|
+
.venv/
|
|
161
|
+
|
|
162
|
+
# Test files
|
|
163
|
+
.pytest_cache/
|
|
164
|
+
.coverage
|
|
165
|
+
htmlcov/
|
|
166
|
+
|
|
167
|
+
# Documentation
|
|
168
|
+
docs/_build/
|
|
169
|
+
|
|
170
|
+
# Temporary files
|
|
171
|
+
*.tmp
|
|
172
|
+
*.temp
|
|
173
|
+
temp/
|
|
174
|
+
|
|
175
|
+
# Log files
|
|
176
|
+
*.log
|
|
177
|
+
|
|
178
|
+
# Database files
|
|
179
|
+
*.sqlite3
|
|
180
|
+
*.db
|
|
181
|
+
|
|
182
|
+
# Configuration files
|
|
183
|
+
*.cfg
|
|
184
|
+
*.ini
|
|
185
|
+
|
|
186
|
+
# Assets
|
|
187
|
+
assets/*
|
|
188
|
+
|
|
189
|
+
# Claude artifacts
|
|
190
|
+
.claude/
|
|
191
|
+
*.claude
|
|
192
|
+
|
|
193
|
+
# Profiling
|
|
194
|
+
*.prof
|
|
195
|
+
profile_output
|
|
196
|
+
massif.out.*
|
|
197
|
+
callgrind.out.*
|
|
198
|
+
perf.data*
|
|
199
|
+
|
|
200
|
+
# Backup files
|
|
201
|
+
*.bak
|
|
202
|
+
*.backup
|
|
203
|
+
|
|
204
|
+
# Temporary files
|
|
205
|
+
*.tmp
|
|
206
|
+
*.temp
|
|
207
|
+
*.log
|
|
208
|
+
|
|
209
|
+
# Local configuration
|
|
210
|
+
local_config.py
|
|
211
|
+
.env.local
|
|
212
|
+
|
|
213
|
+
# LangGraph test directory
|
|
214
|
+
.langgraph-test/langgraph/
|