diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f43fb8..d498cbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.2.0](https://github.com/ably/vcdiff-python/tree/v0.2.0) (2026-09-23) ### Fixed @@ -15,6 +15,16 @@ the wrong output for deltas that use same modes [#692](https://github.com/ably/ably-pubsub-python/issues/692) +### Breaking changes + +These affect only code that imports the internal modules directly. The public API exported from +`vcdiff_decoder` (`decode`, `Decoder`, `parse_delta` and the exception types) is unchanged. + +- `vcdiff_decoder.types.SAME_CACHE_SIZE` (`3 * 256`) is removed and replaced by + `SAME_CACHE_BLOCKS` (`3`), the RFC 3284 `s_same` value: the number of 256-slot blocks in the same + cache rather than a slot count. Code that imported `SAME_CACHE_SIZE` must switch to + `SAME_CACHE_BLOCKS` (multiply by 256 if you need the number of slots) + ## [0.1.0](https://github.com/ably/vcdiff-python/tree/v0.1.0) (2025-09-16) This is the initial release of the VCDIFF (RFC 3284) decoder library for Python. @@ -29,4 +39,4 @@ It provides the following features: - Support for all VCDIFF instruction types (ADD, COPY, RUN) - Compatible with Python 3.7+ - 100% test coverage with 85/85 test cases passing -- Comprehensive test suite integration via vcdiff-tests submodule \ No newline at end of file +- Comprehensive test suite integration via vcdiff-tests submodule diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8701c6a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Contributing to vcdiff-python + +## Contributing + +### Initialising + +vcdiff-python uses [Poetry](https://python-poetry.org/) for packaging and dependency management. Please refer to the [Poetry documentation](https://python-poetry.org/docs/#installation) for up to date instructions on how to install Poetry. + +Perform the following operations after cloning the repository contents: + +```shell +git submodule init +git submodule update +poetry install +``` + +The [`vcdiff-tests`](https://github.com/ably/vcdiff-tests) submodule holds the shared test cases used by all Ably VCDIFF decoder implementations, so the test suite cannot run without it. + +### Running the test suite + +```shell +poetry run pytest +``` + +### Updating the shared test suite + +To pick up new test cases from [`vcdiff-tests`](https://github.com/ably/vcdiff-tests), move the submodule to the latest `main` and commit the new submodule reference: + +```shell +git submodule update --remote submodules/vcdiff-tests +git add submodules/vcdiff-tests +``` + +## Release Process + +Releases should always be made through a release pull request (PR), which needs to bump the version number and add to the [change log](CHANGELOG.md). + +The release process must include the following steps: + +1. Ensure that all work intended for this release has landed to `main` +2. Create a release branch named like `release/0.2.0` +3. Add a commit to bump the version number, updating [`pyproject.toml`](./pyproject.toml) and [`vcdiff_decoder/__init__.py`](./vcdiff_decoder/__init__.py) +4. Update the [CHANGELOG](./CHANGELOG.md): rename the "Unreleased" heading to the new version, linking it to the version tag and adding the release date, and make sure every change in the release is listed. Call out any breaking changes, including changes to internal modules that consumers may import directly, in a "Breaking changes" section +5. Commit this change: `git add CHANGELOG.md && git commit -m "Update change log."` +6. Push the release branch to GitHub +7. Create a release PR (ensure you include an SDK Team Engineering Lead and the SDK Team Product Manager as reviewers) and gain approvals for it, then merge that to `main` +8. Create a tag named like `v0.2.0` and push it to GitHub - e.g. `git tag v0.2.0 && git push origin v0.2.0`. The [Release Workflow](https://github.com/ably/vcdiff-python/actions/workflows/release.yml) checks that the tag matches the package version before publishing +9. Create the release on GitHub including populating the release notes +10. Go to the [Release Workflow](https://github.com/ably/vcdiff-python/actions/workflows/release.yml) and ask [ably/team-sdk](https://github.com/orgs/ably/teams/team-sdk) member to approve publishing to the PyPI registry diff --git a/pyproject.toml b/pyproject.toml index a6d8569..f7df95f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "vcdiff-decoder" -version = "0.1.0" +version = "0.2.0" description = "Python implementation of VCDIFF (RFC 3284) delta compression format" readme = "README.md" license = "Apache-2.0" diff --git a/vcdiff_decoder/__init__.py b/vcdiff_decoder/__init__.py index 17aaf3e..9d71bc1 100644 --- a/vcdiff_decoder/__init__.py +++ b/vcdiff_decoder/__init__.py @@ -28,7 +28,7 @@ ) from .types import InstructionType -__version__ = "0.1.0" +__version__ = "0.2.0" __all__ = [ "Decoder", "decode",