Conda releases of featuretools rely on PyPI's hosted featuretools packages. Once a version is uploaded to PyPI we cannot update it, so it is important that the version we upload to PyPI will work for conda. We can test if a featuretools release will run on conda by uploading a test release to PyPI's test server and building a conda version of featuretools using the test release.
We need to upload a featuretools package to test with the conda recipe
- Make a new development release branch on featuretools (in this example we'll be testing the 0.13.3 release)
git checkout -b v0.13.3.dev
- Update version number in
setup.py,featuretools/version.py,featuretools/tests/test_version.pyto v0.13.3.dev0 and push branch to repo - Publish a new release of featuretools on Github.
- Go to the releases page on Github
- Click "Draft a new release"
- For the target, choose the new branch (v0.13.3.dev)
- For the tag, use the new version number (v0.13.3.dev0)
- For the release title, use the new version number (v0.13.3.dev0)
- For the release description, write "Development release for testing purposes"
- Check the "This is a pre-release" box
- Publish the release
- The new release will be uploaded to TestPyPI automatically
Branches on the conda-forge featuretools repo are automatically built and the package uploaded to conda-forge, so to test a release without uploading to conda-forge we need to fork the repo and develop on the fork.
- Fork conda-forge/featuretools-feedstock: visit https://github.com/conda-forge/featuretools-feedstock and click fork
- Clone forked repo locally
- Add conda-forge repo as the 'upstream' repository
git remote add upstream https://github.com/conda-forge/featuretools-feedstock.git
- If you made the fork previously and its master branch is missing commits, update it with any changes from upstream
git fetch upstream git checkout master git merge upstream/master git push origin master
- Make a branch with the version you want to release
git checkout -b new-featuretools-version
Fields to update in recipe/meta.yaml of feedstock repo:
- Always update:
- Set the new release number (e.g. v0.13.3.dev0)
{% set version = "0.13.3.dev0" %} - Source fields
- url - visit https://test.pypi.org/project/featuretools/, find correct release, go to download files page, and copy link location of the tar.gz file
- sha256 - from the download files page, click the view hashes button for the tar.gz file and copy the sha256 digest
source: url: https://test-files.pythonhosted.org/packages/3a/d7/8600d5ffa72d6890344df0811e8431465bcf15f2a9eade143ee34f67c1c4/featuretools-0.13.3.dev0.tar.gz sha256: e9c3b4fe4aa40a4606dc3d72c65b4dc3ed03014229d4f225d5e8ce0a727d4462
- Set the new release number (e.g. v0.13.3.dev0)
- Update if dependencies have changed:
- setup-requirements.txt dependencies are host requirements
requirements: host: - pip - python - requirements.txt dependencies are run requirements
requirements: run: - click - cloupickle - test-requirements.txt dependencies are test requirements
test: requires: - fastparquet - mock
- setup-requirements.txt dependencies are host requirements
- Install conda
- If using pyenv,
pyenv install miniconda3-latest - Otherwise follow instructions in conda docs
- If using pyenv,
- Install conda-smithy (conda-forge tool to update boilerplate in repo)
conda install -n root -c conda-forge conda-smithy
- Run conda-smithy on feedstock
cd /path/to/feedstock/repo conda-smithy rerender --commit auto - Push updated branch to the forked feedstock repo
- Make a PR on conda-forge/featuretools-feedstock from the forked repo and let CI tests run - add "[DO NOT MERGE]" to the PR name to indicate this is PR should not be merged in
- After the tests pass, close the PR without merging
- Branch off of featuretools main and name the branch the release version number (e.g. v0.13.3)
- Bump version number in
setup.py,featuretools/version.py, andfeaturetools/tests/test_version.py.
- Replace "Future Release" in
docs/source/changelog.rstwith the current date**v0.13.3** Feb 28, 2020 - Remove any unused changelog sections for this release (e.g. Fixes, Testing Changes)
- Add yourself to the list of contributors to this release and put the contributors in alphabetical order
- The release PR does not need to be mentioned in the list of changes
A release pr should have the version number as the title and the changelog updates as the PR body text. The contributors list is not necessary. The special sphinx docs syntax (:pr:`547`) needs to be changed to github link syntax (#547).
After the release pull request has been merged into the main branch, it is time draft the github release. Example release
- The target should be the main branch
- The tag should be the version number with a v prefix (e.g. v0.13.3)
- Release title is the same as the tag
- Release description should be the full changelog updates for the release, including the line thanking contributors. Contributors should also have their links changed from the docs syntax (:user:`rwedge`) to github syntax (@rwedge)
- This is not a pre-release
- Publishing the release will automatically upload the package to PyPI
- A bot should automatically create a new PR in conda-forge/featuretools-feedstock
- Update requirements changes in
recipe/meta.yaml(bot should have handled version and source links on its own) - After tests pass, a maintainer will merge the PR in