diffsage 1.2.0__tar.gz → 1.2.1__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 (72) hide show
  1. {diffsage-1.2.0/src/diffsage.egg-info → diffsage-1.2.1}/PKG-INFO +52 -20
  2. {diffsage-1.2.0 → diffsage-1.2.1}/README.md +51 -19
  3. {diffsage-1.2.0 → diffsage-1.2.1}/pyproject.toml +1 -1
  4. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/ask.py +6 -0
  5. {diffsage-1.2.0 → diffsage-1.2.1/src/diffsage.egg-info}/PKG-INFO +52 -20
  6. {diffsage-1.2.0 → diffsage-1.2.1}/LICENSE +0 -0
  7. {diffsage-1.2.0 → diffsage-1.2.1}/setup.cfg +0 -0
  8. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/__init__.py +0 -0
  9. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/__main__.py +0 -0
  10. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/cli.py +0 -0
  11. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/__init__.py +0 -0
  12. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/auth.py +0 -0
  13. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/commit.py +0 -0
  14. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/config.py +0 -0
  15. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/commands/doctor.py +0 -0
  16. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/__init__.py +0 -0
  17. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/defaults.py +0 -0
  18. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/file_loader.py +0 -0
  19. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/loader.py +0 -0
  20. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/paths.py +0 -0
  21. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/resolver.py +0 -0
  22. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/schema.py +0 -0
  23. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/scope.py +0 -0
  24. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/config/settings.py +0 -0
  25. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/exceptions/__init__.py +0 -0
  26. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/exceptions/base.py +0 -0
  27. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/exceptions/credentials.py +0 -0
  28. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/exceptions/git.py +0 -0
  29. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/exceptions/provider.py +0 -0
  30. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/git/__init__.py +0 -0
  31. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/git/client.py +0 -0
  32. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/logging/__init__.py +0 -0
  33. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/logging/formatter.py +0 -0
  34. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/logging/logger.py +0 -0
  35. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/__init__.py +0 -0
  36. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/commit_message.py +0 -0
  37. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/config.py +0 -0
  38. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/credentials.py +0 -0
  39. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/doctor.py +0 -0
  40. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/git.py +0 -0
  41. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/models/provider.py +0 -0
  42. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/parsers/commit_message_parser.py +0 -0
  43. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/prompts/__init__.py +0 -0
  44. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/providers/__init__.py +0 -0
  45. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/providers/base.py +0 -0
  46. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/providers/factory.py +0 -0
  47. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/providers/gemini_provider.py +0 -0
  48. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/__init__.py +0 -0
  49. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/ai_service.py +0 -0
  50. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/commit_service.py +0 -0
  51. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/config_service.py +0 -0
  52. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/credentials_service.py +0 -0
  53. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/doctor_service.py +0 -0
  54. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/editor_service.py +0 -0
  55. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/git_service.py +0 -0
  56. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/services/prompt_service.py +0 -0
  57. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/storage/__init__.py +0 -0
  58. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/storage/base.py +0 -0
  59. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/storage/config_repository.py +0 -0
  60. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/storage/credentials_repository.py +0 -0
  61. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/__init__.py +0 -0
  62. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/ask_view.py +0 -0
  63. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/auth_view.py +0 -0
  64. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/base.py +0 -0
  65. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/commit_view.py +0 -0
  66. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/config_view.py +0 -0
  67. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage/ui/doctor_view.py +0 -0
  68. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage.egg-info/SOURCES.txt +0 -0
  69. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage.egg-info/dependency_links.txt +0 -0
  70. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage.egg-info/entry_points.txt +0 -0
  71. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage.egg-info/requires.txt +0 -0
  72. {diffsage-1.2.0 → diffsage-1.2.1}/src/diffsage.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsage
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: AI-powered Git workflow assistant
5
5
  Author: Gunitha Rathnayake
6
6
  License: MIT
@@ -150,18 +150,38 @@ Its scope is intentionally focused on improving Git workflows.
150
150
 
151
151
  # Project Status
152
152
 
153
- > **Current Stage:** Active Development
153
+ > **Current Stage:** Alpha
154
154
 
155
- DiffSage is currently under active development.
155
+ DiffSage is an actively developed open-source project.
156
156
 
157
- The project is being developed privately while the core architecture, documentation, and workflow foundation are finalized.
157
+ The project is published on PyPI and distributed as a Python package for
158
+ developers, automation, and AI agents.
158
159
 
159
- The long-term goal is to open source the project once it reaches a stable and well-documented foundation.
160
+ The current focus is on expanding Git workflow capabilities while maintaining
161
+ a stable architecture, clear documentation, reliable automation, and strong
162
+ engineering practices.
160
163
 
161
164
  ---
162
165
 
163
166
  # Installation
164
167
 
168
+ ## User Installation
169
+
170
+ DiffSage is published on PyPI and can be installed using `pipx`.
171
+
172
+ DiffSage currently requires Python 3.12.
173
+
174
+ ```bash
175
+ pipx install diffsage
176
+ ```
177
+
178
+ After installation verify the environment
179
+ ```bash
180
+ diffsage doctor
181
+ ```
182
+
183
+ ## Developer Installation
184
+
165
185
  Clone the repository:
166
186
 
167
187
  ```bash
@@ -192,28 +212,49 @@ Windows
192
212
  Install the project:
193
213
 
194
214
  ```bash
195
- pip install -e ".[dev]"
215
+ python -m pip install -e ".[dev]"
196
216
  ```
197
217
 
198
218
  ---
199
219
 
220
+ # Releases
221
+
222
+ DiffSage releases are published through GitHub Releases and distributed through PyPI.
223
+
224
+ Released package versions can be installed directly with:
225
+
226
+ ```bash
227
+ pipx install diffsage
228
+ ```
229
+
230
+ A specific version can be installed with:
231
+
232
+ ```bash
233
+ pipx install diffsage==1.2.0
234
+ ```
235
+
236
+ Release builds and PyPI publishing are automated through GitHub Actions.
237
+
238
+ ---
239
+
200
240
  # Configuration
201
241
 
202
242
  DiffSage supports layered configuration through global and repository-local TOML files.
203
243
 
204
244
  Application configuration controls how DiffSage behaves and can be managed through global, repository-local, and environment-based configuration.
205
245
 
206
- Provider credentials are managed separately from application configuration.
207
246
  Provider credentials are managed separately from application configuration and are not part of the Settings configuration model.
208
247
 
209
248
  ```env
210
249
  DIFFSAGE_PROVIDER=gemini
211
- DIFFSAGE_AI_MODEL=gemini-3.5-flash-lite
250
+ DIFFSAGE_AI_MODEL=<provider-supported-model>
212
251
  DIFFSAGE_LOG_LEVEL=INFO
213
252
  DIFFSAGE_TIMEOUT=60
214
253
  DIFFSAGE_MAX_RETRIES=3
215
254
  ```
216
255
 
256
+ The configured model must be supported by the selected AI provider.
257
+
217
258
  Configuration can also be managed directly from the CLI:
218
259
 
219
260
  ```bash
@@ -275,7 +316,6 @@ Display AI suggestion
275
316
  Named credential profiles are also supported:
276
317
 
277
318
  ```bash
278
-
279
319
  diffsage auth set gemini YOUR_API_KEY --name paid
280
320
  ```
281
321
 
@@ -390,10 +430,6 @@ Additional project documentation is available within the repository.
390
430
  | `docs/changelog.md` | Project changes and milestones |
391
431
  | `docs/adrs/ADR-*` | Architecture Decision Records (ADRs) |
392
432
 
393
- Future documentation will include:
394
-
395
- - Contributing Guide
396
-
397
433
  ---
398
434
 
399
435
  # Roadmap
@@ -452,15 +488,11 @@ Features that fall outside these principles intentionally remain out of scope.
452
488
 
453
489
  # Contributing
454
490
 
455
- Contribution guidelines will be published when the project becomes publicly available.
456
-
457
- Future contributors will be encouraged to review:
491
+ DiffSage is an open-source project and contributions are welcome.
458
492
 
459
- - Architecture documentation
460
- - Coding conventions
461
- - ADRs
493
+ Before contributing, review the project architecture, coding conventions, and architectural decision records in the `docs/` directory.
462
494
 
463
- before submitting changes.
495
+ Additional contribution guidelines will be documented as the project evolves.
464
496
 
465
497
  ---
466
498
 
@@ -111,18 +111,38 @@ Its scope is intentionally focused on improving Git workflows.
111
111
 
112
112
  # Project Status
113
113
 
114
- > **Current Stage:** Active Development
114
+ > **Current Stage:** Alpha
115
115
 
116
- DiffSage is currently under active development.
116
+ DiffSage is an actively developed open-source project.
117
117
 
118
- The project is being developed privately while the core architecture, documentation, and workflow foundation are finalized.
118
+ The project is published on PyPI and distributed as a Python package for
119
+ developers, automation, and AI agents.
119
120
 
120
- The long-term goal is to open source the project once it reaches a stable and well-documented foundation.
121
+ The current focus is on expanding Git workflow capabilities while maintaining
122
+ a stable architecture, clear documentation, reliable automation, and strong
123
+ engineering practices.
121
124
 
122
125
  ---
123
126
 
124
127
  # Installation
125
128
 
129
+ ## User Installation
130
+
131
+ DiffSage is published on PyPI and can be installed using `pipx`.
132
+
133
+ DiffSage currently requires Python 3.12.
134
+
135
+ ```bash
136
+ pipx install diffsage
137
+ ```
138
+
139
+ After installation verify the environment
140
+ ```bash
141
+ diffsage doctor
142
+ ```
143
+
144
+ ## Developer Installation
145
+
126
146
  Clone the repository:
127
147
 
128
148
  ```bash
@@ -153,28 +173,49 @@ Windows
153
173
  Install the project:
154
174
 
155
175
  ```bash
156
- pip install -e ".[dev]"
176
+ python -m pip install -e ".[dev]"
157
177
  ```
158
178
 
159
179
  ---
160
180
 
181
+ # Releases
182
+
183
+ DiffSage releases are published through GitHub Releases and distributed through PyPI.
184
+
185
+ Released package versions can be installed directly with:
186
+
187
+ ```bash
188
+ pipx install diffsage
189
+ ```
190
+
191
+ A specific version can be installed with:
192
+
193
+ ```bash
194
+ pipx install diffsage==1.2.0
195
+ ```
196
+
197
+ Release builds and PyPI publishing are automated through GitHub Actions.
198
+
199
+ ---
200
+
161
201
  # Configuration
162
202
 
163
203
  DiffSage supports layered configuration through global and repository-local TOML files.
164
204
 
165
205
  Application configuration controls how DiffSage behaves and can be managed through global, repository-local, and environment-based configuration.
166
206
 
167
- Provider credentials are managed separately from application configuration.
168
207
  Provider credentials are managed separately from application configuration and are not part of the Settings configuration model.
169
208
 
170
209
  ```env
171
210
  DIFFSAGE_PROVIDER=gemini
172
- DIFFSAGE_AI_MODEL=gemini-3.5-flash-lite
211
+ DIFFSAGE_AI_MODEL=<provider-supported-model>
173
212
  DIFFSAGE_LOG_LEVEL=INFO
174
213
  DIFFSAGE_TIMEOUT=60
175
214
  DIFFSAGE_MAX_RETRIES=3
176
215
  ```
177
216
 
217
+ The configured model must be supported by the selected AI provider.
218
+
178
219
  Configuration can also be managed directly from the CLI:
179
220
 
180
221
  ```bash
@@ -236,7 +277,6 @@ Display AI suggestion
236
277
  Named credential profiles are also supported:
237
278
 
238
279
  ```bash
239
-
240
280
  diffsage auth set gemini YOUR_API_KEY --name paid
241
281
  ```
242
282
 
@@ -351,10 +391,6 @@ Additional project documentation is available within the repository.
351
391
  | `docs/changelog.md` | Project changes and milestones |
352
392
  | `docs/adrs/ADR-*` | Architecture Decision Records (ADRs) |
353
393
 
354
- Future documentation will include:
355
-
356
- - Contributing Guide
357
-
358
394
  ---
359
395
 
360
396
  # Roadmap
@@ -413,15 +449,11 @@ Features that fall outside these principles intentionally remain out of scope.
413
449
 
414
450
  # Contributing
415
451
 
416
- Contribution guidelines will be published when the project becomes publicly available.
417
-
418
- Future contributors will be encouraged to review:
452
+ DiffSage is an open-source project and contributions are welcome.
419
453
 
420
- - Architecture documentation
421
- - Coding conventions
422
- - ADRs
454
+ Before contributing, review the project architecture, coding conventions, and architectural decision records in the `docs/` directory.
423
455
 
424
- before submitting changes.
456
+ Additional contribution guidelines will be documented as the project evolves.
425
457
 
426
458
  ---
427
459
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "diffsage"
7
- version = "1.2.0"
7
+ version = "1.2.1"
8
8
  description = "AI-powered Git workflow assistant"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12,<3.13"
@@ -4,6 +4,7 @@ from diffsage.exceptions import (
4
4
  AuthenticationError,
5
5
  ConfigError,
6
6
  CredentialNotFoundError,
7
+ ModelNotFoundError,
7
8
  ProviderUnavailableError,
8
9
  )
9
10
  from diffsage.logging.logger import get_logger
@@ -46,6 +47,11 @@ def ask(prompt: str) -> None:
46
47
  view.show_error(str(e))
47
48
  raise SystemExit(1) from None
48
49
 
50
+ except ModelNotFoundError as e:
51
+ logger.warning(str(e))
52
+ view.show_error(str(e))
53
+ raise SystemExit(1) from None
54
+
49
55
  except ProviderUnavailableError as e:
50
56
  logger.warning(str(e))
51
57
  view.show_error(str(e))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsage
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: AI-powered Git workflow assistant
5
5
  Author: Gunitha Rathnayake
6
6
  License: MIT
@@ -150,18 +150,38 @@ Its scope is intentionally focused on improving Git workflows.
150
150
 
151
151
  # Project Status
152
152
 
153
- > **Current Stage:** Active Development
153
+ > **Current Stage:** Alpha
154
154
 
155
- DiffSage is currently under active development.
155
+ DiffSage is an actively developed open-source project.
156
156
 
157
- The project is being developed privately while the core architecture, documentation, and workflow foundation are finalized.
157
+ The project is published on PyPI and distributed as a Python package for
158
+ developers, automation, and AI agents.
158
159
 
159
- The long-term goal is to open source the project once it reaches a stable and well-documented foundation.
160
+ The current focus is on expanding Git workflow capabilities while maintaining
161
+ a stable architecture, clear documentation, reliable automation, and strong
162
+ engineering practices.
160
163
 
161
164
  ---
162
165
 
163
166
  # Installation
164
167
 
168
+ ## User Installation
169
+
170
+ DiffSage is published on PyPI and can be installed using `pipx`.
171
+
172
+ DiffSage currently requires Python 3.12.
173
+
174
+ ```bash
175
+ pipx install diffsage
176
+ ```
177
+
178
+ After installation verify the environment
179
+ ```bash
180
+ diffsage doctor
181
+ ```
182
+
183
+ ## Developer Installation
184
+
165
185
  Clone the repository:
166
186
 
167
187
  ```bash
@@ -192,28 +212,49 @@ Windows
192
212
  Install the project:
193
213
 
194
214
  ```bash
195
- pip install -e ".[dev]"
215
+ python -m pip install -e ".[dev]"
196
216
  ```
197
217
 
198
218
  ---
199
219
 
220
+ # Releases
221
+
222
+ DiffSage releases are published through GitHub Releases and distributed through PyPI.
223
+
224
+ Released package versions can be installed directly with:
225
+
226
+ ```bash
227
+ pipx install diffsage
228
+ ```
229
+
230
+ A specific version can be installed with:
231
+
232
+ ```bash
233
+ pipx install diffsage==1.2.0
234
+ ```
235
+
236
+ Release builds and PyPI publishing are automated through GitHub Actions.
237
+
238
+ ---
239
+
200
240
  # Configuration
201
241
 
202
242
  DiffSage supports layered configuration through global and repository-local TOML files.
203
243
 
204
244
  Application configuration controls how DiffSage behaves and can be managed through global, repository-local, and environment-based configuration.
205
245
 
206
- Provider credentials are managed separately from application configuration.
207
246
  Provider credentials are managed separately from application configuration and are not part of the Settings configuration model.
208
247
 
209
248
  ```env
210
249
  DIFFSAGE_PROVIDER=gemini
211
- DIFFSAGE_AI_MODEL=gemini-3.5-flash-lite
250
+ DIFFSAGE_AI_MODEL=<provider-supported-model>
212
251
  DIFFSAGE_LOG_LEVEL=INFO
213
252
  DIFFSAGE_TIMEOUT=60
214
253
  DIFFSAGE_MAX_RETRIES=3
215
254
  ```
216
255
 
256
+ The configured model must be supported by the selected AI provider.
257
+
217
258
  Configuration can also be managed directly from the CLI:
218
259
 
219
260
  ```bash
@@ -275,7 +316,6 @@ Display AI suggestion
275
316
  Named credential profiles are also supported:
276
317
 
277
318
  ```bash
278
-
279
319
  diffsage auth set gemini YOUR_API_KEY --name paid
280
320
  ```
281
321
 
@@ -390,10 +430,6 @@ Additional project documentation is available within the repository.
390
430
  | `docs/changelog.md` | Project changes and milestones |
391
431
  | `docs/adrs/ADR-*` | Architecture Decision Records (ADRs) |
392
432
 
393
- Future documentation will include:
394
-
395
- - Contributing Guide
396
-
397
433
  ---
398
434
 
399
435
  # Roadmap
@@ -452,15 +488,11 @@ Features that fall outside these principles intentionally remain out of scope.
452
488
 
453
489
  # Contributing
454
490
 
455
- Contribution guidelines will be published when the project becomes publicly available.
456
-
457
- Future contributors will be encouraged to review:
491
+ DiffSage is an open-source project and contributions are welcome.
458
492
 
459
- - Architecture documentation
460
- - Coding conventions
461
- - ADRs
493
+ Before contributing, review the project architecture, coding conventions, and architectural decision records in the `docs/` directory.
462
494
 
463
- before submitting changes.
495
+ Additional contribution guidelines will be documented as the project evolves.
464
496
 
465
497
  ---
466
498
 
File without changes
File without changes
File without changes