cz-changeup 0.1.0__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.
@@ -0,0 +1,55 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+ env:
7
+ FORCE_COLOR: 1
8
+
9
+ jobs:
10
+ release:
11
+ runs-on: ubuntu-latest
12
+ concurrency:
13
+ group: release
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/p/cz-changeup
17
+ permissions:
18
+ id-token: write
19
+ contents: write
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - name: Run commitizen
27
+ if: ${{ !startsWith(github.event.head_commit.message, 'bump:') }}
28
+ id: cz
29
+ uses: commitizen-tools/commitizen-action@master
30
+ with:
31
+ extra_requirements : "."
32
+ github_token: ${{ secrets.GITHUB_TOKEN }}
33
+ changelog_increment_filename: body.md
34
+
35
+ - name: Build package distributions
36
+ id: build
37
+ if: env.REVISION != env.PREVIOUS_REVISION
38
+ run: |
39
+ pipx run build
40
+
41
+ - name: Publish package distributions to PyPI
42
+ id: pypi-publish
43
+ if: env.REVISION != env.PREVIOUS_REVISION
44
+ uses: pypa/gh-action-pypi-publish@release/v1
45
+ with:
46
+ verbose: true
47
+
48
+ - name: Publish package distributions to GitHub Releases
49
+ id: github-release
50
+ if: env.REVISION != env.PREVIOUS_REVISION
51
+ uses: softprops/action-gh-release@v2
52
+ with:
53
+ body_path: "body.md"
54
+ tag_name: v${{ steps.cz.outputs.version }}
55
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,227 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
110
+ .pdm.toml
111
+ .pdm-python
112
+ .pdm-build/
113
+
114
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
115
+ __pypackages__/
116
+
117
+ # Celery stuff
118
+ celerybeat-schedule
119
+ celerybeat.pid
120
+
121
+ # SageMath parsed files
122
+ *.sage.py
123
+
124
+ # Environments
125
+ .env
126
+ .venv
127
+ env/
128
+ venv/
129
+ ENV/
130
+ env.bak/
131
+ venv.bak/
132
+
133
+ # Spyder project settings
134
+ .spyderproject
135
+ .spyproject
136
+
137
+ # Rope project settings
138
+ .ropeproject
139
+
140
+ # mkdocs documentation
141
+ /site
142
+
143
+ # mypy
144
+ .mypy_cache/
145
+ .dmypy.json
146
+ dmypy.json
147
+
148
+ # Pyre type checker
149
+ .pyre/
150
+
151
+ # pytype static type analyzer
152
+ .pytype/
153
+
154
+ # Cython debug symbols
155
+ cython_debug/
156
+
157
+ # PyCharm
158
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
159
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
160
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
161
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
162
+ #.idea/
163
+
164
+ .vscode/*
165
+ !.vscode/settings.json
166
+ !.vscode/tasks.json
167
+ !.vscode/launch.json
168
+ !.vscode/extensions.json
169
+ !.vscode/*.code-snippets
170
+
171
+ # Local History for Visual Studio Code
172
+ .history/
173
+
174
+ # Built Visual Studio Code Extensions
175
+ *.vsix
176
+
177
+ # General
178
+ .DS_Store
179
+ .AppleDouble
180
+ .LSOverride
181
+
182
+ # Icon must end with two \r
183
+ Icon
184
+
185
+ # Thumbnails
186
+ ._*
187
+
188
+ # Files that might appear in the root of a volume
189
+ .DocumentRevisions-V100
190
+ .fseventsd
191
+ .Spotlight-V100
192
+ .TemporaryItems
193
+ .Trashes
194
+ .VolumeIcon.icns
195
+ .com.apple.timemachine.donotpresent
196
+
197
+ # Directories potentially created on remote AFP share
198
+ .AppleDB
199
+ .AppleDesktop
200
+ Network Trash Folder
201
+ Temporary Items
202
+ .apdisk
203
+
204
+ # Windows thumbnail cache files
205
+ Thumbs.db
206
+ Thumbs.db:encryptable
207
+ ehthumbs.db
208
+ ehthumbs_vista.db
209
+
210
+ # Dump file
211
+ *.stackdump
212
+
213
+ # Folder config file
214
+ [Dd]esktop.ini
215
+
216
+ # Recycle Bin used on file shares
217
+ $RECYCLE.BIN/
218
+
219
+ # Windows Installer files
220
+ *.cab
221
+ *.msi
222
+ *.msix
223
+ *.msm
224
+ *.msp
225
+
226
+ # Windows shortcuts
227
+ *.lnk
@@ -0,0 +1,50 @@
1
+ ci:
2
+ autoupdate_commit_msg: "ci(pre-commit): pre-commit autoupdate"
3
+ autofix_commit_msg: "style: pre-commit auto fixes [...]"
4
+ autoupdate_schedule: monthly
5
+
6
+ default_install_hook_types: [pre-commit, commit-msg]
7
+
8
+ repos:
9
+
10
+ # Meta hooks
11
+ - repo: meta
12
+ hooks:
13
+ - id: check-hooks-apply
14
+ - id: check-useless-excludes
15
+
16
+ # Security & credential scanning/alerting
17
+ - repo: https://github.com/pre-commit/pre-commit-hooks
18
+ rev: v4.6.0
19
+ hooks:
20
+ - id: check-ast
21
+ - id: check-builtin-literals
22
+ - id: check-case-conflict
23
+ - id: check-merge-conflict
24
+ - id: check-toml
25
+ - id: check-vcs-permalinks
26
+ - id: check-yaml
27
+ - id: debug-statements
28
+ - id: detect-private-key
29
+ - id: end-of-file-fixer
30
+ - id: mixed-line-ending
31
+ - id: trailing-whitespace
32
+
33
+ # Lint and format with ruff
34
+ - repo: https://github.com/astral-sh/ruff-pre-commit
35
+ # Ruff version.
36
+ rev: v0.5.6
37
+ hooks:
38
+ # Run the linter.
39
+ - id: ruff
40
+ args: [ --fix ]
41
+ # Run the formatter.
42
+ - id: ruff-format
43
+
44
+ # # Commitizen
45
+ # - repo: https://github.com/commitizen-tools/commitizen
46
+ # rev: v3.28.0
47
+ # hooks:
48
+ # - id: commitizen
49
+ # - id: commitizen-branch
50
+ # stages: [push]
@@ -0,0 +1,5 @@
1
+ ## 0.1.0 (2024-08-15)
2
+
3
+ ### Feat
4
+
5
+ - initial release
@@ -0,0 +1,54 @@
1
+ Metadata-Version: 2.3
2
+ Name: cz-changeup
3
+ Version: 0.1.0
4
+ Summary: Commitizen plugin for better changelog generation
5
+ Project-URL: Changelog, https://github.com/kmnhan/cz-changeup#changelog
6
+ Project-URL: Documentation, https://github.com/kmnhan/cz-changeup#readme
7
+ Project-URL: Issues, https://github.com/kmnhan/cz-changeup/issues
8
+ Project-URL: Source, https://github.com/kmnhan/cz-changeup
9
+ Author-email: Kimoon Han <khan@kaist.ac.kr>
10
+ License-Expression: MIT
11
+ Keywords: changelog,commitizen
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Requires-Python: >=3.8
24
+ Requires-Dist: commitizen>=3.0.0
25
+ Description-Content-Type: text/markdown
26
+
27
+ # cz-changeup
28
+
29
+ This plugin is a version of
30
+ [Commitizen](https://commitizen-tools.github.io/commitizen/)'s default conventional
31
+ style with a more informative changelog format.
32
+
33
+ ## Installation
34
+
35
+ ```bash
36
+ pip install cz-changeup
37
+ ```
38
+
39
+ ## Configuration
40
+
41
+ Add to your `pyproject.toml`:
42
+
43
+ ```toml
44
+ [tool.commitizen]
45
+ name = "cz_changeup"
46
+ ```
47
+
48
+ The behavior of the plugin can be customized by providing the following options under `tool.commitizen`:
49
+
50
+ | Option | Description | Default | Example |
51
+ | ------------------------ | ----------------------------------------------------------------------------------------------------- | ------- | ------------------------------ |
52
+ | `changeup_repo_base_url` | The base URL for the repository. If given, adds a link to the commit for each entry in the changelog. | `""` | `"https://github.com/my/repo"` |
53
+ | `changeup_show_body` | Whether to include the commit body in the changelog. | `true` | |
54
+ | `changeup_body_indent` | The number of spaces to indent the commit body if `show_body` is set to `true`. | `2` | |
@@ -0,0 +1,28 @@
1
+ # cz-changeup
2
+
3
+ This plugin is a version of
4
+ [Commitizen](https://commitizen-tools.github.io/commitizen/)'s default conventional
5
+ style with a more informative changelog format.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ pip install cz-changeup
11
+ ```
12
+
13
+ ## Configuration
14
+
15
+ Add to your `pyproject.toml`:
16
+
17
+ ```toml
18
+ [tool.commitizen]
19
+ name = "cz_changeup"
20
+ ```
21
+
22
+ The behavior of the plugin can be customized by providing the following options under `tool.commitizen`:
23
+
24
+ | Option | Description | Default | Example |
25
+ | ------------------------ | ----------------------------------------------------------------------------------------------------- | ------- | ------------------------------ |
26
+ | `changeup_repo_base_url` | The base URL for the repository. If given, adds a link to the commit for each entry in the changelog. | `""` | `"https://github.com/my/repo"` |
27
+ | `changeup_show_body` | Whether to include the commit body in the changelog. | `true` | |
28
+ | `changeup_body_indent` | The number of spaces to indent the commit body if `show_body` is set to `true`. | `2` | |
@@ -0,0 +1,10 @@
1
+ ## 0.1.0 (2024-08-15)
2
+
3
+ ### Feat
4
+
5
+ - initial release
6
+
7
+ [main 83b594c] bump: version 0.0.0 → 0.1.0
8
+ 2 files changed, 6 insertions(+), 1 deletion(-)
9
+ create mode 100644 CHANGELOG.md
10
+
@@ -0,0 +1,45 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "cz-changeup"
7
+ version = "0.1.0"
8
+ description = "Commitizen plugin for better changelog generation"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ license = "MIT"
12
+ keywords = ["changelog", "commitizen"]
13
+ authors = [{ name = "Kimoon Han", email = "khan@kaist.ac.kr" }]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Natural Language :: English",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python",
21
+ "Programming Language :: Python :: 3.8",
22
+ "Programming Language :: Python :: 3.9",
23
+ "Programming Language :: Python :: 3.10",
24
+ "Programming Language :: Python :: 3.11",
25
+ "Programming Language :: Python :: 3.12",
26
+ ]
27
+ dependencies = ["commitizen>=3.0.0"]
28
+
29
+ [project.urls]
30
+ Changelog = "https://github.com/kmnhan/cz-changeup#changelog"
31
+ Documentation = "https://github.com/kmnhan/cz-changeup#readme"
32
+ Issues = "https://github.com/kmnhan/cz-changeup/issues"
33
+ Source = "https://github.com/kmnhan/cz-changeup"
34
+
35
+ [project.entry-points."commitizen.plugin"]
36
+ cz_changeup = "cz_changeup.cz_changeup:ChangeupCz"
37
+
38
+ [tool.hatch.build.targets.wheel]
39
+ packages = ["src/cz_changeup"]
40
+
41
+ [tool.commitizen]
42
+ name = "cz_changeup"
43
+ version_provider = "pep621"
44
+ update_changelog_on_bump = true
45
+ changelog_incremental = true
File without changes
@@ -0,0 +1,34 @@
1
+ __all__ = ["ChangeupCz"]
2
+
3
+ from commitizen import config, git
4
+ from commitizen.cz.conventional_commits import ConventionalCommitsCz
5
+
6
+
7
+ class ChangeupCz(ConventionalCommitsCz):
8
+ conf = config.read_cfg()
9
+
10
+ repo_base_url: str = conf.settings.get("changeup_repo_base_url", "").strip(" /")
11
+ show_body: bool = conf.settings.get("changeup_show_body", True)
12
+ body_indent: int = conf.settings.get("changeup_body_indent", 2)
13
+
14
+ def changelog_message_builder_hook(
15
+ self, parsed_message: dict, commit: git.GitCommit
16
+ ) -> dict | list | None:
17
+ msg = str(parsed_message["message"])
18
+
19
+ if self.repo_base_url:
20
+ msg = (
21
+ msg + f" ([{commit.rev[:7]}]({self.repo_base_url}/commit/{commit.rev}))"
22
+ )
23
+
24
+ if self.show_body and commit.body:
25
+ msg += f"\n\n{' ' * self.body_indent}"
26
+ body = commit.body.replace("\n", "\n" + (" " * self.body_indent))
27
+ msg += f"{body}"
28
+
29
+ parsed_message["message"] = msg
30
+ return parsed_message
31
+
32
+ @property
33
+ def template_extras(self) -> dict[str, str]:
34
+ return {"repo_base_url": self.repo_base_url}