changeset


Namechangeset JSON
Version 0.2.8 PyPI version JSON
download
home_pageNone
SummaryChangeset management tool for Python projects
upload_time2025-07-16 20:34:13
maintainerNone
docs_urlNone
authorNone
requires_python>=3.13
licenseMIT
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"
}
        
Elapsed time: 1.20393s