diffron 0.1.2__tar.gz → 0.1.4__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 (57) hide show
  1. {diffron-0.1.2 → diffron-0.1.4}/CHANGELOG.md +32 -0
  2. {diffron-0.1.2 → diffron-0.1.4}/MANIFEST.in +2 -0
  3. {diffron-0.1.2/diffron.egg-info → diffron-0.1.4}/PKG-INFO +99 -15
  4. {diffron-0.1.2 → diffron-0.1.4}/README.md +98 -14
  5. {diffron-0.1.2 → diffron-0.1.4}/diffron/__init__.py +36 -26
  6. diffron-0.1.4/diffron/__main__.py +8 -0
  7. {diffron-0.1.2 → diffron-0.1.4}/diffron/cli.py +87 -87
  8. {diffron-0.1.2 → diffron-0.1.4}/diffron/commit_gen.py +156 -151
  9. diffron-0.1.4/diffron/lemonade.py +246 -0
  10. diffron-0.1.4/diffron/models.py +203 -0
  11. diffron-0.1.4/diffron/models.pyi +23 -0
  12. {diffron-0.1.2 → diffron-0.1.4/diffron.egg-info}/PKG-INFO +99 -15
  13. {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/SOURCES.txt +7 -9
  14. {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/entry_points.txt +2 -0
  15. {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/top_level.txt +1 -1
  16. diffron-0.1.4/docs/LEMONADE_PORT_VERIFICATION_FIX.md +105 -0
  17. diffron-0.1.4/docs/LEMONADE_UNRESPONSIVE_FIX.md +100 -0
  18. diffron-0.1.4/docs/MODEL_NAME_CASE_FIX.md +88 -0
  19. {diffron-0.1.2 → diffron-0.1.4}/docs/SETUP.md +524 -524
  20. {diffron-0.1.2 → diffron-0.1.4}/pyproject.toml +83 -81
  21. {diffron-0.1.2 → diffron-0.1.4}/requirements.txt +1 -0
  22. {diffron-0.1.2 → diffron-0.1.4}/setup.py +66 -64
  23. diffron-0.1.2/diffron/lemonade.py +0 -192
  24. diffron-0.1.2/docs/PLAN.md +0 -378
  25. diffron-0.1.2/docs/PYPI_RELEASE.md +0 -487
  26. diffron-0.1.2/hooks/prepare-commit-msg +0 -13
  27. diffron-0.1.2/tests/test_commit_gen.py +0 -155
  28. diffron-0.1.2/tests/test_git_hooks.py +0 -162
  29. diffron-0.1.2/tests/test_lemonade.py +0 -117
  30. diffron-0.1.2/tests/test_pr_gen.py +0 -152
  31. diffron-0.1.2/tests/test_utils.py +0 -223
  32. {diffron-0.1.2 → diffron-0.1.4}/LICENSE +0 -0
  33. {diffron-0.1.2 → diffron-0.1.4}/diffron/__init__.pyi +0 -0
  34. {diffron-0.1.2 → diffron-0.1.4}/diffron/cli.pyi +0 -0
  35. {diffron-0.1.2 → diffron-0.1.4}/diffron/client.py +0 -0
  36. {diffron-0.1.2 → diffron-0.1.4}/diffron/client.pyi +0 -0
  37. {diffron-0.1.2 → diffron-0.1.4}/diffron/commit_gen.pyi +0 -0
  38. {diffron-0.1.2 → diffron-0.1.4}/diffron/git_hooks.py +0 -0
  39. {diffron-0.1.2 → diffron-0.1.4}/diffron/git_hooks.pyi +0 -0
  40. {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/aipr.py +0 -0
  41. {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg +0 -0
  42. {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg-global.py +0 -0
  43. {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg.py +0 -0
  44. {diffron-0.1.2 → diffron-0.1.4}/diffron/lemonade.pyi +0 -0
  45. {diffron-0.1.2 → diffron-0.1.4}/diffron/pr_gen.py +0 -0
  46. {diffron-0.1.2 → diffron-0.1.4}/diffron/pr_gen.pyi +0 -0
  47. {diffron-0.1.2 → diffron-0.1.4}/diffron/py.typed +0 -0
  48. {diffron-0.1.2 → diffron-0.1.4}/diffron/utils.py +0 -0
  49. {diffron-0.1.2 → diffron-0.1.4}/diffron/utils.pyi +0 -0
  50. {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/dependency_links.txt +0 -0
  51. {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/requires.txt +0 -0
  52. {diffron-0.1.2 → diffron-0.1.4}/docs/HOOKS.md +0 -0
  53. {diffron-0.1.2 → diffron-0.1.4}/docs/USAGE.md +0 -0
  54. {diffron-0.1.2 → diffron-0.1.4}/hooks/aipr.py +0 -0
  55. {diffron-0.1.2 → diffron-0.1.4}/hooks/prepare-commit-msg-global.py +0 -0
  56. {diffron-0.1.2 → diffron-0.1.4}/hooks/prepare-commit-msg.py +0 -0
  57. {diffron-0.1.2 → diffron-0.1.4}/setup.cfg +0 -0
@@ -17,6 +17,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
17
17
 
18
18
  ---
19
19
 
20
+ ## [0.1.4] - 2026-04-24
21
+
22
+ ### Fixed
23
+ - **Lemonade Model Unresponsive Fix** — Added retry logic with automatic model unload/reload when Lemonade model becomes unresponsive
24
+ - Added `_reload_model()` method that uses lemonade-python-sdk to detect and reconnect to the Lemonade server
25
+ - Added `_init_client()` method to reinitialize the OpenAI client after model reload
26
+ - Handles `'NoneType' object is not subscriptable` error by checking for None responses before accessing `response.choices[0]`
27
+ - Retry mechanism attempts up to 3 times before raising a detailed RuntimeError
28
+ - Added `from urllib.parse import urlparse` import at module level
29
+
30
+ ---
31
+
32
+ ## [0.1.3] - 2026-04-08
33
+
34
+ ### Added
35
+ - **Curated Models System** — Pre-configured model collection with easy selection
36
+ - `list_available_models()` — List all curated models with metadata
37
+ - `get_default_model()` — Get the recommended default model
38
+ - `get_model_config(name)` — Get configuration for a specific model by name
39
+ - `diffron-setup-model` CLI — Interactive model selection and configuration
40
+ - `diffron-setup-model` — Set default model
41
+ - `diffron-setup-model --list` — Show all available models
42
+ - `diffron-setup-model --model NAME` — Set specific model
43
+ - `ModelConfig` dataclass — Structured model metadata (name, description, parameters, best_for)
44
+
45
+ ### Changed
46
+ - Updated metadata and documentation for public PyPI release
47
+ - Moved private files (docs, tests, scripts, notes) to `homelab/` folder
48
+ - Improved sync script exclusion patterns
49
+
50
+ ---
51
+
20
52
  ## [0.1.0] - 2026-03-28
21
53
 
22
54
  ### Added
@@ -8,6 +8,8 @@ recursive-include diffron *.py *.pyi py.typed
8
8
  recursive-include diffron/hooks *
9
9
  recursive-include docs *.md
10
10
 
11
+ # Exclude private files
12
+ exclude homelab/
11
13
  exclude tests
12
14
  exclude hooks
13
15
  exclude *.bat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffron
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Git commit message and PR description generator using Lemonade
5
5
  Home-page: https://github.com/diffron/diffron
6
6
  Author: Diffron Contributors
@@ -47,7 +47,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
47
47
 
48
48
  **Diffron is a production-ready reference implementation of the lemonade-python-sdk — submitted to the AMD Lemonade Developer Challenge 2026.**
49
49
 
50
- ![Version](https://img.shields.io/badge/version-0.1.0-blue)
50
+ ![Version](https://img.shields.io/badge/version-0.1.3-blue)
51
51
  ![Python](https://img.shields.io/badge/python-3.9+-blue)
52
52
  ![License](https://img.shields.io/badge/license-MIT-green)
53
53
  ![Platform](https://img.shields.io/badge/platform-Windows-lightgrey)
@@ -61,7 +61,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
61
61
  - 🔌 **Lemonade Integration** - Works with your local Lemonade LLM server (no cloud required)
62
62
  - 🪟 **Windows Ready** - Fully compatible with GitHub Desktop 3.5.5+ hooks support
63
63
  - ⚡ **Auto-Detection** - Automatically finds your running Lemonade instance
64
- - 🎯 **Model Flexible** - Use any Lemonade-compatible model (default: qwen2.5-it-3b-FLM)
64
+ - 🎯 **Curated Models** - Easy model selection with recommended models for different tasks
65
65
 
66
66
  ---
67
67
 
@@ -74,7 +74,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
74
74
  1. Download the installer from [AMD Lemonade Releases](https://github.com/AMD-AI-Software/lemonade/releases)
75
75
  2. Run `Lemonade_Server_Installer.exe`
76
76
  3. Launch Lemonade Server from the desktop shortcut
77
- 4. Download a model via the Lemonade UI (e.g., `qwen2.5-it-3b-FLM`)
77
+ 4. Download a model via the Lemonade UI (e.g., `qwen3.5-0.8b-gguf` - the new default!)
78
78
 
79
79
  📚 **Documentation:** [AMD Ryzen AI - Lemonade Setup](https://ryzenai.docs.amd.com/en/latest/llm/server_interface.html)
80
80
 
@@ -107,6 +107,51 @@ set LEMONADE_SERVER_URL=http://localhost:8020
107
107
  pip install diffron
108
108
  ```
109
109
 
110
+ ### 5. Setup Model (Important!)
111
+
112
+ **Diffron comes with curated models. The default model works out of the box.**
113
+
114
+ **Default model:** `qwen2.5-it-3b-FLM` (included with Lemonade)
115
+
116
+ **To use a different model:**
117
+
118
+ ```bash
119
+ # List all curated models
120
+ diffron-setup-model --list
121
+
122
+ # Set a specific model (sets DIFFRON_MODEL env var permanently)
123
+ diffron-setup-model --model qwen3.5-0.8b-gguf
124
+
125
+ # Reset to default
126
+ diffron-setup-model
127
+ ```
128
+
129
+ **Or via Python API:**
130
+
131
+ ```python
132
+ from diffron import list_available_models, get_default_model
133
+
134
+ # List all curated models
135
+ models = list_available_models()
136
+ for model in models:
137
+ print(f"{model.name}: {model.description}")
138
+
139
+ # Get default model
140
+ default = get_default_model()
141
+ print(f"Default: {default.name}")
142
+ ```
143
+
144
+ **Or manually via environment variable:**
145
+
146
+ ```cmd
147
+ # Temporary (current session)
148
+ set DIFFRON_MODEL=qwen3.5-0.8b-gguf
149
+
150
+ # Permanent (System Properties → Environment Variables)
151
+ # Name: DIFFRON_MODEL
152
+ # Value: qwen3.5-0.8b-gguf
153
+ ```
154
+
110
155
  ### 5. Install Git Hooks
111
156
 
112
157
  ```bash
@@ -206,14 +251,28 @@ client.install_hooks(global_install=True)
206
251
  | `DIFFRON_MODEL` | `qwen2.5-it-3b-FLM` | Model name to use |
207
252
  | `DIFFRON_MAX_DIFF_CHARS` | `4000` | Max diff characters |
208
253
 
254
+ ### Curated Models
255
+
256
+ Diffron comes with a collection of curated models optimized for different use cases:
257
+
258
+ | Model ID | Description | Parameters | Best For |
259
+ |----------|-------------|------------|----------|
260
+ | **qwen2.5-it-3b-FLM** ⭐ | Qwen 2.5 IT — Default, reliable | 3B | Commit messages, PR descriptions |
261
+ | qwen3.5-0.8b-gguf | Qwen 3.5 — Lightweight & fast | 0.8B | Quick commits, low-resource PCs |
262
+ | qwen2.5-7b-gguf | Qwen 2.5 — Larger model | 7B | Complex analysis, code review |
263
+ | llama-3.2-3b-gguf | Llama 3.2 — Alternative | 3B | General purpose |
264
+
209
265
  ### Change Model
210
266
 
211
- ```cmd
212
- # System-wide
213
- setx DIFFRON_MODEL "qwen2.5-coder-7b"
267
+ ```bash
268
+ # Set a curated model
269
+ diffron-setup-model --model qwen3.5-0.8b-gguf
214
270
 
215
- # Current session
216
- set DIFFRON_MODEL=qwen2.5-coder-7b
271
+ # List available models
272
+ diffron-setup-model --list
273
+
274
+ # Or manually (system-wide)
275
+ setx DIFFRON_MODEL "qwen3.5-0.8b-gguf"
217
276
  ```
218
277
 
219
278
  ### Python API
@@ -221,8 +280,15 @@ set DIFFRON_MODEL=qwen2.5-coder-7b
221
280
  ```python
222
281
  from diffron import DiffronClient
223
282
 
224
- # Use different model
225
- client = DiffronClient(model="your-model-name")
283
+ # Use a curated model by name
284
+ client = DiffronClient(model="qwen2.5-7b-gguf")
285
+
286
+ # Get model configuration
287
+ from diffron import get_model_config
288
+ config = get_model_config("qwen3.5-0.8b-gguf")
289
+ if config:
290
+ print(f"Best for: {config.best_for}")
291
+ print(f"Parameters: {config.parameters}")
226
292
  ```
227
293
 
228
294
  ---
@@ -275,7 +341,7 @@ client = DiffronClient(model="your-model-name")
275
341
  ┌─────────────────────────────────────────────────────────┐
276
342
  │ 4. Hook calls Lemonade API │
277
343
  │ - URL: http://localhost:8020/api/v1 │
278
- │ - Model: qwen2.5-it-3b-FLM
344
+ │ - Model: qwen3.5-0.8b-gguf (default)
279
345
  └─────────────────────────────────────────────────────────┘
280
346
 
281
347
  ┌─────────────────────────────────────────────────────────┐
@@ -297,7 +363,7 @@ client = DiffronClient(model="your-model-name")
297
363
 
298
364
  ```bash
299
365
  # Start Lemonade
300
- lemonade serve qwen2.5-it-3b-FLM
366
+ lemonade serve qwen3.5-0.8b-gguf
301
367
 
302
368
  # Verify URL
303
369
  echo %LEMONADE_SERVER_URL%
@@ -320,10 +386,28 @@ python -c "from diffron.git_hooks import install_hooks; install_hooks(global_ins
320
386
 
321
387
  ```bash
322
388
  # Download model
323
- lemonade pull qwen2.5-it-3b-FLM
389
+ lemonade pull qwen3.5-0.8b-gguf
324
390
 
325
391
  # Verify model name
326
- set DIFFRON_MODEL=qwen2.5-it-3b-FLM
392
+ diffron-setup-model --list
393
+ ```
394
+
395
+ ### Wrong Model Being Used
396
+
397
+ **Symptom:** Logs show old model name despite installation.
398
+
399
+ **Cause:** `DIFFRON_MODEL` environment variable overrides the default.
400
+
401
+ **Solution:**
402
+ ```bash
403
+ # Check current value
404
+ echo %DIFFRON_MODEL%
405
+
406
+ # Reset to recommended
407
+ diffron-setup-model --model qwen3.5-0.8b-gguf
408
+
409
+ # Or remove override (uses default from curated models)
410
+ diffron-setup-model
327
411
  ```
328
412
 
329
413
  See [docs/SETUP.md](docs/SETUP.md) for complete troubleshooting guide.
@@ -4,7 +4,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
4
4
 
5
5
  **Diffron is a production-ready reference implementation of the lemonade-python-sdk — submitted to the AMD Lemonade Developer Challenge 2026.**
6
6
 
7
- ![Version](https://img.shields.io/badge/version-0.1.0-blue)
7
+ ![Version](https://img.shields.io/badge/version-0.1.3-blue)
8
8
  ![Python](https://img.shields.io/badge/python-3.9+-blue)
9
9
  ![License](https://img.shields.io/badge/license-MIT-green)
10
10
  ![Platform](https://img.shields.io/badge/platform-Windows-lightgrey)
@@ -18,7 +18,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
18
18
  - 🔌 **Lemonade Integration** - Works with your local Lemonade LLM server (no cloud required)
19
19
  - 🪟 **Windows Ready** - Fully compatible with GitHub Desktop 3.5.5+ hooks support
20
20
  - ⚡ **Auto-Detection** - Automatically finds your running Lemonade instance
21
- - 🎯 **Model Flexible** - Use any Lemonade-compatible model (default: qwen2.5-it-3b-FLM)
21
+ - 🎯 **Curated Models** - Easy model selection with recommended models for different tasks
22
22
 
23
23
  ---
24
24
 
@@ -31,7 +31,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
31
31
  1. Download the installer from [AMD Lemonade Releases](https://github.com/AMD-AI-Software/lemonade/releases)
32
32
  2. Run `Lemonade_Server_Installer.exe`
33
33
  3. Launch Lemonade Server from the desktop shortcut
34
- 4. Download a model via the Lemonade UI (e.g., `qwen2.5-it-3b-FLM`)
34
+ 4. Download a model via the Lemonade UI (e.g., `qwen3.5-0.8b-gguf` - the new default!)
35
35
 
36
36
  📚 **Documentation:** [AMD Ryzen AI - Lemonade Setup](https://ryzenai.docs.amd.com/en/latest/llm/server_interface.html)
37
37
 
@@ -64,6 +64,51 @@ set LEMONADE_SERVER_URL=http://localhost:8020
64
64
  pip install diffron
65
65
  ```
66
66
 
67
+ ### 5. Setup Model (Important!)
68
+
69
+ **Diffron comes with curated models. The default model works out of the box.**
70
+
71
+ **Default model:** `qwen2.5-it-3b-FLM` (included with Lemonade)
72
+
73
+ **To use a different model:**
74
+
75
+ ```bash
76
+ # List all curated models
77
+ diffron-setup-model --list
78
+
79
+ # Set a specific model (sets DIFFRON_MODEL env var permanently)
80
+ diffron-setup-model --model qwen3.5-0.8b-gguf
81
+
82
+ # Reset to default
83
+ diffron-setup-model
84
+ ```
85
+
86
+ **Or via Python API:**
87
+
88
+ ```python
89
+ from diffron import list_available_models, get_default_model
90
+
91
+ # List all curated models
92
+ models = list_available_models()
93
+ for model in models:
94
+ print(f"{model.name}: {model.description}")
95
+
96
+ # Get default model
97
+ default = get_default_model()
98
+ print(f"Default: {default.name}")
99
+ ```
100
+
101
+ **Or manually via environment variable:**
102
+
103
+ ```cmd
104
+ # Temporary (current session)
105
+ set DIFFRON_MODEL=qwen3.5-0.8b-gguf
106
+
107
+ # Permanent (System Properties → Environment Variables)
108
+ # Name: DIFFRON_MODEL
109
+ # Value: qwen3.5-0.8b-gguf
110
+ ```
111
+
67
112
  ### 5. Install Git Hooks
68
113
 
69
114
  ```bash
@@ -163,14 +208,28 @@ client.install_hooks(global_install=True)
163
208
  | `DIFFRON_MODEL` | `qwen2.5-it-3b-FLM` | Model name to use |
164
209
  | `DIFFRON_MAX_DIFF_CHARS` | `4000` | Max diff characters |
165
210
 
211
+ ### Curated Models
212
+
213
+ Diffron comes with a collection of curated models optimized for different use cases:
214
+
215
+ | Model ID | Description | Parameters | Best For |
216
+ |----------|-------------|------------|----------|
217
+ | **qwen2.5-it-3b-FLM** ⭐ | Qwen 2.5 IT — Default, reliable | 3B | Commit messages, PR descriptions |
218
+ | qwen3.5-0.8b-gguf | Qwen 3.5 — Lightweight & fast | 0.8B | Quick commits, low-resource PCs |
219
+ | qwen2.5-7b-gguf | Qwen 2.5 — Larger model | 7B | Complex analysis, code review |
220
+ | llama-3.2-3b-gguf | Llama 3.2 — Alternative | 3B | General purpose |
221
+
166
222
  ### Change Model
167
223
 
168
- ```cmd
169
- # System-wide
170
- setx DIFFRON_MODEL "qwen2.5-coder-7b"
224
+ ```bash
225
+ # Set a curated model
226
+ diffron-setup-model --model qwen3.5-0.8b-gguf
171
227
 
172
- # Current session
173
- set DIFFRON_MODEL=qwen2.5-coder-7b
228
+ # List available models
229
+ diffron-setup-model --list
230
+
231
+ # Or manually (system-wide)
232
+ setx DIFFRON_MODEL "qwen3.5-0.8b-gguf"
174
233
  ```
175
234
 
176
235
  ### Python API
@@ -178,8 +237,15 @@ set DIFFRON_MODEL=qwen2.5-coder-7b
178
237
  ```python
179
238
  from diffron import DiffronClient
180
239
 
181
- # Use different model
182
- client = DiffronClient(model="your-model-name")
240
+ # Use a curated model by name
241
+ client = DiffronClient(model="qwen2.5-7b-gguf")
242
+
243
+ # Get model configuration
244
+ from diffron import get_model_config
245
+ config = get_model_config("qwen3.5-0.8b-gguf")
246
+ if config:
247
+ print(f"Best for: {config.best_for}")
248
+ print(f"Parameters: {config.parameters}")
183
249
  ```
184
250
 
185
251
  ---
@@ -232,7 +298,7 @@ client = DiffronClient(model="your-model-name")
232
298
  ┌─────────────────────────────────────────────────────────┐
233
299
  │ 4. Hook calls Lemonade API │
234
300
  │ - URL: http://localhost:8020/api/v1 │
235
- │ - Model: qwen2.5-it-3b-FLM
301
+ │ - Model: qwen3.5-0.8b-gguf (default)
236
302
  └─────────────────────────────────────────────────────────┘
237
303
 
238
304
  ┌─────────────────────────────────────────────────────────┐
@@ -254,7 +320,7 @@ client = DiffronClient(model="your-model-name")
254
320
 
255
321
  ```bash
256
322
  # Start Lemonade
257
- lemonade serve qwen2.5-it-3b-FLM
323
+ lemonade serve qwen3.5-0.8b-gguf
258
324
 
259
325
  # Verify URL
260
326
  echo %LEMONADE_SERVER_URL%
@@ -277,10 +343,28 @@ python -c "from diffron.git_hooks import install_hooks; install_hooks(global_ins
277
343
 
278
344
  ```bash
279
345
  # Download model
280
- lemonade pull qwen2.5-it-3b-FLM
346
+ lemonade pull qwen3.5-0.8b-gguf
281
347
 
282
348
  # Verify model name
283
- set DIFFRON_MODEL=qwen2.5-it-3b-FLM
349
+ diffron-setup-model --list
350
+ ```
351
+
352
+ ### Wrong Model Being Used
353
+
354
+ **Symptom:** Logs show old model name despite installation.
355
+
356
+ **Cause:** `DIFFRON_MODEL` environment variable overrides the default.
357
+
358
+ **Solution:**
359
+ ```bash
360
+ # Check current value
361
+ echo %DIFFRON_MODEL%
362
+
363
+ # Reset to recommended
364
+ diffron-setup-model --model qwen3.5-0.8b-gguf
365
+
366
+ # Or remove override (uses default from curated models)
367
+ diffron-setup-model
284
368
  ```
285
369
 
286
370
  See [docs/SETUP.md](docs/SETUP.md) for complete troubleshooting guide.
@@ -1,26 +1,36 @@
1
- """
2
- Diffron - AI-powered Git automation with Lemonade.
3
-
4
- Automatically generates commit messages and PR descriptions using
5
- your local Lemonade LLM server.
6
- """
7
-
8
- from .client import DiffronClient
9
- from .lemonade import LemonadeClient, detect_lemonade_port
10
- from .commit_gen import generate_commit_message
11
- from .pr_gen import generate_pr_description, PRDescription
12
- from .git_hooks import install_hooks, uninstall_hooks, is_hooks_installed
13
-
14
- __version__ = "0.1.0"
15
- __author__ = "Diffron Contributors"
16
- __all__ = [
17
- "DiffronClient",
18
- "LemonadeClient",
19
- "detect_lemonade_port",
20
- "generate_commit_message",
21
- "generate_pr_description",
22
- "PRDescription",
23
- "install_hooks",
24
- "uninstall_hooks",
25
- "is_hooks_installed",
26
- ]
1
+ """
2
+ Diffron - AI-powered Git automation with Lemonade.
3
+
4
+ Automatically generates commit messages and PR descriptions using
5
+ your local Lemonade LLM server.
6
+ """
7
+
8
+ from .client import DiffronClient
9
+ from .lemonade import LemonadeClient, detect_lemonade_port
10
+ from .commit_gen import generate_commit_message
11
+ from .pr_gen import generate_pr_description, PRDescription
12
+ from .git_hooks import install_hooks, uninstall_hooks, is_hooks_installed
13
+ from .models import (
14
+ ModelConfig,
15
+ list_available_models,
16
+ get_default_model,
17
+ get_model_config,
18
+ )
19
+
20
+ __version__ = "0.1.3"
21
+ __author__ = "Diffron Contributors"
22
+ __all__ = [
23
+ "DiffronClient",
24
+ "LemonadeClient",
25
+ "detect_lemonade_port",
26
+ "generate_commit_message",
27
+ "generate_pr_description",
28
+ "PRDescription",
29
+ "install_hooks",
30
+ "uninstall_hooks",
31
+ "is_hooks_installed",
32
+ "ModelConfig",
33
+ "list_available_models",
34
+ "get_default_model",
35
+ "get_model_config",
36
+ ]
@@ -0,0 +1,8 @@
1
+ """
2
+ Main entry point for running diffron as a module: python -m diffron
3
+ """
4
+
5
+ from diffron.cli import main
6
+
7
+ if __name__ == "__main__":
8
+ main()