To release a new version of Spyder you need to follow these steps:
-
Install gettext-helpers from source.
-
Create a new PR to update our
*.potand*.pofiles by runningspyder-gettext scan spyder -
Check that no warnings are emitted by that command. If they are, then fix them in the same PR.
-
Merge that PR.
-
Close the current translation PR, i.e. the one with the title
New Crowdin updates. -
Delete the
translate/<branch-name>branch associated to that PR. -
Go to the integrations page on Crowdin:
https://crowdin.com/project/spyder/settings#integration-github
-
Press
Sync nowthere to open a new translation PR. -
Send a message to translators on Crowdin to update their translations:
An example of that message can be found in
-
Checkout the translations branch with
git checkout translate/<branch-name> -
Squash all commits in that branch to leave only one with the command
git rebase --interactive HEAD~Nwhere N is the number of commits on it.
-
Change the commit message with
git commit --amendto be
Update and compile translations [ci skip] -
Generate the
mofiles by runningspyder-gettext compile spyder -
Remove
mofiles that are still not part of version control. -
Add those files to the previous commit with
git add . git commit --amend --no-edit -
Push your changes to the translation PR with
git push -f upstream translate/<branch-name> -
Rename the PR title to be
PR: Update translations from Crowdin. -
Merge the PR.
-
Don't forget to remove your local checkout of
translate/<branch-name>because that's going to be outdated for next time. -
Update the
masterbranch withgit checkout 4.x git fetch upstream git merge upstream/4.x git checkout master git merge 4.x Merge from 4.x: PR #xxxxx git push upstream master
-
Release a new version of
spyder-kernels, if required. -
Release a new version of
python-language-server, if required. -
Create a new branch in your fork with the name
update-core-deps -
In case a new version is not part of the
defaultschannel yet, you need to copy it to our channel with the following command:anaconda copy conda-forge/pyls-spyder/0.3.2 --to-label dev --to-owner spyder-ideNote: For this you need to install first the
anaconda-clientpackage in yourbaseenvironment and open an account in https://anaconda.org/ -
Update the version of any packages required before the release in the following files:
setup.pyspyder/dependencies.pyrequirements/conda.txtbinder/environment.ymlspyder/plugins/ipythonconsole/plugin.py
-
Commit with
git add . git commit -m "Update core dependencies" -
Update our subrepos with the following commands, but only if new versions are available!
git subrepo pull external-deps/spyder-kernels git subrepo pull external-deps/python-language-server -
Merge this PR following the procedure mentioned on
MAINTENANCE.md
-
Close the current milestone on Github
-
git pull or git fetch/merge
-
Update CHANGELOG.md with
loghub spyder-ide/spyder -m vX.X.X -
Add sections for
New featuresandImportant fixesin CHANGELOG.md. For this take a look at closed issues and PRs for the current milestone. -
git add .andgit commit -m "Update Changelog" -
Update Announcements.md (this goes to our Google group)
-
git add .andgit commit -m "Update Announcements" -
git clean -xfdiand select option1. -
Update version in
__init__.py(set release version, remove 'dev0') -
git add .andgit commit -m "Release X.X.X" -
python setup.py sdist
-
Activate environment with pip packages only
-
pip install -U pip setuptools twine wheel
-
python3 setup.py bdist_wheel
-
twine check dist/*
-
twine upload dist/*
-
Check in PyPI that the new release was published correctly
-
git tag -a vX.X.X -m 'Release X.X.X'
-
Update version in
__init__.py(add 'dev0' and increment minor) -
git add .andgit commit -m "Back to work [ci skip]" -
git checkout master
-
git merge 4.x
-
git commit -m "Release X.X.X [ci skip]"
-
git push upstream master
-
git push upstream 4.x
-
git push upstream --tags
-
Publish release in our Github Releases page.
-
Publish release announcements to our list.
-
Merge PRs on Conda-forge that update the
spyder-kernelsandpython-language-serverfeedstocks.Notes:
-
Review carefully the release notes of those packages to see if it's necessary to add new dependencies or update the constraints on the current ones (e.g.
jedi >=0.17.2). -
After merging each of those PRs, give a ping to the Anaconda team telling them that these packages are required for the new Spyder version. You need to use the handle
@anaconda-pkg-buildfor that. Here is an example of this kinf of messages:
-
-
After those PRs are merged, go to
https://github.com/conda-forge/spyder-feedstock
and merge the corresponding PR for the new release.
Notes:
-
Don't forget to add new dependencies and update constraints on the rest of them. For that, you need to compare line by line the contents of the
recipe/meta.yamlfile in the feedstock withhttps://github.com/spyder-ide/spyder/blob/4.x/requirements/conda.txt
-
After merging, give a ping to
@anaconda-pkg-buildabout the new release.
-