logforge-gitlog 0.1.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.
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: logforge-gitlog
3
+ Version: 0.1.0
4
+ Summary: AI-Powered Changelog & Release Notes Generator
5
+ Project-URL: Homepage, https://github.com/JToSound/LogForge
6
+ Project-URL: Repository, https://github.com/JToSound/LogForge
7
+ Project-URL: Changelog, https://github.com/JToSound/LogForge/blob/main/CHANGELOG.md
8
+ License: MIT License
9
+
10
+ Copyright (c) 2024 gitlog contributors
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ License-File: LICENSE
30
+ Keywords: ai,changelog,cli,git,release-notes
31
+ Classifier: Development Status :: 3 - Alpha
32
+ Classifier: Environment :: Console
33
+ Classifier: Intended Audience :: Developers
34
+ Classifier: License :: OSI Approved :: MIT License
35
+ Classifier: Programming Language :: Python :: 3
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Topic :: Software Development :: Version Control :: Git
39
+ Requires-Python: >=3.11
40
+ Requires-Dist: gitpython>=3.1
41
+ Requires-Dist: jinja2>=3.1
42
+ Requires-Dist: litellm>=1.40
43
+ Requires-Dist: pydantic-settings>=2
44
+ Requires-Dist: pydantic>=2
45
+ Requires-Dist: rich>=13
46
+ Requires-Dist: tenacity>=8
47
+ Requires-Dist: tomli>=2; python_version < '3.11'
48
+ Requires-Dist: typer[all]>=0.12
49
+ Provides-Extra: dev
50
+ Requires-Dist: mypy>=1.10; extra == 'dev'
51
+ Requires-Dist: pytest-cov>=5; extra == 'dev'
52
+ Requires-Dist: pytest>=8; extra == 'dev'
53
+ Requires-Dist: respx>=0.21; extra == 'dev'
54
+ Requires-Dist: ruff>=0.4; extra == 'dev'
55
+ Requires-Dist: types-jinja2; extra == 'dev'
56
+ Description-Content-Type: text/markdown
57
+
58
+ <div align="center">
59
+
60
+ # LogForge — gitlog
61
+
62
+ **LogForge — AI-Powered Changelog & Release Notes Generator**
63
+
64
+ [![CI](https://github.com/JToSound/LogForge/actions/workflows/ci.yml/badge.svg)](https://github.com/JToSound/LogForge/actions/workflows/ci.yml)
65
+ [![Coverage](https://codecov.io/gh/JToSound/LogForge/branch/main/graph/badge.svg)](https://codecov.io/gh/JToSound/LogForge)
66
+ [![GitHub Releases](https://img.shields.io/github/v/release/JToSound/LogForge)](https://github.com/JToSound/LogForge/releases)
67
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
68
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
69
+
70
+ One command. From git history to a human-readable, structured CHANGELOG.
71
+ Supports **multiple languages**, **multiple output formats**, and **any LLM**.
72
+
73
+ </div>
74
+
75
+ ---
76
+
77
+ ## Quick Start
78
+
79
+ ```bash
80
+ # Install directly from GitHub (recommended until published to PyPI)
81
+ pip install git+https://github.com/JToSound/LogForge.git
82
+ cd your-repo
83
+ export OPENAI_API_KEY=sk-...
84
+ gitlog generate
85
+ ```
86
+
87
+ That's it. Your `CHANGELOG.md` is ready. 🎉
88
+
89
+ ---
90
+
91
+ ## 5s Demo
92
+
93
+ Below is a very short demo that shows `gitlog generate` producing a changelog in under 5 seconds on small repos.
94
+
95
+ ![Quick demo](docs/demo.svg)
96
+
97
+ ---
98
+
99
+ ## Features
100
+
101
+ - 🤖 **Two-layer classification** — rule engine (zero API cost) + LLM batch fallback
102
+ - 🌍 **Multilingual output** — English, Traditional Chinese, Simplified Chinese, Japanese
103
+ - 📄 **Multiple formats** — Markdown (Keep-a-Changelog), JSON, HTML, Twitter drafts
104
+ - 🔗 **GitHub integration** — auto-generates PR/issue/commit links
105
+ - ⚡ **Batch LLM calls** — never call the LLM in a loop; respects token budgets
106
+ - 🔄 **Fallback chain** — LLM failure → rule engine, never interrupts the flow
107
+ - 🧩 **CI/CD ready** — GitHub Actions workflow included out of the box
108
+ - 🏠 **Local inference** — Ollama support for fully private generation
109
+
110
+ ---
111
+
112
+ ## Installation
113
+
114
+ ```bash
115
+ # Recommended: with uv
116
+ uv tool install gitlog
117
+
118
+ # Or pip
119
+ pip install gitlog
120
+ ```
121
+
122
+ **Requirements:** Python 3.11+, Git
123
+
124
+ ---
125
+
126
+ ## Usage
127
+
128
+ ```bash
129
+ # Generate full CHANGELOG
130
+ gitlog generate
131
+
132
+ # From a specific version
133
+ gitlog generate --since v1.2.0
134
+
135
+ # HTML report
136
+ gitlog generate --format html
137
+
138
+ # Traditional Chinese output
139
+ gitlog generate --lang zh-TW
140
+
141
+ # Use a local Ollama model (no API key needed)
142
+ gitlog generate --model ollama/llama3
143
+
144
+ # Preview in terminal without writing a file
145
+ gitlog generate --dry-run
146
+
147
+ # Compare two versions
148
+ gitlog diff v1.0.0 v1.1.0
149
+
150
+ # Generate Twitter/X announcement
151
+ gitlog tweet
152
+
153
+ # ASCII commit statistics
154
+ gitlog stats
155
+
156
+ # Interactive setup
157
+ gitlog init
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Configuration
163
+
164
+ Create a `.gitlog.toml` in your repo root (or run `gitlog init`):
165
+
166
+ ```toml
167
+ [gitlog]
168
+ llm_provider = "openai"
169
+ model = "gpt-4o-mini"
170
+ language = "en"
171
+ format = "markdown"
172
+ output_file = "CHANGELOG.md"
173
+ project_description = "A developer tool for..."
174
+ exclude_patterns = ["^chore\\(deps\\)", "^Merge branch"]
175
+ group_by_scope = true
176
+ max_commits_per_group = 20
177
+
178
+ [gitlog.github]
179
+ repo = "owner/repo"
180
+ ```
181
+
182
+ ### Full Configuration Reference
183
+
184
+ | Parameter | Default | Description |
185
+ |---|---|---|
186
+ | `llm_provider` | `openai` | LLM provider: `openai`, `anthropic`, `ollama` |
187
+ | `model` | `gpt-4o-mini` | Model identifier |
188
+ | `language` | `en` | Output language: `en`, `zh-TW`, `zh-CN`, `ja` |
189
+ | `format` | `markdown` | Output format: `markdown`, `json`, `html`, `twitter` |
190
+ | `output_file` | `CHANGELOG.md` | Output file path |
191
+ | `project_description` | `""` | Project context injected into LLM prompts |
192
+ | `exclude_patterns` | see default | Regex list of commit messages to skip |
193
+ | `group_by_scope` | `true` | Group commits by conventional commit scope |
194
+ | `max_commits_per_group` | `20` | Max commits shown per category per version |
195
+ | `github.repo` | `""` | `owner/repo` for generating clickable links |
196
+
197
+ ---
198
+
199
+ ## GitHub Actions Integration
200
+
201
+ Add to your release workflow:
202
+
203
+ ```yaml
204
+ - name: Generate Changelog
205
+ uses: JToSound/LogForge/.github/workflows/release.yml@main
206
+ env:
207
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
208
+ ```
209
+
210
+ Or use the included `release.yml` which automatically:
211
+ 1. Builds and publishes to PyPI on tag push
212
+ 2. Generates the changelog using gitlog itself
213
+ 3. Creates a GitHub Release with the generated notes
214
+
215
+ ---
216
+
217
+ ## Supported LLM Providers
218
+
219
+ | Provider | Model Example | Env Var |
220
+ |---|---|---|
221
+ | OpenAI | `gpt-4o-mini` | `OPENAI_API_KEY` |
222
+ | Anthropic | `claude-3-5-haiku-20241022` | `ANTHROPIC_API_KEY` |
223
+ | Ollama (local) | `ollama/llama3` | *(none required)* |
224
+ | Gemini | `gemini/gemini-1.5-flash` | `GEMINI_API_KEY` |
225
+
226
+ ---
227
+
228
+ ## License
229
+
230
+ MIT © gitlog contributors
@@ -0,0 +1,5 @@
1
+ logforge_gitlog-0.1.0.dist-info/METADATA,sha256=9i2ze8wK2zGqCqPp8ma9qUBOtca2IuLrMafKJ9GWRTA,7307
2
+ logforge_gitlog-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
3
+ logforge_gitlog-0.1.0.dist-info/entry_points.txt,sha256=29AWTz-MCXZg5Pd2XJVfc-bdrGURvTJtc0wwoquwCeo,68
4
+ logforge_gitlog-0.1.0.dist-info/licenses/LICENSE,sha256=2kr1yI3LOKUYA3C11sPRaHyX2HPI0n7k_OOfGvJYCkE,1097
5
+ logforge_gitlog-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ gitlog = gitlog.cli:app
3
+ logforge = gitlog.cli:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 gitlog contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.