Skip to content

v0.33.0

@jaysonsantos jaysonsantos tagged this 12 Oct 10:19
## What changed

This pull request sets the version to 0.33.0 and adds the changelog
entry for the release.

- `bmemcached/__init__.py`, `docs/conf.py`, and `.cz.yaml` have the
version `0.33.0`.
- `CHANGELOG.md` has a new `v0.33.0` entry.
- `cz bump --changelog --files-only` made these changes. Commitizen
found a `MINOR` increment from the commits after `v0.32.0`.
- The short version in `docs/conf.py` (`version = "0.33"`) is a manual
edit. Commitizen updates only the full version string.
- `flake.nix` has the version `0.33.0` in `packages.default`. It had
`0.32.0`, so `nix build` gave a package with the old version in its
name.
- `.cz.yaml` has `flake.nix` in `version_files`, so the subsequent bumps
update it.

No package code changes.

## What the release contains

Features:

- `raw_data` mode, which skips the serialization of values (#315).
- Python 3.10 is the minimum version, and the Python 2 support layer is
gone (#278).

Fixes:

- The response parse path does not build a struct format string for each
call (#286).
- `Protocol.__str__` shows the password state and not the password.
- The distributed hash ring keeps its key placement.
- Explicit errors replace the `assert` guards, an exception has a
message, and a password leak is closed.
- Hot paths have small performance improvements (#263).

Users on Python 3.9 or earlier stay on 0.32.0, because the package
metadata has `Requires-Python: >=3.10`.

## After the merge

Tag the merge commit on `main` as `v0.33.0` and push the tag. The tag
starts `.github/workflows/publish.yml`, which publishes to PyPI.

Do not tag the commit on this branch. Mergify squashes the pull request,
so the commit on `main` has a different hash.

## Tests

I ran the build steps of `publish.yml` on a copy of this branch:

```
pandoc -s --to rst -o /dev/stdout CHANGELOG.md   # appended to README.rst
python -m build --sdist --wheel --outdir dist/ .
python -m twine check --strict dist/*
```

Result: `python_binary_memcached-0.33.0-py3-none-any.whl` and
`python_binary_memcached-0.33.0.tar.gz` build, and `twine check
--strict` passes for the two files. The installed wheel reports
`__version__ == "0.33.0"` and has the `raw_data` parameter.

```
nix eval --raw .#packages.x86_64-linux.default.name
```

Result: `python3.12-python-binary-memcached-0.33.0`. On a copy of `main`
with the new `version_files` entry, `cz bump --changelog --files-only`
changed the version in `flake.nix` from `0.32.0` to `0.33.0`.

```
pytest -q
ruff check .
ruff format --check .
```

Result: 296 passed, 3 skipped. The 3 skipped tests are the SASL tests,
because the local memcached has no SASL support. The two `ruff` commands
pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01WMdSnqGyEgaYYyfafF7648


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
  * Added a raw-data mode and a clearer display of password state.
* **Bug Fixes**
* Improved response parsing, hash-ring placement, and handling of leaked
passwords.
  * Improved performance on frequently used operations.
* **Compatibility**
* Python 3.10 is now the minimum supported version; Python 2 is no
longer supported.
* **Release**
* Updated the release version to 0.33.0 across package and documentation
metadata.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Assets 2
Loading