langgraph_openai_serve 0.0.2__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 (78) hide show
  1. langgraph_openai_serve-0.0.2/.dockerignore +22 -0
  2. langgraph_openai_serve-0.0.2/.editorconfig +24 -0
  3. langgraph_openai_serve-0.0.2/.github/actions/setup-python/action.yml +21 -0
  4. langgraph_openai_serve-0.0.2/.github/workflows/doc_deploy.yml +27 -0
  5. langgraph_openai_serve-0.0.2/.github/workflows/doc_test.yml +25 -0
  6. langgraph_openai_serve-0.0.2/.github/workflows/docker_push.yml +35 -0
  7. langgraph_openai_serve-0.0.2/.github/workflows/lint.yml +22 -0
  8. langgraph_openai_serve-0.0.2/.github/workflows/package.yml +75 -0
  9. langgraph_openai_serve-0.0.2/.github/workflows/test.yml +58 -0
  10. langgraph_openai_serve-0.0.2/.gitignore +273 -0
  11. langgraph_openai_serve-0.0.2/.pre-commit-config.yaml +51 -0
  12. langgraph_openai_serve-0.0.2/.python-version +1 -0
  13. langgraph_openai_serve-0.0.2/.vscode/extensions.json +16 -0
  14. langgraph_openai_serve-0.0.2/.vscode/settings.json +32 -0
  15. langgraph_openai_serve-0.0.2/CHANGELOG.md +17 -0
  16. langgraph_openai_serve-0.0.2/CONTRIBUTING.md +126 -0
  17. langgraph_openai_serve-0.0.2/LICENSE +21 -0
  18. langgraph_openai_serve-0.0.2/Makefile +171 -0
  19. langgraph_openai_serve-0.0.2/PKG-INFO +154 -0
  20. langgraph_openai_serve-0.0.2/README.md +128 -0
  21. langgraph_openai_serve-0.0.2/demo/__init__.py +0 -0
  22. langgraph_openai_serve-0.0.2/demo/app.py +112 -0
  23. langgraph_openai_serve-0.0.2/demo/loggers/__init__.py +1 -0
  24. langgraph_openai_serve-0.0.2/demo/loggers/configs/__init__.py +1 -0
  25. langgraph_openai_serve-0.0.2/demo/loggers/configs/default.py +72 -0
  26. langgraph_openai_serve-0.0.2/demo/loggers/configs/uvicorn.py +53 -0
  27. langgraph_openai_serve-0.0.2/demo/loggers/filters.py +104 -0
  28. langgraph_openai_serve-0.0.2/demo/loggers/formatters.py +29 -0
  29. langgraph_openai_serve-0.0.2/demo/loggers/setup.py +43 -0
  30. langgraph_openai_serve-0.0.2/demo/placeholder.py +105 -0
  31. langgraph_openai_serve-0.0.2/demo/utils.py +56 -0
  32. langgraph_openai_serve-0.0.2/docker/Dockerfile +123 -0
  33. langgraph_openai_serve-0.0.2/docker/entrypoint.sh +4 -0
  34. langgraph_openai_serve-0.0.2/docker-compose.yml +57 -0
  35. langgraph_openai_serve-0.0.2/docs/explanation/architecture.md +163 -0
  36. langgraph_openai_serve-0.0.2/docs/explanation/index.md +9 -0
  37. langgraph_openai_serve-0.0.2/docs/explanation/langgraph-integration.md +236 -0
  38. langgraph_openai_serve-0.0.2/docs/explanation/openai-compatibility.md +237 -0
  39. langgraph_openai_serve-0.0.2/docs/how-to-guides/authentication.md +274 -0
  40. langgraph_openai_serve-0.0.2/docs/how-to-guides/docker.md +211 -0
  41. langgraph_openai_serve-0.0.2/docs/how-to-guides/index.md +8 -0
  42. langgraph_openai_serve-0.0.2/docs/index.md +41 -0
  43. langgraph_openai_serve-0.0.2/docs/reference.md +5 -0
  44. langgraph_openai_serve-0.0.2/docs/stylesheets/custom.css +67 -0
  45. langgraph_openai_serve-0.0.2/docs/tutorials/custom-graphs.md +178 -0
  46. langgraph_openai_serve-0.0.2/docs/tutorials/getting-started.md +148 -0
  47. langgraph_openai_serve-0.0.2/docs/tutorials/index.md +9 -0
  48. langgraph_openai_serve-0.0.2/docs/tutorials/makefile.md +25 -0
  49. langgraph_openai_serve-0.0.2/docs/tutorials/openai-clients.md +163 -0
  50. langgraph_openai_serve-0.0.2/mkdocs.yml +101 -0
  51. langgraph_openai_serve-0.0.2/notebooks/custom_api.ipynb +285 -0
  52. langgraph_openai_serve-0.0.2/pyproject.toml +197 -0
  53. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/__init__.py +10 -0
  54. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/__init__.py +0 -0
  55. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/chat/__init__.py +0 -0
  56. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/chat/service.py +188 -0
  57. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/chat/views.py +51 -0
  58. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/health/__init__.py +0 -0
  59. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/health/views.py +11 -0
  60. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/models/__init__.py +0 -0
  61. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/models/service.py +57 -0
  62. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/api/models/views.py +24 -0
  63. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/graph/__init__.py +1 -0
  64. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/graph/runner.py +191 -0
  65. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/graph/simple_graph.py +89 -0
  66. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/openai_server.py +102 -0
  67. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/schemas/__init__.py +1 -0
  68. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/schemas/openai_schema.py +203 -0
  69. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/utils/__init__.py +1 -0
  70. langgraph_openai_serve-0.0.2/src/langgraph_openai_serve/utils/message.py +29 -0
  71. langgraph_openai_serve-0.0.2/templates/google-notypes.mustache +38 -0
  72. langgraph_openai_serve-0.0.2/templates/google.mustache +37 -0
  73. langgraph_openai_serve-0.0.2/templates/numpy-notypes.mustache +44 -0
  74. langgraph_openai_serve-0.0.2/templates/numpy.mustache +46 -0
  75. langgraph_openai_serve-0.0.2/templates/tutorial.md +68 -0
  76. langgraph_openai_serve-0.0.2/tests/__init__.py +0 -0
  77. langgraph_openai_serve-0.0.2/tests/utils/test_message.py +104 -0
  78. langgraph_openai_serve-0.0.2/uv.lock +2037 -0
@@ -0,0 +1,22 @@
1
+ .git
2
+ .github
3
+ .dockerignore
4
+ .gitignore
5
+
6
+ .idea
7
+ .vscode
8
+
9
+ __pycache__/
10
+ *.py[cod]
11
+ *$py.class
12
+ *.so
13
+ htmlcov/
14
+ .coverage
15
+ .coverage.*
16
+ .pytest_cache/
17
+ .mypy_cache
18
+ .venv
19
+ venv
20
+
21
+ docs
22
+ tests
@@ -0,0 +1,24 @@
1
+ # http://editorconfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ indent_style = space
7
+ indent_size = 4
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+ charset = utf-8
11
+ end_of_line = lf
12
+
13
+ [*.bat]
14
+ indent_style = tab
15
+ end_of_line = crlf
16
+
17
+ [LICENSE]
18
+ insert_final_newline = false
19
+
20
+ [Makefile]
21
+ indent_style = tab
22
+
23
+ [*.{yml,yaml,json}]
24
+ indent_size = 2
@@ -0,0 +1,21 @@
1
+ name: "Setup Python Environment"
2
+ description: "Set up Python environment for the given Python version"
3
+
4
+ runs:
5
+ using: "composite"
6
+ steps:
7
+ - name: Install uv
8
+ uses: astral-sh/setup-uv@v5
9
+ with:
10
+ version: "latest"
11
+ enable-cache: "true"
12
+ cache-suffix: "UV_PYTHON"
13
+
14
+ - name: Install Python
15
+ run: uv python install
16
+ shell: bash
17
+
18
+ - name: Create virtual environment
19
+ run: |
20
+ uv venv
21
+ shell: bash
@@ -0,0 +1,27 @@
1
+ name: Deploy Docs to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ doc-deploy:
13
+ runs-on: ubuntu-22.04
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Install the latest version of uv
19
+ uses: astral-sh/setup-uv@v5
20
+
21
+ - name: Install the Project with Test Dependencies
22
+ run: |
23
+ uv sync --frozen --only-group doc
24
+
25
+ - name: Deploy the documentation to GitHub Pages
26
+ run: |
27
+ uv run mkdocs gh-deploy --force
@@ -0,0 +1,25 @@
1
+ name: Docs Test Build
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+ push:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ doc-check:
11
+ runs-on: ubuntu-22.04
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Install the latest version of uv
17
+ uses: astral-sh/setup-uv@v5
18
+
19
+ - name: Install the Project with Test Dependencies
20
+ run: |
21
+ uv sync --frozen --only-group doc
22
+
23
+ - name: Test the doc build
24
+ run: |
25
+ make doc-build
@@ -0,0 +1,35 @@
1
+ name: Build and publish a Docker image to ghcr.io
2
+ on:
3
+
4
+ # publish on releases, e.g. v2.1.13 (image tagged as "2.1.13" - "v" prefix is removed)
5
+ # release:
6
+ # types: [ published ]
7
+
8
+ # publish on pushes to the specific branch (image tagged as "latest")
9
+ push:
10
+ branches:
11
+ # - main
12
+ - dummy-branch
13
+
14
+ jobs:
15
+ docker_publish:
16
+ runs-on: "ubuntu-22.04"
17
+ permissions:
18
+ contents: read
19
+ packages: write
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ # https://github.com/marketplace/actions/push-to-ghcr
25
+ - name: Build and publish a Docker image for ${{ github.repository }}
26
+ uses: macbre/push-to-ghcr@master
27
+ with:
28
+ image_name: ${{ github.repository }} # it will be lowercased internally
29
+ github_token: ${{ secrets.GITHUB_TOKEN }}
30
+ dockerfile: ./docker/Dockerfile
31
+ # optionally push to the Docker Hub (docker.io)
32
+ # docker_io_token: ${{ secrets.DOCKER_IO_ACCESS_TOKEN }} # see https://hub.docker.com/settings/security
33
+ # customize the username to be used when pushing to the Docker Hub
34
+ # docker_io_user: foobar # see https://github.com/macbre/push-to-ghcr/issues/14
35
+ #
@@ -0,0 +1,22 @@
1
+ name: Lint the module
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ lint:
13
+ runs-on: ubuntu-22.04
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Lint Dependency Installation
18
+ uses: astral-sh/ruff-action@v3
19
+ with:
20
+ src: ./src/langgraph_openai_serve
21
+ - run: ruff format --check --diff
22
+ - run: ruff check
@@ -0,0 +1,75 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types:
6
+ - created
7
+
8
+ jobs:
9
+ extract-version:
10
+ name: Extract version from release tag
11
+ runs-on: ubuntu-latest
12
+ outputs:
13
+ version: ${{ steps.get-version.outputs.version }}
14
+ steps:
15
+ - name: Extract version from tag
16
+ id: get-version
17
+ run: |
18
+ TAG_NAME=${{ github.event.release.tag_name }}
19
+
20
+ if [[ ! $TAG_NAME =~ ^v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
21
+ echo "The tag $TAG_NAME is not in the expected format 'v<MAJOR>.<MINOR>.<PATCH>'"
22
+ exit 1
23
+ fi
24
+
25
+ VERSION=${TAG_NAME#v}
26
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
27
+ echo "Extracted version: $VERSION"
28
+
29
+ build-sdist:
30
+ name: Build source distribution
31
+ runs-on: ubuntu-latest
32
+ needs: [extract-version]
33
+ steps:
34
+ - name: Checkout code
35
+ uses: actions/checkout@v4
36
+
37
+ - name: Install the latest version of uv
38
+ uses: astral-sh/setup-uv@v5
39
+
40
+ - name: Update version in pyproject.toml
41
+ run: |
42
+ VERSION=${{ needs.extract-version.outputs.version }}
43
+ echo "Using version: $VERSION"
44
+
45
+ # Update pyproject.toml with the version
46
+ sed -i "s/version = \"[^\"]*\"/version = \"$VERSION\"/" pyproject.toml
47
+
48
+ - name: Build source distribution
49
+ run: uv build --sdist --out-dir dist
50
+
51
+ - name: Upload source distribution artifact
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: sdist
55
+ path: dist/*.tar.gz
56
+ retention-days: 1
57
+
58
+ publish:
59
+ name: Publish to PyPI
60
+ needs: [extract-version, build-sdist]
61
+ runs-on: ubuntu-latest
62
+ steps:
63
+ - name: Download all artifacts
64
+ uses: actions/download-artifact@v4
65
+ with:
66
+ path: dist
67
+ merge-multiple: true
68
+
69
+ - name: Install the latest version of uv
70
+ uses: astral-sh/setup-uv@v5
71
+
72
+ - name: Publish to PyPI
73
+ env:
74
+ UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
75
+ run: uv publish dist/*
@@ -0,0 +1,58 @@
1
+ name: Test the module
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ test_matrix:
13
+ strategy:
14
+ matrix:
15
+ python-version: ['3.11', '3.12']
16
+ runs-on: ubuntu-22.04
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Disable Logger Outputs
21
+ run: |
22
+ sed -i "s/log_cli = true/log_cli = false/" pyproject.toml
23
+
24
+ - name: Install the latest version of uv and set the python version
25
+ uses: astral-sh/setup-uv@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install the Project with Test Dependencies
30
+ run: |
31
+ uv sync --frozen --only-group test
32
+
33
+ - name: Test the Project
34
+ run: |
35
+ make test-all-parallel
36
+
37
+ # test-single:
38
+ # runs-on: ubuntu-22.04
39
+ # steps:
40
+ # - uses: actions/checkout@v4
41
+
42
+ # - name: Disable Logger Outputs
43
+ # run: |
44
+ # sed -i "s/log_cli = true/log_cli = false/" pyproject.toml
45
+
46
+ # - name: Set up python environment
47
+ # uses: ./.github/actions/setup-python
48
+
49
+ # - name: Install the Project with Test Dependencies
50
+ # run: |
51
+ # uv sync --frozen --only-group test
52
+
53
+ # - name: Test the Project
54
+ # run: |
55
+ # make test-all-parallel
56
+
57
+ # # - name: Publish code coverage
58
+ # # uses: codecov/codecov-action@v3
@@ -0,0 +1,273 @@
1
+
2
+ # Created by https://www.toptal.com/developers/gitignore/api/pycharm+all,visualstudiocode,python,jupyternotebooks
3
+ # Edit at https://www.toptal.com/developers/gitignore?templates=pycharm+all,visualstudiocode,python,jupyternotebooks
4
+
5
+ ### JupyterNotebooks ###
6
+ # gitignore template for Jupyter Notebooks
7
+ # website: http://jupyter.org/
8
+
9
+ .ipynb_checkpoints
10
+ */.ipynb_checkpoints/*
11
+
12
+ # IPython
13
+ profile_default/
14
+ ipython_config.py
15
+
16
+ # Remove previous ipynb_checkpoints
17
+ # git rm -r .ipynb_checkpoints/
18
+
19
+ ### PyCharm+all ###
20
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
21
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
22
+
23
+ # User-specific stuff
24
+ .idea/**/workspace.xml
25
+ .idea/**/tasks.xml
26
+ .idea/**/usage.statistics.xml
27
+ .idea/**/dictionaries
28
+ .idea/**/shelf
29
+
30
+ # AWS User-specific
31
+ .idea/**/aws.xml
32
+
33
+ # Generated files
34
+ .idea/**/contentModel.xml
35
+
36
+ # Sensitive or high-churn files
37
+ .idea/**/dataSources/
38
+ .idea/**/dataSources.ids
39
+ .idea/**/dataSources.local.xml
40
+ .idea/**/sqlDataSources.xml
41
+ .idea/**/dynamic.xml
42
+ .idea/**/uiDesigner.xml
43
+ .idea/**/dbnavigator.xml
44
+
45
+ # Gradle
46
+ .idea/**/gradle.xml
47
+ .idea/**/libraries
48
+
49
+ # Gradle and Maven with auto-import
50
+ # When using Gradle or Maven with auto-import, you should exclude module files,
51
+ # since they will be recreated, and may cause churn. Uncomment if using
52
+ # auto-import.
53
+ # .idea/artifacts
54
+ # .idea/compiler.xml
55
+ # .idea/jarRepositories.xml
56
+ # .idea/modules.xml
57
+ # .idea/*.iml
58
+ # .idea/modules
59
+ # *.iml
60
+ # *.ipr
61
+
62
+ # CMake
63
+ cmake-build-*/
64
+
65
+ # Mongo Explorer plugin
66
+ .idea/**/mongoSettings.xml
67
+
68
+ # File-based project format
69
+ *.iws
70
+
71
+ # IntelliJ
72
+ out/
73
+
74
+ # mpeltonen/sbt-idea plugin
75
+ .idea_modules/
76
+
77
+ # JIRA plugin
78
+ atlassian-ide-plugin.xml
79
+
80
+ # Cursive Clojure plugin
81
+ .idea/replstate.xml
82
+
83
+ # Crashlytics plugin (for Android Studio and IntelliJ)
84
+ com_crashlytics_export_strings.xml
85
+ crashlytics.properties
86
+ crashlytics-build.properties
87
+ fabric.properties
88
+
89
+ # Editor-based Rest Client
90
+ .idea/httpRequests
91
+
92
+ # Android studio 3.1+ serialized cache file
93
+ .idea/caches/build_file_checksums.ser
94
+
95
+ ### PyCharm+all Patch ###
96
+ # Ignores the whole .idea folder and all .iml files
97
+ # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
98
+
99
+ .idea/
100
+
101
+ # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
102
+
103
+ *.iml
104
+ modules.xml
105
+ .idea/misc.xml
106
+ *.ipr
107
+
108
+ # Sonarlint plugin
109
+ .idea/sonarlint
110
+
111
+ ### Python ###
112
+ # Byte-compiled / optimized / DLL files
113
+ __pycache__/
114
+ *.py[cod]
115
+ *$py.class
116
+
117
+ # C extensions
118
+ *.so
119
+
120
+ # Distribution / packaging
121
+ .Python
122
+ build/
123
+ develop-eggs/
124
+ dist/
125
+ downloads/
126
+ eggs/
127
+ .eggs/
128
+ lib/
129
+ lib64/
130
+ parts/
131
+ sdist/
132
+ var/
133
+ wheels/
134
+ share/python-wheels/
135
+ *.egg-info/
136
+ .installed.cfg
137
+ *.egg
138
+ MANIFEST
139
+
140
+ # PyInstaller
141
+ # Usually these files are written by a python script from a template
142
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
143
+ *.manifest
144
+ *.spec
145
+
146
+ # Installer logs
147
+ pip-log.txt
148
+ pip-delete-this-directory.txt
149
+
150
+ # Unit test / coverage reports
151
+ htmlcov/
152
+ .tox/
153
+ .nox/
154
+ .coverage
155
+ .coverage.*
156
+ .cache
157
+ nosetests.xml
158
+ coverage.xml
159
+ *.cover
160
+ *.py,cover
161
+ .hypothesis/
162
+ .pytest_cache/
163
+ cover/
164
+
165
+ # Translations
166
+ *.mo
167
+ *.pot
168
+
169
+ # Django stuff:
170
+ *.log
171
+ local_settings.py
172
+ db.sqlite3
173
+ db.sqlite3-journal
174
+
175
+ # Flask stuff:
176
+ instance/
177
+ .webassets-cache
178
+
179
+ # Scrapy stuff:
180
+ .scrapy
181
+
182
+ # Sphinx documentation
183
+ docs/_build/
184
+
185
+ # PyBuilder
186
+ .pybuilder/
187
+ target/
188
+
189
+ # Jupyter Notebook
190
+
191
+ # IPython
192
+
193
+ # pyenv
194
+ # For a library or package, you might want to ignore these files since the code is
195
+ # intended to run in multiple environments; otherwise, check them in:
196
+ # .python-version
197
+
198
+ # pipenv
199
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
200
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
201
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
202
+ # install all needed dependencies.
203
+ #Pipfile.lock
204
+
205
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
206
+ __pypackages__/
207
+
208
+ # Celery stuff
209
+ celerybeat-schedule
210
+ celerybeat.pid
211
+
212
+ # SageMath parsed files
213
+ *.sage.py
214
+
215
+ # Environments
216
+ .env
217
+ .venv
218
+ env/
219
+ venv/
220
+ ENV/
221
+ env.bak/
222
+ venv.bak/
223
+
224
+ # Spyder project settings
225
+ .spyderproject
226
+ .spyproject
227
+
228
+ # Rope project settings
229
+ .ropeproject
230
+
231
+ # mkdocs documentation
232
+ /site
233
+
234
+ # mypy
235
+ .mypy_cache/
236
+ .dmypy.json
237
+ dmypy.json
238
+
239
+ # Pyre type checker
240
+ .pyre/
241
+
242
+ # pytype static type analyzer
243
+ .pytype/
244
+
245
+ # Cython debug symbols
246
+ cython_debug/
247
+
248
+ ### VisualStudioCode ###
249
+ .vscode/*
250
+ !.vscode/settings.json
251
+ !.vscode/tasks.json
252
+ !.vscode/launch.json
253
+ !.vscode/extensions.json
254
+ *.code-workspace
255
+
256
+ # Local History for Visual Studio Code
257
+ .history/
258
+
259
+ ### VisualStudioCode Patch ###
260
+ # Ignore all local history of files
261
+ .history
262
+ .ionide
263
+
264
+ # End of https://www.toptal.com/developers/gitignore/api/pycharm+all,visualstudiocode,python,jupyternotebooks
265
+
266
+ # Custom ignores
267
+
268
+ /.ruff_cache/
269
+ public
270
+
271
+ # Scalene related
272
+ profile.*
273
+ docker/volumes
@@ -0,0 +1,51 @@
1
+ # NOTE: exclude
2
+ # Single file/folder -> exclude: examples/.*ipynb
3
+ # Multiple file/folder -> exclude: (^.*<folder_name>/|examples/.*ipynb)
4
+
5
+ repos:
6
+ - repo: https://github.com/pre-commit/pre-commit-hooks
7
+ rev: v4.4.0
8
+ hooks:
9
+ - id: check-case-conflict
10
+ - id: check-merge-conflict
11
+ # - id: check-symlinks
12
+ # - id: check-json
13
+ - id: check-toml
14
+ - id: check-yaml
15
+ - id: debug-statements
16
+ - id: end-of-file-fixer
17
+ - id: trailing-whitespace
18
+ - id: mixed-line-ending
19
+ args: ["--fix=lf"]
20
+ description: Forces to replace line ending by the UNIX 'lf' character.
21
+ - id: check-added-large-files
22
+ args: ["--maxkb=1000"]
23
+
24
+ - repo: https://github.com/astral-sh/uv-pre-commit
25
+ rev: 0.6.2
26
+ hooks:
27
+ # Update the uv lockfile
28
+ - id: uv-lock
29
+
30
+ - repo: https://github.com/astral-sh/ruff-pre-commit
31
+ rev: v0.11.6
32
+ hooks:
33
+ # Run the Ruff linter.
34
+ - id: ruff
35
+ args: [--exit-non-zero-on-fix, --config=pyproject.toml]
36
+ # Run the Ruff formatter.
37
+ - id: ruff-format
38
+ args: [--config=pyproject.toml]
39
+
40
+ # NOTE: It doesn't use pyproject.toml configs. We might enable it the future.
41
+ # - repo: https://github.com/pre-commit/mirrors-mypy
42
+ # rev: v0.991
43
+ # hooks:
44
+ # - id: mypy
45
+ # files: langgraph_openai_serve
46
+ # additional_dependencies: [types-PyYAML, rich]
47
+ # args: [
48
+ # "--strict",
49
+ # # "--config-file=pyproject.toml",
50
+ # # "--ignore-missing-imports",
51
+ # ]
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,16 @@
1
+ {
2
+ "recommendations": [
3
+ "GitLab.gitlab-workflow",
4
+ "bungcip.better-toml",
5
+ "EditorConfig.EditorConfig",
6
+ "redhat.vscode-yaml",
7
+ "ms-python.python",
8
+ "ms-python.vscode-pylance",
9
+ "njpwerner.autodocstring",
10
+ "charliermarsh.ruff",
11
+ // "ms-python.mypy-type-checker",
12
+ ],
13
+ "unwantedRecommendations": [
14
+ "ms-python.isort"
15
+ ]
16
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "[python]": {
3
+ "editor.formatOnSave": true,
4
+ "editor.defaultFormatter": "charliermarsh.ruff",
5
+ "editor.codeActionsOnSave": {
6
+ // "source.fixAll": "always",
7
+ "source.organizeImports": "explicit",
8
+ },
9
+ "editor.rulers": [
10
+ {
11
+ "column": 88,
12
+ "color": "#57565651"
13
+ },
14
+ ],
15
+ },
16
+ "python.languageServer": "Pylance",
17
+ // "python.analysis.autoImportCompletions": true,
18
+ "ruff.nativeServer": "on",
19
+ "autoDocstring.generateDocstringOnEnter": true,
20
+ "autoDocstring.docstringFormat": "google",
21
+ "autoDocstring.customTemplatePath": "templates/google-notypes.mustache",
22
+ "autoDocstring.includeExtendedSummary": false,
23
+ "python.testing.unittestEnabled": false,
24
+ "python.testing.pytestEnabled": true,
25
+ // "python.testing.pytestArgs": [],
26
+ "notebook.formatOnSave.enabled": true,
27
+ "notebook.codeActionsOnSave": {
28
+ // "notebook.source.fixAll": "always",
29
+ "notebook.source.organizeImports": "explicit",
30
+ },
31
+ "evenBetterToml.formatter.reorderKeys": true,
32
+ }