git-cai-cli 0.7.2__tar.gz → 0.7.3__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.
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/cd/.SRCINFO +1 -2
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/cd/PKGBUILD +1 -2
- {git_cai_cli-0.7.2/src/git_cai_cli.egg-info → git_cai_cli-0.7.3}/PKG-INFO +1 -2
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/pyproject.toml +0 -1
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/_version.py +3 -3
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/llm.py +32 -17
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3/src/git_cai_cli.egg-info}/PKG-INFO +1 -2
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli.egg-info/requires.txt +0 -1
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_llm.py +47 -11
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/uv.lock +0 -30
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.caiignore +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.gitattributes +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/ci/_version.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/ci/cai_config.ci.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/ci/tokens.ci.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/workflows/python-tests.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/workflows/release.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.github/workflows/release_aur.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.gitignore +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.bandit.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.checkov.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.flake8 +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.ls-lint.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.markdown-link-check.json +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.markdownlint.json +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.proselintrc +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.pylintrc +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/.yamllint.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/check_git_branch_name.sh +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/lychee.toml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.linters/pyrightconfig.json +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.mega-linter.yml +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.semgrepignore +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/.trivyignore +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/LICENSE +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/Makefile +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/README.md +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/docs/git-cai.txt +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/docs/man/git-cai.1 +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/setup.cfg +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/__init__.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/cli/__init__.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/cli/cli.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/cli/helptext.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/cli/modes.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/__init__.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/config.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/editors.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/gitutils.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/languages.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/options.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/squash.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/core/validate.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli/main.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli.egg-info/SOURCES.txt +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli.egg-info/dependency_links.txt +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli.egg-info/entry_points.txt +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/src/git_cai_cli.egg-info/top_level.txt +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_cli_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_config_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_gitutils_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_modes_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_options_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/integration/test_squash_integration.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_cli.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_config.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_gitutils.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_helptext.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_modes.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_options.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_squash.py +0 -0
- {git_cai_cli-0.7.2 → git_cai_cli-0.7.3}/tests/unit/test_validate.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
pkgbase = cai
|
|
2
|
-
pkgdesc =
|
|
2
|
+
pkgdesc = CLI tool that generates concise git commit messages from diffs or commit history using large language models
|
|
3
3
|
pkgver = Y.Y.Y
|
|
4
4
|
pkgrel = 1
|
|
5
5
|
url = https://github.com/thorstenfoltz/cai
|
|
@@ -17,7 +17,6 @@ pkgbase = cai
|
|
|
17
17
|
depends = python-requests
|
|
18
18
|
depends = python-typer
|
|
19
19
|
depends = python-groq
|
|
20
|
-
depends = python-anthropic
|
|
21
20
|
depends = git
|
|
22
21
|
source = cai-Y.Y.Y.tar.gz::https://github.com/thorstenfoltz/cai/archive/refs/tags/Y.Y.Y.tar.gz
|
|
23
22
|
sha256sums = YYYYYY
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
pkgname=cai
|
|
4
4
|
pkgver=X.X.X
|
|
5
5
|
pkgrel=1
|
|
6
|
-
pkgdesc="
|
|
6
|
+
pkgdesc="CLI tool that generates concise git commit messages from diffs or commit history using large language models"
|
|
7
7
|
arch=('any')
|
|
8
8
|
url="https://github.com/thorstenfoltz/cai"
|
|
9
9
|
license=('MIT')
|
|
@@ -15,7 +15,6 @@ depends=(
|
|
|
15
15
|
python-requests
|
|
16
16
|
python-typer
|
|
17
17
|
python-groq
|
|
18
|
-
python-anthropic
|
|
19
18
|
git
|
|
20
19
|
)
|
|
21
20
|
makedepends=(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-cai-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: Use LLM to create git commit messages
|
|
5
5
|
Author-email: Thorsten Foltz <thorsten.foltz@live.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -26,7 +26,6 @@ Requires-Dist: openai>=1.0
|
|
|
26
26
|
Requires-Dist: google-genai>=1.39
|
|
27
27
|
Requires-Dist: typer>=0.19.2
|
|
28
28
|
Requires-Dist: requests>=2.32.5
|
|
29
|
-
Requires-Dist: anthropic>=0.75.0
|
|
30
29
|
Requires-Dist: groq>=0.37.0
|
|
31
30
|
Dynamic: license-file
|
|
32
31
|
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.7.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 7,
|
|
31
|
+
__version__ = version = '0.7.3'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 7, 3)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g546a71775'
|
|
@@ -7,7 +7,6 @@ from collections.abc import Callable
|
|
|
7
7
|
from typing import Any, Dict, Optional, Type
|
|
8
8
|
|
|
9
9
|
import requests
|
|
10
|
-
from anthropic import Anthropic
|
|
11
10
|
from git_cai_cli.core.languages import LANGUAGE_MAP
|
|
12
11
|
from google import genai # type: ignore[reportUnknownImport]
|
|
13
12
|
from google.genai import types # type: ignore[reportUnknownImport]
|
|
@@ -131,34 +130,50 @@ class CommitMessageGenerator:
|
|
|
131
130
|
def generate_anthropic(
|
|
132
131
|
self,
|
|
133
132
|
content: str,
|
|
134
|
-
anthropic_cls: Type[Any] = Anthropic,
|
|
135
133
|
system_prompt_override: Optional[str] = None,
|
|
136
134
|
) -> str:
|
|
137
135
|
"""
|
|
138
136
|
Shared Anthropic call for commit generation or commit history summarization.
|
|
137
|
+
Uses direct HTTP API instead of the Anthropic SDK.
|
|
139
138
|
"""
|
|
140
|
-
|
|
139
|
+
url = "https://api.anthropic.com/v1/messages"
|
|
140
|
+
headers = {
|
|
141
|
+
"Content-Type": "application/json",
|
|
142
|
+
"x-api-key": self.token,
|
|
143
|
+
"anthropic-version": "2023-06-01",
|
|
144
|
+
}
|
|
145
|
+
|
|
141
146
|
model = self.config["anthropic"]["model"]
|
|
142
147
|
temperature = self.config["anthropic"]["temperature"]
|
|
143
148
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
messages = []
|
|
150
|
+
|
|
151
|
+
if system_prompt_override:
|
|
152
|
+
messages.append(
|
|
153
|
+
{
|
|
154
|
+
"role": "assistant",
|
|
155
|
+
"content": system_prompt_override,
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
messages.append(
|
|
149
160
|
{
|
|
150
161
|
"role": "user",
|
|
151
162
|
"content": content,
|
|
152
|
-
}
|
|
153
|
-
]
|
|
154
|
-
|
|
155
|
-
response = client.messages.create(
|
|
156
|
-
model=model,
|
|
157
|
-
messages=prompt,
|
|
158
|
-
temperature=temperature,
|
|
159
|
-
max_tokens=4096, # this field is required by Anthropic API
|
|
163
|
+
}
|
|
160
164
|
)
|
|
161
|
-
|
|
165
|
+
|
|
166
|
+
request = {
|
|
167
|
+
"model": model,
|
|
168
|
+
"max_tokens": 8192,
|
|
169
|
+
"temperature": temperature,
|
|
170
|
+
"messages": messages,
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
response = requests.post(url, json=request, headers=headers, timeout=30)
|
|
174
|
+
response.raise_for_status()
|
|
175
|
+
|
|
176
|
+
return response.json()["content"][0]["text"].strip()
|
|
162
177
|
|
|
163
178
|
def generate_deepseek(
|
|
164
179
|
self,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-cai-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: Use LLM to create git commit messages
|
|
5
5
|
Author-email: Thorsten Foltz <thorsten.foltz@live.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -26,7 +26,6 @@ Requires-Dist: openai>=1.0
|
|
|
26
26
|
Requires-Dist: google-genai>=1.39
|
|
27
27
|
Requires-Dist: typer>=0.19.2
|
|
28
28
|
Requires-Dist: requests>=2.32.5
|
|
29
|
-
Requires-Dist: anthropic>=0.75.0
|
|
30
29
|
Requires-Dist: groq>=0.37.0
|
|
31
30
|
Dynamic: license-file
|
|
32
31
|
|
|
@@ -153,24 +153,60 @@ def test_generate_openai(generator):
|
|
|
153
153
|
|
|
154
154
|
|
|
155
155
|
# test anthropic
|
|
156
|
-
def test_generate_anthropic(
|
|
156
|
+
def test_generate_anthropic():
|
|
157
157
|
"""
|
|
158
158
|
Test that the generate_anthropic method returns the correct message text
|
|
159
159
|
"""
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
config = {
|
|
161
|
+
"anthropic": {
|
|
162
|
+
"model": "claude-sonnet-4-5",
|
|
163
|
+
"temperature": 0.7,
|
|
164
|
+
}
|
|
165
|
+
}
|
|
162
166
|
|
|
163
|
-
|
|
164
|
-
|
|
167
|
+
gen = CommitMessageGenerator(
|
|
168
|
+
token="fake-token",
|
|
169
|
+
config=config,
|
|
170
|
+
default_model="anthropic",
|
|
171
|
+
)
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
173
|
+
module_path = CommitMessageGenerator.__module__
|
|
174
|
+
|
|
175
|
+
mock_post = MagicMock()
|
|
176
|
+
mock_post.return_value.json.return_value = {
|
|
177
|
+
"content": [{"text": " test "}],
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
with patch(f"{module_path}.requests.post", mock_post):
|
|
181
|
+
result = gen.generate_anthropic("abc", system_prompt_override="sys")
|
|
168
182
|
|
|
169
|
-
result = generator.generate_anthropic(
|
|
170
|
-
"abc", anthropic_cls=mock_cls, system_prompt_override="sys"
|
|
171
|
-
)
|
|
172
183
|
assert result == "test"
|
|
173
|
-
|
|
184
|
+
mock_post.assert_called_once()
|
|
185
|
+
|
|
186
|
+
# --- Extract call details ---
|
|
187
|
+
args, kwargs = mock_post.call_args
|
|
188
|
+
|
|
189
|
+
# Positional arg 0 = URL
|
|
190
|
+
called_url = args[0]
|
|
191
|
+
assert called_url == "https://api.anthropic.com/v1/messages"
|
|
192
|
+
|
|
193
|
+
assert kwargs["timeout"] == 30
|
|
194
|
+
|
|
195
|
+
assert kwargs["headers"] == {
|
|
196
|
+
"Content-Type": "application/json",
|
|
197
|
+
"x-api-key": "fake-token",
|
|
198
|
+
"anthropic-version": "2023-06-01",
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
assert kwargs["json"] == {
|
|
202
|
+
"model": "claude-sonnet-4-5",
|
|
203
|
+
"max_tokens": 8192,
|
|
204
|
+
"temperature": 0.7,
|
|
205
|
+
"messages": [
|
|
206
|
+
{"role": "assistant", "content": "sys"},
|
|
207
|
+
{"role": "user", "content": "abc"},
|
|
208
|
+
],
|
|
209
|
+
}
|
|
174
210
|
|
|
175
211
|
|
|
176
212
|
# test gemini
|
|
@@ -11,25 +11,6 @@ wheels = [
|
|
|
11
11
|
{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" },
|
|
12
12
|
]
|
|
13
13
|
|
|
14
|
-
[[package]]
|
|
15
|
-
name = "anthropic"
|
|
16
|
-
version = "0.75.0"
|
|
17
|
-
source = { registry = "https://pypi.org/simple" }
|
|
18
|
-
dependencies = [
|
|
19
|
-
{ name = "anyio" },
|
|
20
|
-
{ name = "distro" },
|
|
21
|
-
{ name = "docstring-parser" },
|
|
22
|
-
{ name = "httpx" },
|
|
23
|
-
{ name = "jiter" },
|
|
24
|
-
{ name = "pydantic" },
|
|
25
|
-
{ name = "sniffio" },
|
|
26
|
-
{ name = "typing-extensions" },
|
|
27
|
-
]
|
|
28
|
-
sdist = { url = "https://files.pythonhosted.org/packages/04/1f/08e95f4b7e2d35205ae5dcbb4ae97e7d477fc521c275c02609e2931ece2d/anthropic-0.75.0.tar.gz", hash = "sha256:e8607422f4ab616db2ea5baacc215dd5f028da99ce2f022e33c7c535b29f3dfb", size = 439565, upload-time = "2025-11-24T20:41:45.28Z" }
|
|
29
|
-
wheels = [
|
|
30
|
-
{ url = "https://files.pythonhosted.org/packages/60/1c/1cd02b7ae64302a6e06724bf80a96401d5313708651d277b1458504a1730/anthropic-0.75.0-py3-none-any.whl", hash = "sha256:ea8317271b6c15d80225a9f3c670152746e88805a7a61e14d4a374577164965b", size = 388164, upload-time = "2025-11-24T20:41:43.587Z" },
|
|
31
|
-
]
|
|
32
|
-
|
|
33
14
|
[[package]]
|
|
34
15
|
name = "anyio"
|
|
35
16
|
version = "4.12.1"
|
|
@@ -281,15 +262,6 @@ wheels = [
|
|
|
281
262
|
{ url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" },
|
|
282
263
|
]
|
|
283
264
|
|
|
284
|
-
[[package]]
|
|
285
|
-
name = "docstring-parser"
|
|
286
|
-
version = "0.17.0"
|
|
287
|
-
source = { registry = "https://pypi.org/simple" }
|
|
288
|
-
sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" }
|
|
289
|
-
wheels = [
|
|
290
|
-
{ url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" },
|
|
291
|
-
]
|
|
292
|
-
|
|
293
265
|
[[package]]
|
|
294
266
|
name = "docutils"
|
|
295
267
|
version = "0.22.4"
|
|
@@ -315,7 +287,6 @@ wheels = [
|
|
|
315
287
|
name = "git-cai-cli"
|
|
316
288
|
source = { editable = "." }
|
|
317
289
|
dependencies = [
|
|
318
|
-
{ name = "anthropic" },
|
|
319
290
|
{ name = "google-genai" },
|
|
320
291
|
{ name = "groq" },
|
|
321
292
|
{ name = "openai" },
|
|
@@ -334,7 +305,6 @@ dev = [
|
|
|
334
305
|
|
|
335
306
|
[package.metadata]
|
|
336
307
|
requires-dist = [
|
|
337
|
-
{ name = "anthropic", specifier = ">=0.75.0" },
|
|
338
308
|
{ name = "google-genai", specifier = ">=1.39" },
|
|
339
309
|
{ name = "groq", specifier = ">=0.37.0" },
|
|
340
310
|
{ name = "openai", specifier = ">=1.0" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|