Developer Release Procedure
===========================

To release a new version of the widgets on PyPI and npm, first checkout master
and cd into the repo root.  Make sure the version of `jupyter-js-widgets` matches
the semver range `__frontend_version__` specified in `ipywidgets/_version.py`.

### Publish jupyter-js-widgets

```
# nuke the  `dist` and `node_modules`
git clean -fdx
npm version [patch/minor/major]
npm install
npm publish --tag next
```

### widgetsnbextension

Edit package.json to point to new jupyter-js-widgets version
npm version [patch/minor/major]

Edit `widgetsnbextension/_version.py` (Remove dev from the version.  If it's the first beta, use b1, etc...)

```
python setup.py sdist
python setup.py bdist_wheel --universal
twine upload dist/*
```

### JupyterLab

Edit the package.json to have jupyter-js-widgets point to the correct version.

```
npm version patch/minor/major
npm install
npm run build
npm publish
python setup.py sdist
python setup.py bdist_wheel --universal
twine upload dist/*
```

### ipywidgets

edit ipywidgets/_version.py (remove dev from the version and update the frontend version requirement to match the one of `jupyter-js-widgets`)

Change `setup.py` `install_requires` parameter to point to new widgetsnbextension version

```
python setup.py sdist
python setup.py bdist_wheel --universal
twine upload dist/*
```


### Push changes back

commit and tag (ipywidgets) release


### Back to dev
```
edit ipywidgets/_version.py (increase version and add dev tag)
edit widgetsnbextension/widgetsnbextension/_version.py (increase version and add dev tag)
git add ipywidgets/_version.py
git add widgetsnbextension/widgetsnbextension/_version.py
git commit -m "Back to dev"
git push [upstream master]
git push [upstream] --tags
```

On GitHub
1. Go to https://github.com/ipython/ipywidgets/milestones and click "Close" for the released version.
2. Make sure patch, minor, and/or major milestones exist as appropriate.
