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.
Files changed (102) hide show
  1. fast_langgraph-0.1.0/.github/workflows/ci.yml +73 -0
  2. fast_langgraph-0.1.0/.github/workflows/compatibility-tests.yml +104 -0
  3. fast_langgraph-0.1.0/.github/workflows/publish.yml +231 -0
  4. fast_langgraph-0.1.0/.gitignore +214 -0
  5. fast_langgraph-0.1.0/BENCHMARK.md +206 -0
  6. fast_langgraph-0.1.0/CLAUDE.md +162 -0
  7. fast_langgraph-0.1.0/COMPATIBILITY.md +72 -0
  8. fast_langgraph-0.1.0/Cargo.lock +1496 -0
  9. fast_langgraph-0.1.0/Cargo.toml +55 -0
  10. fast_langgraph-0.1.0/LICENSE +21 -0
  11. fast_langgraph-0.1.0/MANIFEST.in +31 -0
  12. fast_langgraph-0.1.0/PKG-INFO +256 -0
  13. fast_langgraph-0.1.0/README.md +206 -0
  14. fast_langgraph-0.1.0/benches/langgraph_benchmark.rs +198 -0
  15. fast_langgraph-0.1.0/benches/performance_comparison.rs +58 -0
  16. fast_langgraph-0.1.0/docs/ARCHITECTURE.md +206 -0
  17. fast_langgraph-0.1.0/docs/DEVELOPMENT.md +105 -0
  18. fast_langgraph-0.1.0/docs/USAGE.md +361 -0
  19. fast_langgraph-0.1.0/examples/basic.rs +35 -0
  20. fast_langgraph-0.1.0/examples/basic_usage.py +47 -0
  21. fast_langgraph-0.1.0/examples/function_cache_example.py +325 -0
  22. fast_langgraph-0.1.0/examples/monkeypatch_example.py +69 -0
  23. fast_langgraph-0.1.0/examples/performance_demo.py +140 -0
  24. fast_langgraph-0.1.0/examples/profiler_example.py +318 -0
  25. fast_langgraph-0.1.0/examples/python_demo.py +80 -0
  26. fast_langgraph-0.1.0/examples/python_example.py +35 -0
  27. fast_langgraph-0.1.0/examples/python_performance_comparison.py +163 -0
  28. fast_langgraph-0.1.0/examples/simple_test.py +176 -0
  29. fast_langgraph-0.1.0/examples/state_merge_example.py +261 -0
  30. fast_langgraph-0.1.0/examples/test_monkeypatch.py +173 -0
  31. fast_langgraph-0.1.0/fast_langgraph/__init__.py +179 -0
  32. fast_langgraph-0.1.0/fast_langgraph/accelerator.py +317 -0
  33. fast_langgraph-0.1.0/fast_langgraph/algo_shims.py +159 -0
  34. fast_langgraph-0.1.0/fast_langgraph/cache_decorator.py +75 -0
  35. fast_langgraph-0.1.0/fast_langgraph/checkpoint_wrapper.py +171 -0
  36. fast_langgraph-0.1.0/fast_langgraph/executor_cache.py +193 -0
  37. fast_langgraph-0.1.0/fast_langgraph/optimizations.py +228 -0
  38. fast_langgraph-0.1.0/fast_langgraph/profiler.py +313 -0
  39. fast_langgraph-0.1.0/fast_langgraph/py.typed +2 -0
  40. fast_langgraph-0.1.0/fast_langgraph/shim.py +327 -0
  41. fast_langgraph-0.1.0/pyproject.toml +202 -0
  42. fast_langgraph-0.1.0/scripts/benchmark_all_features.py +456 -0
  43. fast_langgraph-0.1.0/scripts/benchmark_complex_structures.py +719 -0
  44. fast_langgraph-0.1.0/scripts/benchmark_new_features.py +273 -0
  45. fast_langgraph-0.1.0/scripts/benchmark_optimizations.py +344 -0
  46. fast_langgraph-0.1.0/scripts/benchmark_rust_channels.py +274 -0
  47. fast_langgraph-0.1.0/scripts/benchmark_rust_strengths.py +574 -0
  48. fast_langgraph-0.1.0/scripts/benchmark_shimming_features.py +360 -0
  49. fast_langgraph-0.1.0/scripts/compare_performance.py +241 -0
  50. fast_langgraph-0.1.0/scripts/generate_benchmark_report.py +935 -0
  51. fast_langgraph-0.1.0/scripts/profile_langgraph.py +368 -0
  52. fast_langgraph-0.1.0/scripts/simple_comparison.py +158 -0
  53. fast_langgraph-0.1.0/scripts/test_compatibility.py +775 -0
  54. fast_langgraph-0.1.0/scripts/test_fast_channels.py +194 -0
  55. fast_langgraph-0.1.0/scripts/test_langgraph_compatibility.sh +284 -0
  56. fast_langgraph-0.1.0/src/channel_manager.rs +194 -0
  57. fast_langgraph-0.1.0/src/channels.rs +318 -0
  58. fast_langgraph-0.1.0/src/checkpoint.rs +433 -0
  59. fast_langgraph-0.1.0/src/checkpoint_sqlite.rs +412 -0
  60. fast_langgraph-0.1.0/src/conditional.rs +234 -0
  61. fast_langgraph-0.1.0/src/core/channel.rs +312 -0
  62. fast_langgraph-0.1.0/src/core/edge.rs +199 -0
  63. fast_langgraph-0.1.0/src/core/executor.rs +461 -0
  64. fast_langgraph-0.1.0/src/core/mod.rs +23 -0
  65. fast_langgraph-0.1.0/src/core/node.rs +303 -0
  66. fast_langgraph-0.1.0/src/core/state.rs +257 -0
  67. fast_langgraph-0.1.0/src/errors.rs +51 -0
  68. fast_langgraph-0.1.0/src/executor.rs +342 -0
  69. fast_langgraph-0.1.0/src/fast_channels.rs +209 -0
  70. fast_langgraph-0.1.0/src/function_cache.rs +444 -0
  71. fast_langgraph-0.1.0/src/graph.rs +454 -0
  72. fast_langgraph-0.1.0/src/hybrid.rs +352 -0
  73. fast_langgraph-0.1.0/src/lib.rs +50 -0
  74. fast_langgraph-0.1.0/src/llm_cache.rs +389 -0
  75. fast_langgraph-0.1.0/src/pregel.rs +349 -0
  76. fast_langgraph-0.1.0/src/pregel_algo.rs +234 -0
  77. fast_langgraph-0.1.0/src/pregel_loop.rs +452 -0
  78. fast_langgraph-0.1.0/src/pregel_node.rs +236 -0
  79. fast_langgraph-0.1.0/src/python.rs +1430 -0
  80. fast_langgraph-0.1.0/src/rust_checkpoint.rs +283 -0
  81. fast_langgraph-0.1.0/src/send.rs +178 -0
  82. fast_langgraph-0.1.0/src/state_merge.rs +247 -0
  83. fast_langgraph-0.1.0/src/stream_output.rs +292 -0
  84. fast_langgraph-0.1.0/test_integration.py +139 -0
  85. fast_langgraph-0.1.0/tests/benchmark_performance.py +337 -0
  86. fast_langgraph-0.1.0/tests/python_integration_test.py +84 -0
  87. fast_langgraph-0.1.0/tests/python_package_test.py +62 -0
  88. fast_langgraph-0.1.0/tests/run_all_tests.py +132 -0
  89. fast_langgraph-0.1.0/tests/test_channels.py +162 -0
  90. fast_langgraph-0.1.0/tests/test_channels_direct.py +176 -0
  91. fast_langgraph-0.1.0/tests/test_function_cache.py +402 -0
  92. fast_langgraph-0.1.0/tests/test_integration.py +371 -0
  93. fast_langgraph-0.1.0/tests/test_integration_full.py +335 -0
  94. fast_langgraph-0.1.0/tests/test_langgraph_compatibility.py +384 -0
  95. fast_langgraph-0.1.0/tests/test_llm_cache.py +201 -0
  96. fast_langgraph-0.1.0/tests/test_package.py +95 -0
  97. fast_langgraph-0.1.0/tests/test_pregel.py +313 -0
  98. fast_langgraph-0.1.0/tests/test_profiler.py +409 -0
  99. fast_langgraph-0.1.0/tests/test_shim.py +107 -0
  100. fast_langgraph-0.1.0/tests/test_sqlite_checkpoint.py +188 -0
  101. fast_langgraph-0.1.0/tests/test_state_merge.py +288 -0
  102. 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/