Skip to content
A pure python implementation of the Snappy compression algorithm.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci test against libsnapp Oct 8, 2018
.project-template Initialize project Oct 8, 2018
py_snappy Fix variable names for `uvarint` in `py_snappy.main` Dec 26, 2018
tests Add cross-check with official test fixtures using libsnappy Oct 10, 2018
.bumpversion.cfg Bump version: 0.1.0-alpha.0 → 0.1.0-alpha.1 Mar 13, 2019
.travis.yml travis config: use latest pypy3 container Feb 21, 2018
LICENSE init Jan 25, 2018
Makefile Initialize project Oct 8, 2018 Initialize project Oct 8, 2018
pytest.ini Remove references to deprecated "py.test" Jun 4, 2018
requirements-docs.txt Initialize project Oct 8, 2018
tox.ini Enable stricter mypy checks Oct 9, 2018


Join the chat at Build Status PyPI version Python versions Docs build

A pure python implementation of the Snappy compression algorithm

Read more in the documentation on ReadTheDocs. View the change log.


pip install py-snappy

Developer Setup

If you would like to hack on py-snappy, please check out the Ethereum Development Tactical Manual for information on how we do:

  • Testing
  • Pull Requests
  • Code Style
  • Documentation

Development Environment Setup

You can set up your dev environment with:

git clone
cd py-snappy
virtualenv -p python3 venv
. venv/bin/activate
pip install -e .[dev]

Testing Setup

During development, you might like to have tests run on every file save.

Show flake8 errors on file change:

# Test flake8
when-changed -v -s -r -1 py_snappy/ tests/ -c "clear; flake8 py_snappy tests && echo 'flake8 success' || echo 'error'"

Run multi-process tests in one command, but without color:

# in the project root:
pytest --numprocesses=4 --looponfail --maxfail=1
# the same thing, succinctly:
pytest -n 4 -f --maxfail=1

Run in one thread, with color and desktop notifications:

cd venv
ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on py-snappy failed'" ../tests ../py_snappy

Release setup

For Debian-like systems:

apt install pandoc

To release a new version:

make release bump=$$VERSION_PART_TO_BUMP$$

How to bumpversion

The version format for this repo is {major}.{minor}.{patch} for stable, and {major}.{minor}.{patch}-{stage}.{devnum} for unstable (stage can be alpha or beta).

To issue the next version in line, specify which part to bump, like make release bump=minor or make release bump=devnum. This is typically done from the master branch, except when releasing a beta (in which case the beta is released from master, and the previous stable branch is released from said branch). To include changes made with each release, update "docs/releases.rst" with the changes, and apply commit directly to master before release.

If you are in a beta version, make release bump=stage will switch to a stable.

To issue an unstable version when the current version is stable, specify the new version explicitly, like make release bump="--new-version 4.0.0-alpha.1 devnum"

You can’t perform that action at this time.