Chronicler automates development documentation by using Git history and language models to generate commit descriptions and release notes.
Project description
Chronicler 
Introduction
Chronicler is an innovative Python tool designed to streamline and automate the documentation process for development projects. By leveraging Git and various language processing technologies, it provides an intuitive interface for tracking changes, generating comprehensive documentation, and ensuring seamless integration with version control workflows.
Chronicler can draft commit descriptions from the current repository status and release notes from the difference between two Git branches. It supports local Ollama models by default and OpenAI models when OPENAI_API_KEY is configured.
Getting Started
Prerequisites
- Python 3.10 or higher
- Git
- uv
Installation
Install from PyPI:
uv tool install py-chronicler
Clone the repository:
git clone https://github.com/jasuca/chronicler.git
cd chronicler
Install the project and development tools with uv:
uv sync --group dev
Run the CLI from the project checkout:
uv run chronicler --help
requirements.txt is retained as a compatibility entry point for tools that still call pip install -r requirements.txt; project dependencies and release metadata live in pyproject.toml.
Usage
To use Chronicler, run the following command:
chronicler release [OPTIONS] LEFT_BRANCH RIGHT_BRANCH [PATH]
chronicler commit [OPTIONS] [PATH]
Options
- commit Generate commit description
- release Generate release notes
- --llm [ollama|openai]: Select the language model provider.
- --llm-model TEXT: Specify the provider model. The default is
llama2. - --help: Display the help message.
Examples
Comparing two branches: chronicler release main develop /path/to/repo
Generate current repo commit: chronicler commit
Generate current repo commit using Ollama(mistral): chronicler commit --llm=ollama --llm-model=mistral .
Generate release notes with OpenAI:
OPENAI_API_KEY=... chronicler release v0.1.1 main . --llm=openai --llm-model=gpt-3.5-turbo-instruct
Development
Run tests:
uv run pytest
Run the CI lint checks locally:
uv run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
uv run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
Build release artifacts:
uv run python -m build
If you already synced the dev environment and want to avoid creating an isolated build environment, use:
uv build --no-build-isolation
The package is published to PyPI as py-chronicler. The console command installed by the package is chronicler.
Contributing
We welcome contributions to the Chronicler project! If you have suggestions for improvements or want to contribute code, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch). - Make your changes and commit them (
git commit -am 'Add some feature'). - Push to the branch (
git push origin feature-branch). - Create a new Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_chronicler-0.1.3.tar.gz.
File metadata
- Download URL: py_chronicler-0.1.3.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aea1279dabafb1f467e61c917165e029828974484ea399a8b9c0e0344c86d83e
|
|
| MD5 |
5e9b9cefd2a447478c90556d031fa244
|
|
| BLAKE2b-256 |
62f1af8e51076280b426b677ddc4792ad66db814dc8cfb557387c386d2ffc9af
|
Provenance
The following attestation bundles were made for py_chronicler-0.1.3.tar.gz:
Publisher:
python-publish.yml on jasuca/chronicler
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_chronicler-0.1.3.tar.gz -
Subject digest:
aea1279dabafb1f467e61c917165e029828974484ea399a8b9c0e0344c86d83e - Sigstore transparency entry: 1674062339
- Sigstore integration time:
-
Permalink:
jasuca/chronicler@6a0819b81c7431a67118b4302a6aa384e2f0b87d -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/jasuca
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6a0819b81c7431a67118b4302a6aa384e2f0b87d -
Trigger Event:
release
-
Statement type:
File details
Details for the file py_chronicler-0.1.3-py3-none-any.whl.
File metadata
- Download URL: py_chronicler-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a42b1c6ef1e8999c93b612455d131e4387aa76c0fb8702fa5477bf82f31c501
|
|
| MD5 |
54584b61ebfdfe3d42a1ad6d8051ffb9
|
|
| BLAKE2b-256 |
eb5410583613f7d543208da37d3acc04223bac11e766ce448757540eaaa65c4a
|
Provenance
The following attestation bundles were made for py_chronicler-0.1.3-py3-none-any.whl:
Publisher:
python-publish.yml on jasuca/chronicler
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_chronicler-0.1.3-py3-none-any.whl -
Subject digest:
0a42b1c6ef1e8999c93b612455d131e4387aa76c0fb8702fa5477bf82f31c501 - Sigstore transparency entry: 1674062387
- Sigstore integration time:
-
Permalink:
jasuca/chronicler@6a0819b81c7431a67118b4302a6aa384e2f0b87d -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/jasuca
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6a0819b81c7431a67118b4302a6aa384e2f0b87d -
Trigger Event:
release
-
Statement type: