How to make a psycopg release

  • Check if there is a new version or libpq or OpenSSL; in such case update LIBPQ_VERSION and/or OPENSSL_VERSION in .github/workflows/packages-bin.yml.

  • Check if there is a new cibuildwheel release; if so, upgrade it in .github/workflows/packages-bin.yml.

  • Use tools/bump_version.py to upgrade package version numbers.

  • Push to GitHub to run the tests workflow.

  • Build the packages by triggering manually the ones requested among:

  • Delete the wheelhouse directory there is one.

  • Build m1 packages by running ./tools/build/run_build_macos_arm64.sh BRANCH. On successful completion it will save built packages in wheelhouse

  • If all packages were built ok, push the new tag created by bump_version.py:

    git push --tags
    
  • Download the artifacts.zip package from the last Packages workflow run.

  • Unpack the packages in the wheelhouse dir:

    mkdir -p wheelhouse
    cd wheelhouse
    unzip ~/Downloads/artifact.zip
    
  • If the package is a testing one, upload it on TestPyPI with:

    $ twine upload -r testpypi *
    
  • If the package is stable, omit -r testpypi:

    $ twine upload *
    
  • Run tools/bump_version.py -l dev to bump to the next dev version.

When a new PostgreSQL major version is released

  • Add the new version to tools/update_errors.py and run the script to add new error classes.

  • Run the script tools/update_oids.py to add new oids. Use -h to get an example docker command line to run a server locally.

  • Check if there are new enum values to include in:

    • psycopg_c/psycopg_c/pq/libpq.pxd;

    • psycopg/psycopg/pq/_enums.py.

  • Include the new version in GitHub Actions test and package grids.

  • Bump PG_VERSION in the macos job of .github/workflows/packages-bin.yml.

  • Bump pg_version in tools/build/build_macos_arm64.sh.

  • Bump the version in tools/build/wheel_win32_before_build.bat.

  • Update the documented versions in:

    • docs/basic/install.rst;

    • content/features/contents.lr in the psycopg-website repository.

When a new Python major version is released

  • Add the new version to the relevant test matrices in .github/workflows/tests.yml and .github/workflows/packages-bin.yml.

  • Update docs/basic/install.rst with the correct range of supported Python versions.

  • Add the Programming Language :: Python :: 3.<X> classifier to psycopg/setup.cfg, psycopg_c/setup.cfg and psycopg_pool/setup.cfg.

  • Update the list of versions in tools/build/build_macos_arm64.sh to include the new version. Look for both the python_versions variable and the CIBW_BUILD environment variable.