Skip to content

Verifying a release

Each Apache PyIceberg release is validated by the community by holding a vote. A community release manager will prepare a release candidate and call a vote on the Iceberg dev list. To validate the release candidate, community members will test it out in their downstream projects and environments.

In addition to testing in downstream projects, community members also check the release’s signatures, checksums, and license documentation.

Validating a release candidate

Release announcements include links to the following:

  • A source tarball
  • A signature (.asc)
  • A checksum (.sha512)
  • KEYS file
  • GitHub change comparison

After downloading the source tarball, signature, checksum, and KEYS file, here are instructions on how to verify signatures, checksums, and documentation.

Verifying signatures

First, import the keys.

curl https://downloads.apache.org/iceberg/KEYS -o KEYS
gpg --import KEYS

Set an environment variable to the version to verify and path to use

export PYICEBERG_VERSION=<version> # e.g. 0.6.1rc3
export PYICEBERG_VERIFICATION_DIR=/tmp/pyiceberg/${PYICEBERG_VERSION}

Next, verify the .asc file.

svn checkout https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-${PYICEBERG_VERSION}/ ${PYICEBERG_VERIFICATION_DIR}

cd ${PYICEBERG_VERIFICATION_DIR}

for name in $(ls pyiceberg-*.whl pyiceberg-*.tar.gz)
do
    gpg --verify ${name}.asc ${name}
done

Verifying checksums

cd ${PYICEBERG_VERIFICATION_DIR}
for name in $(ls pyiceberg-*.whl.sha512 pyiceberg-*.tar.gz.sha512)
do
    shasum -a 512 --check ${name}
done

Verifying License Documentation

export PYICEBERG_RELEASE_VERSION=${PYICEBERG_VERSION/rc?/}  # remove rcX qualifier
tar xzf pyiceberg-${PYICEBERG_RELEASE_VERSION}.tar.gz
cd pyiceberg-${PYICEBERG_RELEASE_VERSION}

Run RAT checks to validate license header:

./dev/check-license

Testing

This section explains how to run the tests of the source distribution.

Python Version

Make sure you're using a supported Python version

First step is to install the package:

make install

To run the full test coverage, with both unit tests and integration tests:

make test-coverage

This will spin up Docker containers to faciliate running test coverage.

Cast the vote

Votes are cast by replying to the release candidate announcement email on the dev mailing list with either +1, 0, or -1. For example :

[ ] +1 Release this as PyIceberg 0.3.0

[ ] +0

[ ] -1 Do not release this because…

In addition to your vote, it’s customary to specify if your vote is binding or non-binding. Only members of the Project Management Committee have formally binding votes. If you’re unsure, you can specify that your vote is non-binding. To read more about voting in the Apache framework, checkout the Voting information page on the Apache foundation’s website.