Name | changeset JSON |
Version |
0.2.8
JSON |
| download |
home_page | None |
Summary | Changeset management tool for Python projects |
upload_time | 2025-07-16 20:34:13 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.13 |
license | MIT |
keywords |
changelog
changeset
release
versioning
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pychangeset
A tool for automating version bumps, changelog generation and release PRs in Python projects, inspired by [Changesets](https://github.com/changesets/changesets).
## Installation
```bash
# Use with uvx (recommended)
uvx changeset
# Or install from PyPI
pip install pychangeset
```
## Quick Start
### 0. Initialize
```bash
uvx changeset
```
This will:
- Run `changeset init`, creating a .changeset/ directory in your project
- Prompt the user to `add` a changeset, which will:
- Detect which packages have changes
- Ask what type of change for each (major/minor/patch)
- Prompt for a description
- Create a changeset file in `.changeset/`
### 1. Track `.changset/`
```bash
git add .changeset/
git commit -m "Add changeset"
git push
```
### 2. Automated Release Process
To get the most out of pychangeset, add these workflows to your repository:
### `.github/workflows/changesets.yml`
When you merge to your main branch, the `changesets` workflow will create or update a Release PR with:
- Updated CHANGELOG.md files
- Bumped version numbers
- Consolidated PR description
### `.github/workflows/release.yml`
When the Release PR is merged, the `release` workflow:
- Publishes packages to PyPI
- Creates git tags
- Creates GitHub releases
## Commands
### `changeset init`
Initialize changesets in your project.
### `changeset add` / `changeset`
Create a new changeset interactively.
Options:
- `--all`: Include all packages without prompting
### `changeset version`
Process changesets and bump versions.
Options:
- `--dry-run`: Preview changes without applying them
- `--skip-changelog`: Skip changelog generation
### `changeset changelog`
Generate changelogs from changesets.
Options:
- `--dry-run`: Preview changelog without writing files
- `--output-pr-description <file>`: Write PR description to file
### `changeset check-changeset`
Check if changesets exist for the current branch (useful for CI).
Options:
- `--skip-ci`: Skip check in CI environment
## Changelog Format
Changelogs are generated with PR and commit metadata:
```markdown
# package-name
## 1.2.0
### Minor Changes
- [#123](link-to-pr) [`abc123`](link-to-commit) Thanks @username! - Description of change
### Patch Changes
- [#124](link-to-pr) [`def456`](link-to-commit) Thanks @username! - Bug fix description
```
## Development
```bash
# Clone the repository
git clone https://github.com/the-roaring/pychangeset.git
cd pychangeset
# Install with uv
uv sync
# Run tests
uv run pytest
# Run the tool locally
uv run changeset
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "changeset",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "changelog, changeset, release, versioning",
"author": null,
"author_email": "Roaring Knight <knight@purelymail.com>",
"download_url": "https://files.pythonhosted.org/packages/e4/32/0c8ce1debbc2b434bc56d128c43d1edd9ecd78ca2135808b2877c5399bac/changeset-0.2.8.tar.gz",
"platform": null,
"description": "# pychangeset\n\nA tool for automating version bumps, changelog generation and release PRs in Python projects, inspired by [Changesets](https://github.com/changesets/changesets).\n\n## Installation\n\n```bash\n# Use with uvx (recommended)\nuvx changeset\n\n# Or install from PyPI\npip install pychangeset\n```\n\n## Quick Start\n\n### 0. Initialize\n\n```bash\nuvx changeset\n```\n\nThis will:\n- Run `changeset init`, creating a .changeset/ directory in your project\n- Prompt the user to `add` a changeset, which will:\n - Detect which packages have changes\n - Ask what type of change for each (major/minor/patch)\n - Prompt for a description\n - Create a changeset file in `.changeset/`\n\n### 1. Track `.changset/`\n\n```bash\ngit add .changeset/\ngit commit -m \"Add changeset\"\ngit push\n```\n\n### 2. Automated Release Process\n\nTo get the most out of pychangeset, add these workflows to your repository:\n\n### `.github/workflows/changesets.yml`\n\nWhen you merge to your main branch, the `changesets` workflow will create or update a Release PR with:\n - Updated CHANGELOG.md files\n - Bumped version numbers\n - Consolidated PR description\n\n### `.github/workflows/release.yml`\n\nWhen the Release PR is merged, the `release` workflow:\n- Publishes packages to PyPI\n- Creates git tags\n- Creates GitHub releases\n\n## Commands\n\n### `changeset init`\nInitialize changesets in your project.\n\n### `changeset add` / `changeset`\nCreate a new changeset interactively.\n\nOptions:\n- `--all`: Include all packages without prompting\n\n### `changeset version`\nProcess changesets and bump versions.\n\nOptions:\n- `--dry-run`: Preview changes without applying them\n- `--skip-changelog`: Skip changelog generation\n\n### `changeset changelog`\nGenerate changelogs from changesets.\n\nOptions:\n- `--dry-run`: Preview changelog without writing files\n- `--output-pr-description <file>`: Write PR description to file\n\n### `changeset check-changeset`\nCheck if changesets exist for the current branch (useful for CI).\n\nOptions:\n- `--skip-ci`: Skip check in CI environment\n\n## Changelog Format\n\nChangelogs are generated with PR and commit metadata:\n\n```markdown\n# package-name\n\n## 1.2.0\n\n### Minor Changes\n\n- [#123](link-to-pr) [`abc123`](link-to-commit) Thanks @username! - Description of change\n\n### Patch Changes\n\n- [#124](link-to-pr) [`def456`](link-to-commit) Thanks @username! - Bug fix description\n```\n\n## Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/the-roaring/pychangeset.git\ncd pychangeset\n\n# Install with uv\nuv sync\n\n# Run tests\nuv run pytest\n\n# Run the tool locally\nuv run changeset\n```\n\n## License\n\nMIT\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Changeset management tool for Python projects",
"version": "0.2.8",
"project_urls": {
"Homepage": "https://github.com/the-roaring/pychangeset",
"Issues": "https://github.com/the-roaring/pychangeset/issues",
"Repository": "https://github.com/the-roaring/pychangeset"
},
"split_keywords": [
"changelog",
" changeset",
" release",
" versioning"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3c6229c74fb5333aa583291f4a40beda056b0f76afb5ed63bf286af301207090",
"md5": "593dc5d75cdff48361721496608c04d6",
"sha256": "08d7cfccd2850c9856e1405290bf3faf993b76dd301c5f22fc4ab04ea682147a"
},
"downloads": -1,
"filename": "changeset-0.2.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "593dc5d75cdff48361721496608c04d6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 19986,
"upload_time": "2025-07-16T20:34:12",
"upload_time_iso_8601": "2025-07-16T20:34:12.692095Z",
"url": "https://files.pythonhosted.org/packages/3c/62/29c74fb5333aa583291f4a40beda056b0f76afb5ed63bf286af301207090/changeset-0.2.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e4320c8ce1debbc2b434bc56d128c43d1edd9ecd78ca2135808b2877c5399bac",
"md5": "8dcb0f44c525408252e719c6700d7223",
"sha256": "99ed1d5f56154101d162becea36c64132009436ea37183ebbd9daca30ac24ad0"
},
"downloads": -1,
"filename": "changeset-0.2.8.tar.gz",
"has_sig": false,
"md5_digest": "8dcb0f44c525408252e719c6700d7223",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 37793,
"upload_time": "2025-07-16T20:34:13",
"upload_time_iso_8601": "2025-07-16T20:34:13.894955Z",
"url": "https://files.pythonhosted.org/packages/e4/32/0c8ce1debbc2b434bc56d128c43d1edd9ecd78ca2135808b2877c5399bac/changeset-0.2.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-16 20:34:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "the-roaring",
"github_project": "pychangeset",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "changeset"
}