agntcy-app-sdk 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 (68) hide show
  1. agntcy_app_sdk-0.1.0/.github/CODEOWNERS +15 -0
  2. agntcy_app_sdk-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +58 -0
  3. agntcy_app_sdk-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +55 -0
  4. agntcy_app_sdk-0.1.0/.github/actions/setup-python/action.yaml +77 -0
  5. agntcy_app_sdk-0.1.0/.github/pull_request_template.md +28 -0
  6. agntcy_app_sdk-0.1.0/.github/workflows/release.yaml +49 -0
  7. agntcy_app_sdk-0.1.0/.github/workflows/reusable-python-build-wheel.yaml +50 -0
  8. agntcy_app_sdk-0.1.0/.gitignore +176 -0
  9. agntcy_app_sdk-0.1.0/.pre-commit-config.yaml +43 -0
  10. agntcy_app_sdk-0.1.0/API_REFERENCE.md +172 -0
  11. agntcy_app_sdk-0.1.0/CHANGELOG.md +3 -0
  12. agntcy_app_sdk-0.1.0/CODE_OF_CONDUCT.md +132 -0
  13. agntcy_app_sdk-0.1.0/CONTRIBUTING.md +55 -0
  14. agntcy_app_sdk-0.1.0/CONTRIBUTING_A_TRANSPORT.md +0 -0
  15. agntcy_app_sdk-0.1.0/LICENSE +201 -0
  16. agntcy_app_sdk-0.1.0/MAINTAINERS.md +6 -0
  17. agntcy_app_sdk-0.1.0/Makefile +27 -0
  18. agntcy_app_sdk-0.1.0/PKG-INFO +180 -0
  19. agntcy_app_sdk-0.1.0/README.md +163 -0
  20. agntcy_app_sdk-0.1.0/SECURITY.md +57 -0
  21. agntcy_app_sdk-0.1.0/assets/_logo-Agntcy_FullColor@2x.png +0 -0
  22. agntcy_app_sdk-0.1.0/assets/_logo-Agntcy_White@2x.png +0 -0
  23. agntcy_app_sdk-0.1.0/assets/agntcy.png +0 -0
  24. agntcy_app_sdk-0.1.0/assets/architecture.png +0 -0
  25. agntcy_app_sdk-0.1.0/assets/trace.png +0 -0
  26. agntcy_app_sdk-0.1.0/docs/LICENSE +201 -0
  27. agntcy_app_sdk-0.1.0/docs/README.md +140 -0
  28. agntcy_app_sdk-0.1.0/docs/assets/architecture.png +0 -0
  29. agntcy_app_sdk-0.1.0/docs/assets/trace.png +0 -0
  30. agntcy_app_sdk-0.1.0/docs/stylesheets/extra.css +65 -0
  31. agntcy_app_sdk-0.1.0/infra/docker/configs/grafana/dashboard.json +460 -0
  32. agntcy_app_sdk-0.1.0/infra/docker/configs/grafana/provisioning/datasources/provisioning.yaml +49 -0
  33. agntcy_app_sdk-0.1.0/infra/docker/configs/mosquitto/mosquitto.conf +5 -0
  34. agntcy_app_sdk-0.1.0/infra/docker/configs/otelcollector/otelcol-config.yml +56 -0
  35. agntcy_app_sdk-0.1.0/infra/docker/configs/prometheus/prometheus-config.yaml +17 -0
  36. agntcy_app_sdk-0.1.0/infra/docker/configs/slim/server-config.yaml +27 -0
  37. agntcy_app_sdk-0.1.0/infra/docker/docker-compose.yaml +34 -0
  38. agntcy_app_sdk-0.1.0/mkdocs.yaml +61 -0
  39. agntcy_app_sdk-0.1.0/pyproject.toml +48 -0
  40. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/__init__.py +15 -0
  41. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/bridge.py +104 -0
  42. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/common/__init__.py +15 -0
  43. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/common/logging_config.py +304 -0
  44. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/factory.py +192 -0
  45. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/__init__.py +15 -0
  46. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/a2a/gateway.py +299 -0
  47. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/acp/gateway.py +15 -0
  48. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/ap/gateway.py +15 -0
  49. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/mcp/gateway.py +83 -0
  50. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/message.py +125 -0
  51. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/protocols/protocol.py +52 -0
  52. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/__init__.py +15 -0
  53. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/nats/gateway.py +253 -0
  54. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/slim/gateway.py +352 -0
  55. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/streamable_http/gateway.py +113 -0
  56. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/streamable_http/models.py +24 -0
  57. agntcy_app_sdk-0.1.0/src/agntcy_app_sdk/transports/transport.py +86 -0
  58. agntcy_app_sdk-0.1.0/tests/__init__.py +15 -0
  59. agntcy_app_sdk-0.1.0/tests/e2e/__init__.py +15 -0
  60. agntcy_app_sdk-0.1.0/tests/e2e/conftest.py +56 -0
  61. agntcy_app_sdk-0.1.0/tests/e2e/test_a2a.py +180 -0
  62. agntcy_app_sdk-0.1.0/tests/e2e/test_mcp.py +86 -0
  63. agntcy_app_sdk-0.1.0/tests/server/__init__.py +15 -0
  64. agntcy_app_sdk-0.1.0/tests/server/__server__.py +108 -0
  65. agntcy_app_sdk-0.1.0/tests/server/agent_executor.py +44 -0
  66. agntcy_app_sdk-0.1.0/tests/server/mcp_server.py +90 -0
  67. agntcy_app_sdk-0.1.0/tests/unit/test_factory.py +15 -0
  68. agntcy_app_sdk-0.1.0/uv.lock +2255 -0
@@ -0,0 +1,15 @@
1
+ ####################################################
2
+ #
3
+ # List of approvers for the coffeeAgntcy project
4
+ #
5
+ #####################################################
6
+ #
7
+ # Learn about CODEOWNERS file format:
8
+ # https://help.github.com/en/articles/about-code-owners
9
+ #
10
+
11
+ # These owners will be the default owners for everything in
12
+ # the repository. Unless a later match takes precedence,
13
+ # the following users/teams will be requested for
14
+ # review when someone opens a pull request.
15
+ * @therealaditigupta @codyhartsook @shanchunyang0919 @Shridhar-2205
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: Bug Report
3
+ description: Report a bug to help us improve.
4
+ title: "[Bug]: "
5
+ labels: ["bug", "triage"]
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for taking the time to fill out this bug report!
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Bug Description
15
+ description: Please provide a description of the problem
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: expected
20
+ attributes:
21
+ label: Expected Behavior
22
+ description: Please describe what you expected would happen
23
+ validations:
24
+ required: true
25
+ - type: dropdown
26
+ id: version
27
+ attributes:
28
+ label: Affected Version
29
+ description: |
30
+ If applicable, provide the version number or release tag where this
31
+ issue was encountered
32
+ options:
33
+ - v1.0.0
34
+ default: 0
35
+ validations:
36
+ required: false
37
+ - type: textarea
38
+ id: steps
39
+ attributes:
40
+ label: Steps to Reproduce
41
+ description: Please provide all steps to reproduce the behavior
42
+ placeholder: |
43
+ 1. In this environment...
44
+ 1. With this config...
45
+ 1. Run `this command`...
46
+ 1. See error...
47
+ validations:
48
+ required: true
49
+ - type: checkboxes
50
+ id: checklist
51
+ attributes:
52
+ label: Checklist
53
+ description: By submitting this issue, you agree to the following
54
+ options:
55
+ - label: I have read the [contributing guidelines](/agntcy/app-sdk/blob/main/CONTRIBUTING.md)
56
+ required: true
57
+ - label: I have verified this does not duplicate an existing issue
58
+ required: true
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: Feature Request
3
+ description: Suggest a feature for this project.
4
+ title: "[Feature]: "
5
+ labels: ["enhancement", "triage"]
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for taking the time to request a feature or enhancement!
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Problem Statement
15
+ description: |
16
+ Please describe the problem or limitation to be addressed by
17
+ the proposed feature
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: solution
22
+ attributes:
23
+ label: Proposed Solution
24
+ description: |
25
+ Please describe what you envision the solution to this
26
+ problem would look like
27
+ validations:
28
+ required: true
29
+ - type: textarea
30
+ id: alternatives
31
+ attributes:
32
+ label: Alternatives Considered
33
+ description: |
34
+ Please briefly describe which alternatives, if any, have been
35
+ considered, including merits of alternate approaches and any tradeoffs
36
+ validations:
37
+ required: false
38
+ - type: textarea
39
+ id: context
40
+ attributes:
41
+ label: Additional Context
42
+ description: Please provide any other information that may be relevant
43
+ validations:
44
+ required: false
45
+ - type: checkboxes
46
+ id: checklist
47
+ attributes:
48
+ label: Checklist
49
+ description: By submitting this request, you agree to the following
50
+ options:
51
+ - label: I have read the [contributing guidelines](/agntcy/app-sdk/blob/main/CONTRIBUTING.md)
52
+ required: true
53
+ - label: |
54
+ I have verified this does not duplicate an existing feature request
55
+ required: true
@@ -0,0 +1,77 @@
1
+ # Copyright AGNTCY Contributors (https://github.com/agntcy)
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ ---
5
+ name: Setup Python Environment
6
+ description: setup environment to build/test/lint python applications
7
+ inputs:
8
+ py-install:
9
+ description: "Install Python"
10
+ required: false
11
+ default: false
12
+ py-version:
13
+ description: "Python version to install"
14
+ required: false
15
+ default: "3.12"
16
+ poetry-install:
17
+ description: "Install poetry"
18
+ required: false
19
+ default: false
20
+ poetry-version:
21
+ description: "Poetry version to use"
22
+ required: false
23
+ default: "1.7.1"
24
+ uv-install:
25
+ description: "Install uv"
26
+ required: false
27
+ default: true
28
+
29
+ runs:
30
+ using: "composite"
31
+ steps:
32
+ - name: Setup Python
33
+ if: ${{ inputs.py-install }}
34
+ id: setup-python
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: ${{ inputs.py-version }}
38
+
39
+ - name: Load cached Poetry Binary
40
+ if: ${{ inputs.poetry-install }}
41
+ uses: actions/cache@v4
42
+ with:
43
+ path: ~/.local
44
+ key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ inputs.poetry-version }}
45
+
46
+ - name: Install Poetry
47
+ if: ${{ inputs.poetry-install }}
48
+ shell: bash
49
+ run: |
50
+ if [[ -f ~/.local/bin/poetry ]]; then
51
+ echo "Poetry already installed"
52
+ else
53
+ curl -sSL https://install.python-poetry.org | POETRY_VERSION=${{ inputs.poetry-version }} python3 -
54
+ fi
55
+
56
+ - name: Install uv (unix)
57
+ if: ${{ inputs.uv-install && runner.os != 'Windows' }}
58
+ shell: bash
59
+ run: |
60
+ curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="${HOME}/.local/bin" sh
61
+
62
+ - name: Install uv (windows)
63
+ if: ${{ inputs.uv-install && runner.os == 'Windows' }}
64
+ shell: bash
65
+ run: |
66
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
67
+
68
+ - name: Load cached venv
69
+ if: ${{ inputs.poetry-install }}
70
+ uses: actions/cache@v4
71
+ with:
72
+ path: ~/.cache/pypoetry/virtualenvs
73
+ key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
74
+
75
+ - name: Update GITHUB_PATH
76
+ shell: bash
77
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
@@ -0,0 +1,28 @@
1
+ # Description
2
+
3
+ Please provide a meaningful description of what this change will do, or is for.
4
+ Bonus points for including links to related issues, other PRs, or technical
5
+ references.
6
+
7
+ Note that by _not_ including a description, you are asking reviewers to do extra
8
+ work to understand the context of this change, which may lead to your PR taking
9
+ much longer to review, or result in it not being reviewed at all.
10
+
11
+ ## Type of Change
12
+
13
+ - [ ] Bugfix
14
+ - [ ] New Feature
15
+ - [ ] Breaking Change
16
+ - [ ] Refactor
17
+ - [ ] Documentation
18
+ - [ ] Other (please describe)
19
+
20
+ ## Checklist
21
+
22
+ - [ ] I have read the [contributing guidelines](/agntcy/app-sdk/blob/main/CONTRIBUTING.md)
23
+ - [ ] Existing issues have been referenced (where applicable)
24
+ - [ ] I have verified this change is not present in other open pull requests
25
+ - [ ] Functionality is documented
26
+ - [ ] All code style checks pass
27
+ - [ ] New code contribution is covered by automated tests
28
+ - [ ] All new and existing tests pass
@@ -0,0 +1,49 @@
1
+ # Copyright AGNTCY Contributors (https://github.com/agntcy)
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ ---
5
+ name: sdk-release-python
6
+
7
+ on:
8
+ push:
9
+ tags:
10
+ - "v[0-9]+.[0-9]+.[0-9]+"
11
+ workflow_dispatch: # Allow manual triggering of the workflow
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
16
+
17
+ jobs:
18
+ build-sdk-wheel:
19
+ name: SDK Python wheel
20
+ uses: ./.github/workflows/reusable-python-build-wheel.yaml
21
+
22
+ pypi-publish:
23
+ name: Upload release to PyPI
24
+ runs-on: ubuntu-latest
25
+ needs:
26
+ - build-sdk-wheel
27
+ if: |
28
+ always() &&
29
+ (needs.build-sdk-wheel.result == 'skipped' || needs.build-sdk-wheel.result == 'success')
30
+ environment: pypi
31
+ permissions:
32
+ # IMPORTANT: this permission is mandatory for Trusted Publishing
33
+ id-token: write
34
+ contents: read
35
+ steps:
36
+ - name: Download artifacts
37
+ uses: actions/download-artifact@v4
38
+ with:
39
+ merge-multiple: true
40
+ path: ./dist
41
+
42
+ - name: Show files
43
+ run: ls -l ./dist
44
+
45
+ - name: Publish package distributions to PyPI
46
+ uses: pypa/gh-action-pypi-publish@release/v1
47
+ with:
48
+ password: ${{ secrets.PYPI_API_TOKEN }}
49
+ packages-dir: ./dist
@@ -0,0 +1,50 @@
1
+ # Copyright AGNTCY Contributors (https://github.com/agntcy)
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ ---
5
+ name: python-build
6
+ on:
7
+ workflow_call:
8
+
9
+ jobs:
10
+ python-bindings-wheels:
11
+ runs-on: ${{ matrix.platform.runner }}
12
+ defaults:
13
+ run:
14
+ shell: bash
15
+ working-directory: ./
16
+ strategy:
17
+ matrix:
18
+ platform:
19
+ - runner: ubuntu-22.04
20
+ os: linux
21
+ target: x86_64
22
+ # - runner: ubuntu-22.04-arm
23
+ # os: linux
24
+ # target: aarch64
25
+ - runner: windows-latest
26
+ os: windows
27
+ target: x64
28
+ - runner: macos-13 # We use macos-13 as it is a x86_64 runner
29
+ os: macos
30
+ target: x86_64
31
+ - runner: macos-15
32
+ os: macos
33
+ target: aarch64
34
+ steps:
35
+ - name: Checkout code
36
+ uses: actions/checkout@v4
37
+ - name: Setup Python
38
+ uses: ./.github/actions/setup-python
39
+ with:
40
+ py-install: false
41
+ poetry-install: false
42
+ uv-install: true
43
+ - name: Build wheel
44
+ run: |
45
+ uv build
46
+ - name: Upload wheel
47
+ uses: actions/upload-artifact@v4
48
+ with:
49
+ name: wheel-${{ matrix.platform.os }}-${{ matrix.platform.target }}
50
+ path: ./dist
@@ -0,0 +1,176 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ .gateway_infra
7
+
8
+ # C extensions
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
+ share/python-wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+ MANIFEST
30
+
31
+ # PyInstaller
32
+ # Usually these files are written by a python script from a template
33
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
34
+ *.manifest
35
+ *.spec
36
+
37
+ # Installer logs
38
+ pip-log.txt
39
+ pip-delete-this-directory.txt
40
+
41
+ # Unit test / coverage reports
42
+ htmlcov/
43
+ .tox/
44
+ .nox/
45
+ .coverage
46
+ .coverage.*
47
+ .cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ *.py,cover
52
+ .hypothesis/
53
+ .pytest_cache/
54
+ cover/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+ db.sqlite3
64
+ db.sqlite3-journal
65
+
66
+ # Flask stuff:
67
+ instance/
68
+ .webassets-cache
69
+
70
+ # Scrapy stuff:
71
+ .scrapy
72
+
73
+ # Sphinx documentation
74
+ docs/_build/
75
+
76
+ # PyBuilder
77
+ .pybuilder/
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # IPython
84
+ profile_default/
85
+ ipython_config.py
86
+
87
+ # pyenv
88
+ # For a library or package, you might want to ignore these files since the code is
89
+ # intended to run in multiple environments; otherwise, check them in:
90
+ # .python-version
91
+
92
+ # pipenv
93
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
94
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
95
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
96
+ # install all needed dependencies.
97
+ #Pipfile.lock
98
+
99
+ # UV
100
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
101
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
102
+ # commonly ignored for libraries.
103
+ #uv.lock
104
+
105
+ # poetry
106
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
107
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
108
+ # commonly ignored for libraries.
109
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
110
+ #poetry.lock
111
+
112
+ # pdm
113
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
114
+ #pdm.lock
115
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
116
+ # in version control.
117
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
118
+ .pdm.toml
119
+ .pdm-python
120
+ .pdm-build/
121
+
122
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
123
+ __pypackages__/
124
+
125
+ # Celery stuff
126
+ celerybeat-schedule
127
+ celerybeat.pid
128
+
129
+ # SageMath parsed files
130
+ *.sage.py
131
+
132
+ # Environments
133
+ .env
134
+ .venv
135
+ env/
136
+ venv/
137
+ ENV/
138
+ env.bak/
139
+ venv.bak/
140
+
141
+ # Spyder project settings
142
+ .spyderproject
143
+ .spyproject
144
+
145
+ # Rope project settings
146
+ .ropeproject
147
+
148
+ # mkdocs documentation
149
+ /site
150
+
151
+ # mypy
152
+ .mypy_cache/
153
+ .dmypy.json
154
+ dmypy.json
155
+
156
+ # Pyre type checker
157
+ .pyre/
158
+
159
+ # pytype static type analyzer
160
+ .pytype/
161
+
162
+ # Cython debug symbols
163
+ cython_debug/
164
+
165
+ # PyCharm
166
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
167
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
168
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
169
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
170
+ #.idea/
171
+
172
+ # Ruff stuff:
173
+ .ruff_cache/
174
+
175
+ # PyPI configuration file
176
+ .pypirc
@@ -0,0 +1,43 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+
4
+ repos:
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v4.5.0
7
+ hooks:
8
+ - id: debug-statements
9
+ - id: check-builtin-literals
10
+ - id: check-case-conflict
11
+ - id: check-json
12
+ - id: check-toml
13
+ - id: check-xml
14
+ - id: check-yaml
15
+ - id: detect-private-key
16
+ - id: end-of-file-fixer
17
+ - repo: https://github.com/kaechele/pre-commit-mirror-prettier
18
+ rev: v3.2.4
19
+ hooks:
20
+ - id: prettier
21
+ exclude: "(CHANGELOG.md)"
22
+ - repo: https://github.com/astral-sh/ruff-pre-commit
23
+ rev: v0.2.0
24
+ hooks:
25
+ - id: ruff-format
26
+ name: ruff (format)
27
+ args:
28
+ - "."
29
+ pass_filenames: false
30
+ - id: ruff
31
+ name: ruff (lint)
32
+ args:
33
+ - "--fix"
34
+ - "--exit-non-zero-on-fix"
35
+ - "--statistics"
36
+ - "--output-format=full"
37
+ - "."
38
+ pass_filenames: false
39
+ - repo: https://github.com/codespell-project/codespell
40
+ rev: v2.2.6
41
+ hooks:
42
+ - id: codespell
43
+ exclude: (uv.lock)