xai-review 0.33.0__py3-none-any.whl → 0.35.0__py3-none-any.whl
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.
Potentially problematic release.
This version of xai-review might be problematic. Click here for more details.
- ai_review/clients/claude/client.py +1 -1
- ai_review/clients/claude/schema.py +2 -2
- ai_review/clients/gemini/client.py +2 -1
- ai_review/clients/gemini/schema.py +2 -2
- ai_review/clients/ollama/client.py +1 -1
- ai_review/clients/openai/v1/__init__.py +0 -0
- ai_review/clients/openai/{client.py → v1/client.py} +9 -9
- ai_review/clients/openai/{schema.py → v1/schema.py} +1 -1
- ai_review/clients/openai/v1/types.py +8 -0
- ai_review/clients/openai/v2/__init__.py +0 -0
- ai_review/clients/openai/v2/client.py +46 -0
- ai_review/clients/openai/v2/schema.py +47 -0
- ai_review/clients/openai/v2/types.py +11 -0
- ai_review/clients/openrouter/__init__.py +0 -0
- ai_review/clients/openrouter/client.py +50 -0
- ai_review/clients/openrouter/schema.py +36 -0
- ai_review/clients/openrouter/types.py +11 -0
- ai_review/libs/config/llm/base.py +8 -1
- ai_review/libs/config/llm/meta.py +2 -2
- ai_review/libs/config/llm/openai.py +4 -0
- ai_review/libs/config/llm/openrouter.py +12 -0
- ai_review/libs/constants/llm_provider.py +1 -0
- ai_review/resources/pricing.yaml +39 -1
- ai_review/services/llm/factory.py +3 -0
- ai_review/services/llm/openai/client.py +37 -9
- ai_review/services/llm/openrouter/__init__.py +0 -0
- ai_review/services/llm/openrouter/client.py +31 -0
- ai_review/tests/fixtures/clients/openai.py +84 -12
- ai_review/tests/fixtures/clients/openrouter.py +72 -0
- ai_review/tests/suites/clients/openai/v1/__init__.py +0 -0
- ai_review/tests/suites/clients/openai/v1/test_client.py +12 -0
- ai_review/tests/suites/clients/openai/{test_schema.py → v1/test_schema.py} +1 -1
- ai_review/tests/suites/clients/openai/v2/__init__.py +0 -0
- ai_review/tests/suites/clients/openai/v2/test_client.py +12 -0
- ai_review/tests/suites/clients/openai/v2/test_schema.py +80 -0
- ai_review/tests/suites/clients/openrouter/__init__.py +0 -0
- ai_review/tests/suites/clients/openrouter/test_client.py +12 -0
- ai_review/tests/suites/clients/openrouter/test_schema.py +57 -0
- ai_review/tests/suites/libs/config/llm/__init__.py +0 -0
- ai_review/tests/suites/libs/config/llm/test_openai.py +28 -0
- ai_review/tests/suites/services/llm/openai/test_client.py +23 -6
- ai_review/tests/suites/services/llm/openrouter/__init__.py +0 -0
- ai_review/tests/suites/services/llm/openrouter/test_client.py +22 -0
- ai_review/tests/suites/services/llm/test_factory.py +8 -1
- ai_review/tests/suites/services/review/gateway/test_review_comment_gateway.py +5 -5
- ai_review/tests/suites/services/review/gateway/test_review_dry_run_comment_gateway.py +5 -5
- ai_review/tests/suites/services/review/gateway/test_review_llm_gateway.py +2 -2
- ai_review/tests/suites/services/review/test_service.py +2 -2
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/METADATA +11 -10
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/RECORD +54 -30
- ai_review/clients/openai/types.py +0 -8
- ai_review/tests/suites/clients/openai/test_client.py +0 -12
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/WHEEL +0 -0
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/entry_points.txt +0 -0
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/licenses/LICENSE +0 -0
- {xai_review-0.33.0.dist-info → xai_review-0.35.0.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xai-review
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: AI-powered code review tool
|
|
3
|
+
Version: 0.35.0
|
|
4
|
+
Summary: AI-powered code review tool for GitHub, GitLab, Bitbucket and Gitea — built with LLMs like OpenAI, Claude, Gemini, Ollama, and OpenRouter
|
|
5
5
|
Author-email: Nikita Filonov <nikita.filonov@example.com>
|
|
6
6
|
Maintainer-email: Nikita Filonov <nikita.filonov@example.com>
|
|
7
7
|
License: Apache-2.0
|
|
8
8
|
Project-URL: Issues, https://github.com/Nikita-Filonov/ai-review/issues
|
|
9
9
|
Project-URL: Homepage, https://github.com/Nikita-Filonov/ai-review
|
|
10
10
|
Project-URL: Repository, https://github.com/Nikita-Filonov/ai-review
|
|
11
|
-
Keywords: ai,code review,llm,openai,claude,gemini
|
|
11
|
+
Keywords: ai,code review,llm,openai,claude,gemini,ollama,openrouter,ci/cd,gitlab,github,gitea,bitbucket
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -66,7 +66,8 @@ improve code quality, enforce consistency, and speed up the review process.
|
|
|
66
66
|
|
|
67
67
|
✨ Key features:
|
|
68
68
|
|
|
69
|
-
- **Multiple LLM providers** — choose between **OpenAI**, **Claude**, **Gemini**, or **
|
|
69
|
+
- **Multiple LLM providers** — choose between **OpenAI**, **Claude**, **Gemini**, **Ollama**, or **OpenRouter**, and
|
|
70
|
+
switch anytime.
|
|
70
71
|
- **VCS integration** — works out of the box with **GitLab**, **GitHub**, **Bitbucket**, and **Gitea**.
|
|
71
72
|
- **Customizable prompts** — adapt inline, context, and summary reviews to match your team’s coding guidelines.
|
|
72
73
|
- **Reply modes** — AI can now **participate in existing review threads**, adding follow-up replies in both inline and
|
|
@@ -120,7 +121,7 @@ pip install xai-review
|
|
|
120
121
|
Or run directly via Docker:
|
|
121
122
|
|
|
122
123
|
```bash
|
|
123
|
-
docker run --rm -v $(pwd):/app nikitafilonov/ai-review:latest run-summary
|
|
124
|
+
docker run --rm -v $(pwd):/app nikitafilonov/ai-review:latest ai-review run-summary
|
|
124
125
|
```
|
|
125
126
|
|
|
126
127
|
🐳 Pull from [DockerHub](https://hub.docker.com/r/nikitafilonov/ai-review)
|
|
@@ -146,8 +147,8 @@ vcs:
|
|
|
146
147
|
provider: GITLAB
|
|
147
148
|
|
|
148
149
|
pipeline:
|
|
149
|
-
project_id: 1
|
|
150
|
-
merge_request_id: 100
|
|
150
|
+
project_id: "1"
|
|
151
|
+
merge_request_id: "100"
|
|
151
152
|
|
|
152
153
|
http_client:
|
|
153
154
|
timeout: 120
|
|
@@ -176,7 +177,7 @@ for complete, ready-to-use examples.
|
|
|
176
177
|
|
|
177
178
|
Key things you can customize:
|
|
178
179
|
|
|
179
|
-
- **LLM provider** — OpenAI, Gemini, Claude, or
|
|
180
|
+
- **LLM provider** — OpenAI, Gemini, Claude, Ollama, or OpenRouter
|
|
180
181
|
- **Model settings** — model name, temperature, max tokens
|
|
181
182
|
- **VCS integration** — works out of the box with **GitLab**, **GitHub**, **Bitbucket**, and **Gitea**
|
|
182
183
|
- **Review policy** — which files to include/exclude, review modes
|
|
@@ -220,7 +221,7 @@ jobs:
|
|
|
220
221
|
with:
|
|
221
222
|
fetch-depth: 0
|
|
222
223
|
|
|
223
|
-
- uses: Nikita-Filonov/ai-review@v0.
|
|
224
|
+
- uses: Nikita-Filonov/ai-review@v0.35.0
|
|
224
225
|
with:
|
|
225
226
|
review-command: ${{ inputs.review-command }}
|
|
226
227
|
env:
|
|
@@ -298,7 +299,7 @@ AI Review does **not store**, **log**, or **transmit** your source code to any e
|
|
|
298
299
|
provider** explicitly configured in your `.ai-review.yaml`.
|
|
299
300
|
|
|
300
301
|
All data is sent **directly** from your CI/CD environment to the selected LLM API endpoint (e.g. OpenAI, Gemini,
|
|
301
|
-
Claude). No intermediary servers or storage layers are involved.
|
|
302
|
+
Claude, OpenRouter). No intermediary servers or storage layers are involved.
|
|
302
303
|
|
|
303
304
|
If you use **Ollama**, requests are sent to your **local or self-hosted Ollama runtime**
|
|
304
305
|
(by default `http://localhost:11434`). This allows you to run reviews completely **offline**, keeping all data strictly
|
|
@@ -22,12 +22,12 @@ ai_review/clients/bitbucket/pr/schema/files.py,sha256=qBDfIv370TDMKM8yoLlm1c-BTH
|
|
|
22
22
|
ai_review/clients/bitbucket/pr/schema/pull_request.py,sha256=Eq8huJmZ9smy2JlsPuMF-Vv8EmHYR3rFQ_5EFVc2QRc,845
|
|
23
23
|
ai_review/clients/bitbucket/pr/schema/user.py,sha256=-TsvtifDNZSK82fqNXv6N3li2hnui1_9g2ugSBx4Ibs,125
|
|
24
24
|
ai_review/clients/claude/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
ai_review/clients/claude/client.py,sha256=
|
|
26
|
-
ai_review/clients/claude/schema.py,sha256=
|
|
25
|
+
ai_review/clients/claude/client.py,sha256=I1UVlUHmLygFYw3pJIP39zYenULmEx_h65JH3XW7jG4,1907
|
|
26
|
+
ai_review/clients/claude/schema.py,sha256=FJy5Wh5A3IJWPNn4K6KIFn4OTC713pxO9KCqdfUKwNA,915
|
|
27
27
|
ai_review/clients/claude/types.py,sha256=y_-yF7zQrTvyiowS2b9xjIlAzkF8i6OfOjqo9eB8Xo4,267
|
|
28
28
|
ai_review/clients/gemini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
ai_review/clients/gemini/client.py,sha256=
|
|
30
|
-
ai_review/clients/gemini/schema.py,sha256=
|
|
29
|
+
ai_review/clients/gemini/client.py,sha256=rZsvGQG62Wu2LpBlAFr8w6_S_0oHH1fVZ8lK41995bk,1918
|
|
30
|
+
ai_review/clients/gemini/schema.py,sha256=mBESW6CupZaRRSzFv5K0WTEPfzk6brAFpZG_EiloKRI,2299
|
|
31
31
|
ai_review/clients/gemini/types.py,sha256=D-P0THorrQ8yq5P-NKAC65zzhEYRa9HkiXTORG9QoIk,267
|
|
32
32
|
ai_review/clients/gitea/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
33
|
ai_review/clients/gitea/client.py,sha256=cMxp1Ic44JFvSkuqLdWkAhsgMC6CwM3qmf-1CptqnV8,1152
|
|
@@ -65,13 +65,22 @@ ai_review/clients/gitlab/mr/schema/notes.py,sha256=9wmwULegmTO6ETSjYlMC6Fc_DIeT_
|
|
|
65
65
|
ai_review/clients/gitlab/mr/schema/position.py,sha256=oYml4x6rlrqGahEEbSB1c1ko70geL_0_otbwP0JqV6k,371
|
|
66
66
|
ai_review/clients/gitlab/mr/schema/user.py,sha256=RxgCM8oryPBNPDaFxcVqe11MogchMGaO1gALkZiscrU,112
|
|
67
67
|
ai_review/clients/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
ai_review/clients/ollama/client.py,sha256=
|
|
68
|
+
ai_review/clients/ollama/client.py,sha256=lo_yOmB6nSdiFdIeSG1t1-AVHUZZEzKMpD6y3w2UJco,1737
|
|
69
69
|
ai_review/clients/ollama/schema.py,sha256=A6oKwkkEVrduyzMR_lhLnaLyvKXqlfsXjkMIF2eXaYw,1310
|
|
70
70
|
ai_review/clients/ollama/types.py,sha256=9ES8K-EClKYU7UsaMKgXvZ3sUOF9o6reEvfL6wFOJ4M,267
|
|
71
71
|
ai_review/clients/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
|
-
ai_review/clients/openai/
|
|
73
|
-
ai_review/clients/openai/
|
|
74
|
-
ai_review/clients/openai/
|
|
72
|
+
ai_review/clients/openai/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
ai_review/clients/openai/v1/client.py,sha256=zThyVUFWOF2wXi47PPrejK9ApXSc7I-2yaBHlDdiMaM,1861
|
|
74
|
+
ai_review/clients/openai/v1/schema.py,sha256=2VWAynuDsmK6f0Y4oGS3hh8NsAwwa6xX54G9i8bPNxs,778
|
|
75
|
+
ai_review/clients/openai/v1/types.py,sha256=giLb2LKyoHNgIq4wO__asPl4dUi1PEMiOAQIbsPpuNk,272
|
|
76
|
+
ai_review/clients/openai/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
+
ai_review/clients/openai/v2/client.py,sha256=MN61bCVkNPuOxaYZEh5duaZgpUmqnnSL2ZVA_9HWTHs,1896
|
|
78
|
+
ai_review/clients/openai/v2/schema.py,sha256=AU9ewqgLSozSgAgVh15ql18VMMchQeTO7MW9gUT9jd0,1195
|
|
79
|
+
ai_review/clients/openai/v2/types.py,sha256=BE4iFUSW1OHsah3YxTwMt1bWhZCZMssBEkTlLcR0POs,304
|
|
80
|
+
ai_review/clients/openrouter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
+
ai_review/clients/openrouter/client.py,sha256=llfdisXWXyA7XufqeToGaTKnGHkNdV0y84TrPsaa41A,2105
|
|
82
|
+
ai_review/clients/openrouter/schema.py,sha256=hTPLIMIUHIKD4wDJsVPidn0LTQz58SsI1fId6JVU8KQ,827
|
|
83
|
+
ai_review/clients/openrouter/types.py,sha256=9CFUy52GnfjjLRufz7SwY_fnzhQnn8czLl-XLWBSKGc,303
|
|
75
84
|
ai_review/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
85
|
ai_review/libs/json.py,sha256=g-P5_pNUomQ-bGHCXASvPKj9Og0s9MaLFVEAkzqGp1A,350
|
|
77
86
|
ai_review/libs/logger.py,sha256=LbXR2Zk1btJ-83I-vHee7cUETgT1mHToSsqEI_8uM0U,370
|
|
@@ -87,12 +96,13 @@ ai_review/libs/config/logger.py,sha256=oPmjpjf6EZwW7CgOjT8mOQdGnT98CLwXepiGB_ajZ
|
|
|
87
96
|
ai_review/libs/config/prompt.py,sha256=jPBYvi75u6BUIHOZnXCg5CiL0XRONDfW5T4WaYlxPEE,6066
|
|
88
97
|
ai_review/libs/config/review.py,sha256=jCfHfGfHs7Sc6H92hVUBd8bMRbLiIiThVmk6lFNlv40,1224
|
|
89
98
|
ai_review/libs/config/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
ai_review/libs/config/llm/base.py,sha256=
|
|
99
|
+
ai_review/libs/config/llm/base.py,sha256=yhRxizyRwwYH1swKeVzZaGAVm3I3nNME_y-h0iW5WTw,2374
|
|
91
100
|
ai_review/libs/config/llm/claude.py,sha256=MoalXkBA6pEp01znS8ohTRopfea9RUcqhZX5lOIuek8,293
|
|
92
101
|
ai_review/libs/config/llm/gemini.py,sha256=SKtlzsRuNWOlM9m3SFvcqOIjnml8lpPidp7FiGmIEz4,265
|
|
93
|
-
ai_review/libs/config/llm/meta.py,sha256=
|
|
102
|
+
ai_review/libs/config/llm/meta.py,sha256=MtWboDCqoj_jZrrGoClVJNcHyskgyqJLcPMOztfxkiM,210
|
|
94
103
|
ai_review/libs/config/llm/ollama.py,sha256=M6aiPb5GvYvkiGcgHTsh9bOw5JsBLqmfSKoIbHCejrU,372
|
|
95
|
-
ai_review/libs/config/llm/openai.py,sha256=
|
|
104
|
+
ai_review/libs/config/llm/openai.py,sha256=g2EF0h2JGD5iTOtNHg-G9bdqgVtqGjg4KLf-p9V6flY,395
|
|
105
|
+
ai_review/libs/config/llm/openrouter.py,sha256=6G5fApCOv0fKRHCUpsuiPOcEdyUpDe5qiUUbHjA6TbE,337
|
|
96
106
|
ai_review/libs/config/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
107
|
ai_review/libs/config/vcs/base.py,sha256=RJZhKysD-d8oYZQ2v1H74jyqdqtOCc8zZ0n9S4ovfHk,1471
|
|
98
108
|
ai_review/libs/config/vcs/bitbucket.py,sha256=on5sQaE57kM_zSmqdDUNrttVtTPGOzqLHM5s7eFN7DA,275
|
|
@@ -101,7 +111,7 @@ ai_review/libs/config/vcs/github.py,sha256=hk-kuDLd8wecqtEb8PSqF7Yy_pkihplJhi6nB
|
|
|
101
111
|
ai_review/libs/config/vcs/gitlab.py,sha256=ecYfU158VgVlM6P5mgZn8FOqk3Xt60xx7gUqT5e22a4,252
|
|
102
112
|
ai_review/libs/config/vcs/pagination.py,sha256=S-XxWQYkIjhu3ffpHQ44d7UtRHH81fh9GaJ-xQXUUy4,175
|
|
103
113
|
ai_review/libs/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
|
-
ai_review/libs/constants/llm_provider.py,sha256=
|
|
114
|
+
ai_review/libs/constants/llm_provider.py,sha256=_ysUQFFspG1oCuCyRwdEE9kVlqLyP1hxL_Kc-tWV2F0,173
|
|
105
115
|
ai_review/libs/constants/vcs_provider.py,sha256=7A30fTSs9GM_A4J9B84MNY78c7do0RaoKytuiRwdhDY,147
|
|
106
116
|
ai_review/libs/diff/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
117
|
ai_review/libs/diff/models.py,sha256=RT4YJboOPA-AjNJGRj_HIZaJLEmROOhOgMh1wIGpIwY,2344
|
|
@@ -132,7 +142,7 @@ ai_review/prompts/default_system_inline_reply.md,sha256=OhWQ5PZ-QFFgVVfmrsXEmvNA
|
|
|
132
142
|
ai_review/prompts/default_system_summary.md,sha256=unEJ09G925TKqvjkTFKgl3g2AXT9GICe8kxTO50QhRg,224
|
|
133
143
|
ai_review/prompts/default_system_summary_reply.md,sha256=qGc_qQtVUpmj_gOw-6dhL2gz6saSA__9UOcS0jAjBD0,687
|
|
134
144
|
ai_review/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
135
|
-
ai_review/resources/pricing.yaml,sha256=
|
|
145
|
+
ai_review/resources/pricing.yaml,sha256=wxwF9sH6uUkQyaDok-cBcbXReGxg7gdsXgC2pRrQWn0,1553
|
|
136
146
|
ai_review/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
147
|
ai_review/services/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
148
|
ai_review/services/artifacts/schema.py,sha256=o4dqG5LFCdAQY3wjRF5rImANe-X20g4zX_bCIKiHLSk,291
|
|
@@ -157,7 +167,7 @@ ai_review/services/hook/constants.py,sha256=GthpBviiqcb3Oj5uhiJhyYGmWuwKgLlToC8p
|
|
|
157
167
|
ai_review/services/hook/service.py,sha256=00qai06eFqkeKtIfqxlJkWTLCpO5d2wZzc2rFsPLKTs,10680
|
|
158
168
|
ai_review/services/hook/types.py,sha256=RrGFCPwRkOOLAoHpGlkcnT6Cao0B4PyPMN-Wxj6N9Uo,2461
|
|
159
169
|
ai_review/services/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
-
ai_review/services/llm/factory.py,sha256=
|
|
170
|
+
ai_review/services/llm/factory.py,sha256=VF5xkGgYQFiDJJ0WNHUoXFtP4yWK6uN5qMTFPYXdTLU,1027
|
|
161
171
|
ai_review/services/llm/types.py,sha256=OvbJWYRDThBgLhn9TWU0mliuanOW01CS3e8ermtuS-s,353
|
|
162
172
|
ai_review/services/llm/claude/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
163
173
|
ai_review/services/llm/claude/client.py,sha256=JJD0FWiXjCCpO7NW3vVoBMXhTQ9VBA4Q93QqkeQqON0,1082
|
|
@@ -166,7 +176,9 @@ ai_review/services/llm/gemini/client.py,sha256=TR4HshVxtDV8_luQKCM3aFNH9tjAjpzNe
|
|
|
166
176
|
ai_review/services/llm/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
177
|
ai_review/services/llm/ollama/client.py,sha256=817nOQRsnaVqoY6LdO95l5JkRHkGvvS8TX7hezT2gqk,1479
|
|
168
178
|
ai_review/services/llm/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
169
|
-
ai_review/services/llm/openai/client.py,sha256=
|
|
179
|
+
ai_review/services/llm/openai/client.py,sha256=edOBi6pVY_jquUj8BCRj-Gn_q-JxcK_ohBmElGClXlw,2437
|
|
180
|
+
ai_review/services/llm/openrouter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
181
|
+
ai_review/services/llm/openrouter/client.py,sha256=wrUEETrer3XmNRtu3YzLIRNa_3ODTzsR_LU9kDkl-7I,1212
|
|
170
182
|
ai_review/services/prompt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
171
183
|
ai_review/services/prompt/adapter.py,sha256=9ntRxG5iON2vU54k8-BmLpiPCH5jRv2GGl01nmHj-SI,988
|
|
172
184
|
ai_review/services/prompt/schema.py,sha256=ttla_lkvBQ-jfaZXzWSAAUrJROYRsozHHd5IoZc59zA,1324
|
|
@@ -232,7 +244,8 @@ ai_review/tests/fixtures/clients/gitea.py,sha256=WQLbOyFTqqtVQGHuLFgk9qANYS03eeC
|
|
|
232
244
|
ai_review/tests/fixtures/clients/github.py,sha256=kC1L-nWZMn9O_uRfuT_B8R4sn8FRvISlBJMkRKaioS0,7814
|
|
233
245
|
ai_review/tests/fixtures/clients/gitlab.py,sha256=AD6NJOJSw76hjAEiWewQ6Vu5g-cfQn0GTtdchuDBH9o,8042
|
|
234
246
|
ai_review/tests/fixtures/clients/ollama.py,sha256=UUHDDPUraQAG8gBC-0UvftaK0BDYir5cJDlRKJymSQg,2109
|
|
235
|
-
ai_review/tests/fixtures/clients/openai.py,sha256=
|
|
247
|
+
ai_review/tests/fixtures/clients/openai.py,sha256=sgRt7DxKqbPUv0GPFE94XUDtFwa5tIgi1DQYWPqPQHA,4749
|
|
248
|
+
ai_review/tests/fixtures/clients/openrouter.py,sha256=TWCojwXP0y0_dlzFMzJra4uXSQ3Dv5wZQnm_Hbvxodg,2532
|
|
236
249
|
ai_review/tests/fixtures/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
237
250
|
ai_review/tests/fixtures/libs/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
238
251
|
ai_review/tests/fixtures/libs/llm/output_json_parser.py,sha256=Eu0tCK5cD1d9X1829ruahih7jQoehGozIEugS71AAA8,275
|
|
@@ -289,14 +302,23 @@ ai_review/tests/suites/clients/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
289
302
|
ai_review/tests/suites/clients/ollama/test_client.py,sha256=XZ8NAd1bS_ltTuYZPgqlutPRA6kbvH3_3SKTCbNBTgA,404
|
|
290
303
|
ai_review/tests/suites/clients/ollama/test_schema.py,sha256=A93wCmxwGdvudfbA97VCPYP3gT6u6EYMetAg5fgURRA,1836
|
|
291
304
|
ai_review/tests/suites/clients/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
292
|
-
ai_review/tests/suites/clients/openai/
|
|
293
|
-
ai_review/tests/suites/clients/openai/
|
|
305
|
+
ai_review/tests/suites/clients/openai/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
306
|
+
ai_review/tests/suites/clients/openai/v1/test_client.py,sha256=raN0AvAQW46FEDOY8TfTmI3vzD4F2G7mrFdeMF2YSxQ,423
|
|
307
|
+
ai_review/tests/suites/clients/openai/v1/test_schema.py,sha256=vLoo4nzcmVKA1hwuuZI354yYRV2N8ujSoF23iNkkipQ,1602
|
|
308
|
+
ai_review/tests/suites/clients/openai/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
309
|
+
ai_review/tests/suites/clients/openai/v2/test_client.py,sha256=pe72sdUCt916BLZ6vC6xsLPzZqEI-uO-3KvCJqgGf2M,423
|
|
310
|
+
ai_review/tests/suites/clients/openai/v2/test_schema.py,sha256=yzwLILjI4j_MKfNlFeQ1QWISCsQTNNI87WvdWbrRlO4,2461
|
|
311
|
+
ai_review/tests/suites/clients/openrouter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
312
|
+
ai_review/tests/suites/clients/openrouter/test_client.py,sha256=WNH0p1Bl5J6zLKB1gSQ9smQMRTOo5-U-A60iJ0n4_DI,444
|
|
313
|
+
ai_review/tests/suites/clients/openrouter/test_schema.py,sha256=9wt8-lR1u2KGvd6Iget_Yy-r33BllYLA-3AKe-S2E-c,1731
|
|
294
314
|
ai_review/tests/suites/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
295
315
|
ai_review/tests/suites/libs/test_json.py,sha256=q_tvFcL9EaN5jr48Ed_mxMEmW6xXS0xlZGqSooPZBa4,713
|
|
296
316
|
ai_review/tests/suites/libs/asynchronous/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
297
317
|
ai_review/tests/suites/libs/asynchronous/test_gather.py,sha256=Uzo0ctGFlllJU6TqA6hVWu_mcycJBAX5am8_bDO2eXk,1282
|
|
298
318
|
ai_review/tests/suites/libs/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
299
319
|
ai_review/tests/suites/libs/config/test_prompt.py,sha256=H3QC6LvYAwebnLed-NeT86TY9kPaMPy7Eppk5Bfi2SM,5601
|
|
320
|
+
ai_review/tests/suites/libs/config/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
321
|
+
ai_review/tests/suites/libs/config/llm/test_openai.py,sha256=H9sPccXuayoYrLVHxWc2WMD2rK2zlGP1xlAaa3G03Gs,777
|
|
300
322
|
ai_review/tests/suites/libs/diff/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
301
323
|
ai_review/tests/suites/libs/diff/test_models.py,sha256=RBFQ97LWhU8TlupxXkJ97ryAvJrSuOHLtT9biUBUMXg,3321
|
|
302
324
|
ai_review/tests/suites/libs/diff/test_parser.py,sha256=rvWEVGIdaLBlDAnSevjRY7I1Zikj12d5GOgMk9QyHQQ,3013
|
|
@@ -321,7 +343,7 @@ ai_review/tests/suites/services/diff/test_tools.py,sha256=vsOSSIDZKkuD8dMCoBBEBt
|
|
|
321
343
|
ai_review/tests/suites/services/hook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
322
344
|
ai_review/tests/suites/services/hook/test_service.py,sha256=TjNU2xiOQfUZZa8M3L2eHbtTwxse_B7QNn2h4118z1U,6637
|
|
323
345
|
ai_review/tests/suites/services/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
324
|
-
ai_review/tests/suites/services/llm/test_factory.py,sha256=
|
|
346
|
+
ai_review/tests/suites/services/llm/test_factory.py,sha256=HEE65FBfIrSQbwpIYRq3SyVv1NljELPTGUHpKCahiQ0,1688
|
|
325
347
|
ai_review/tests/suites/services/llm/claude/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
326
348
|
ai_review/tests/suites/services/llm/claude/test_client.py,sha256=ymIeuIax0Bp_CuXBSApK1RDl1JmbGc97uzXZToQOZO8,761
|
|
327
349
|
ai_review/tests/suites/services/llm/gemini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -329,18 +351,20 @@ ai_review/tests/suites/services/llm/gemini/test_client.py,sha256=RjYViMZTgTdbzmD
|
|
|
329
351
|
ai_review/tests/suites/services/llm/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
330
352
|
ai_review/tests/suites/services/llm/ollama/test_client.py,sha256=Eu4OERB00SJwCKznyOCyqSFTDBp9J2Lw-BcW7sPJQM4,760
|
|
331
353
|
ai_review/tests/suites/services/llm/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
|
-
ai_review/tests/suites/services/llm/openai/test_client.py,sha256=
|
|
354
|
+
ai_review/tests/suites/services/llm/openai/test_client.py,sha256=bF0MFaTq_45ob4f8eZXF3Fn0aUMy848dBaQXiAiqIPg,1373
|
|
355
|
+
ai_review/tests/suites/services/llm/openrouter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
356
|
+
ai_review/tests/suites/services/llm/openrouter/test_client.py,sha256=9YRwhkgeRDdRi_EMFh_T0u4wgEFj2AMgAiusrYWzeEc,813
|
|
333
357
|
ai_review/tests/suites/services/prompt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
334
358
|
ai_review/tests/suites/services/prompt/test_adapter.py,sha256=3BhaGW4G-72dN_ajp5rJst39k1VNiKZq5FUB9LGPNVQ,2168
|
|
335
359
|
ai_review/tests/suites/services/prompt/test_schema.py,sha256=rm2__LA2_4qQwSmNAZ_Wnpy11T3yYRkYUkRUrqxUQKE,5421
|
|
336
360
|
ai_review/tests/suites/services/prompt/test_service.py,sha256=jfpmM--eZH43NylwltX-ijmF58ZJ4WA83kmGshUbJfs,8312
|
|
337
361
|
ai_review/tests/suites/services/prompt/test_tools.py,sha256=SmweFvrpxd-3RO5v18vCl7zonEqFE1n4eqHH7-6auYM,4511
|
|
338
362
|
ai_review/tests/suites/services/review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
339
|
-
ai_review/tests/suites/services/review/test_service.py,sha256=
|
|
363
|
+
ai_review/tests/suites/services/review/test_service.py,sha256=8LYlLk4sX6R86qS9kGRPO7EJcUlXr0L1JLczADpS-nE,4252
|
|
340
364
|
ai_review/tests/suites/services/review/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
341
|
-
ai_review/tests/suites/services/review/gateway/test_review_comment_gateway.py,sha256
|
|
342
|
-
ai_review/tests/suites/services/review/gateway/test_review_dry_run_comment_gateway.py,sha256=
|
|
343
|
-
ai_review/tests/suites/services/review/gateway/test_review_llm_gateway.py,sha256=
|
|
365
|
+
ai_review/tests/suites/services/review/gateway/test_review_comment_gateway.py,sha256=-EG6bWwFX46QKROYmIxPw0WLQsYkn0munTD2Wxykm6Q,8946
|
|
366
|
+
ai_review/tests/suites/services/review/gateway/test_review_dry_run_comment_gateway.py,sha256=UzRo41pI0vBcHcr7u2hi8zH2Msd25MXhxLWXodsaNLA,3977
|
|
367
|
+
ai_review/tests/suites/services/review/gateway/test_review_llm_gateway.py,sha256=Wy9nYO_YNlBNKC2w4TvXvPqtiRUSvRfyZ7cGS-LD7Y8,2554
|
|
344
368
|
ai_review/tests/suites/services/review/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
345
369
|
ai_review/tests/suites/services/review/internal/inline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
346
370
|
ai_review/tests/suites/services/review/internal/inline/test_schema.py,sha256=2SGF8yNHsNv8lwG-MUlgO3RT4juTt0PQSl10qNhSt7o,2377
|
|
@@ -376,9 +400,9 @@ ai_review/tests/suites/services/vcs/github/test_client.py,sha256=mNt1bA6aVU3REsJ
|
|
|
376
400
|
ai_review/tests/suites/services/vcs/gitlab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
377
401
|
ai_review/tests/suites/services/vcs/gitlab/test_adapter.py,sha256=BYBP2g1AKF_jCSJYJj16pW7M_6PprwD9reYEpdw3StU,4340
|
|
378
402
|
ai_review/tests/suites/services/vcs/gitlab/test_client.py,sha256=dnI-YxYADmVF2GS9rp6-JPkcqsn4sN8Fjbe4MkeYMaE,8476
|
|
379
|
-
xai_review-0.
|
|
380
|
-
xai_review-0.
|
|
381
|
-
xai_review-0.
|
|
382
|
-
xai_review-0.
|
|
383
|
-
xai_review-0.
|
|
384
|
-
xai_review-0.
|
|
403
|
+
xai_review-0.35.0.dist-info/licenses/LICENSE,sha256=p-v8m7Kmz4KKc7PcvsGiGEmCw9AiSXY4_ylOPy_u--Y,11343
|
|
404
|
+
xai_review-0.35.0.dist-info/METADATA,sha256=H0R3298LHIDUiCYLLhnMvKNy5WlmsO5nitbRhS68Yh8,12911
|
|
405
|
+
xai_review-0.35.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
406
|
+
xai_review-0.35.0.dist-info/entry_points.txt,sha256=JyC5URanMi5io5P_PXQf7H_I1OGIpk5cZQhaPQ0g4Zs,53
|
|
407
|
+
xai_review-0.35.0.dist-info/top_level.txt,sha256=sTsZbfzLoqvRZKdKa-BcxWvjlHdrpbeJ6DrGY0EuR0E,10
|
|
408
|
+
xai_review-0.35.0.dist-info/RECORD,,
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
from httpx import AsyncClient
|
|
3
|
-
|
|
4
|
-
from ai_review.clients.openai.client import get_openai_http_client, OpenAIHTTPClient
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@pytest.mark.usefixtures('openai_http_client_config')
|
|
8
|
-
def test_get_openai_http_client_builds_ok():
|
|
9
|
-
openai_http_client = get_openai_http_client()
|
|
10
|
-
|
|
11
|
-
assert isinstance(openai_http_client, OpenAIHTTPClient)
|
|
12
|
-
assert isinstance(openai_http_client.client, AsyncClient)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|