diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6338ef3e..8772e2bb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ make that your current directory with `cd repo2docker`. ## Set up local virtual environment After cloning the repository (or your fork of the repo), you should set up an -isolated environment to install libraries required for running / developing +isolated environment to install libraries required for running / developing repo2docker. There are many ways to do this, and a `virtual environment` is one of them. @@ -90,14 +90,21 @@ py.test -s tests/ # Updating libraries installed for all repos -For both the conda and virtualenv base environments, we install specific +For both the `conda` and `virtualenv` (`pip`) base environments, we install specific pinned versions of all dependencies. We explicitly list the dependencies we want, then *freeze* them at commit time to explicitly list all the transitive dependencies at current versions. This way, we know that all dependencies will have the exact same version installed at all times. -If you update a library in the base environment, you need to update it -for both the virtualenv and conda environments before submitting a PR. +To update one of the dependencies shared across all `repo2docker` builds, you +must follow these steps (with more detailed information in the sections below): + +* Make sure you have [Docker](https://www.docker.com/) running on your computer +* Bump the version number in `virtualenv` ([link](https://github.com/jupyter/repo2docker/blob/master/CONTRIBUTING.md#virtualenv-dependencies)) +* Bump the version number in the `conda` environment ([link](https://github.com/jupyter/repo2docker/blob/master/CONTRIBUTING.md#conda-dependencies)) +* Make a pull request with your changes ([link](https://github.com/jupyter/repo2docker/blob/master/CONTRIBUTING.md#make-a-pull-request)) + +See the subsections below for more detailed instructions. ## Virtualenv dependencies @@ -106,22 +113,23 @@ There are two files related to virtualenv dependencies: 1. `repo2docker/buildpacks/python/requirements.txt` Contains list of packages to install in Python3 virtualenvs, - which are the default. This should be where all Notebook versions & - notebook extensions (such as JupyterLab / nteract) go. + which are the default. **This where all Notebook versions & + notebook extensions (such as JupyterLab / nteract) go**. 2. `repo2docker/buildpacks/python/requirements2.txt` Contains list of packages to install in Python2 virtualenvs, which - can be specifically requested by users. This only needs `IPyKernel` - and kernel related libraries - Notebook / Notebook Extension need + can be specifically requested by users. **This only needs `IPyKernel` + and kernel related libraries** - Notebook / Notebook Extension need not be installed here. -Once you edit either of these files to add a new package / bump version on -an existing package, you should then run `./repo2docker/buildpacks/python/freeze.bash`. +After you edit either of these files to add a new package / bump version on +an existing package, run `./repo2docker/buildpacks/python/freeze.bash`. + This script will resolve dependencies and write them to the respective `.frozen.txt` files. You will need Python3 and Python2 with virtualenv to run the script. -All the .txt files in `repo2docker/buildpacks/python/` should be comitted to git. +All the `.txt` files in `repo2docker/buildpacks/python/` should be committed to git. ## Conda dependencies @@ -130,14 +138,14 @@ There are two files related to conda dependencies: 1. `repo2docker/buildpacks/conda/environment.yml` Contains list of packages to install in Python3 conda environments, - which are the default. This should be where all Notebook versions & - notebook extensions (such as JupyterLab / nteract) go. + which are the default. **This is where all Notebook versions & + notebook extensions (such as JupyterLab / nteract) go**. 2. `repo2docker/buildpacks/conda/environment.py-2.7.yml` Contains list of packages to install in Python2 conda environments, which - can be specifically requested by users. This only needs `IPyKernel` - and kernel related libraries - Notebook / Notebook Extension need + can be specifically requested by users. **This only needs `IPyKernel` + and kernel related libraries** - Notebook / Notebook Extension need not be installed here. Once you edit either of these files to add a new package / bump version on @@ -145,14 +153,18 @@ an existing package, you should then run `./repo2docker/buildpacks/conda/freeze. This script will resolve dependencies and write them to the respective `.frozen.yml` files. You will need `docker` installed to run this script. -The following files should be comitted to git: +After the freeze script finishes, a number of files will have been created. +Commit the following subset of files to git: + +``` +repo2docker/buildpacks/conda/environment.yml +repo2docker/buildpacks/conda/environment.frozen.yml +repo2docker/buildpacks/conda/environment.py-2.7.yml +repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml +repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml +repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml +``` -- repo2docker/buildpacks/conda/environment.frozen.yml -- repo2docker/buildpacks/conda/environment.py-2.7.yml -- repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml -- repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml -- repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml -- repo2docker/buildpacks/conda/environment.yml ## Make a Pull Request @@ -191,13 +203,13 @@ If you do not have access to any of these, please contact a current maintainer o rm -f dist/* python setup.py sdist bdist_wheel ``` -4. Once tests pass, time to upload! +4. Once tests pass, time to upload! ```bash twine upload dist/* ``` - + This might ask for your PyPI username and password. - + 5. Make a git tag and push it to GitHub: ```bash git tag -a v diff --git a/repo2docker/buildpacks/conda/environment.frozen.yml b/repo2docker/buildpacks/conda/environment.frozen.yml index 44bbd060..429dda20 100644 --- a/repo2docker/buildpacks/conda/environment.frozen.yml +++ b/repo2docker/buildpacks/conda/environment.frozen.yml @@ -1,5 +1,5 @@ # AUTO GENERATED FROM environment.py-3.6.yml, DO NOT MANUALLY MODIFY -# Frozen on 2018-02-08 08:10:01 UTC +# Frozen on 2018-02-14 16:46:22 UTC name: r2d channels: - conda-forge @@ -7,23 +7,23 @@ channels: - conda-forge/label/broken dependencies: - bleach=2.0.0=py_1 - - ca-certificates=2017.11.5=0 - - certifi=2017.11.5=py36_0 + - ca-certificates=2018.1.18=0 + - certifi=2018.1.18=py36_0 - decorator=4.1.2=py36_0 - entrypoints=0.2.3=py36_1 - gmp=6.1.2=0 - html5lib=1.0.1=py_0 - - ipykernel=4.8.0=py36_0 + - ipykernel=4.8.1=py36_0 - ipython=6.2.1=py36_1 - ipython_genutils=0.2.0=py36_0 - - ipywidgets=6.0.1=py36_0 + - ipywidgets=7.1.1=py36_0 - jedi=0.11.1=py36_0 - jinja2=2.10=py36_0 - jsonschema=2.6.0=py36_1 - jupyter_client=5.2.2=py36_0 - jupyter_core=4.4.0=py_0 - jupyterlab=0.31.5=py36_1 - - jupyterlab_launcher=0.10.3=py36_0 + - jupyterlab_launcher=0.10.4=py36_0 - libsodium=1.0.15=1 - markupsafe=1.0=py36_0 - mistune=0.8.3=py_0 @@ -35,7 +35,7 @@ dependencies: - pandoc=2.1.1=0 - pandocfilters=1.4.1=py36_0 - parso=0.1.1=py_0 - - pexpect=4.3.1=py36_0 + - pexpect=4.4.0=py36_0 - pickleshare=0.7.4=py36_0 - pip=9.0.1=py36_1 - prompt_toolkit=1.0.15=py36_0 @@ -43,10 +43,10 @@ dependencies: - pygments=2.2.0=py36_0 - python=3.6.4=0 - python-dateutil=2.6.1=py36_0 - - pyzmq=16.0.2=py36_3 + - pyzmq=17.0.0=py36_3 - readline=7.0=0 - send2trash=1.4.2=py_0 - - setuptools=38.4.0=py36_0 + - setuptools=38.5.1=py36_0 - simplegeneric=0.8.1=py36_0 - six=1.11.0=py36_1 - sqlite=3.20.1=2 @@ -58,9 +58,9 @@ dependencies: - wcwidth=0.1.7=py36_0 - webencodings=0.5=py36_0 - wheel=0.30.0=py36_2 - - widgetsnbextension=2.0.1=py36_0 + - widgetsnbextension=3.1.3=py36_0 - xz=5.2.3=0 - - zeromq=4.2.1=1 + - zeromq=4.2.3=2 - zlib=1.2.11=0 - pip: - nteract-on-jupyter==1.4.0 diff --git a/repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml b/repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml index 483ed9a6..9a7e3eae 100644 --- a/repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml +++ b/repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml @@ -1,5 +1,5 @@ # AUTO GENERATED FROM environment.py-2.7.yml, DO NOT MANUALLY MODIFY -# Frozen on 2018-02-08 08:02:45 UTC +# Frozen on 2018-02-14 16:42:29 UTC name: r2d channels: - conda-forge @@ -9,8 +9,8 @@ dependencies: - backports=1.0=py27_1 - backports.shutil_get_terminal_size=1.0.0=py_3 - backports_abc=0.5=py27_0 - - ca-certificates=2017.11.5=0 - - certifi=2017.11.5=py27_0 + - ca-certificates=2018.1.18=0 + - certifi=2018.1.18=py27_0 - decorator=4.1.2=py27_0 - enum34=1.1.6=py27_1 - ipykernel=4.7.0=py27_0 @@ -22,7 +22,7 @@ dependencies: - ncurses=5.9=10 - openssl=1.0.2n=0 - pathlib2=2.3.0=py27_0 - - pexpect=4.3.1=py27_0 + - pexpect=4.4.0=py27_0 - pickleshare=0.7.4=py27_0 - pip=9.0.1=py27_1 - prompt_toolkit=1.0.15=py27_0 @@ -30,10 +30,10 @@ dependencies: - pygments=2.2.0=py27_0 - python=2.7.14=4 - python-dateutil=2.6.1=py27_0 - - pyzmq=16.0.2=py27_3 + - pyzmq=17.0.0=py27_3 - readline=7.0=0 - - scandir=1.6=py27_0 - - setuptools=38.4.0=py27_0 + - scandir=1.7=py27_0 + - setuptools=38.5.1=py27_0 - simplegeneric=0.8.1=py27_0 - singledispatch=3.4.0.3=py27_0 - six=1.11.0=py27_1 @@ -44,7 +44,7 @@ dependencies: - traitlets=4.3.2=py27_0 - wcwidth=0.1.7=py27_0 - wheel=0.30.0=py27_2 - - zeromq=4.2.1=1 + - zeromq=4.2.3=2 - zlib=1.2.11=0 - pip: - backports.ssl-match-hostname==3.5.0.1 diff --git a/repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml b/repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml index de13ed8e..b695738f 100644 --- a/repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml +++ b/repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml @@ -1,5 +1,5 @@ # AUTO GENERATED FROM environment.py-3.5.yml, DO NOT MANUALLY MODIFY -# Frozen on 2018-02-08 08:05:55 UTC +# Frozen on 2018-02-14 16:43:59 UTC name: r2d channels: - conda-forge @@ -7,23 +7,23 @@ channels: - conda-forge/label/broken dependencies: - bleach=2.0.0=py_1 - - ca-certificates=2017.11.5=0 - - certifi=2017.11.5=py35_0 + - ca-certificates=2018.1.18=0 + - certifi=2018.1.18=py35_0 - decorator=4.1.2=py35_0 - entrypoints=0.2.3=py35_1 - gmp=6.1.2=0 - html5lib=1.0.1=py_0 - - ipykernel=4.8.0=py35_0 + - ipykernel=4.8.1=py35_0 - ipython=6.2.1=py35_1 - ipython_genutils=0.2.0=py35_0 - - ipywidgets=6.0.1=py35_0 + - ipywidgets=7.1.1=py35_0 - jedi=0.11.1=py35_0 - jinja2=2.10=py35_0 - jsonschema=2.6.0=py35_1 - jupyter_client=5.2.2=py35_0 - jupyter_core=4.4.0=py_0 - jupyterlab=0.31.5=py35_1 - - jupyterlab_launcher=0.10.3=py35_0 + - jupyterlab_launcher=0.10.4=py35_0 - libsodium=1.0.15=1 - markupsafe=1.0=py35_0 - mistune=0.8.3=py_0 @@ -35,18 +35,18 @@ dependencies: - pandoc=2.1.1=0 - pandocfilters=1.4.1=py35_0 - parso=0.1.1=py_0 - - pexpect=4.3.1=py35_0 + - pexpect=4.4.0=py35_0 - pickleshare=0.7.4=py35_0 - pip=9.0.1=py35_1 - prompt_toolkit=1.0.15=py35_0 - ptyprocess=0.5.2=py35_0 - pygments=2.2.0=py35_0 - - python=3.5.4=3 + - python=3.5.5=0 - python-dateutil=2.6.1=py35_0 - - pyzmq=16.0.2=py35_3 + - pyzmq=17.0.0=py35_3 - readline=7.0=0 - send2trash=1.4.2=py_0 - - setuptools=38.4.0=py35_0 + - setuptools=38.5.1=py35_0 - simplegeneric=0.8.1=py35_0 - six=1.11.0=py35_1 - sqlite=3.20.1=2 @@ -58,9 +58,9 @@ dependencies: - wcwidth=0.1.7=py35_0 - webencodings=0.5=py35_0 - wheel=0.30.0=py35_2 - - widgetsnbextension=2.0.1=py35_0 + - widgetsnbextension=3.1.3=py35_0 - xz=5.2.3=0 - - zeromq=4.2.1=1 + - zeromq=4.2.3=2 - zlib=1.2.11=0 - pip: - nteract-on-jupyter==1.4.0 diff --git a/repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml b/repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml index 44bbd060..429dda20 100644 --- a/repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml +++ b/repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml @@ -1,5 +1,5 @@ # AUTO GENERATED FROM environment.py-3.6.yml, DO NOT MANUALLY MODIFY -# Frozen on 2018-02-08 08:10:01 UTC +# Frozen on 2018-02-14 16:46:22 UTC name: r2d channels: - conda-forge @@ -7,23 +7,23 @@ channels: - conda-forge/label/broken dependencies: - bleach=2.0.0=py_1 - - ca-certificates=2017.11.5=0 - - certifi=2017.11.5=py36_0 + - ca-certificates=2018.1.18=0 + - certifi=2018.1.18=py36_0 - decorator=4.1.2=py36_0 - entrypoints=0.2.3=py36_1 - gmp=6.1.2=0 - html5lib=1.0.1=py_0 - - ipykernel=4.8.0=py36_0 + - ipykernel=4.8.1=py36_0 - ipython=6.2.1=py36_1 - ipython_genutils=0.2.0=py36_0 - - ipywidgets=6.0.1=py36_0 + - ipywidgets=7.1.1=py36_0 - jedi=0.11.1=py36_0 - jinja2=2.10=py36_0 - jsonschema=2.6.0=py36_1 - jupyter_client=5.2.2=py36_0 - jupyter_core=4.4.0=py_0 - jupyterlab=0.31.5=py36_1 - - jupyterlab_launcher=0.10.3=py36_0 + - jupyterlab_launcher=0.10.4=py36_0 - libsodium=1.0.15=1 - markupsafe=1.0=py36_0 - mistune=0.8.3=py_0 @@ -35,7 +35,7 @@ dependencies: - pandoc=2.1.1=0 - pandocfilters=1.4.1=py36_0 - parso=0.1.1=py_0 - - pexpect=4.3.1=py36_0 + - pexpect=4.4.0=py36_0 - pickleshare=0.7.4=py36_0 - pip=9.0.1=py36_1 - prompt_toolkit=1.0.15=py36_0 @@ -43,10 +43,10 @@ dependencies: - pygments=2.2.0=py36_0 - python=3.6.4=0 - python-dateutil=2.6.1=py36_0 - - pyzmq=16.0.2=py36_3 + - pyzmq=17.0.0=py36_3 - readline=7.0=0 - send2trash=1.4.2=py_0 - - setuptools=38.4.0=py36_0 + - setuptools=38.5.1=py36_0 - simplegeneric=0.8.1=py36_0 - six=1.11.0=py36_1 - sqlite=3.20.1=2 @@ -58,9 +58,9 @@ dependencies: - wcwidth=0.1.7=py36_0 - webencodings=0.5=py36_0 - wheel=0.30.0=py36_2 - - widgetsnbextension=2.0.1=py36_0 + - widgetsnbextension=3.1.3=py36_0 - xz=5.2.3=0 - - zeromq=4.2.1=1 + - zeromq=4.2.3=2 - zlib=1.2.11=0 - pip: - nteract-on-jupyter==1.4.0 diff --git a/repo2docker/buildpacks/conda/environment.yml b/repo2docker/buildpacks/conda/environment.yml index 14cd59f1..c3670d5c 100644 --- a/repo2docker/buildpacks/conda/environment.yml +++ b/repo2docker/buildpacks/conda/environment.yml @@ -1,6 +1,6 @@ dependencies: - python=3.6.* - - ipywidgets==6.0.1 + - ipywidgets==7.1.1 - jupyterlab==0.31.5 - notebook==5.4.0 - pip: diff --git a/repo2docker/buildpacks/python/requirements.frozen.txt b/repo2docker/buildpacks/python/requirements.frozen.txt index aec7d009..491a6eb3 100644 --- a/repo2docker/buildpacks/python/requirements.frozen.txt +++ b/repo2docker/buildpacks/python/requirements.frozen.txt @@ -1,19 +1,19 @@ # AUTO GENERATED FROM requirements.txt, DO NOT MANUALLY MODIFY -# Frozen on Thu 8 Feb 2018 09:22:43 UTC +# Frozen on Wed Feb 14 16:40:31 UTC 2018 bleach==2.1.2 decorator==4.2.1 entrypoints==0.2.3 html5lib==1.0.1 -ipykernel==4.8.0 +ipykernel==4.8.1 ipython-genutils==0.2.0 ipython==6.2.1 -ipywidgets==6.0.1 +ipywidgets==7.1.1 jedi==0.11.1 Jinja2==2.10 jsonschema==2.6.0 jupyter-client==5.2.2 jupyter-core==4.4.0 -jupyterlab-launcher==0.10.3 +jupyterlab-launcher==0.10.4 jupyterlab==0.31.5 MarkupSafe==1.0 mistune==0.8.3 @@ -23,13 +23,13 @@ notebook==5.4.0 nteract-on-jupyter==1.4.0 pandocfilters==1.4.2 parso==0.1.1 -pexpect==4.3.1 +pexpect==4.4.0 pickleshare==0.7.4 prompt-toolkit==1.0.15 ptyprocess==0.5.2 Pygments==2.2.0 python-dateutil==2.6.1 -pyzmq==16.0.4 +pyzmq==17.0.0 Send2Trash==1.4.2 simplegeneric==0.8.1 six==1.11.0 @@ -39,4 +39,4 @@ tornado==4.5.3 traitlets==4.3.2 wcwidth==0.1.7 webencodings==0.5.1 -widgetsnbextension==2.0.1 +widgetsnbextension==3.1.3 diff --git a/repo2docker/buildpacks/python/requirements.txt b/repo2docker/buildpacks/python/requirements.txt index 2e0c763a..0cfc59a3 100644 --- a/repo2docker/buildpacks/python/requirements.txt +++ b/repo2docker/buildpacks/python/requirements.txt @@ -1,4 +1,4 @@ notebook==5.4.0 -ipywidgets==6.0.1 +ipywidgets==7.1.1 jupyterlab==0.31.5 nteract_on_jupyter==1.4.0 diff --git a/repo2docker/buildpacks/python/requirements2.frozen.txt b/repo2docker/buildpacks/python/requirements2.frozen.txt index b69e3608..6997560e 100644 --- a/repo2docker/buildpacks/python/requirements2.frozen.txt +++ b/repo2docker/buildpacks/python/requirements2.frozen.txt @@ -1,5 +1,5 @@ # AUTO GENERATED FROM requirements2.txt, DO NOT MANUALLY MODIFY -# Frozen on Thu 8 Feb 2018 09:23:20 UTC +# Frozen on Wed Feb 14 16:41:08 UTC 2018 backports-abc==0.5 backports.shutil-get-terminal-size==1.0.0 certifi==2018.1.18 @@ -11,14 +11,14 @@ ipython==5.5.0 jupyter-client==5.2.2 jupyter-core==4.4.0 pathlib2==2.3.0 -pexpect==4.3.1 +pexpect==4.4.0 pickleshare==0.7.4 prompt-toolkit==1.0.15 ptyprocess==0.5.2 Pygments==2.2.0 python-dateutil==2.6.1 -pyzmq==16.0.4 -scandir==1.6 +pyzmq==17.0.0 +scandir==1.7 simplegeneric==0.8.1 singledispatch==3.4.0.3 six==1.11.0