Skip to content

Releasing

Luca Martial edited this page Apr 6, 2023 · 40 revisions

Release Steps ๐Ÿ“ฎ

Pre-release steps to follow

  1. Edit the version name in the setup.py file
  2. Test installing your package locally by running pip install -e . from the project's root directory
  3. If install is successful, run unit tests in release branch
  4. If all tests pass, upload the beta release or release candidate to PyPI (steps detailed below)
  5. Test & use your release with pip install nlptest==version-name --pre (don't forget the --pre flag)
  6. Iterate as many times as necessary. If satisfied with release tests, proceed to stable release.

Stable release steps to follow

  1. Edit the version name in the setup.py file
  2. Test installing your package locally by running pip install -e . from the project's root directory
  3. If install is successful, run unit tests in release branch
  4. If all tests pass, upload the stable release to PyPI (steps detailed below) - โš ๏ธ overwriting a release is basically impossible, so at this point you should be certain your package is fully functioning before uploading it
  5. Test & use your release with pip install nlptest==version-name
  6. Release on Anaconda
  7. Create a new release on GitHub repo with release notes (steps detailed below)
  8. Announce release on socials

Guidelines ๐Ÿ“

๐Ÿง‘โ€๐Ÿณ Preparing a release

Version naming

Semantic Versioning guidelines are as follows: MAJOR.MINOR.PATCH.IDENTIFIER.NUMBER

Examples:

  • Beta release: version="1.0.0.beta.1"
  • Release candidate: version="1.0.0.rc.1"
  • Stable release: version="1.0.0"

This naming convention applies to both the PyPI uploads and the GitHub release tag names.

Branches

Releases should be made from release/ branches. Once the stable release is up and running on PyPI, the release/ branch can be merged into main.

๐Ÿ“ฆ Releasing on PyPI

Step 1: Clear previous builds Make sure the dist/directory is empty.

Step 2: Package the nlptest Python package

In the project's root directory, run:

python setup.py sdist bdist_wheel

This command creates a dist directory containing source distribution (.tar.gz) and wheel distribution (.whl) files.

Step 2: Upload the nlptest package to PyPI

Use twine to upload your package to PyPI:

twine upload dist/*

You'll be prompted to enter your PyPI username and password.

๐Ÿ Releasing on Anaconda

Setup

Before you start, install anaconda-client and conda-build:

conda install anaconda-client conda-build

Make sure you are logged in as JohnSnowLabs

conda login

Build

Create the .tar.gz file. Run the following in the root of the nlptest project to create the .tar.gz file which is contained in the /dist folder.

python setup.py sdist bdist_wheel 

Purge the previous builds:

conda build purge

Turn off auto-upload:

conda config --set anaconda_upload no

Update the values in meta.yaml: fn, url and sha256 need to be updated to the values of the tar.gz PyPI upload or file

Make sure you have these channels added

conda config --env --add channels johnsnowlabs
conda config --env --add channels conda-forge

Build nlptest from the latest PyPI tar (note: this takes ~30mns locally):

cd conda/
conda build . --python=3.7 && conda build . --python=3.8 && conda build . --python=3.9

Test

Create a new anaconda venv and test the package locally before uploading.
If this runs error free, the package an be uploaded to anaconda

conda create -n nlptest_r<version>  python=3.7
conda activate nlptest_r<version>
conda install  --update-deps --use-local <local package>
python
from nlptest import Harness
Harness(task='ner', model='dslim/bert-base-NER', hub='huggingface').generate().run().report()

Upload

Upload all python versions of the Conda package to Anaconda Cloud:

anaconda upload ~/opt/anaconda3/conda-bld/noarch/nlptest-1.0.0-py37_0.tar.bz2
anaconda upload ~/opt/anaconda3/conda-bld/noarch/nlptest-1.0.0-py38_0.tar.bz2
anaconda upload ~/opt/anaconda3/conda-bld/noarch/nlptest-1.0.0-py39_0.tar.bz2

Install

Install spark-nlp by using conda:

conda install -c johnsnowlabs nlptest

๐Ÿ’ป Releasing on GitHub

Step 1: Create a new tag name This should be the version name. Example: 1.0.0

Step 2: Pick the target branch For a stable release, this should be main.

Step 3: Give it a title This should be in the following format: John Snow Labs NLP Test 1.0.0

Step 4: Write release notes This has to be done well before the release is created. Here is an example of good release notes.

Step 5: Tick off "Create a discussion for this release"

Step 6: Upload .tar.gz file from dist/ folder

Step 7: Publish release

Clone this wiki locally