Skip to content
Marco Edward Gorelli edited this page Sep 24, 2024 · 17 revisions

Release process

Pre-requisites

In order for this process to work, you should clone Narwhals locally using ssh.

Then, run verify that you see the following output if you run git remote get-url upstream:

$ git remote get-url upstream
[email protected]:narwhals-dev/narwhals.git

If not, then you should first do

git remote add upstream [email protected]:narwhals-dev/narwhals.git

Fetch the latest changes

After you've merged everything you'd like to include, please make sure you're up-to-date with upstream/main:

git checkout main
git fetch upstream
git reset --hard upstream/main

Release process

  1. Copy/fixup the release notes: go to https://github.com/narwhals-dev/narwhals/releases, click "edit" on the latest (draft) release notes. If anything needs fixing up, you can do so now. Once you're done, copy all the content, and paste it somewhere. You'll need this later.
  2. Make sure that bump-version branch doesn't appear in https://github.com/narwhals-dev/narwhals/branches - if it does, delete it.
  3. Make a new bump-version branch: git checkout -b bump-version
  4. Run python utils/bump_version.py patch. Replace 'patch' with either 'minor' or 'major', depending on by how much you want to bump the version. In general, we try to mirror Polars release for major and minor versions, but not for patch versions - so:
    • if the latest Polars release is 3.4.2 and the latest Narwhals release is 3.3.4, you should bump Narwhals to 3.4.0
    • if the latest Polars release is 3.4.2 and the latest Narwhals release is 3.4.5, you should bump Narwhals to 3.4.6
    • if the latest Polars release is 4.0.1 and the latest Narwhals release is 3.4.5, you should bump Narwhals to 4.0.0
  5. Open a pull request from bump-version to main. To do this, go to https://github.com/narwhals-dev/narwhals/pulls, click "new pull request", and open a pull request from bump-version to main
  6. Go to the latest published release in https://github.com/narwhals-dev/narwhals/releases, and paste in the release notes which you copied in step 1. Amend the title to be of the form "Narhwals v<version goes here>", e.g. Narwhals v3.1.4. Do not click "publish": GitHub Actions will automatically publish (and sign) the release notes as part of CI, all you need to do is paste in the auto-generated release notes.

NOTE: if you see a message like bypassed rule violations, don't worry about it - we block people from creating tags (as they trigger releases) so if you see it, it's because you have permission to bypass that rule 😇

Clone this wiki locally