-
Notifications
You must be signed in to change notification settings - Fork 41
Releasing
- Edit the version name in the
setup.py
file - Test installing your package locally by running
pip install -e .
from the project's root directory - If install is successful, run unit tests in release branch
- If all tests pass, upload the beta release or release candidate to PyPI (steps detailed below)
- Test & use your release with
pip install nlptest==version-name --pre
(don't forget the--pre
flag) - Iterate as many times as necessary. If satisfied with release tests, proceed to stable release.
- Edit the version name in the
setup.py
file andsphinx/conf.py
file - Test installing your package locally by running
pip install -e .
from the project's root directory - If install is successful, run unit tests in release branch
- 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 - Test & use your release with
pip install nlptest==version-name
- Edit fn, url and sha256 in
meta.yml
file & release on Anaconda - Create a new release on GitHub repo with release notes (steps detailed below)
- Announce release on socials
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.
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
.
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.
For a first-time release, install anaconda-client and conda-build:
conda install anaconda-client conda-build
Make sure you are logged in as JohnSnowLabs
conda login
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. This is already created when creating the PyPI release.
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. You can find this on the package's PyPI page in the Download files
tab.
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
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 nlptest
python
from nlptest import Harness
Harness(task='ner', model='dslim/bert-base-NER', hub='huggingface').generate().run().report()
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 spark-nlp by using conda:
conda install -c johnsnowlabs nlptest
To release on the conda-forge channel, head over to https://github.com/conda-forge/nlptest-feedstock
Fork the repo, create a PR updating the recipe/meta.yaml
file with the latest release details.
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