From 0d194cd3979e98a7ddac0426f89f047d72da96ab Mon Sep 17 00:00:00 2001 From: Maarten Breddels Date: Fri, 30 Mar 2018 20:27:57 +0200 Subject: [PATCH 01/45] ConfigManager does not write out default values found in the .d directory --- notebook/config_manager.py | 27 +++++++++++++++++++++++++-- notebook/tests/test_config_manager.py | 24 +++++++++++++++++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/notebook/config_manager.py b/notebook/config_manager.py index ff6f486ce..2cd84427a 100644 --- a/notebook/config_manager.py +++ b/notebook/config_manager.py @@ -9,6 +9,7 @@ import glob import io import json import os +import copy from six import PY3 from traitlets.config import LoggingConfigurable @@ -35,6 +36,19 @@ def recursive_update(target, new): else: target[k] = v +def remove_defaults(data, defaults): + """Recursively remove items from dict that are already in defaults""" + for key, value in list(data.items()): # copy the iterator, since data will be modified + new_value = None + if key in defaults: + if isinstance(value, dict): + remove_defaults(data[key], defaults[key]) + if not data[key]: # prune empty subdicts + del data[key] + else: + if value == defaults[key]: + del data[key] + class BaseJSONConfigManager(LoggingConfigurable): """General JSON config manager @@ -62,13 +76,16 @@ class BaseJSONConfigManager(LoggingConfigurable): """Returns the directory name for the section name: {config_dir}/{section_name}.d""" return os.path.join(self.config_dir, section_name+'.d') - def get(self, section_name): + def get(self, section_name, include_root=True): """Retrieve the config data for the specified section. Returns the data as a dictionary, or an empty dictionary if the file doesn't exist. + + When include_root is False, it will not read the root .json file, effectively + returning the default values. """ - paths = [self.file_name(section_name)] + paths = [self.file_name(section_name)] if include_root else [] if self.read_directory: pattern = os.path.join(self.directory(section_name), '*.json') # These json files should be processed first so that the @@ -91,6 +108,12 @@ class BaseJSONConfigManager(LoggingConfigurable): filename = self.file_name(section_name) self.ensure_config_dir_exists() + # we will modify data in place, so make a copy + data = copy.deepcopy(data) + defaults = self.get(section_name, include_root=False) + print(data, defaults) + remove_defaults(data, defaults) + # Generate the JSON up front, since it could raise an exception, # in order to avoid writing half-finished corrupted data to disk. json_content = json.dumps(data, indent=2) diff --git a/notebook/tests/test_config_manager.py b/notebook/tests/test_config_manager.py index 04ea9c443..ded2d33b9 100644 --- a/notebook/tests/test_config_manager.py +++ b/notebook/tests/test_config_manager.py @@ -9,20 +9,27 @@ from notebook.config_manager import BaseJSONConfigManager def test_json(): tmpdir = tempfile.mkdtemp() try: + root_data = dict(a=1, x=2, nest={'a':1, 'x':2}) with open(os.path.join(tmpdir, 'foo.json'), 'w') as f: - json.dump(dict(a=1), f) + json.dump(root_data, f) # also make a foo.d/ directory with multiple json files os.makedirs(os.path.join(tmpdir, 'foo.d')) with open(os.path.join(tmpdir, 'foo.d', 'a.json'), 'w') as f: - json.dump(dict(a=2, b=1), f) + json.dump(dict(a=2, b=1, nest={'a':2, 'b':1}), f) with open(os.path.join(tmpdir, 'foo.d', 'b.json'), 'w') as f: - json.dump(dict(a=3, b=2, c=3), f) + json.dump(dict(a=3, b=2, c=3, nest={'a':3, 'b':2, 'c':3}, only_in_b={'x':1}), f) manager = BaseJSONConfigManager(config_dir=tmpdir, read_directory=False) data = manager.get('foo') assert 'a' in data + assert 'x' in data assert 'b' not in data assert 'c' not in data assert data['a'] == 1 + assert 'x' in data['nest'] + # if we write it out, it also shouldn't pick up the subdirectoy + manager.set('foo', data) + data = manager.get('foo') + assert data == root_data manager = BaseJSONConfigManager(config_dir=tmpdir, read_directory=True) data = manager.get('foo') @@ -33,6 +40,17 @@ def test_json(): assert data['a'] == 1 assert data['b'] == 2 assert data['c'] == 3 + assert data['nest']['a'] == 1 + assert data['nest']['b'] == 2 + assert data['nest']['c'] == 3 + assert data['nest']['x'] == 2 + + # when writing out, we don't want foo.d/*.json data to be included in the root foo.json + manager.set('foo', data) + manager = BaseJSONConfigManager(config_dir=tmpdir, read_directory=False) + data = manager.get('foo') + assert data == root_data + finally: shutil.rmtree(tmpdir) From 840ade118935ae18210d011baa558b9b0cc87510 Mon Sep 17 00:00:00 2001 From: Maarten Breddels Date: Fri, 30 Mar 2018 20:39:01 +0200 Subject: [PATCH 02/45] remote print and avoid removing defaults when not used --- notebook/config_manager.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notebook/config_manager.py b/notebook/config_manager.py index 2cd84427a..04333213f 100644 --- a/notebook/config_manager.py +++ b/notebook/config_manager.py @@ -108,11 +108,11 @@ class BaseJSONConfigManager(LoggingConfigurable): filename = self.file_name(section_name) self.ensure_config_dir_exists() - # we will modify data in place, so make a copy - data = copy.deepcopy(data) - defaults = self.get(section_name, include_root=False) - print(data, defaults) - remove_defaults(data, defaults) + if self.read_directory: + # we will modify data in place, so make a copy + data = copy.deepcopy(data) + defaults = self.get(section_name, include_root=False) + remove_defaults(data, defaults) # Generate the JSON up front, since it could raise an exception, # in order to avoid writing half-finished corrupted data to disk. From b7731b94055af4d0f1786a55cce08c9fd155716c Mon Sep 17 00:00:00 2001 From: Maarten Breddels Date: Fri, 30 Mar 2018 20:44:28 +0200 Subject: [PATCH 03/45] makes flake8 happier --- notebook/config_manager.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/notebook/config_manager.py b/notebook/config_manager.py index 04333213f..584df8870 100644 --- a/notebook/config_manager.py +++ b/notebook/config_manager.py @@ -36,10 +36,11 @@ def recursive_update(target, new): else: target[k] = v + def remove_defaults(data, defaults): """Recursively remove items from dict that are already in defaults""" - for key, value in list(data.items()): # copy the iterator, since data will be modified - new_value = None + # copy the iterator, since data will be modified + for key, value in list(data.items()): if key in defaults: if isinstance(value, dict): remove_defaults(data[key], defaults[key]) @@ -52,7 +53,7 @@ def remove_defaults(data, defaults): class BaseJSONConfigManager(LoggingConfigurable): """General JSON config manager - + Deals with persisting/storing config in a json file with optionally default values in a {section_name}.d directory. """ @@ -82,8 +83,8 @@ class BaseJSONConfigManager(LoggingConfigurable): Returns the data as a dictionary, or an empty dictionary if the file doesn't exist. - When include_root is False, it will not read the root .json file, effectively - returning the default values. + When include_root is False, it will not read the root .json file, + effectively returning the default values. """ paths = [self.file_name(section_name)] if include_root else [] if self.read_directory: @@ -91,7 +92,7 @@ class BaseJSONConfigManager(LoggingConfigurable): # These json files should be processed first so that the # {section_name}.json take precedence. # The idea behind this is that installing a Python package may - # put a json file somewhere in the a .d directory, while the + # put a json file somewhere in the a .d directory, while the # .json file is probably a user configuration. paths = sorted(glob.glob(pattern)) + paths self.log.debug('Paths used for configuration of %s: \n\t%s', section_name, '\n\t'.join(paths)) From 95f02a7437802894658dc7c5b18308c4dc75fda3 Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Thu, 5 Apr 2018 20:00:53 -0400 Subject: [PATCH 04/45] Initial commit: Add selenium tests for dualmode insert cell --- notebook/tests/selenium/test_dualmode_insertcell.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 notebook/tests/selenium/test_dualmode_insertcell.py diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py new file mode 100644 index 000000000..53b4964e0 --- /dev/null +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -0,0 +1,4 @@ +# TODO: Tests for dualmode insert cell functionality + +def test_insert_cell(): + pass From fed254b184fc934f6b3c8bb7137ed5ff58996b5a Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg Date: Tue, 10 Apr 2018 01:09:07 -0400 Subject: [PATCH 05/45] update docs with confd implementation details --- ...upyter Extensions as Python Packages.ipynb | 138 +++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/docs/source/examples/Notebook/Distributing Jupyter Extensions as Python Packages.ipynb b/docs/source/examples/Notebook/Distributing Jupyter Extensions as Python Packages.ipynb index 43e2d1b54..2f95bc5be 100644 --- a/docs/source/examples/Notebook/Distributing Jupyter Extensions as Python Packages.ipynb +++ b/docs/source/examples/Notebook/Distributing Jupyter Extensions as Python Packages.ipynb @@ -31,7 +31,7 @@ "metadata": {}, "source": [ "### Why create a Python package for Jupyter extensions?\n", - "Since it is rare to have a server extension that does not have any frontend components (an nbextension), for convenience and consistency, all these client and server extensions with their assets can be packaged and versioned together as a Python package with a few simple commands. This makes installing the package of extensions easier and less error-prone for the user. " + "Since it is rare to have a server extension that does not have any frontend components (an nbextension), for convenience and consistency, all these client and server extensions with their assets can be packaged and versioned together as a Python package with a few simple commands, or as of Notebook 5.3, handled automatically by your package manager of choice. This makes installing the package of extensions easier and less error-prone for the user." ] }, { @@ -52,6 +52,16 @@ "```" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automatic installation and Enabling\n", + "> New in Notebook 5.3\n", + "\n", + "The absolute simplest case requires no user interaction at all! Configured correctly, after installing with their package manager of choice, both server and frontend extensions can be enabled by default in the environment where they were installed, i.e. `--sys-prefix`. See the `setup.py` in the example below." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -259,6 +269,130 @@ "```" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automatically enabling a server extension and nbextension\n", + "> New in Notebook 5.3\n", + "\n", + "Server extensions and nbextensions can be installed and enabled without any user intervention or post-install scripts beyond ` install `" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the `my_fancy_module` file tree, assume:\n", + "- `jupyter-config/`\n", + " - `jupyter_notebook_config.d/`\n", + " - `my_fancy_module.json`\n", + " - `nbconfig/`\n", + " - `notebook.d/`\n", + " - `my_fancy_module.json`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `jupyter-config/jupyter_notebook_config.d/my_fancy_module.json`\n", + "```json\n", + "{\n", + " \"NotebookApp\": {\n", + " \"nbserver_extensions\": {\n", + " \"my_fancy_module\": true\n", + " }\n", + " }\n", + "}\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `jupyter-config/nbconfig/notebook.d/my_fancy_module.json`\n", + "```json\n", + "{\n", + " \"load_extensions\": {\n", + " \"my_fancy_module/index\": true\n", + " }\n", + "}\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Put all of them in place via:\n", + "\n", + "#### `setup.py`\n", + "```python\n", + "import setuptools\n", + "\n", + "setuptools.setup(\n", + " name=\"MyFancyModule\",\n", + " ...\n", + " include_package_data=True,\n", + " data_files=[\n", + " # like `jupyter nbextension install --sys-prefix`\n", + " (\"share/jupyter/nbextensions/my_fancy_module\", [\n", + " \"my_fancy_module/static/index.js\",\n", + " ]),\n", + " # like `jupyter nbextension enable --sys-prefix`\n", + " (\"etc/jupyter/nbconfig/notebook.d\", [\n", + " \"jupyter-config/nbconfig/notebook.d/my_fancy_module.json\"\n", + " ]),\n", + " # like `jupyter serverextension enable --sys-prefix`\n", + " (\"etc/jupyter/jupyter_notebook_config.d\", [\n", + " \"jupyter-config/jupyter_notebook_config.d/my_fancy_module.json\"\n", + " ])\n", + " ],\n", + " ...\n", + " zip_safe=False\n", + ")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and last, but not least:\n", + "\n", + "#### `MANIFEST.in`\n", + "```config\n", + "recursive-include jupyter-config *.json\n", + "recursive-include my_fancy_module/static *.js\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As most package managers will only modify their environment, the eventual configuration will be as if the user had typed:\n", + "```\n", + "jupyter nbextension install --py my_fancy_module --sys-prefix\n", + "jupyter nbextension enable --py my_fancy_module --sys-prefix\n", + "jupyter serverextension enable --py my_fancy_module --sys-prefix\n", + "```\n", + "\n", + "If a user manually `disable`s an extension, that configuration will override the bundled package configuration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### When automagical install fails\n", + "Note this can still fail in certain situations with `pip`, requiring manual use of `install` and `enable` commands.\n", + "\n", + "Non-python-specific package managers (e.g. `conda`, `apt`) may choose not to implement the above behavior at the `setup.py` level, having more ways to put data files in various places at build time." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -368,7 +502,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.5" } }, "nbformat": 4, From d736b2efd7df402ee3f9d13bc281eb83f02905cb Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:38:02 -0400 Subject: [PATCH 06/45] making doc changes for verification portion of documentation --- CONTRIBUTING.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 829475a2c..8256c8553 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -60,6 +60,22 @@ Once you have done this, you can launch the master branch of Jupyter notebook from any directory in your system with:: jupyter notebook + + + +Verification +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Once you have installed the Jupyter Notebook, in order to work in development mode you should first verify that you are in development mode. Follow the steps below to complete the verification:: + + jupyter notebook + +While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". + +If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. + + + Rebuilding JavaScript and CSS From 44a775bc951fce534fbe621a25bd07b400fb5c56 Mon Sep 17 00:00:00 2001 From: danagilliann Date: Tue, 10 Apr 2018 11:40:08 -0400 Subject: [PATCH 07/45] added troubleshooting steps --- CONTRIBUTING.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 829475a2c..e804197a4 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -62,6 +62,22 @@ from any directory in your system with:: jupyter notebook +Troubleshooting the Installation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you do not see that your Jupyter Notebook is not running on dev mode, it's possible that you are +running other instances of Jupyter Notebook. You can try the following steps: + +1. Uninstall all instances of the notebook package. These include any installations you made using + pip or conda +2. Run ``python -m pip install -e .`` in the notebook repository to install the notebook from there +3. Run ``npm run build`` to make sure the Javascript +4. Launch with ``python -m notebook --port 8989``, and check that the browser is pointing to ``localhost:8989`` + (rather than the default 8888). You don't necessarily have to launch with port 8989, as long as you use + a port that is neither the default nor in use, then it should be fine. +5. Verify the installation with the steps in the previous section. + + Rebuilding JavaScript and CSS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 76b474a729e85bc151fa7ac17751bc9f4119e402 Mon Sep 17 00:00:00 2001 From: danagilliann Date: Tue, 10 Apr 2018 11:46:04 -0400 Subject: [PATCH 08/45] remove whitespace above "Troubleshooting" --- CONTRIBUTING.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 4693004cc..013b12126 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -75,9 +75,6 @@ While running the notebook, select one of your notebooks (the file will have the If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. - - - Troubleshooting the Installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From e2e9c40d2009a7294a64771dac97b55e0d540a0a Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:48:10 -0400 Subject: [PATCH 09/45] fixing merge conflict with troubleshoot section --- CONTRIBUTING.rst | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 013b12126..e68bbd686 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -60,15 +60,9 @@ Once you have done this, you can launch the master branch of Jupyter notebook from any directory in your system with:: jupyter notebook - - - + Verification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Once you have installed the Jupyter Notebook, in order to work in development mode you should first verify that you are in development mode. Follow the steps below to complete the verification:: - - jupyter notebook While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". From 29447f79c6b4bc524d2f4a099e8253acfc5e833b Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:50:21 -0400 Subject: [PATCH 10/45] adding screenshot to show dev mode --- CONTRIBUTING.rst | 4 ++++ Screen Shot 2018-04-10 at 11.45.55 AM.png | Bin 0 -> 35469 bytes 2 files changed, 4 insertions(+) create mode 100644 Screen Shot 2018-04-10 at 11.45.55 AM.png diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index e68bbd686..f8feb8207 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,9 +66,13 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". +![image showing dev mode](link here) + If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. + + Troubleshooting the Installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/Screen Shot 2018-04-10 at 11.45.55 AM.png b/Screen Shot 2018-04-10 at 11.45.55 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..a69361c7d20e063895dc446fd719f6fd53176f8a GIT binary patch literal 35469 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 R*h}NDWF?g(D#gAA{~r*k9fkk^ literal 0 HcmV?d00001 From 98138bb7a3e2e30dc42b89fb658f9c86a1066bf0 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:51:13 -0400 Subject: [PATCH 11/45] renaming screenshot --- dev mode screenshot.png | Bin 0 -> 35469 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dev mode screenshot.png diff --git a/dev mode screenshot.png b/dev mode screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a69361c7d20e063895dc446fd719f6fd53176f8a GIT binary patch literal 35469 zcmeFZbyQqU6E{c*1Pv}BxI>V^f;$Aa;O_2j!$7d$65JtZg1fu>AVCIqg1g&C^5l8n z?AiT$&+a+zoI7*x^sVads#{%MRlhkCq97;!8u2Y66cp5JNeNL!D5#e(P*5)<;9otr z96oX_KtUm6S%`=zNQ#J%C^*`gT3DMvK}m$ftHCM94&Y?8<)UF|l0Yj8+xeZpd$0U` zqC-pqIsijh7_B1l1MCbVPWjg&vd~i4=$_9sI5;nWAa#Y0(>*HI-y4jh2#)DEmfCw8f7QPb9$Wp+<$7q+4lQfATdV%}~>g^Z|8@o9Dc~nRUl!Dl8 z+fWle)R#*&o4krgm;1I*?nLS>s88L3X`|RqrzHG{P^Ba2p@=U?szq7`!iB$Lp$Zn$ z`oX*)SyN1-?VD3fW9(ZuWAM-`q!wrLJnIfX@26WZ?@ zFmxhqg*&NlZuSaR89>v@_raw;vtynVH>!jr=cs3d$@KerRWK#;ojuX_JtZ`25A+lC zmVc}g{aP`RX0Ujp9BjC<_aFAOm^!a%lAy*D^z?K|1`>L0wSC8F`MzXn&ah2gUM)tz<=IgqpC z-LEhOuS$tTB^dWm4|rske7NtX305IF#MWT4K+XzNS(bmG*xta0?Mfn z`-EX?(j z7%mEsXjpFW15->_oqIq*0AnY4r;9M^D!T-XyzxgY)yW&A4+2bPeiCCZb71KzrJwkD z76>X`J6_t`^%Fbx;ng#i_oN$8J=Oz;M_?`6%xLg7FG~^xMyX96K>Ua;p*5jlejjds z0=nMT+%hBXHNAB(Ab!lDti|H-t1&Pu4^wBIhDw^HEk?KMlao04DdkS4g+N}_Gg!ab z&UufHf2VoJe+L#A9#I_zlqA+it7+3LA{TqD%AgCd7Dex%${P`}%CuMD_c>R)*~1BX z)(%BQav(#JBbXRLlMLBVD-3Ulh-@G8k)B}MKaxYy@GU#zEZR3AzNjxxAxFm^aG6+t zg9ZirtyAag%O|%aDCwjqa(h_ac2pSO5R$ju{#Z<}Re6y%ghpB0t;?a}{2a>>i{Vl` z*vm2ZVd2^h#-LI<@a&1SU!|{b*CWk*0JtN(YUg1JAc05tO6n{M$1FOGhTo0uAnp}S zLIEA}K{1+*0u!AC!qLCB=rlS#OqT!M*=Q?ZPCW)`F@dH)ElIm07Dw=Dbb6M zPR_i$k+(Uk=Dgh4Bce!S7|zU%(2K#UId|ip=g6LTEs>X5fN>#Y{lPacSv#$n-NFMu z7=2fNMb)`wXrd0Q8Zl)cd+gR4dZGU?E1niS=|E+RG-FDW@yY2J+KaK3U^)D#XYWMy z{@o)QaeEtvISilQ>yB77F$pST3{x~I1nhvt0HXjW`{i?tCG-%{SL1#^UtO6XGN*Ee z)u+`5x<|XG%zp5aA)xpo!A*f5!$F(UO@$pJC7CL5Cs`n|n5#PhSIGj2-j_h3Du{vI z2;4wC-)eI?OQ?kgLV9cY+qmycp62Wo_h3!ejkRQmW&$7<_ z@p1Iy;m0K!Iy!thAdS4@79Ch^>6@3tjo+!rW|Z>l!uRnX(uLy{)D*51I=ud?-Bx$sAkb5XORisE~v3$^ro&1}uDo}w3_ zmTf69DGhI>BTCrSN)!+3=VWVyTpAnwJ*z!4ZXGW`ySP)CR?%$3@BP^7--f++wM?6G zm+AXS<&2Xqq9?liK|uUyio#OU{Ii9rRe}}K*!~#7*ua##m>wpSDwc1@i)`PQ^3oqqCJ2L48Z(A{WIMh8Lzg2S2Q4@PBZOp^oG3+D!-) zE!(v-9kcectDD(RWPzh?e;W03Xq&kY9>Xey?SO|(Y>jJK;KI+tg(E1$c*42EKZi4f zV}|3tC1z{26J~bc7+}&cn=oY2w={oi!98C+eIA({liZ|{0C`o#UUjvFvn9DDJ&Zq` zsb#Jepb@A3Lvx`jSL0R_M_pA*w~9=&L2Fapree2RtVE}{s+g{%Y&MI%l-(>SW!b!Q{o|yluP)-r^2jjLs%_}8)c#1?Z~ z#`<-^=e|HY6dx=DLefz4P*HMfvC@cUToWA1V9VfF;|AkaIY)i!-B{iC>>-@Ariz=n z1r;b2RYvn`KOH95FMC?TP=odGd^kE-gkr{GzNK(dR#2UQ6!j-kax*qg2ApC51wZqT zmEI~zeh>NHqy$F|C#x&a;1)U*H$lshuPMWj;pvcaSiN9DonItpCNB^pCLt{~pLm%} zI8thgnje&>mWOJup7uH|QCr}U+m;xdTKD;izKh35w)aftXt*XBq|vH@t?}T6=f&Wy7lF3;xrP84Tj5a+ROib?Vj;#M7i>;(uziTtG*x>;~axn zw^C0;V9IgIBx6O~J%xw*hLWC%H(+DZ6-7N&?hw$ zucd~rhM>Bre$eE3^!DOCr4>1?fUrBLNpGo$X_UfKLq zRh!#pE~~SP!B2z!DxNAsg-dp;wmVC^bv3rBkF}>ZnYCwi%X8?JIjwWejfT_?X5*s; zO&D%94{MLoBesi+n@w%|==(bm{HD5^-jaON%%#@&8uOCeTDzyXhjch-RJLiz^Z{o- zr@A*hK@5TCiPc;g2TBmJE!UcN?%_Acc%jj`k;#R`!|<)|=i<*9y>Y#z>zGk>Y##3k z??w*m_(sG=;;F0Uig_iu8m>2vzsD%~7X%jEfsHdf7Fb#~4>Gn&*ju4zaDZmV9$ zH&r%|HU*6CdgiS^Jx;DEucTim>HucynyQKK7B{bq2ules)D}wFTs@uHU1Wc9Lk{La zTb3(RXEU9pI;})5Eqh{}5n3Dt3;PW{Ef@E$hX*rmp@+ze={`~RW&5pj520|LsD)1k z7g7FvrF_&xulTKfu&#a{8jY?e%6H52Uom=10X0vCk2OY|`nE?v9iVgoRohPxtryo1 zz1yH$VwEy_J;H~{Bk-l~hVRl$_Dq)#gHO(xDOhW}j=`VVA9ZQ71>aNeQfRwtDe91T zo}Uur$Xx3Y22G+B=YDew@pSZaq*aL%E(+D;zz8%Ag zTr=_BixER9VnXSOc6EtpeGY2d_cOM8Y2PULxD|_tzI0T_BmI#h$DRLL=n*0Gjg9fE zF6Qv(Gy%b0Lc<9P3WxI7`-P+;#qo0nk#3=^?yN2=!);_|!)Rb^XK2FcZe#yU4F$#P z&i#C8W8!Q;;%;MY>%{HONA{b7`}z7;Gk}cbH;Jxd8w-H#bH%Rz^EVGXOIe7Z-qu1;E0>@Jzwr581^g1=FM-nA!YX$`-}4C1d#Oh6OI*Fyk`9_7~>=nA5g5LQD1TCN55<$A;!x6y?S#guTnxPPU6ZJ#>%O)7`+&TKI^mpX{oyQ8S1bj1$ z^j~abSR|yuOh1+J{+-hEC;&m>6-sro|FWTdg+dSt5Gok_SDfcj++Sco13EDN%jOIJ z+&LLCw~E+*#1m{sibiusNcf9Qltxe(&0y?1%U?33_o~(x%j_i z{-3ITnbQAnRQ0AIAnT%s@2n$!-gMutw{g`xIl*Ijp_Rv~7pxpS_DFtqBH&~CcANWX z`OdSGemRu`v$Y=a!*PryG*8e=Me5}VQX!k$gqQVKI&TN=B9+8I7Xt!05D^U1iE zm-EeDPvyl0C998H$B$99S<5@T$Gc&(>zYU8-fIx1Q92zPP}lF-Oq&Ox$rI6dZ*PEG z;sWy+`C<64&jzk;uf#Ncnyp5?uX2X(3PwzwdVc7h>Fz!f*A6d9Pwuq0SmT|Uj{I2S zACRgWUi@CQm9uR64FE{p@<#=x_Ybp{J;_?NUI6E9!Op{4myg#?0!)c>0~2(r57Uu1 zEBicKy7iD5RoT;_@5dh<+AgT?@X|OR!1{YP2@p?PftLq_aO^^SP6PM)j@s7CB*eid zcT~OHsFfoMIM2(1DF%9g=HY!^tc4K<66KSQ&iCrPk@U@#mdOFvstGN~QF z2U}YRGX=@?dIM#X+PZSOz+JMbEmOm$!G_wp`sc*Ut15jM#^oeaGBpVo;hczg+RXlL zT6uI?hB4h8NT8|%oE51@H%bp`AAa||&U}@ynF<?i@MzIJxtQ*ckvRlPM$QA;0+md5^UoWJdM$;DCs*TfVDF98+8OZ5Q5>!@q;o@f;)p~jO+b|bM&#*QEDo(6 z26UlOab3>uPexkrcq%gcS!KrXA=c+vp_$F^tbRGo&vZ;Iv7vR3doRzH+Kls=xW7mOM&M#UabF*wb;Jti{?Zpf}w~lamnWU?w zbf)d1w2uDEfO|bFAFwqagc;~lYf?kZYsDBIl^PP_Hrze`K+RIyT8qE()VmMSmYU84 zmVm%XpcaR+y4YZ?k_6C^Z^MH;?nqzT3G7=|7pKMId#jQ3`+^6KX}&$h+tBr;%Gl7S zak+P+#giy_F|nad^FL>%=Utx!UGbWy`LJ#4ipq-I?!a;@E?9?0D>splg>uZIwtcZ2 zVe3FE*qmcNew6$g6aL$2R3}UaT;iD#>ey}BAsahWt$BQcd$;4j#YgI$%hU>_tqC`} zYFQo+$d~K3j6{&vHtL?Kl@+)aoWOOrg*p=Sq(3hb-_o7&`Jl)$EPQA5j7LC3BWSb*n_gS19Kz#UJm80kW?#B6n{PT zOr2^>vOaWKgucDA(L0T1J>Ktb2Vx9Yw-cmqT(fKVHB^YOqvu!atlmKguI*h-9#)fV z@Mi+s3$3$l&IS}md-C5m9N<*c06*bhj2N@4i~r2(alKlyE@zBA$3N3kTRN*FyIkT` z$C0rwu{*bucdDB{AE;RS)~#G=(|5(;rn4Bi$+KDx=fZ&5%{C+c@c1Y}(A+v({3W&#)0dQaimEZ0%djXlzZ}_s&yQNv>k^ zT;_l<5O-gxZC^ld`u*1oCA;Yw zP8t@ewKf~z!S|`fe7e&-GlREC>!sBVJ9}q?$wB!}2&n-1URq-Dr^aro@UYe7!dv&z zg+b~$!z6`)yRO=qS$NE`m}|&}vn(DJ<({Uh*zv-5ujTXV1Gz6kUOo*0Rh`KT)+|}+ z-z|41FP#1B1AoOgOf1mkU(kwmk$h-yCtEJ$yNHQnu?~`*3!mktY0B*yJ5<1RPBS)C ztXLS5w$Pa~NF>}Lr-m_rt0}jAU$gGotV**-I?9skOy4D^;fim(e@ZBMLZFcOJCUe>vEkcB5VYTFDDocHwe4r2o+3 zX~7ZaxESzwYqUwPFNHz59v5X~79U~!@meix+nI_Mt>Ep&g-Qa19A`x3+qq~#-hD1mbzP5E8$#@Czg_(hT}x^>{ATD{5h3nKNR z*o!x&!uD~q)5L?<0IW1KJrw53uH=2Dm@OnTYol^Xo}{xY8|qsPj#pq78>w_bf%IbQ zeX0Xai2D1CQtC6QAdg$QEg3DTzLuGB=gj1R9plF>#meiQG{VjV54|?_thjlL98HYP zDD}L+L9qUqK{a41==MiUPf)7l?UzF8B3O|J&)AeU3o4iSULCE(nI3hC+LAWl5(ves z;jmwnQ*^vxWO=9*$f41SPLy7qF9fGM?ee45j{Z`xt*ttpG5Oj%j~FkhAy%L=wid_s zcO)L}*FJ^`{hZHJS^-Yk=Ib`T9_j{>JWX_x!$=Qa8(mHJ8s%XUBZD*=QXc#7P-eV3 zu6H(e3TI>YM;9|tKE(XCq2xvY+QPSeQG69mlS*?ffkUt;yxN5f7_}E@uLWl zEIc5tz&ZN>#yzi?LZgW&QloBtbSjbEn0jV*=5|9)qrfiHsn!X&A&|GAi?8xo6OT1> zLvhJlM5+}cYpT;3b60>m;NUXb0>I>8kRuy_=RR5zk%mb`D#iQydQa1PS9*fGFWr-{ zL3S=1?heFyeQJzhj0rtMWy3f3WGn3`$H_^Ii)!B( znZ#&jIuxx^=*@i8I1#uVR6x%`j_rRXpX!x@q83fKqiaT|72H#6PWA zs?=RNQComdYLo~$GuNZa6fm{6Nv?D%4G&YB`@|WeP*eKaL$vsOw{5QR0iE6?z4Tzz zIEpN{dCHD<({%o4J_`Zd`@&GlJ#iXfu+*Dsy%89!q;B5Zev>M`{;fqVHq$Nm;Z?92>32dw&cL(~Ah<7C zefH9^%c?n@eaT(5#jx#Z^#SD@?jKfw zLGB1Xzp*2!&Rxq&)OVYg(>uBahpX~Y`vYJZe$v@iOrjGd-l};cJ1Yl70l0V!Xsx>A zZwlk%Vr>X(@FrB_(Jq7~NBA~(kyj6SHLK@mNqoDpvKTFtztb__ajZ9%!sSG1-jfeW z^n4Z+BVyzh&HeXI1+O2JBe$`E79|z;FNWR3elXD(g@OzxX5oXd;$?UbuuGk9fk2!1 z?YRQ=gBC6yk)5L^BW-8ywXyRJ>E3YRw^tG2N{t6S3#V1-2Ma^o zdk8{hd{||{X1`NkF;RVY1mB6BXn|%}0XFY_2hPa(>`>yO7=(TcT|TtRTM5N|->G5x!b{4+e@e`)((HM2hO)fi+z+lD z`Z!l5vk)VCNO&~a3(^8JJ`h=&q_-~KHWFHBRA_UB_sI=|tfMmckf_zoFrnvd{V1sC zA@obS9zI}(l^)K)v;xsOSaa>Mxva@=OuOo*yLfKXZN2s2xs}aLiH6i zH5NaMHo>8(j$(sJe?LBO)S_0Z)Lc7JdxaP`pl$yEGk(KuY7Mkf?bWzr6$z0u9p|Q- zR;ez?da1I*YHyNPwKK?#i$n#!+ST0rtXMiH7Jq|g3;l2_mKi`&e<_$Z`EkxbYBkxn z(*ur7l{x_}7YKn{r225jxpg&?HRLoR{-dG#b%Dr0Ase5r|L={Iz?YN~M#`-6Ts+Sm zVEKrZHy5SS$Wa!pj>ocbWj#=|ZF=R36K}qU>s&n9l2v)Q<0R#AIZU{!5P~TS?>CyV zx3Xh2VZtXWoHd-Ma8>G7w77r>z>2R+ApEl4!#*{=w}z41v(o=@H9#j1lVROB2swmx zYnXce(ktnJ)Y0~v_BHr*`VhbA5yt~oLg=2%p2kUnVrdH6?AnG#XEoT8Khm(QX2Jni zt1u1yowc+IhF>?)$$%bqLqakC0gBQv_uc&0HsAs=UnM@*Pj;@KN2x-I+iPTd`-ZlJ znGmJ+&`X=lA`Crrd!paP6HZy*RSFnag0fjmPZNHP*18z_WgW(Av&<$|;`^i~;_Q2L zsDnOBi=nG5MDrmkY&u+~U9F7DZMOLxToHzS`|NB6@&NbkbdI@x&DNFdL@oxUG*1k5LuGPW91syl0WRbbXg@ z&OjRNB5}oTR!8l|L(sW-*whxfx8Hn?_C&XdQ%CJFO>_c5nTwWyUqDNfq1Kw8=oNcI z92-!8htw49 zJmyhX)*|{{TY1yiu7CjzA!U;E)EsrhbT}csGm3qDVr6&94TsbXX~N0(q@5qMqrWR7RB|dWXsHkZNDU#)vd{B zJKklm_6uF{9AVzVT0lDvEfso`DBm4GV!yUC%Y$)d;}+8Jk)BwV&gdWOJeyFr|2K=c+?lr1CDQ5G>rajG%;JYP2^n5$~07TLAs>R6t%9B*c(hPt|Xj4cFu)d zSpxSSk_#Qns@ygL3qk>dl-v!F$oL6|L>qE#VBnopLmq-JL*)YFe)AAT!D1=LIfP$R zYjX6QqU2nu(XuNol#%V*fdP0_hco1lMN{t)^m0gcC+99)1t(;wm`66l{3^SxY{1I# zk($2)!dYeRrn}VK4yqg0Q8yeH6CVbByDM{bVb)mwKF{3lI(%7mV0l%|K_OFtwT?uQ0r^25!ZdkfsmG0{UW3m_rmz>F`I?AunJT; zS@67W7OObaVrs;#T)$08ZAlFjTHfjl>5ObP7+;K=RzBKOCby+zG97?wa!r-?jO9nE ztmJoH>Ak2?ia5-G%%>(U2{)0S_k(li$HRIIj8dn0B{M$98cfz=5|#9~mVmT&MDc;O z**!q3ft2@JquN~R(>e2phsBglE<72F(_dSwlIe943+6`BF;p}Ptnm${?*yI$NdV~> zMmAf*4QJzP1x(<)shM@^qPM9)&LQiCF`tIQdvP*4ano;sp&k_6Jzv zxCRDWtpdB*8Qz+Mi5gPi*ODo%LF^b=Z#(yo^g15mwz0689l9Pt_pOqzv@?pU!poXe zKX4)}Br`ep*C;>!ip|F{IWGbP!!zpyFf_$0!=>oDj%tP;)L}7&CsCwob8r_JXTxfM z@_Pg@M>Q@8GhZ@vXtZ(~Z;kL;XDAUKEA~YtN+zjCsbc1FfGRWDl8BIz-6h>7#=X_L z9DA;YI3C33dQvJNX1?~Yai8nj1acE8##jr>UKuWS%*o8sO>SQZ8UAjR$>T#QE31o*Dgmtm4+yLpk5U7Wf9e>ul|QT{ zoUT!rD%N>Qo{;=HmlkR*KC+zAfJV?1)Sdby`^>8u8kd%En*lZEdLsheVSSB=BkTu&;k zOD_IAvv;fuI}{j1Dy*rQjUp~HFKDjhL$S>wadrL>)`4BTm|~JjFmi-nSK@#B7~{ei zTE_F>xI0sIkebv~vWfb8IkLgZy(cvfEqc66l~EV`n%2@=FLGlGr_Z#XQx(+ur5Fo& z`$Ryoien~5Op;}#E?2`%gsU^s>QTJR)npVUWZ+2h{0PjL3Z9PPV(wi^RFTFxw3$yF zI+>=EpX5u2oWA8L8YpgAD=brL` z6+V6HY`cNKY~M$z?qrkCOzn+B9xyaiay> zBG5)-`7K9cD`+51z^%R#CF3ZmWxF@ttJM77B2Xjr|# zHmD>MP~@WT`e@F|&TzPD)Q^mt<_M+-WAV=P58bO2`_EwX{x;6f_ zC}(DSyCV9%jm$K_r~Azp8n`bV^GNLAKa>)j!IDY zI24wCYlP5C*j}GMvr+%Cgx@5eaeBmm*)$5-ITx4X?N;oO3jPF^ll3>AKZs6q<1_A5 zX1kv~f9gvOQ$l#w0dX5{AsZOF{Mr685(VqznDbvsqFgKsh zyoUCSgprT__zTi{@jt46LC61T;{Pp8xUU0zZlp29Rlfg?3&a0HbHBo0{e_4IOMD^~ zL5EE({2Qr#hK~ct7R3L;QpujN)L=hZmA^QDA+^Hj|9Ikm0BW=^&j_z*M}Fa-1@{a4 z{eK)WfFxUAN#(C)^9!m~2)O%;Pn6;r;{90u{oS8s{%eF^05VM{=r2C9XJ-^lGpmgK z7lQl?*2Y@p|BDYD;TaCcvMvn$m9GAp)H5XX3qcOGC;p2s80HyyMr2p{@R!)nxHkNU z`l!G7M1SGo|5F!~@Bh^G$146mYhCT;lrVq@u4~8TA8o~{szvyL70gZ!_t|&?K1)fg z=pR1+z2@x^f59Qu8FtB=dLUc=N610UyP4tPh|CoEQn}Q*YxRLW_uX7rqK7r3Gsw|f z)BQ9prJ?FSuzCSTeA(5ozn%co9uR2y6vj7Mu4TV^56k-afXC`{0Y|OlGKdOu>2uYP zeADxC9!L9JzJUQ|zEkJVQszu)e|iZ8_4Gu&QZ5JuB?$HFcQ^+vHs;zIDcc^1l|r8h zqDk?se+D{!>`I8WRsABx27In7t{?S$_&*|AqRtswZHiPdeF1Q0 zy!OScINP4-rfxI-x@ZwPj!T>g@*v-6&~`3b80w%kxS1tfYewz?{R>;!1uUJDhHIJd$4M>q zJWje|+;`e-;fciO-G_rVfcPMRCyC~#F2Jx84a{fQQb8z~Ux&UNd|Iq9TE>CSl6e?d zO#mzGX!cw#^0Ei~c>D4Mk3&f^tvIA3)y1L9!S1ei(Hh~pGus_WcxAxOwYz3MQ(Xh% z&5l*$Q)|xGH9`-6Z9<>~FBgf@vpSBDjKdI&dFysIkL|F&sFC}^;1d-5KSwhI^mY!K zmuyvw&&u%S5+%=hHr`U1UU24pM_uL>k>ww`%?nGx@5Pjy^SJz=36*KFH*7vqNhs*XH@gp?ZliP7o9E+ zd-AqnsE^mRbt&2Y(yg=y)N%X|8VY#*Yn-mq%6hpy5DTyXCM8IeNTW#;n7^6G{I`0YX~4p2-YL^|}4-Ewwz9 z&1xPR`cAm!MkNTW{c|Wb2iNdvMWOk6Q7{*#>?2`4sqM12-ooRhdn{{Fu{zgx$jRtr zwYHpGX~@w-Pha*a5%adm&~E36-PLyjT0#vj-5k&B#UsVmWv5eF7uP2Xae_zHJPs4* zGalmLBT(J_{@uxu#n$7EVDt3@y2GgB!=a1Adgc<&k zMqw&p#hslws*q|r&eD5}$W67gtJb#c%duH* zDJPkwvKa-Mu$zgB zvhju7`v)zI%Exlt%L`Kyx1$-EYhFeW$V|32Q```=RQWE;o%gF(ck4Ibo9*~^ zZz01O=WhGlaS4+Wwd@Hkju7rQk~5&r&%4>+1^aKs)Byt&@kN%8_Z-s8SJ`YeM2U03il9l zHPH}397L$iE8;W&rx)2S|ayaljWF3>2fx)mWE4(1+S|3TNV3KXaPJn<}0N z?JPEjTj-_B*jjBQM313LT=`N2mWI==*R(LDBzg^d@R1$P(b3J-luqLeS?U`euJ=vN z^Qn~UldB8wg}K1?M_+YNYJzMUfB^a*g>3bQMmsKd?w#r0-a zPThB9Cv$&JjReSZfdFfpZl_4)0-~i=N5bg52#tx?QvobC3L2nh$`&I3tY#QGv}(fe zJPDi=K8K_fa0YeeJYcxy*1!C{VLNZCS)hCKE;XJD3N9b+Al^-yoidk8m0EG!tg50^iN zA~t$&G-Kv!_Ov|z%dup@eKyXOv=a;DWS17RQ4cjF z&v5Qy*Zjg;8s(LLK#gP0e0Jh8hKtZiQL**Fp|oOKW%cVztyPtlsRWgmE!S+zlq^p< z{A91?2OlT%3v!FxZESr{$v70?={M?M{If?x|JtJ!tbyp51dR3#GgI*{5YJv1b6pAl zT56dY*ZOE{0@Rm?k~V#_D1F#|q1Ht8XZ?yOM0ZkRtorO5-~?5ZAlU6x&=2x0UQ)_{ zg)J#1L3=RF=pbL8>asqq12%kJE?N@!UaJDxqzl`9@i-1BKSmA92rfbx(*k|vErXNk z#2^N1z4$t=y21N`&4@+<>L7u|f|QiM{FG$*+(aj+r*&uXEfwqSyYlT`#Yc1b(54uS zqAN?(kfydS>=>15Su^aRQ2BzeRz7|?$i>xteAwUvJCd&sMr`!yq^HG#`w8X#bW5_& zrqT6}<)ihjnyYp_S-*kk)rfyQiEok6iZ(WMpu4+->wz!CRt^355F#d{qn!TQ%pMiN zaE=)S?BuA@i=u@gB^5w$#7a_GJmx6!bST|V!FtV;p}(ENg4gGajfNGG?ks4p)~VFp zJC9g*OodiT4)ZxcjuNYnzTFd58|VY95u@w_pf1Y>2i4=E^H=erKtt1U2p}S5)da`j zphbt=9G)>L=y`-z}KFH$HAW<@nD{7;& zY<}pA50kP~heH1ZODinsoNj@FT?DUhD_dsbtmsPZ&4(#?^F9S=u{IncF_+#1MbbU- zJC7vvdkJgdG^B>cGmQjZ@uE46Uk>Z-Lrf`YnyNbY_vA7Arg zwI$iVh37q`K`W(%iK%O+ua-JrrCOsI>IZH)yWT@a0%}Ui2tHxERX={v zZO?v~96p!1_C%#7y(?p%cPa0Ibgxnl(X~fI$9}#)nHEN5IWD9wh!;2-=yocvTOdM* zacJsEGz+s(&!O%APl(x$O>WPO4PA%!gKBK{W>-4GIi7@Rau1Q;z!P9r0Xqgr+iu@fmA@(m3eYf6*_M7pg3$G*-F$=L^ zm3dFM9?_&*Q}$!dS)AR7A_@t;Z7x5noTQyx=6A9STp3ZQB@T${AyhNFucSrSOQ_D~ z4M(}hu4n0+zwJ9sX<^p&g7uh zL)Kft9c5bH$$UJ68S}&Q!OlP8XWtVD(aLNnK||hj zHLvMcq}d7dc4kpsZ?%hYb4Bz$V?>=&y+BZEhDzJ(AXlqkPW?>1iWJ!XB24Q~L=lYU zeuwzNrqxAWG}$=EY6j?`#GXokRzLIOB*Hmv&0hTyYz=&l3QSBnC|hJ9>0e~ykdNXB z%zR#8D@dU2j(<$v6?N?agurhUr|P zBSx)Oj0=PVNi3&hUvY-CYc7?57ieG}?F#uWRCM4$&<9}Li3cWGFW0O<5BTD_2)(@Q zi1xz_xcmU@UNh>5!@=#YvrxEylgvQ)W>Da#mD@fBL@r$gk|>Jd`hs(K1NJRXaZf}a zoQ%X0yCQ2Cdp*vpgE^t4wdB zFA8Alen|&92m%^lK@W=DwLWdFZ^CU605e8bm7bJoI+i|sUGNOw)(`x2&0F zKb)i7bSD3Z5O-pE4MJJJzLw&s(MUPr2s)_5dUXX40UYAv5+g-0K6u%03OBrNNhfh3puFb5Db;D#+eTayjlUv3y^?E_#AP%s!Ji6Lc z7=b~7tGqLxU+!Ch7b{SNhxQAWE4$sIqP49#U6)nEnI^6^@e#aSi3{p5P_u;_jm4$& zdRYYS#QwZcKeYI4*A#&y`Qa+6wZ_}_(ffUGzMWljST5E!G1)mz+ z4a;iWwte^dc2DJ!aS2A&z07gZZP1y|X<<(Y`N%nZyJb5;m5SypyB0$er&+#M#( zOl&%Vmt8Fih%ZbE+qN?ll}hCTO{b|b1;HYu@HS$AM7^eTJSQ#{K&X6k;g)z=!YV7G zb#>i(WZuj&(nl(OrLu>{UBo+G_aD>R98|p8zJDC{CWXB>qVL*GA>GWv>wvrfy_Bg1 zgj8ROp7TmV&I~px=iGcL+mj5{XKTh(#UM2g9|(~XpXZUK&G61czLx5BH<0Li52+(A zEkJ`|kG;iLlPxw;k3v~^-PLpS@~40%phUgUQDez`vN7`M1ZJIilOqHu|0aScc9*p- zQ1up+_su)*W@PoIQl%YC)8|ce{Vsl$%X2A3=3`qG_QD%Jgk?o4kx|p9T*mr4WEuAV zR2~vz+Hc;$;7u&8=NH3Tr;1bs*WAfMh7LB61_SopA zRklnZ%`LbwvY`sExo(Z53Zazezn*dRD29a<%ZMHqOjhj~8Nur7kN*%DgrVJmRBsk;y+dHpW1eKB^u)_3d$)P*>RLv!KZjW&$(kFWTb~K7Pmd@JQ);TSGh4mcLuuhQM{8{>;zPypXn^E{X7GBB$jRDO zpCRX41c!r^`p3iU`iqfy!;?jXE^fef_hxiGLEBrzLErjI`O>f+{JL(NHBzcg2VDC?D^nu8jr>i(i3ro(^;W_&&~C*l|pB(a2y9Qdl0%C`TF`9wjzcs9XDp}nKf~3J!9e_XH`%j^8=ef21{6jeM z|AksG4GPPT6aOCi--6couaR%yNNev*Gj`#r+{I{r_!@PDfKOBK(-!O9+{!|8j< z;76P#o#2Auo6U_POwy&~g-lFj+hwX3D$~l=h6Y0P-zro4qDsr&9UKii@Na#2XwFN1 z*Hn18TP5h?&B$Nu4N!QHyPa*2;KV@qZIDdT&~|F1*SCS!`>3sy-YJ_|mE-7(K6i^1 zH;|`g0Sw~%CIE|@%ec=ZTHTgPJ3;Ea^xDc0^;(X=eXByA>f(OLwBBOIP&nb^J^9Ha z>SQAa_(lQI{Zyz)l504vFJ$(+E@tMvKVs{<#+-z2!@hFudsovP68Ar&wn@e<5Y~Kt z@65h<81B!1I74~gv-~9LwWs%BlM%SJD&cjX?kDuK4!DN@bPm^WS7Ih|lH*gGw7kA% zh{1Vt5m|ppok+u@qJh&gURtj+Rziur3w`g_zk9__3-g`^1~*GN8s^u$-0xtP z8ih&BKQ1Dt#jWOjesefO4n0_Lt+Cm7eNx84bTudZxEN%YiD8(Q)ILxqKpnU;*{x?& z2B>{1(83IIKmG%W)c-Zuya(_Wc-Px>&nyIDJ5mXnEL45gU$K zDX*H@P*H#)*cy)5(F|YYyOuOSUWzs>H{dVK6x%68@{fz!7GCjs4zhN`p0-&}N}_7Y z_0SL0bWT=*;T>vsYdJorLWcgO8KnYvp*23M^anmJ^pTOD4JG`xJ9%b$F7P?J*P7_V z>%2UKcewcT&&OW<40J0Cv#PGJcW_{C{i+IKW=%be1w?ft4T4APmT|%&8+>nVjyIVg z)$X8^{CbBjgOl3RT^1j^FQ-2#T(vc|?+!5E^(~`*BarmSa%{d4=lH?Dv4$FdGkz48 zS-o%P9eZz{V0+y|iv8$Gh3G4n8OkMnmKAbWn+_%~xX4m0fa~-B(YyEr&|P77sQiO#C1HImroT%$w2F9l}dq zPqa13av54!lvOUPxLCY4zh z!R@B!Ep-l9yq*h5(8Gp|RPB_JqSpdTY#v_EgD3f@A1>2u?8C zW`Tbjb1;OL+IA2RUKcXsB?cr9ESN8rVtBoBc;kHIKd1a;tmjTTGmzp!su_XOqcG?w z97-)pkDrh{tFzC>NdQER2)9>yJy!c4X#nWU?~RZzn#4yz@r zl*ihAZB;pVl^LTE?x~aRp8qssI%ai|SSMsyS$Do&YHYeXd1=T0-RjYqCf9qZdcopL z+hj>6&wozCPC+cp-Sj`AP{P64?0m89KVLyYRS;%u|2N8nhde@Q537q~X`dkZ1h*+> zV>q_#@0Ju5zPfv%W!ojoVE`ows;HNkK8Yzva=Xi{c_0w-A5l3i`eEXZHnOU%nyjbe z2WtriV6%C)>(R$X7lrY$^rVrGT)b~CoYxZ|%gfSt(FQygjBRY&zSZ@$NXwL>Sd$CE zCGJ740A=q>2`GQH$V*QZ_p8bl*~OC@q}je*eU_%ld9cgxzDt1Loe}3@5}T^1H`$}hp5rCIZu6u0h^KwDx%+a6ToBCXy* z?YZa*deBgYS*zoxCJ1^+&sSn=|2quDj1qLA@$Ne%SsYf-CKuYJZGY|a_Ypw>y)^w8p8!J$Mvhihks$dp1VGC2E$(_I2s| zwcboS4n3=pYeM5EnC-T^@$jzu=@1SC?B>Z-Rt&Gqpb(<$I+CGfoF2K6 z1fFbH0-KbWdbW%UUrYq?Wv2<@6g^ecIY>F{ zjeT=Yq*bQSPO%eSOIS+)`Ne&!fd)Xo?TP4eaDclSpSF^QvQPSPUHP+)MGK9ZD9wi@ z8h>f!V{*RU;jYl2iW;x3wUS~CicrX^WrTv~>qFB#`8ZfiSkPi?RNq;H9~P9Q9Kw<6 z(k849(TTFlkd8eqfoj!m|SA9*y?4^%*`_$PJt zCr7vs@RazRveg#1$!K+KRyo^GX=`VtBes#U zw?p|v9H)JVeeCw-=SsGf2jF(yPek{Dp>p5!+m(YEcw)rXkT{z%+n7RiohB7IviB|l zg0mIPEQunkXh{6JB^2vr&vA!f61{`pQ05V^yXgbn$ecxolQByvW;vk?ewLxIc$o#$ zgMj(!XFnFo+}2}uY@jFKMPt7K5vjY*>Ej+}voT*^6}N;`i^iOUdjv7K0MFUnL>oN z?a_l&^;WP*?5vsPcH)traTiUh|KcVwAfs4cd9oq1pJh9A_GCviI|;7dxvmyhz10A> z@$G-0g|q;8JaG#0n97k#rt!Gf+zi@HWVqCm8#zIIcweJcEZ+!U3^TQ}+v|(WJXun| zH9i0Bw~#XO7R`slQGw#CIX6Ee^W|?J!mVS&MBCa-5$}FQzS_>>o_Bt!Lq>y&9*IEV zc-0*9kYpX1i!XZDhGB>cY2$s_yM?Uw-+-qjfFn)j;tzJVTVgt`8Owhnk70JC@@@mv zqLJ>ofvs7k*hX4#nIlxSq5!oEF&8AkEJZ0cUXEc zbrVIo=d|jC<8_Kbzbv$%7pTYT+;qbU-doHXX|#L^)v7GoTU6SdEiswdXRJHZRXB6! z-NgNSMLi?w;{!T%;T(rau!e1Ma@nPB|5T4O>c+8$IO?k~ZuT>r^N92Bg@(Qe=*k## z*aA;8($!e8KhaDz!ABrxj|Db|xE>m!j2hn0g|OeDv=Bg+ecDw!CskVF@feyMGB~ZOa**a=X5cTV77?@&cCX1fN;64)j*h>{C#vz@WAi#gk=_1!P66^gmx zgU9IR#}ydJ>gLY!Aol!;jwWJw0i>^^1{h64QPSjs7@}8Ex#fEv%sUTb=cAIIdKMghh{6a7+Fk1x&N_8VI zM$Ey20`$T+Ph>z4sz2%4N=AxtRaK=`$`ljUvt#hB^%7S05Mm=@Cn`M{5`c5X-{Xm$ z-0r@nKjpW6i`j~jtTt}EWlZow!DBvocc>T!o5GB<&~5MZ_9IUJ5`E97(bz^3_hE@Q zbb&UpD2HH5vmXP0PvwQ=SAQ59`!m`~ylXh8rGyuB#r4{#*B+ETzA^gq4Ri|kRk@mi z^Np<1o$*6Y{2WNM67`HDedhm@oHqMHawNUm)qbE2%eMx{t(hF^z+ zIT#UGR_wQ=9|r=6bpmWiNyn&S)iPtgjfA>{-(B6ZZ;9Oz3c#lh)QuQYr@mFh(~m%6 zK|W^_`^8Wuw6@WUz7?Plj)7p zJ#YA&+h3};Ds!z zy|M(OFIUs@GCpTPM`~(Cd@W7tOf6Hr1({mfokwSx&jQdX{XU?tSh#qMU5@EP<%#Gif*eU9!D8@6MhNL=FnqHU_9|f zC1oEh$s(&}wMXW9n40jhTNi-fqwB5JJ*N!_Tv6+dNmbvgaH#(yL3SnfE9g+Te%0P~ zJ{51OWe?x+;={Mf^Sh)pHQhHX50@KdcJUa#ItJhI12xn$z1a4Zc0}cX}&xibheAMGAFfj*=>O zOsemuPBfY%S^8C3veb&ykNC~CXP|f5+_yX5aKcv(p&47L`j+L(tA&YW#lluY*-C^H z45+fa%~2ZONjh^vd8pI_Kg^L4SxofOhVz(OX*Wf73jJ8N)ALi$4U3v{7Nol!636V{ zYR(sv4c%NbPH%B%{+#-W*Rwa~YB#3wj)rko?b5Dj4{sA0?)NWEJ-f-=mDlcromf75 zKf}H|{Ox8mQ93$(fEV7>`3e>Ev{o|w-TnEG&mu@;mt`CbKw1sp0|cTl_~Wnh)+bp> zA^|>6|Gf6&{zD(ca_P}qzWEud!2g`rV*DSG}4Re6@4p zG`>U+IxHSfJqlFap5mRUM$|ZS)YmFsYs`^*dC|cA@crt{mjqrba3V84^@F@pQm}kr}wTL7=FO_6o z8wtf^8WzDZN>wI>iuF& z7lF|;-Syreq|xuWO0`?4;PDGYJ3dgYYgE85&~fkK3+B0- zk>DIQ+{rE)R!YPrtmLI$0UnAsoHLsp^2!xAJ<=Gks?iqe2?|$gx^RLaZ9i|i@pt|i z(Z)uE_S^(1v0-0-C8gf8vufVE^n{nuU~ONAFO02flnkE+HvZg7yxVp#7F{9_D0<3J z;g9L~$x8PO@WAWaXhESFtODQS;?gl+FE!%(B!^e&k5Z0IvfuKXDCubIsod%3oN&CT z=wzxaeJF|Kej0D1e?X-7=`;9layAKZJDacib8fE&BW(_Bc?XZ3#q&NclUFEj*{%08 zIUPtv@E4@{>eQ2Fea{r>pb@?+kedbnX`9Ds&{)thP}(2+7Li0I@}A7#rTsRzHBp78 zIp8K2`SOx1iwxOry^ZLng0m9Y*(Js4^_O&`p+BB;*bQw~5RHN#cc5Yifr`}xg*DXw z?B8q7@6%xTwR19}vl=W96-G6*2{^af2v&%bu-UHPy}#{vR?vT$Br6)zatHW+-c>bd zjLpN0lA)lbcnAkO-CmG=zX@neeUunTh>Y#vF#DX_dG_}|!>AK$5X?X^N3%%pQ4Vh~ zi*WO`C_7Q5Gq`;gN2FOz)}qoXd95$tS>N}dN8MPZBhf0Q_~}gYL!5FEX6tR$!^Re< zq4#PvfTA>6xwjp1IFW*X{34U#pDB+RhVkF1d8Y=|E5KT5@-6Z1%_&}Xui@;m? zTB>y|m}j0MQj3?cRJvmEw| z4HK9Zj*(X=06zTXw(0gT;Fi;f?w6YS`)Fy!FE6R>eDO!ez9(6a4;Z~SFH&@D8ox>E zBnmFY!m2Q*NL>-_l0;TfDct|FJ;By(P!r87z}LzjC;K$dw|`_%W2WAGUC@3^=Wc&q zXL5QF;DOlDcf6WYvYezXSg?&_1{Pv3+&*sH^z>f2EnEs7(Of0`?jrb~t~lf{U6DVq zgWvrNOJIXndH2oql=wdr`Zr_c6+-1JI9dd)oVa+&{|fV;edPQ5Kru|Jklp`j{MUyg z;yV~}0S|~`{5NtD1;Z%t2?YPXtNagB|NIKM3y0R!^!>m3`-YH%**mz#_g`WE183;N z!9=V4OhNVIU;Sai=8RnG&DcNmntw<($bT6NA~Jyv!haY_XA&W+#{^O$l6Kn7M|3myYnDq+& z{}1thF~9#8t@v~XCpa-Nv80-rk@4NxRRr%HKN@9IHb1B5FcNKHsrL7iZh^Z=c^{|8 z2XQuD&AT>c`{&~@AXK?pO8TdcCpmERZtLIZx}QA|f8Iz9C(I*Fq# zdHXhgH>s+Gx=?Gi835L{RD4~J{LcE+aT@=EhO}?{q&J?(N--xMAasDHk_2aQ@ z?`8O^G9e0JWNM~SXp|SR ziK)JVryHevDJ&)AC8u>n*+=BD={PTRjvqgQ?1_!P1PR68eUwG+<@zfA_Hp$|f;h5o zqt(xi(f*~cx%lY^QQz@pm9%oNML-QzZ%f}gX+Ryh@G~g;JH|_~uYutGG~UL=%Yntl zCy@r}!+l6|@yk_gZ+L({agovn^(w5hu-mS&=-40Q{-YrwIrrxc0p4nlTUug_B7Y*5 zlLs3gw{z$2VzYnjj4JoxZE@c*YDhk9DoY$01u)uoSZJriK=rKrj@)LpVSs!H+%v<{4FG0M8(Q)xnm|uGPVcbGTt8UY%^5l0TtN1 z5aj2Ks?S0{(r@1z($&mn;Smv7Tv;yul*)lVJrZ+s;ff&z_R>n7f2{SGltyau3skah z24_cCp-gtPWqm!=TSzgp8Lzy%uH1<-N`bR)sI*oVhNGSTG zb#d&@F%In4k&tR*t4|=jJi6Qq@qYkv7}AZFSH;}PXT9AwKIuB2<4sSwbJI`NpOXFm63y3PCX zCG~XWOm#wWf=kOdMJZ(D)15FqASj%D)1fHuE+$tL$q)fKjlN^gvp*&}&V+lhg3q0l zV*@VzigZeiR4=_Tph%YVqu}77)1hXTK){6T7$HTF%l^0Rqo+rl;EN4bUvmbpE@vY5 zwBdYhCTK;bK~qajvhr~LRTPb?kpSZPl7eG|02ExWdhv3sxt(5g8ohNKSy_bBM10-= zW-RlV&ERe7m;cQe$&ODKYza?bJ1G2U9`kwC2KH^uFQQa2X5CAcxt~ z!kF6DQL5kGpx69_566U)UTWy6L+l~bxyUeig0|KC=~2tnB%EfO^vwrAK^W?=sIrcK zYg^GBUk6UG%f@HT58eeD3^5cz6X_)#Etv`_JL9XUTbj%g50PtY)yxB>hm8<1Qkk{j z?&+Gx>FDz^#dEiCoiO#S<6I&BD0B~?^XBzMxzc!Jw+LX9-NTb~)>aTTdDV-$L?HuD zg~E{`G!urCXP32*GHjX;YB(gdx-GT;Xr*>&lv=KbWTHWaL#5m1h|iC((EuU45m0rbKuMht zzc(t0E!Fcos-hJ_HxiW}k+nMIV%%R~ME-w*{qgeFWGP-tIp)ov>U{0`D{SLf02JMN&@@d}Qxz^L&}+7DQ+RblPP z?>JFjmC{yK5IXsEbX;rj5rx0wP}>{>8gXayyg7v@KEGy;&!G(@Is)OCFvW2LUkyBn zJw04MZ@GQrR2Zl@7QT`%Rfa(3(%!{ry-VPC98b2#SKBltUB!Ki`_TXlyezP0rhb6` z$Z`{D+W{7rJ$_@C7pU5{mS@7l^PrRX^m!3EG)4HEiRII8^8Mk5pbD8=hF2vAn(gPE zTOHJPwy4?*;B#X-1n&gpt4ZKe-u^VTolb?IqnFsMEQ`n^T)`J;y!9}tb<_7PcqWJ2 z?Sa>g+Osa@m{UWCd7m1z;IGYshhsJ4+ze9=mdazC>TsAe z@`kib4?cQu8}p~F&HE~?x7tGaiBM}tR{nVDRW5T~hc{0uwWp?-T>vNJj0lc|)SWau z58_Yh84g4Zn?6gRHNKR7YS0whqob!99cm*TaxZ@@UYhmbpE)Ev;bg?M#O@AY&t7VBg4Bt!x2@2C~ot0G4Ssw9s5 z1^E`1(KnFd4EwhqLwDM~TlHZ94*H;$3hSw}pm9`-0ebB8g3Uax9}Dg3PkreGTLdN= z%+OMO%8-ZN;hL_ddU3x$pr9o~F2BP7j}r$)!WF5GR21ww2~Pr*2lj_?`c1@x;Af_i zU36)KSq6_1hfN#0l-8@H zR*eW*O(`QcDnA2BdyzfJPN|UQZIm>)1)HFwM8TSfiCb^Is8(h_v46j^ z=^D9M&Tz10ugpyKDP$C|Q*3}<3M3bJdZ+NDgPY!y9+Z~pfwjg5u1W2xh5JYc_Cc+} zXM+9PJX|v#7y{s|D<;Fcv#-o^SHuhm?p^aZG*5QW8i#zT1P9fq2M<8nS0J0H%KV9! zyLZH=%Av$pKonKAd@2WW>${ZD(sJ;g@1zx~DmbhtJG`C9)`YR4+Ku6OEn@jgShwof zQnb82dF0*iu_t!q2_>=w$B99KCeJ&hy3lmQo{OSQ&ecA6$!b6Q<{<+lByY89B%TCr zi!kwzPPfC^@fY1XOb%k50`k+M^&<`)cqk&=Wq0bC^j5Mh&z)lK(;wE-*5DF$n74UR;{xnpUd!$ zgYLP6T(By+L54nM&)F|zWhWM^C%}8jNFt>lCk|uP@UR?BC zqr`wKqFA`LNeiX4wBzuoVf$K2ymHkj^?=B9R@sNkQez!}FSjsW}u-%)v+NqWC}&C8(whwI7D#wATMkEH_Ojifw9mUToB+_05(7aV5)^ z0Ak+$(|94WQshyuV1%iIJP+mk6pI#tvqpvk)lq@9l<}W33wi-*KP*PtjDtn)f?9+V_n<1_lE0lELE;MB&P!!&D zo_)i2`M{mq)dVxwU$LCAHYd;6E==uaI* zaK+-F)dro-o5wd0$&ncvXtJsKZ$DE8jhSI&A_S~wq84xwx4`6tnZ?+(mU|Bmi}Hw- z->1#XQWiZT-@>Jpsve8tq*Zz(e1r57)xAC89gdn(?5X-5DqS3k6knH3RfA)!h8aWo zYxW?>a?b2rUQqb{PMqeQdj%)byl-V6N{dp_-4{1Hy9S8Eh45HxoTfnjxgK;u_V~tW zK?}xmr~o=#J=|l{@MdCi)hpF?ch?%g6iX~4-O zB=IU+Ucd6lRY;;5-qZ;b7;C({QK@SC6GPx0@1KdyRabaJ;op*FGegQWXkKm8XW&V< zR&i$SUtRv+Lr>VTsci(F5oAwm$r>1C=BE=S8R=$9WaX|^&jSgmTCBPFk*IKnZ5A%W z)fL=cDL$N4R);$FB`iI*s<(nf1t-ox?`fhtrmA8Fs|ZgT ze|F)pc>MhJOipApgj#ttEcN{A6@K$ywE*PH(3Z00QuX{Zppq?FE&%czJKfiO*q-G| zUQFbti?7}3i1>t64$!|RvsUpc`aQ1I?w#^8PfRccb-R+6V!78UBo~E~wOE<=d*yB5 z%wn}`iIcRqLAp}Ec}aiBc>g{5OV&(hpS+&vkQaN=wXIJdci-1Xnq~E29Dy+w6fLJJ zuTLCv@?DQN+@MTtl;Pf?U8b3)TMj+OgS(F`%E?)nMVjq`&^OX$3YO-qaTt7u;CW+y z<1IS8oRQ(g1$A3LTHBg0@!ZKeSKMy%7SL@<9?9y1T0$8y2B$WXLR5AaRK2d;cCked zaIek)^5`JUWES7jvtya#yVU*sGp1QB!I!EDT)B8_?N5)?rbTrn#Id73dOUokcX(6Y zs^*95%4u9oOk#S+bd!DKFl8Q{Gk$8(V1=DeFx4=8;vggAwGh8-VKDCnI{@jtT)Te6 z2{l`Tes{D!zYT$sx%1eW@e&&1&fc<(*g32}hj1uvFgnqz{_&jJe_CF8bo3lYMlRK* zINit>{CLFGl;#TUXo{ zJv!QctSD**3r{Nan5Q@#21fL?@7tt`koSC^Mg~evuV}S&U6&P=3D0p*?a_>}%zz_+ z{g+4}Cs%v^m(dI-fQyP1Hw5A0sX4XkJ1q|%i$!YKFAofF@WL zX-Y`KsP>3*ox4Y@sv=x56n?yrcx$s)hF_GNkE(2vviX)Ss zM9@yX+D|l=pKa#r0pxl~XB+=FvfP8Lbp8C-ej*J+rwTX@M_b^|*OB%#r9cmf#H4t1 z?#q!TC%a`g8%P%Cg>QY3KAXRnu)$dT13A@E3V;Ct>FA#C#XRG@k#94&xj(g4yhdG+ z&~0RrUbBaUF`I965gz1*Ws5k3mi7yZXd$E;UJZn_-_mbdLWWt!GRwS;qiGZAxY7CZQe#?}<-MK#ZJ6*k;LMcsHd+Q> zaX6Vyhx3l`eFC0IRtN&d zV%sqXQD5DF0b6UWy$_N$s zVeh)K=T`^tG#SbIxp$HiIf%^Ov98b=qLd}`p3~#omAr1JgsXY`JFg(aoVTz`*)QbX zS6pbKusnTLKEe{x;-`~uaMZC09^AGr$+98Grb)4C`5{R9XUN=1EjM$hpUJBvi+Z=# z!EbEm$9I6-cqy#OB+3@&!m)zvPWZCqSvtwUhl}|f)$&#nj1uxhpYsPoYX~~JlJ7(;n&%Wi7+0_$Kk0L6+YDtEK=oVMx7gR z@4Q9^PF=>6xuTCFVSF|sn$~}In67+soA+r7{$xEgEMOclfp0{c%rpw-uZNUw>E#9* zSM?tb#o#RTzuuj+Z(tkIsbzUCDtUz>7z^jdO?6enk{TW7zZ7~o(>>eSIOw`3U^~PH zv5i>2ee|fnL^w~T-FaOzz=A}D2YJ0WP18YBJ<}Vx{@MRRmc2o#;O0IDu_j%S$nZ|V z4>#PfVhC`4=vAw9QTvU2svh+>*3RUrvPvPri)G5FG=ZA zC@yF8<|uo!uDV{PJ%BNI5+1WOv=@f57I@VVr!s@x80Y9Fx)7LczCtIBnG>SZF$hiZ z@E1ju>*sVHU~3-3!yJ~B>o8GR^~gTa5!${hLGhiW1CLgKIkdFEU+so+mUA4@j+#Wj zRnR2l^WX@O9^tNOb}vxdtSBe+yyA_P10axF57+I^7gL~4WehP+HW`T?L#?6aaYB!8 z_SX2V{ueh$)oF_Pp0~2Q*`^^=DKX>Z?}q&z9Jf9f`kkiFIC9gAdpBZkTuJG39LFLj zt7)5XB#pn?s&R$PwSd?krUh`PN|>9hzS8TDZrH81MuD4)Z_*Id4q}u?r5=Vcc*12S zbhVX}K8cVRQ$(R8S$QW4M_pyh`s)8-X)e6U{S)!39X>r&)b7_)+>y{v$EcAmtQ*6I2yoE^AnA|2m3`jDIR4X^z5W!wd+ zUcEcHW=6!sfDUf!yJ!dZdV~N?kMiAXiDh2NS>moz9C(-eDQeqB$}SAYUvzV*;!iQV z&%uI?l*mD*pG@N7N-el7)ZZ;tdMjqCi`7^(Z#t(+MQ3h??tP7R{fR6^v_2I&5~Xm8}^XYzbH*-nbFjYC)l1d8MvSDH>UP|=Id|868Hp;|HZA7 z>82`rBFajXmK+B{rjB9Y+e7X;-P08Aw}hKTOSBHMAk+{{gbWO+ljFJ4bUdt^SJB%G zr8FK73por}HA>xbSKh{_c|R)5KRjc*48A83l4bE5e)%KpMUh9idXLB5#wkP!dY*RDN`c>nV(T8&gEyB_cmm%EL1di24?PfbJ z|D>R%u0Ha4@k?##b^ z(*KwkSAX?QAoJA&sECVZ5MlY3A7Uf-b1q(?26d53FW&Yo*Sw@U&czXHo_k zP3LYY2tg-8wZvpuP|v6ujBj!6AGjvU7Ukbm>}mIjCNrf@>PmslP6)$i z2j+Dfj^ny>Kht5O){f7v4J^VK!il@8>&iC<5#&-2iwRHm`#vlNa2v=*gq05NSl+P; zrKbsB2XDrH8z$M;*M0m@si9mUETU*5oRvVJnb-}v*%9I#=xzpiB)-Pah~V?rO)*bq zK(J*=zGvcn6L((MUV4KwwPyzKC9ZvVP2&H2lt!Hu*>kHK-}qv`n-A0rete_!UEwKFER!J?$liaiVO)?n z@LjQwJ6iUnku`qAu`f7HcdnM7-5cukl`3nR0?}ORo0aNV6M4D^J3|l;zA^~CpO$RS zGuYGQ#xOsg&oo)bVSE!UB-~~M9#N4PLM*^90Qd}6T!?hA1da*2PrYyKKig!?w6Q;_ zdb__Q3v{Hi=QX)XF?lgT@!kvLS;YzHhPqG!I`@aE24W`kq%L%b=|l7}RgfIbjXl$g zeM|>pRObQaMRPQaRE(!x5=dnIQ_+LjIHV)4p7A$cjwtwXC&IDDcY+v%k_V3P)~I^u5k9JnMw)6-d$7EgHC7`62<(Mb~2^~+;vYZHwQ zxKBb70@s#Jd8ujRSI$hv0On1EJzpR(xu5o)y9Q{*|I+5i8wY8Pba+(Wfn=@fZgCbg?M z4nm)k@R}8UOwa*PWjkcpljq3N%+R@~vGf8~vxtvoz?-v09ix#OOS*LdPBvqb_2E#n zObm_V={1Uv*YPLUr5}i1XFLy9sCA{vPt4h%r+z&t$vumlHM3!as+>BB7+tv!$R0?h z1EmwrJV7&0O4kQ~=Vo>WgwhWSH(+$;Jy_A9w^y3NPr+nGuhABH`=JvR8L$_aY=;Zw zq$P?u>A(PK(M(Tp;>$<3EtUtcxI_OInjfElMOM*bX(Ojivd25+}j9eCcB% z+#$zH^k+_SKqmvNp88&&L>qO$r85J+Q%KP)D1sC^7I#^Bi@Kt!Xn%4zVMRT!CkYKD za@nNi+b^&n;V)EeQ>}vNLb6tF1rP=5W-vuCBob0nAXby zC}=#B^oQT~Kg7$U(Eh5Yt_Pw)gLN}X>)@<&RqL3MiGCG+H7CBSM# zjXki!WyYx9-LikaQanXR?T6N6P;S9fFc)n`cU1{2Nc1}`pNryiu<`E*CEzC?)lI$uTT zWE`Z0GuGwe9l!p%@~b%mGrcJm;Wf+$nL;B)sxRNC^9iKqbMNO?_yJg?_f&kJRZt^E%CPE=VYn)<#wX)aP=^) z#xlf^yYzlS+cz}iyd#82+*s+z=-{jT?AD3JrbY{l8CFb>}%Pgl`sb7W5 z+{_sn?|wu=jqnu@j)wmQUKAZ*Vej?roXQ|33(cg)<%dqXZe^%0v;*T5WaoQ}T@bX`B{T&%*QKlVcM5}Za#V_7s@?{$|;$ICs zvuyg%E95yG+sx%QK1ww0#v;Dndw$LtQgT#3s8}=wjp^pNYEc@fJnsY)*1PO9WDYQ% zSaSqq=?mfid7@$y-n&?{WubG?e~;cTyN6miuCSMi!I{hc3lU8yFWZ9O^Ea4=V}tm% zvj9Fli?6RMbnNTTgm8<+6P)R3&-7uIC73t3Br2rIQc6UEjc+pm@hi5CHhC!3Z=np@ z@n=|lS0=`4qNBOfs-PZ#Z|RcTs%@UHB>dP~d@;M}rVwt_WKon{qqNLxQp@pB-gDMI zk8j6T*j|5YN}IT&+1r{hrn!3tp0{n8D%|`U&UTb}{IF33)hT;*jGwmrQ1*7z*0(ns zD{I-qKdKzhjBti;fU&%;v)pTJzVqn*_sw%DV14acy1D(VO^2WOMPPCAD^9pe^OsOb zOMSZOD)V*8ZFmMIyv?1B3QSs;RCw+}s#uhzLToe=AKB}~{3k?)_ao2T**JZMajf@4 zz4A3mzT`;WAXbucY!-eWZS-c&3jzV}TFTi!T#Mc_njhtP=%)k4K(f*-0^n*a^eQ=y zh2{(80TibO9u0y&-%F0FX&$So(`pf z;ItiRx2)b7WSezZ>|0xY#wh6bH-CJ10z?H`QZzZiOD9<70bfCHdmc3SxO-*yW5s6NZ|YY+>GCQA-$%nw>UaHH5ueFAztV<@UYjcZ_BU6U zD~#vS=5)9^C!*(u_xLCRtNRd5+h*9UM}ccj_7y_X;+BP+Vo)5iR9!u%ca zKI>jQC*icc5OXE>bVct2%83HWf`VX{%5zMI9LlL6)PV;0B`AaVN1h2}4AI#4T%%vB zAbfu`x=)h+VSXzm)c}iox@dw-6Ymqf#|jNC8Oq5@j{6t(naNuw0!bYUuco+g0HSqx zsa+~QP3`w>C6#)cH3-%8Dx4Z)d`_i#ZkW5H;u;easef9i4k%~b0whtVI?aAZSY|BEZ>A_F6A65|pkp#H15h7v|i)ueup z{x1gQFa?Zm>7s2Z!~XB)NEqKzCtia0-_nJ{n3coExfDbHZvMYU=*}06tZCK~>dJO< R*h}NDWF?g(D#gAA{~r*k9fkk^ literal 0 HcmV?d00001 From da4c6ffc06c84154e869b71087f6196a9ab7b9e4 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:52:29 -0400 Subject: [PATCH 12/45] removing this screenshot file --- Screen Shot 2018-04-10 at 11.45.55 AM.png | Bin 35469 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Screen Shot 2018-04-10 at 11.45.55 AM.png diff --git a/Screen Shot 2018-04-10 at 11.45.55 AM.png b/Screen Shot 2018-04-10 at 11.45.55 AM.png deleted file mode 100644 index a69361c7d20e063895dc446fd719f6fd53176f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35469 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 R*h}NDWF?g(D#gAA{~r*k9fkk^ From b21ec3a7c0e9b8e340bdcf1c09d6614a6c07f011 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 11:53:16 -0400 Subject: [PATCH 13/45] adding image to doc --- CONTRIBUTING.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index f8feb8207..8056d6ebf 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,13 +66,10 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -![image showing dev mode](link here) +![image showing dev mode](notebook/dev mode screenshot.png) If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. - - - Troubleshooting the Installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 5b643394537ca19d58568d4427ced43b8984df15 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 12:02:27 -0400 Subject: [PATCH 14/45] instead of using screenshot i am now using the link to the image --- CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 2f84afd9a..7af6ff623 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,7 +66,7 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -//![image showing dev mode](notebook/dev mode screenshot.png) +![image showing dev mode](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png) If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. From 8f08ed6c28ab8e1cd6670be411ac1b32ea496a24 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 12:09:28 -0400 Subject: [PATCH 15/45] deleting the screenshot files --- dev mode .png | Bin 15236 -> 0 bytes dev mode screenshot.png | Bin 35469 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dev mode .png delete mode 100644 dev mode screenshot.png diff --git a/dev mode .png b/dev mode .png deleted file mode 100644 index da816450e59cee119f7e3b8efa5e82c939ff6c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15236 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 LmB?ArMz{V4BeL7C diff --git a/dev mode screenshot.png b/dev mode screenshot.png deleted file mode 100644 index a69361c7d20e063895dc446fd719f6fd53176f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35469 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 R*h}NDWF?g(D#gAA{~r*k9fkk^ From 64c576a5c0bf947e04bd0951dac274494c61fb43 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Tue, 10 Apr 2018 12:11:38 -0400 Subject: [PATCH 16/45] changing image link --- CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 7af6ff623..b8f586e5f 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,7 +66,7 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -![image showing dev mode](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png) +![txt](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png) If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. From 7565b4829ca4905b8e8380924e0903862e6a3380 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Fri, 13 Apr 2018 17:22:37 -0400 Subject: [PATCH 17/45] trying to add image to verification section --- CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index b8f586e5f..c2710044e 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,7 +66,7 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -![txt](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png) +![txt](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png "Jupyter Dev Mode Example") If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. From 92918060629beaf2b8454fe6302f73a6469d65af Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Fri, 13 Apr 2018 17:39:19 -0400 Subject: [PATCH 18/45] trying new forma for adding image --- CONTRIBUTING.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index c2710044e..9716dc310 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -66,7 +66,8 @@ Verification While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -![txt](https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png "Jupyter Dev Mode Example") +.. image:: https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png + :width: 40pt If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. From b13a7915e5658925ea4d25436b334ba802326196 Mon Sep 17 00:00:00 2001 From: Rosa Swaby Date: Fri, 13 Apr 2018 17:48:40 -0400 Subject: [PATCH 19/45] made changes to formatting of verificaton sectiom --- CONTRIBUTING.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 9716dc310..66b81fbf2 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -64,12 +64,14 @@ from any directory in your system with:: Verification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -While running the notebook, select one of your notebooks (the file will have the extension .ipynb). In the top tab you will click on "Help" and then click "About". In the pop window you will see "The version of the...". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". +While running the notebook, select one of your notebook files (the file will have the extension .ipynb). +In the top tab you will click on "Help" and then click on "About". In the pop window you will see information about the version of Jupyter that you are running. You will see "The version of the notebook server is:". +If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". .. image:: https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png :width: 40pt -If it does not include the word "dev", you are currently not working in development mode and should follow the steps above to uninstall and reinstall Jupyter. +If it does not include the word "dev", you are currently not working in development mode and should follow the steps below to uninstall and reinstall Jupyter. Troubleshooting the Installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 8daa5f51b458c3d9d1ce42b34cce793e28dfd306 Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Sat, 14 Apr 2018 01:42:48 -0400 Subject: [PATCH 20/45] Add a couple of utility functions to help get a single cell's content and type --- .../selenium/test_dualmode_insertcell.py | 36 +++++++++++++++++-- notebook/tests/selenium/utils.py | 7 ++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py index 53b4964e0..2982bcab2 100644 --- a/notebook/tests/selenium/test_dualmode_insertcell.py +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -1,4 +1,34 @@ -# TODO: Tests for dualmode insert cell functionality -def test_insert_cell(): - pass + +def test_insert_cell(notebook): + a = 'print("a")' + b = 'print("b")' + c = 'print("c")' + + notebook.edit_cell(index=0, content=a) + notebook.append(b, c) + notebook.to_command_mode() + + assert notebook.get_cells_contents() == [a, b, c] + + notebook.to_command_mode() + notebook.focus_cell(2) + notebook.convert_cell_type(2, "markdown") + notebook.current_cell.send_keys("a") + assert notebook.get_cell_contents(2) == '' + assert notebook.get_cell_type(2) == 'code' + assert len(notebook.cells) == 4 + + notebook.current_cell.send_keys('b') + assert notebook.get_cell_contents(2) == '' + assert notebook.get_cell_contents(3) == '' + assert notebook.get_cell_type(3) == 'code' + assert len(notebook.cells) == 5 + + notebook.focus_cell(2) + notebook.convert_cell_type(2, "markdown") + assert notebook.get_cell_type(2) == "markdown" + notebook.current_cell.send_keys("a") + assert notebook.get_cell_type(3) == "markdown" + notebook.current_cell.send_keys("b") + assert notebook.get_cell_type(4) == "markdown" diff --git a/notebook/tests/selenium/utils.py b/notebook/tests/selenium/utils.py index ef4092772..97d25bb97 100644 --- a/notebook/tests/selenium/utils.py +++ b/notebook/tests/selenium/utils.py @@ -131,10 +131,17 @@ class Notebook: JS = 'return Jupyter.notebook.get_cells().map(function(c) {return c.get_text();})' return self.browser.execute_script(JS) + def get_cell_contents(self, index=0, selector='div .CodeMirror-code'): + return self.cells[index].find_element_by_css_selector(selector).text + def set_cell_metadata(self, index, key, value): JS = 'Jupyter.notebook.get_cell({}).metadata.{} = {}'.format(index, key, value) return self.browser.execute_script(JS) + def get_cell_type(self, index=0): + JS = 'return Jupyter.notebook.get_cell({}).cell_type'.format(index) + return self.browser.execute_script(JS) + def edit_cell(self, cell=None, index=0, content="", render=False): """Set the contents of a cell to *content*, by cell object or by index """ From 1b70075b073f95915fc36aaadd82403d8862fbb4 Mon Sep 17 00:00:00 2001 From: danagilliann Date: Sun, 22 Apr 2018 22:48:39 -0400 Subject: [PATCH 21/45] text improvements --- CONTRIBUTING.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 66b81fbf2..2dae1d36d 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -60,18 +60,18 @@ Once you have done this, you can launch the master branch of Jupyter notebook from any directory in your system with:: jupyter notebook - -Verification -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -While running the notebook, select one of your notebook files (the file will have the extension .ipynb). -In the top tab you will click on "Help" and then click on "About". In the pop window you will see information about the version of Jupyter that you are running. You will see "The version of the notebook server is:". -If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". + +Verification +^^^^^^^^^^^^ + +While running the notebook, select one of your notebook files (the file will have the extension ``.ipynb``). +In the top tab you will click on "Help" and then click on "About". In the pop window you will see information about the version of Jupyter that you are running. You will see "The version of the notebook server is:". +If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". .. image:: https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png :width: 40pt -If it does not include the word "dev", you are currently not working in development mode and should follow the steps below to uninstall and reinstall Jupyter. +If it does not include the word "dev", you are currently not working in development mode and should follow the steps below to uninstall and reinstall Jupyter. Troubleshooting the Installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -81,9 +81,9 @@ running other instances of Jupyter Notebook. You can try the following steps: 1. Uninstall all instances of the notebook package. These include any installations you made using pip or conda -2. Run ``python -m pip install -e .`` in the notebook repository to install the notebook from there +2. Run ``python3 -m pip install -e .`` in the notebook repository to install the notebook from there 3. Run ``npm run build`` to make sure the Javascript -4. Launch with ``python -m notebook --port 8989``, and check that the browser is pointing to ``localhost:8989`` +4. Launch with ``python3 -m notebook --port 8989``, and check that the browser is pointing to ``localhost:8989`` (rather than the default 8888). You don't necessarily have to launch with port 8989, as long as you use a port that is neither the default nor in use, then it should be fine. 5. Verify the installation with the steps in the previous section. From 8a9afb4f58bb71b9d006c733fff49456008d1029 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 24 Apr 2018 12:31:17 +0100 Subject: [PATCH 22/45] Add a output_updated.OutputArea event --- notebook/static/notebook/js/outputarea.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/notebook/static/notebook/js/outputarea.js b/notebook/static/notebook/js/outputarea.js index 2ea1bba88..99bdf97cc 100644 --- a/notebook/static/notebook/js/outputarea.js +++ b/notebook/static/notebook/js/outputarea.js @@ -631,6 +631,10 @@ define([ (json.data[MIME_MARKDOWN] !== undefined)) { this.typeset(); } + this.events.trigger('output_updated.OutputArea', { + output: json, + output_area: this, + }); }; OutputArea.prototype._record_display_id = function (json, element) { From 20f1b74ce927e3d1d29a3bff8e67c1bfd3b63d3f Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Tue, 24 Apr 2018 17:13:05 +0200 Subject: [PATCH 23/45] Allow defining keyboard shortcuts for missing actions When users bind custom shortcuts to actions coming from extensions, the shortcuts can be loaded before the extensions, so we need to allow defining a shortcut for an action that doesn't exist yet. Closes gh-3549 Closes gh-2954 --- notebook/static/base/js/keyboard.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/notebook/static/base/js/keyboard.js b/notebook/static/base/js/keyboard.js index e07415ab3..531870fdd 100644 --- a/notebook/static/base/js/keyboard.js +++ b/notebook/static/base/js/keyboard.js @@ -454,7 +454,14 @@ define([ **/ var action_name = this.actions.get_name(data); if (! action_name){ - throw new Error('does not know how to deal with : ' + data); + if (typeof data === 'string') { + // If we have an action name, allow it to be bound anyway. + console.log("Unknown action '" + data + "' for shortcut " + shortcut + + "; it may be defined by an extension which is not yet loaded."); + action_name = data; + } else { + throw new Error('does not know how to deal with : ' + data); + } } var _shortcut = normalize_shortcut(shortcut); this.set_shortcut(_shortcut, action_name); From bb1c547e7d39cf2da7f6af63d11f02b3262d981f Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Tue, 24 Apr 2018 17:35:37 +0200 Subject: [PATCH 24/45] Fix some linter warnings in keyboard.js --- notebook/static/base/js/keyboard.js | 51 +++++++++++++---------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/notebook/static/base/js/keyboard.js b/notebook/static/base/js/keyboard.js index 531870fdd..129e217ef 100644 --- a/notebook/static/base/js/keyboard.js +++ b/notebook/static/base/js/keyboard.js @@ -218,18 +218,17 @@ define([ * Flatten a tree of shortcut sequences. * use full to iterate over all the key/values of available shortcuts. **/ - var dct = {}; - for(var key in tree){ - var value = tree[key]; + var dct = {}; + _.forEach(tree, function(value, key) { if(typeof(value) === 'string'){ dct[key] = value; } else { var ftree=flatten_shorttree(value); - for(var subkey in ftree){ + _.forEach(ftree, function(v2, subkey) { dct[key+','+subkey] = ftree[subkey]; - } + }); } - } + }); return dct; }; @@ -237,40 +236,39 @@ define([ ShortcutManager.prototype.get_action_shortcuts = function(name){ var ftree = flatten_shorttree(this._shortcuts); var res = []; - for (var sht in ftree ){ - if(ftree[sht] === name){ - res.push(sht); + _.forEach(ftree, function(value, key) { + if(value === name){ + res.push(key); } - } + }); return res; }; ShortcutManager.prototype.get_action_shortcut = function(name){ - var ftree = flatten_shorttree(this._shortcuts); - for (var sht in ftree ){ - if(ftree[sht] === name){ - return sht; - } + var matches = this.get_action_shortcuts(name); + if (matches.length > 0) { + return matches[0]; } return undefined; }; ShortcutManager.prototype.help = function () { + var that = this; var help = []; var ftree = flatten_shorttree(this._shortcuts); - for (var shortcut in ftree) { - var action = this.actions.get(ftree[shortcut]); + _.forEach(ftree, function(value, key) { + var action = that.actions.get(value); var help_string = action.help||'== no help =='; var help_index = action.help_index; if (help_string) { - var shortstring = (action.shortstring||shortcut); + var shortstring = (action.shortstring||key); help.push({ shortcut: shortstring, help: help_string, help_index: help_index} ); } - } + }); help.sort(function (a, b) { if (a.help_index === b.help_index) { if (a.shortcut === b.shortcut) { @@ -366,7 +364,7 @@ define([ if(current_node === undefined){ return true; } else { - if (typeof(current_node) == 'string'){ + if (typeof(current_node) === 'string'){ return false; } else { // assume is a sub-shortcut tree return this._is_available_shortcut(shortcut_array.slice(1), current_node); @@ -404,7 +402,6 @@ define([ shortcut = shortcut.toLowerCase(); this.add_shortcut(shortcut, data); var patch = {keys:{}}; - var b = {bind:{}}; patch.keys[this._mode] = {bind:{}}; patch.keys[this._mode].bind[shortcut] = data; this._config.update(patch); @@ -418,7 +415,6 @@ define([ shortcut = shortcut.toLowerCase(); this.remove_shortcut(shortcut); var patch = {keys: {}}; - var b = {bind: {}}; patch.keys[this._mode] = {bind:{}}; patch.keys[this._mode].bind[shortcut] = null; this._config.update(patch); @@ -478,9 +474,10 @@ define([ * * data : Dict of the form {key:value, ...} **/ - for (var shortcut in data) { - this.add_shortcut(shortcut, data[shortcut], true); - } + var that = this; + _.forEach(data, function(value, key) { + that.add_shortcut(key, value, true); + }); // update the keyboard shortcuts notebook help this.events.trigger('rebuild.QuickHelp'); }; @@ -567,7 +564,7 @@ define([ return (typeof(action_name) !== 'undefined'); }; - var keyboard = { + return { keycodes : keycodes, inv_keycodes : inv_keycodes, ShortcutManager : ShortcutManager, @@ -576,6 +573,4 @@ define([ shortcut_to_event : shortcut_to_event, event_to_shortcut : event_to_shortcut, }; - - return keyboard; }); From e9a2fb27a97d0a17acdb8dc396d2be4b5d343d5b Mon Sep 17 00:00:00 2001 From: Tim Klever Date: Tue, 24 Apr 2018 14:24:20 -0700 Subject: [PATCH 25/45] chore: upgrade moment.js to recent version --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index e7d619ad3..9297c1a47 100644 --- a/bower.json +++ b/bower.json @@ -15,7 +15,7 @@ "jquery-ui": "components/jqueryui#~1.10", "marked": "~0.3", "MathJax": "components/MathJax#~2.6", - "moment": "~2.8.4", + "moment": "~2.19.3", "preact": "https://unpkg.com/preact@^7.2.0/dist/preact.min.js", "preact-compat": "https://unpkg.com/preact-compat@^3.14.3/dist/preact-compat.min.js", "proptypes": "https://unpkg.com/proptypes@^0.14.4/index.js", From 771edd98ec7655530e3f3896c9ea4a589118e98c Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Thu, 26 Apr 2018 15:54:50 +0200 Subject: [PATCH 26/45] Add section in docs about privacy Closes gh-3566 --- docs/source/notebook.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/source/notebook.rst b/docs/source/notebook.rst index 4ddef27d7..ccc628723 100644 --- a/docs/source/notebook.rst +++ b/docs/source/notebook.rst @@ -83,6 +83,29 @@ without relying on nbviewer. :ref:`Details on the notebook JSON file format ` +Notebooks and privacy +~~~~~~~~~~~~~~~~~~~~~ + +Because you use Jupyter in a web browser, some people are understandably +concerned about using it with sensitive data. +However, if you followed the standard +`install instructions `_, +Jupyter is actually running on your own computer. +If the URL in the address bar starts with ``http://localhost:`` or +``http://127.0.0.1:``, it's your computer acting as the server. +Jupyter doesn't send your data anywhere else—and as it's open source, +other people can check that we're being honest about this. + +You can also use Jupyter remotely: +your company or university might run the server for you, for instance. +If you want to work with sensitive data in those cases, +talk to your IT or data protection staff about it. + +We aim to ensure that other pages in your browser or other users on the same +computer can't access your notebook server. See :ref:`server_security` for +more about this. + + Starting the notebook server ---------------------------- From 1c1202cc7f2b13abc709881701f97dc0380a9289 Mon Sep 17 00:00:00 2001 From: danagilliann Date: Thu, 26 Apr 2018 13:25:24 -0400 Subject: [PATCH 27/45] made pull request changes --- CONTRIBUTING.rst | 2 +- .../_static/images/jupyter-verification.png | Bin 0 -> 15236 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/source/_static/images/jupyter-verification.png diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 2dae1d36d..298b613a5 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -68,7 +68,7 @@ While running the notebook, select one of your notebook files (the file will hav In the top tab you will click on "Help" and then click on "About". In the pop window you will see information about the version of Jupyter that you are running. You will see "The version of the notebook server is:". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -.. image:: https://user-images.githubusercontent.com/327925/38238574-8a1ada9e-372a-11e8-8a9c-2a74af743390.png +.. image:: ./_static/images/jupyter-verification.png :width: 40pt If it does not include the word "dev", you are currently not working in development mode and should follow the steps below to uninstall and reinstall Jupyter. diff --git a/docs/source/_static/images/jupyter-verification.png b/docs/source/_static/images/jupyter-verification.png new file mode 100644 index 0000000000000000000000000000000000000000..da816450e59cee119f7e3b8efa5e82c939ff6c08 GIT binary patch literal 15236 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 LmB?ArMz{V4BeL7C literal 0 HcmV?d00001 From 7b60c679e408ba1686c55851dcb0ce1b1af98596 Mon Sep 17 00:00:00 2001 From: danagilliann Date: Thu, 26 Apr 2018 13:27:30 -0400 Subject: [PATCH 28/45] attempt to render image --- CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 298b613a5..37f15f7d9 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -68,7 +68,7 @@ While running the notebook, select one of your notebook files (the file will hav In the top tab you will click on "Help" and then click on "About". In the pop window you will see information about the version of Jupyter that you are running. You will see "The version of the notebook server is:". If you are working in development mode, you will see that your version of Jupyter notebook will include the word "dev". -.. image:: ./_static/images/jupyter-verification.png +.. image:: ./docs/source/_static/images/jupyter-verification.png :width: 40pt If it does not include the word "dev", you are currently not working in development mode and should follow the steps below to uninstall and reinstall Jupyter. From a46f5b81a199f9022fb8e5894803cc0860a8e260 Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Thu, 26 Apr 2018 14:40:19 -0400 Subject: [PATCH 29/45] Add assertions for insert below and above cell commands in command mode and also after editing cells in edit mode --- .../selenium/test_dualmode_insertcell.py | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py index 2982bcab2..b22ecbaaa 100644 --- a/notebook/tests/selenium/test_dualmode_insertcell.py +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -1,9 +1,9 @@ def test_insert_cell(notebook): - a = 'print("a")' - b = 'print("b")' - c = 'print("c")' + a = "print('a')" + b = "print('b')" + c = "print('c')" notebook.edit_cell(index=0, content=a) notebook.append(b, c) @@ -14,15 +14,18 @@ def test_insert_cell(notebook): notebook.to_command_mode() notebook.focus_cell(2) notebook.convert_cell_type(2, "markdown") + + # insert code cell above notebook.current_cell.send_keys("a") - assert notebook.get_cell_contents(2) == '' - assert notebook.get_cell_type(2) == 'code' + assert notebook.get_cell_contents(2) == "" + assert notebook.get_cell_type(2) == "code" assert len(notebook.cells) == 4 - notebook.current_cell.send_keys('b') - assert notebook.get_cell_contents(2) == '' - assert notebook.get_cell_contents(3) == '' - assert notebook.get_cell_type(3) == 'code' + # insert code cell below + notebook.current_cell.send_keys("b") + assert notebook.get_cell_contents(2) == "" + assert notebook.get_cell_contents(3) == "" + assert notebook.get_cell_type(3) == "code" assert len(notebook.cells) == 5 notebook.focus_cell(2) @@ -32,3 +35,19 @@ def test_insert_cell(notebook): assert notebook.get_cell_type(3) == "markdown" notebook.current_cell.send_keys("b") assert notebook.get_cell_type(4) == "markdown" + + notebook.edit_cell(index=1, content="cell1") + notebook.focus_cell(1) + notebook.current_cell.send_keys("a") + assert notebook.get_cell_contents(1) == "" + assert notebook.get_cell_contents(2) == "cell1" + + notebook.edit_cell(index=1, content='cell1') + notebook.edit_cell(index=2, content='cell2') + notebook.edit_cell(index=3, content='cell3') + notebook.focus_cell(2) + notebook.current_cell.send_keys("b") + assert notebook.get_cell_contents(1) == "cell1" + assert notebook.get_cell_contents(2) == "cell2" + assert notebook.get_cell_contents(3) == "" + assert notebook.get_cell_contents(4) == "cell3" From ebf27aa94c8090a1ce4ade75fb77ffede37ae8f8 Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Thu, 26 Apr 2018 14:40:39 -0400 Subject: [PATCH 30/45] Remove unnecessary imports --- notebook/tests/selenium/test_deletecell.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/notebook/tests/selenium/test_deletecell.py b/notebook/tests/selenium/test_deletecell.py index 388dd2ad8..7c4eebada 100644 --- a/notebook/tests/selenium/test_deletecell.py +++ b/notebook/tests/selenium/test_deletecell.py @@ -1,5 +1,3 @@ -import os -import pytest def cell_is_deletable(nb, index): JS = 'return Jupyter.notebook.get_cell({}).is_deletable();'.format(index) From 0acdea70d9950ce255eb615372e8b5447f9b249a Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Thu, 26 Apr 2018 15:53:26 -0400 Subject: [PATCH 31/45] Remove markdown cells assertions since they're not useful anymore --- notebook/tests/selenium/test_dualmode_insertcell.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py index b22ecbaaa..3619f4828 100644 --- a/notebook/tests/selenium/test_dualmode_insertcell.py +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -28,14 +28,6 @@ def test_insert_cell(notebook): assert notebook.get_cell_type(3) == "code" assert len(notebook.cells) == 5 - notebook.focus_cell(2) - notebook.convert_cell_type(2, "markdown") - assert notebook.get_cell_type(2) == "markdown" - notebook.current_cell.send_keys("a") - assert notebook.get_cell_type(3) == "markdown" - notebook.current_cell.send_keys("b") - assert notebook.get_cell_type(4) == "markdown" - notebook.edit_cell(index=1, content="cell1") notebook.focus_cell(1) notebook.current_cell.send_keys("a") From 1283f27908042c60ac011b550c202b944eacf83e Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Thu, 26 Apr 2018 18:30:30 -0400 Subject: [PATCH 32/45] Add tests for insertion above/below multiple selected cells --- .../tests/selenium/test_dualmode_insertcell.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py index 3619f4828..48a977c98 100644 --- a/notebook/tests/selenium/test_dualmode_insertcell.py +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -1,4 +1,5 @@ - +from selenium.webdriver.common.keys import Keys +from .utils import shift def test_insert_cell(notebook): a = "print('a')" @@ -43,3 +44,17 @@ def test_insert_cell(notebook): assert notebook.get_cell_contents(2) == "cell2" assert notebook.get_cell_contents(3) == "" assert notebook.get_cell_contents(4) == "cell3" + + # insert above multiple selected cells + notebook.focus_cell(1) + shift(notebook.browser, Keys.DOWN) + notebook.current_cell.send_keys('a') + + # insert below multiple selected cells + notebook.focus_cell(2) + shift(notebook.browser, Keys.DOWN) + notebook.current_cell.send_keys('b') + assert notebook.get_cell_contents(1) == "" + assert notebook.get_cell_contents(2) == "cell1" + assert notebook.get_cell_contents(3) == "cell2" + assert notebook.get_cell_contents(4) == "" From ee3710139bdb2ed403b6c07180aedc524cfd4abc Mon Sep 17 00:00:00 2001 From: danagilliann Date: Fri, 27 Apr 2018 14:02:49 -0400 Subject: [PATCH 33/45] complete section on troubleshooting the installation --- CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 37f15f7d9..5e108dc57 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -82,7 +82,7 @@ running other instances of Jupyter Notebook. You can try the following steps: 1. Uninstall all instances of the notebook package. These include any installations you made using pip or conda 2. Run ``python3 -m pip install -e .`` in the notebook repository to install the notebook from there -3. Run ``npm run build`` to make sure the Javascript +3. Run ``npm run build`` to make sure the Javascript and CSS are updated and compiled 4. Launch with ``python3 -m notebook --port 8989``, and check that the browser is pointing to ``localhost:8989`` (rather than the default 8888). You don't necessarily have to launch with port 8989, as long as you use a port that is neither the default nor in use, then it should be fine. From 17e46a7cd62fd39589cdfc80b51c797f8cb3c16b Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Sat, 28 Apr 2018 01:45:58 -0400 Subject: [PATCH 34/45] Remove js test file --- .../tests/notebook/dualmode_cellinsert.js | 82 ------------------- 1 file changed, 82 deletions(-) delete mode 100644 notebook/tests/notebook/dualmode_cellinsert.js diff --git a/notebook/tests/notebook/dualmode_cellinsert.js b/notebook/tests/notebook/dualmode_cellinsert.js deleted file mode 100644 index f066b16cc..000000000 --- a/notebook/tests/notebook/dualmode_cellinsert.js +++ /dev/null @@ -1,82 +0,0 @@ - -// Test -casper.notebook_test(function () { - var a = 'print("a")'; - var index = this.append_cell(a); - this.execute_cell_then(index); - - var b = 'print("b")'; - index = this.append_cell(b); - this.execute_cell_then(index); - - var c = 'print("c")'; - index = this.append_cell(c); - this.execute_cell_then(index); - - this.thenEvaluate(function() { - IPython.notebook.default_cell_type = 'code'; - }); - - this.then(function () { - // Cell insertion - this.select_cell(2); - this.trigger_keydown('m'); // Make it markdown - this.trigger_keydown('a'); // Creates one cell - this.test.assertEquals(this.get_cell_text(2), '', 'a; New cell 2 text is empty'); - this.test.assertEquals(this.get_cell(2).cell_type, 'code', 'a; inserts a code cell'); - this.validate_notebook_state('a', 'command', 2); - this.trigger_keydown('b'); // Creates one cell - this.test.assertEquals(this.get_cell_text(2), '', 'b; Cell 2 text is still empty'); - this.test.assertEquals(this.get_cell_text(3), '', 'b; New cell 3 text is empty'); - this.test.assertEquals(this.get_cell(3).cell_type, 'code', 'b; inserts a code cell'); - this.validate_notebook_state('b', 'command', 3); - }); - - this.thenEvaluate(function() { - IPython.notebook.class_config.set('default_cell_type', 'selected'); - }); - - this.then(function () { - this.select_cell(2); - this.trigger_keydown('m'); // switch it to markdown for the next test - this.test.assertEquals(this.get_cell(2).cell_type, 'markdown', 'test cell is markdown'); - this.trigger_keydown('a'); // new cell above - this.test.assertEquals(this.get_cell(2).cell_type, 'markdown', 'a; inserts a markdown cell when markdown selected'); - this.trigger_keydown('b'); // new cell below - this.test.assertEquals(this.get_cell(3).cell_type, 'markdown', 'b; inserts a markdown cell when markdown selected'); - }); - - this.thenEvaluate(function() { - IPython.notebook.class_config.set('default_cell_type', 'above'); - }); - - this.then(function () { - this.select_cell(2); - this.trigger_keydown('y'); // switch it to code for the next test - this.test.assertEquals(this.get_cell(2).cell_type, 'code', 'test cell is code'); - this.trigger_keydown('b'); // new cell below - this.test.assertEquals(this.get_cell(3).cell_type, 'code', 'b; inserts a code cell below code cell'); - this.trigger_keydown('a'); // new cell above - this.test.assertEquals(this.get_cell(3).cell_type, 'code', 'a; inserts a code cell above code cell'); - }); - - this.then(function () { - this.set_cell_text(1, 'cell1'); - this.select_cell(1); - this.select_cell(2, false); - this.trigger_keydown('a'); - this.test.assertEquals(this.get_cell_text(1), '', 'a; New cell 1 text is empty'); - this.test.assertEquals(this.get_cell_text(2), 'cell1', 'a; Cell 2 text is old cell 1'); - - this.set_cell_text(1, 'cell1'); - this.set_cell_text(2, 'cell2'); - this.set_cell_text(3, 'cell3'); - this.select_cell(1); - this.select_cell(2, false); - this.trigger_keydown('b'); - this.test.assertEquals(this.get_cell_text(1), 'cell1', 'b; Cell 1 remains'); - this.test.assertEquals(this.get_cell_text(2), 'cell2', 'b; Cell 2 remains'); - this.test.assertEquals(this.get_cell_text(3), '', 'b; Cell 3 is new'); - this.test.assertEquals(this.get_cell_text(4), 'cell3', 'b; Cell 4 text is old cell 3'); - }); -}); From b25a14222e8c9e97c4dd0439709b5006999ca4ef Mon Sep 17 00:00:00 2001 From: sheshtawy Date: Sat, 28 Apr 2018 12:50:09 -0400 Subject: [PATCH 35/45] Update assert statement to use a list for more descriptive errors and less requests to the browser --- notebook/tests/selenium/test_dualmode_insertcell.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/notebook/tests/selenium/test_dualmode_insertcell.py b/notebook/tests/selenium/test_dualmode_insertcell.py index 48a977c98..4ab100ced 100644 --- a/notebook/tests/selenium/test_dualmode_insertcell.py +++ b/notebook/tests/selenium/test_dualmode_insertcell.py @@ -54,7 +54,4 @@ def test_insert_cell(notebook): notebook.focus_cell(2) shift(notebook.browser, Keys.DOWN) notebook.current_cell.send_keys('b') - assert notebook.get_cell_contents(1) == "" - assert notebook.get_cell_contents(2) == "cell1" - assert notebook.get_cell_contents(3) == "cell2" - assert notebook.get_cell_contents(4) == "" + assert notebook.get_cells_contents()[1:5] == ["", "cell1", "cell2", ""] From 3cc31604a83bf5f4a3f98ac6c793824c2b21a37e Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Sun, 29 Apr 2018 22:45:16 +0200 Subject: [PATCH 36/45] Add troubleshooting documentation --- docs/source/index.rst | 1 + docs/source/troubleshooting.rst | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 docs/source/troubleshooting.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index f44bf8514..804619e30 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -10,6 +10,7 @@ The Jupyter notebook Installation Running the Notebook Migrating from IPython + troubleshooting ui_components comms diff --git a/docs/source/troubleshooting.rst b/docs/source/troubleshooting.rst new file mode 100644 index 000000000..306234d7b --- /dev/null +++ b/docs/source/troubleshooting.rst @@ -0,0 +1,87 @@ +What to do when things go wrong +=============================== + +First, have a look at the common problems listed below. If you can figure it out +from these notes, it will be quicker than asking for help. + +Check that you have the latest version of any packages that look relevant. +Unfortunately it's not always easy to figure out what packages are relevant, +but if there was a bug that's already been fixed, +it's easy to upgrade and get on with what you wanted to do. + +Jupyter fails to start +---------------------- + +* Have you `installed it `__? ;-) +* If you're using a menu shortcut or Anaconda launcher to start it, try + opening a terminal or command prompt and running the command ``jupyter notebook``. +* If it can't find ``jupyter``, + you may need to configure your ``PATH`` environment variable. + If you don't know what that means, and don't want to find out, + just (re)install Anaconda with the default settings, + and it should set up PATH correctly. +* If Jupyter gives an error that it can't find ``notebook``, + check with pip or conda that the ``notebook`` package is installed. +* Try running ``jupyter-notebook`` (with a hyphen). This should normally be the + same as ``jupyter notebook`` (with a space), but if there's any difference, + the version with the hyphen is the 'real' launcher, and the other one wraps + that. + +Jupyter doesn't load or doesn't work in the browser +--------------------------------------------------- + +* Try in another browser (e.g. if you normally use Firefox, try with Chrome). + This helps pin down where the problem is. +* Try disabling any browser extensions and/or any Jupyter extensions you have + installed. +* Some internet security software can interfere with Jupyter. + If you have security software, try turning it off temporarily, + and look in the settings for a more long-term solution. +* In the address bar, try changing between ``localhost`` and ``127.0.0.1``. + They should be the same, but in some cases it makes a difference. + +Jupyter can't start a kernel +---------------------------- + +Files called *kernel specs* tell Jupyter how to start different kinds of kernel. +To see where these are on your system, run ``jupyter kernelspec list``:: + + $ jupyter kernelspec list + Available kernels: + python3 /home/takluyver/.local/lib/python3.6/site-packages/ipykernel/resources + bash /home/takluyver/.local/share/jupyter/kernels/bash + ir /home/takluyver/.local/share/jupyter/kernels/ir + +There's a special fallback for the Python kernel: +if it doesn't find a real kernelspec, but it can import the ``ipykernel`` package, +it provides a kernel which will run in the same Python environment as the notebook server. +A path ending in ``ipykernel/resources``, like in the example above, +is this default kernel. +The default often does what you want, +so if the ``python3`` kernelspec points somewhere else +and you can't start a Python kernel, +try deleting or renaming that kernelspec folder to expose the default. + +If your problem is with another kernel, not the Python one we maintain, +you may need to look for support about that kernel. + +Asking for help +--------------- + +As with any problem, try searching to see if someone has already found an answer. +If you can't find an existing answer, you can ask questions at: + +* The `jupyter-notebook tag on Stackoverflow `_ +* The `jupyter/help repository on Github `_ +* Or in an issue on another repository, if it's clear which component is + responsible. + +Don't forget to provide details. What error messages do you see? +What platform are you on? How did you install Jupyter? +What have you tried already? +The ``jupyter troubleshoot`` command collects a lot of information +about your installation, which can be useful. + +Remember that it's not anyone's job to help you. +We want Jupyter to work for you, +but we can't always help everyone individually. From 7bfa3d03bda867a186712dadc01cf322a009b9ec Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 30 Apr 2018 17:03:21 +0200 Subject: [PATCH 37/45] "Require" pyzmq>=17 Not really a requirement, but explaining about the pyzmq/tornado incompatibility gets old fast. Closes gh-3579 --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index a29cf7959..a94758f7f 100755 --- a/setup.py +++ b/setup.py @@ -79,6 +79,9 @@ for more information. install_requires = [ 'jinja2', 'tornado>=4', + # pyzmq>=17 is not technically necessary, + # but hopefully avoids incompatibilities with Tornado 5. April 2018 + 'pyzmq>=17', 'ipython_genutils', 'traitlets>=4.2.1', 'jupyter_core>=4.4.0', From cba22e8732eecc2886994556997e56952c64a69e Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 30 Apr 2018 17:21:18 +0200 Subject: [PATCH 38/45] Reorganise docs landing page --- docs/source/changelog.rst | 4 +- .../examples/Notebook/examples_index.rst | 13 +++--- docs/source/index.rst | 42 ++++--------------- docs/source/ui_components.rst | 5 ++- 4 files changed, 18 insertions(+), 46 deletions(-) diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 4a4bb42fc..0cf13354b 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -1,7 +1,7 @@ .. _changelog: -Jupyter notebook changelog -========================== +Changelog +========= A summary of changes in the Jupyter notebook. For more detailed information, see diff --git a/docs/source/examples/Notebook/examples_index.rst b/docs/source/examples/Notebook/examples_index.rst index 7d846f739..aa7da3ffe 100644 --- a/docs/source/examples/Notebook/examples_index.rst +++ b/docs/source/examples/Notebook/examples_index.rst @@ -1,14 +1,13 @@ -`View the original notebooks on nbviewer`__ +================= +Notebook Examples +================= + +The pages in this section are all converted notebook files. You can also +`view these notebooks on nbviewer`__. __ http://nbviewer.jupyter.org/github/jupyter/notebook/blob/master/ docs/source/examples/Notebook/ -======== -Examples -======== - -The following notebooks have been rendered for your convenience. - .. toctree:: :maxdepth: 2 diff --git a/docs/source/index.rst b/docs/source/index.rst index 804619e30..41ae474d8 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,20 +2,22 @@ The Jupyter notebook ==================== +* `Installation `_ +* `Starting the Notebook `_ + .. toctree:: :maxdepth: 1 :caption: User Documentation notebook - Installation - Running the Notebook - Migrating from IPython - troubleshooting ui_components + examples/Notebook/examples_index.rst + troubleshooting + changelog comms .. toctree:: - :maxdepth: 2 + :maxdepth: 1 :caption: Configuration config_overview @@ -34,38 +36,8 @@ The Jupyter notebook development_release development_faq -.. toctree:: - :maxdepth: 1 - :caption: Community documentation - - examples/Notebook/examples_index.rst - examples/Notebook/What is the Jupyter Notebook - examples/Notebook/Notebook Basics - examples/Notebook/Running Code - examples/Notebook/Working With Markdown Cells - examples/Notebook/Custom Keyboard Shortcuts - examples/Notebook/JavaScript Notebook Extensions - examples/Notebook/Importing Notebooks - examples/Notebook/Connecting with the Qt Console - examples/Notebook/Typesetting Equations - .. toctree:: :hidden: examples/Notebook/nbpackage/mynotebook.ipynb examples/Notebook/nbpackage/nbs/other.ipynb - -.. toctree:: - :maxdepth: 2 - :caption: About Jupyter Notebook - - changelog - -.. toctree:: - :maxdepth: 1 - :caption: Questions? Suggestions? - - Jupyter mailing list - Jupyter website - Stack Overflow - Jupyter - Stack Overflow - Jupyter-notebook diff --git a/docs/source/ui_components.rst b/docs/source/ui_components.rst index db3b319bc..b5fc506df 100644 --- a/docs/source/ui_components.rst +++ b/docs/source/ui_components.rst @@ -1,5 +1,6 @@ -UI Components -============= +User interface components +========================= + When opening bug reports or sending emails to the Jupyter mailing list, it is useful to know the names of different UI components so that other developers and users have an easier time helping you diagnose your problems. This section From 5f7667ef60b6c1b76e77862521b499cf16e780bb Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 30 Apr 2018 18:12:40 +0200 Subject: [PATCH 39/45] Rework and update notebook introductory document --- docs/source/notebook.rst | 142 ++++++++++++++------------------------- 1 file changed, 50 insertions(+), 92 deletions(-) diff --git a/docs/source/notebook.rst b/docs/source/notebook.rst index 4ddef27d7..7fe88a3a3 100644 --- a/docs/source/notebook.rst +++ b/docs/source/notebook.rst @@ -177,32 +177,24 @@ Notebook user interface ----------------------- When you create a new notebook document, you will be presented with the -**notebook name**, a **menu bar**, a **toolbar** and an empty **code -cell**. +**notebook name**, a **menu bar**, a **toolbar** and an empty **code cell**. -**notebook name**: The name of the notebook document is displayed at the top -of the page, next to the ``IP[y]: Notebook`` logo. This name reflects the name -of the ``.ipynb`` notebook document file. Clicking on the notebook name -brings up a dialog which allows you to rename it. Thus, renaming a notebook +.. image:: ./_static/images/blank-notebook-ui.png + +**Notebook name**: The name displayed at the top of the page, +next to the Jupyter logo, reflects the name of the ``.ipynb`` file. +Clicking on the notebook name brings up a dialog which allows you to rename it. +Thus, renaming a notebook from "Untitled0" to "My first notebook" in the browser, renames the ``Untitled0.ipynb`` file to ``My first notebook.ipynb``. -**menu bar**: The menu bar presents different options that may be used to +**Menu bar**: The menu bar presents different options that may be used to manipulate the way the notebook functions. -**toolbar**: The tool bar gives a quick way of performing the most-used +**Toolbar**: The tool bar gives a quick way of performing the most-used operations within the notebook, by clicking on an icon. -**code cell**: the default type of cell, read on for an explanation of cells - -.. note:: - - As of notebook version 4.1, the user interface allows for multiple cells to - be selected. The ``quick celltype selector``, found in the menubar, will - display a dash ``-`` when multiple cells are selected to indicate that the - type of the cells in the selection might not be unique. The quick selector - can still be used to change the type of the selection and will change the - type of all the currently selected cells. +**Code cell**: the default type of cell; read on for an explanation of cells. Structure of a notebook document @@ -210,7 +202,7 @@ Structure of a notebook document The notebook consists of a sequence of cells. A cell is a multiline text input field, and its contents can be executed by using :kbd:`Shift-Enter`, or by -clicking either the "Play" button the toolbar, or `Cell | Run` in the menu bar. +clicking either the "Play" button the toolbar, or :guilabel:`Cell`, :guilabel:`Run` in the menu bar. The execution behavior of a cell is determined by the cell's type. There are three types of cells: **code cells**, **markdown cells**, and **raw cells**. Every cell starts off being a **code cell**, but its type can be changed by using a @@ -224,9 +216,8 @@ see the `collection of examples Code cells ~~~~~~~~~~ A *code cell* allows you to edit and write new code, with full syntax -highlighting and tab completion. By default, the language associated to a code -cell is Python, but other languages, such as ``Julia`` and ``R``, can be -handled using :ref:`cell magic commands `. +highlighting and tab completion. The programming language you use depends +on the *kernel*, and the default kernel (IPython) runs Python code. When a code cell is executed, code that it contains is sent to the kernel associated with the notebook. The results that are returned from this @@ -269,7 +260,7 @@ supports a `large subset `_ of LaTeX functionality .. _mathjax_tex: https://docs.mathjax.org/en/latest/tex.html Standard mathematics environments defined by LaTeX and AMS-LaTeX (the -`amsmath` package) also work, such as +``amsmath`` package) also work, such as ``\begin{equation}...\end{equation}``, and ``\begin{align}...\end{align}``. New LaTeX macros may be defined using standard methods, such as ``\newcommand``, by placing them anywhere *between math delimiters* in @@ -286,7 +277,7 @@ Raw cells *Raw* cells provide a place in which you can write *output* directly. Raw cells are not evaluated by the notebook. When passed through nbconvert_, raw cells arrive in the -destination format unmodified. For example, this allows you to type full LaTeX +destination format unmodified. For example, you can type full LaTeX into a raw cell, which will only be rendered by LaTeX after conversion by nbconvert. @@ -306,17 +297,14 @@ correctly. This is much more convenient for interactive exploration than breaking up a computation into scripts that must be executed together, as was previously necessary, especially if parts of them take a long time to run. -At certain moments, it may be necessary to interrupt a calculation which is -taking too long to complete. This may be done with the `Kernel | Interrupt` -menu option, or the :kbd:`Ctrl-m i` keyboard shortcut. -Similarly, it may be necessary or desirable to restart the whole computational -process, with the `Kernel | Restart` menu option or :kbd:`Ctrl-m .` +To interrupt a calculation which is taking too long, use the :guilabel:`Kernel`, +:guilabel:`Interrupt` menu option, or the :kbd:`i,i` keyboard shortcut. +Similarly, to restart the whole computational process, +use the :guilabel:`Kernel`, :guilabel:`Restart` menu option or :kbd:`0,0` shortcut. -A notebook may be downloaded in either a ``.ipynb`` or ``.py`` file from the -menu option `File | Download as`. Choosing the ``.py`` option downloads a -Python ``.py`` script, in which all rich output has been removed and the -content of markdown cells have been inserted as comments. +A notebook may be downloaded as a ``.ipynb`` file or converted to a number of +other formats using the menu option :guilabel:`File`, :guilabel:`Download as`. .. seealso:: @@ -333,31 +321,16 @@ shortcuts are also available for the most common ones. The essential shortcuts to remember are the following: * :kbd:`Shift-Enter`: run cell - Execute the current cell, show output (if any), and jump to the next cell - below. If :kbd:`Shift-Enter` is invoked on the last cell, a new code - cell will also be created. Note that in the notebook, typing :kbd:`Enter` - on its own *never* forces execution, but rather just inserts a new line in - the current cell. :kbd:`Shift-Enter` is equivalent to clicking the - ``Cell | Run`` menu item. - -* :kbd:`Ctrl-Enter`: run cell in-place - Execute the current cell as if it were in "terminal mode", where any - output is shown, but the cursor *remains* in the current cell. The cell's - entire contents are selected after execution, so you can just start typing - and only the new input will be in the cell. This is convenient for doing - quick experiments in place, or for querying things like filesystem - content, without needing to create additional cells that you may not want - to be saved in the notebook. - -* :kbd:`Alt-Enter`: run cell, insert below - Executes the current cell, shows the output, and inserts a *new* - cell between the current cell and the cell below (if one exists). This - is thus a shortcut for the sequence :kbd:`Shift-Enter`, :kbd:`Ctrl-m a`. - (:kbd:`Ctrl-m a` adds a new cell above the current one.) - -* :kbd:`Esc` and :kbd:`Enter`: Command mode and edit mode - In command mode, you can easily navigate around the notebook using keyboard - shortcuts. In edit mode, you can edit text in cells. + Execute the current cell, show any output, and jump to the next cell below. + If :kbd:`Shift-Enter` is invoked on the last cell, it makes a new cell below. + This is equivalent to clicking the :guilabel:`Cell`, :guilabel:`Run` menu + item, or the Play button in the toolbar. + +* :kbd:`Esc`: Command mode + In command mode, you can navigate around the notebook using keyboard shortcuts. + +* :kbd:`Enter`: Edit mode + In edit mode, you can edit text in cells. For the full list of available shortcuts, click :guilabel:`Help`, :guilabel:`Keyboard Shortcuts` in the notebook menus. @@ -375,64 +348,49 @@ Installing kernels For information on how to install a Python kernel, refer to the `IPython install page `__. -Kernels for other languages can be found in the `IPython wiki -`_. -They usually come with instruction what to run to make the kernel available +The Jupyter wiki has a long list of `Kernels for other languages +`_. +They usually come with instructions on how to make the kernel available in the notebook. .. _signing_notebooks: -Signing Notebooks ------------------ +Trusting Notebooks +------------------ To prevent untrusted code from executing on users' behalf when notebooks open, -we have added a signature to the notebook, stored in metadata. +we store a signature of each trusted notebook. The notebook server verifies this signature when a notebook is opened. -If the signature stored in the notebook metadata does not match, -javascript and HTML output will not be displayed on load, -and must be regenerated by re-executing the cells. +If no matching signature is found, +Javascript and HTML output will not be displayed +until they are regenerated by re-executing the cells. -Any notebook that you have executed yourself *in its entirety* will be -considered trusted, and its HTML and javascript output will be displayed on +Any notebook that you have fully executed yourself will be +considered trusted, and its HTML and Javascript output will be displayed on load. If you need to see HTML or Javascript output without re-executing, -you can explicitly trust notebooks, such as those shared with you, -or those that you have written yourself prior to IPython 2.0, +and you are sure the notebook is not malicious, you can tell Jupyter to trust it at the command-line with:: - $ jupyter trust mynotebook.ipynb [other notebooks.ipynb] - -This just generates a new signature stored in each notebook. + $ jupyter trust mynotebook.ipynb -You can generate a new notebook signing key with:: - - $ jupyter trust --reset - -.. include:: links.txt +See :ref:`notebook_security` for more details about the trust mechanism. Browser Compatibility --------------------- -The Jupyter Notebook is officially supported by the latest stable versions of the -following browsers: +The Jupyter Notebook aims to support the latest versions of these browsers: * Chrome * Safari * Firefox -The is mainly due to the notebook's usage of WebSockets and the flexible box -model. - -The following browsers are unsupported: - -* Safari < 5 -* Firefox < 6 -* Chrome < 13 -* Opera (any): CSS issues, but execution might work -* Internet Explorer < 10 -* Internet Explorer ≥ 10 (same as Opera) +Up to date versions of Opera and Edge may also work, but if they don't, please +use one of the supported browsers. Using Safari with HTTPS and an untrusted certificate is known to not work (websockets will fail). + +.. include:: links.txt From 3482d61234024529bf45cdcfce5bb7eaa25a2ba4 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 30 Apr 2018 18:13:00 +0200 Subject: [PATCH 40/45] Add blank notebook UI image --- .../_static/images/blank-notebook-ui.png | Bin 0 -> 25161 bytes .../_static/images/blank-notebook-ui.svg | 397 ++++++++++++++++++ 2 files changed, 397 insertions(+) create mode 100644 docs/source/_static/images/blank-notebook-ui.png create mode 100644 docs/source/_static/images/blank-notebook-ui.svg diff --git a/docs/source/_static/images/blank-notebook-ui.png b/docs/source/_static/images/blank-notebook-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..f4976263684c155e34de3b60904665f2c36db01b GIT binary patch literal 25161 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/blank-notebook-ui.svg b/docs/source/_static/images/blank-notebook-ui.svg new file mode 100644 index 000000000..10f5ab4fd --- /dev/null +++ b/docs/source/_static/images/blank-notebook-ui.svg @@ -0,0 +1,397 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + ⇦ Notebook name + + Menu bar + Toolbar + Code cell + From dd687fb5267bdcd3f8fbd7dbf1e77de9cc0c8485 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 30 Apr 2018 18:13:33 +0200 Subject: [PATCH 41/45] Capitalise header --- docs/source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 41ae474d8..d61dcac31 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,5 +1,5 @@ ==================== -The Jupyter notebook +The Jupyter Notebook ==================== * `Installation `_ From 0875d5602b2d1e37e2cd2990a1d1ed22d7cab1df Mon Sep 17 00:00:00 2001 From: Hari Date: Tue, 1 May 2018 10:19:01 +0530 Subject: [PATCH 42/45] Fix for reload button no longer works Issue --- notebook/static/notebook/js/notebook.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/notebook/static/notebook/js/notebook.js b/notebook/static/notebook/js/notebook.js index 642587545..a9ec36cac 100644 --- a/notebook/static/notebook/js/notebook.js +++ b/notebook/static/notebook/js/notebook.js @@ -2761,6 +2761,8 @@ define([ if (that._changed_on_disk_dialog !== null) { // update save callback on the confirmation button that._changed_on_disk_dialog.find('.save-confirm-btn').click(_save); + //Rebind Click Event on Reload + that._changed_on_disk_dialog.find('.btn-warning').click(function () {window.location.reload()}); // redisplay existing dialog that._changed_on_disk_dialog.modal('show'); } else { From e16407e9889a1c22cd3eb62be294962c754fb749 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Tue, 1 May 2018 12:02:43 +0200 Subject: [PATCH 43/45] Add changelog for Notebook 5.5 --- docs/source/changelog.rst | 131 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 0cf13354b..ebc7d0861 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -21,6 +21,137 @@ We strongly recommend that you upgrade to version 9+ of pip before upgrading ``n Use ``pip install pip --upgrade`` to upgrade pip. Check pip version with ``pip --version``. +.. _release-5.5.0: + +5.5.0 +----- + +New features: + +- The files list now shows file sizes (:ghpull:`3539`) +- Add a quit button in the dashboard (:ghpull:`3004`) +- Display hostname in the terminal when running remotely (:ghpull:`3356`) +- Add slides exportation/download to the menu (:ghpull:`3287`) +- Add any extra installed nbconvert exporters to the "Download as" menu (:ghpull:`3323`) +- Editor: warning when overwriting a file that is modified on disk (:ghpull:`2783`) +- Display a warning message if cookies are not enabled (:ghpull:`3511`) +- Basic ``__version__`` reporting for extensions (:ghpull:`3541`) +- Add ``NotebookApp.terminals_enabled`` config option (:ghpull:`3478`) +- Make buffer time between last modified on disk and last modified on last save configurable (:ghpull:`3273`) +- Allow binding custom shortcuts for 'close and halt' (:ghpull:`3314`) +- Add description for 'Trusted' notification (:ghpull:`3386`) +- Add ``settings['activity_sources']`` (:ghpull:`3401`) +- Add an ``output_updated.OutputArea`` event (:ghpull:`3560`) + + +Fixing problems: + +- Fixes to improve web accessibility (:ghpull:`3507`) + + - There is more to do on this! See :ghissue:`1801`. + +- Fixed color contrast issue in tree.less (:ghpull:`3336`) +- Allow cancelling upload of large files (:ghpull:`3373`) +- Don't clear login cookie on requests without cookie (:ghpull:`3380`) +- Don't trash files on different device to home dir on Linux (:ghpull:`3304`) +- Clear waiting asterisks when restarting kernel (:ghpull:`3494`) +- Fix output prompt when ``execution_count`` missing (:ghpull:`3236`) +- Make the 'changed on disk' dialog work when displayed twice (:ghpull:`3589`) +- Fix going back to root directory with history in notebook list (:ghpull:`3411`) +- Allow defining keyboard shortcuts for missing actions (:ghpull:`3561`) +- Prevent default on pageup/pagedown when completer is active (:ghpull:`3500`) +- Prevent default event handling on new terminal (:ghpull:`3497`) +- ConfigManager should not write out default values found in the .d directory (:ghpull:`3485`) +- Fix leak of iopub object in activity monitoring (:ghpull:`3424`) +- Javascript lint in notebooklist.js (:ghpull:`3409`) +- Some Javascript syntax fixes (:ghpull:`3294`) +- Convert native for loop to ``Array.forEach()`` (:ghpull:`3477`) +- Disable cache when downloading nbconvert output (:ghpull:`3484`) +- Add missing digestmod arg to HMAC (:ghpull:`3399`) +- Log OSErrors failing to create less-critical files during startup (:ghpull:`3384`) +- Use powershell on Windows (:ghpull:`3379`) +- API spec improvements, API handler improvements (:ghpull:`3368`) +- Set notebook to dirty state after change to kernel metadata (:ghpull:`3350`) +- Use CSP header to treat served files as belonging to a separate origin (:ghpull:`3341`) +- Don't install gettext into builtins (:ghpull:`3330`) +- Add missing ``import _`` (:ghpull:`3316`, :ghpull:`3326`) +- Write ``notebook.json`` file atomically (:ghpull:`3305`) +- Fix clicking with modifiers, page title updates (:ghpull:`3282`) +- Upgrade jQuery to version 2.2 (:ghpull:`3428`) +- Upgrade xterm.js to 3.1.0 (:ghpull:`3189`) +- Upgrade moment.js to 2.19.3 (:ghpull:`3562`) +- Upgrade CodeMirror to 5.35 (:ghpull:`3372`) +- "Require" pyzmq>=17 (:ghpull:`3586`) + +Documentation: + +- Documentation updates and organisation (:ghpull:`3584`) +- Add section in docs about privacy (:ghpull:`3571`) +- Add explanation on how to change the type of a cell to Markdown (:ghpull:`3377`) +- Update docs with confd implementation details (:ghpull:`3520`) +- Add more information for where ``jupyter_notebook_config.py`` is located (:ghpull:`3346`) +- Document options to enable nbextensions in specific sections (:ghpull:`3525`) +- jQuery attribute selector value MUST be surrounded by quotes (:ghpull:`3527`) +- Do not execute special notebooks with nbsphinx (:ghpull:`3360`) +- Other minor fixes in :ghpull:`3288`, :ghpull:`3528`, :ghpull:`3293`, :ghpull:`3367` + +Testing: + +- Testing with Selenium & Sauce labs (:ghpull:`3321`) +- Selenium utils + markdown rendering tests (:ghpull:`3458`) +- Convert insert cell tests to Selenium (:ghpull:`3508`) +- Convert prompt numbers tests to Selenium (:ghpull:`3554`) +- Convert delete cells tests to Selenium (:ghpull:`3465`) +- Convert undelete cell tests to Selenium (:ghpull:`3475`) +- More selenium testing utilities (:ghpull:`3412`) +- Only check links when build is trigger by Travis Cron job (:ghpull:`3493`) +- Fix Appveyor build errors (:ghpull:`3430`) +- Undo patches in teardown before attempting to delete files (:ghpull:`3459`) +- Get tests running with tornado 5 (:ghpull:`3398`) +- Unpin ipykernel version on Travis (:ghpull:`3223`) + +Thanks to the following contributors: + +- Arovit Narula (`arovit `__) +- Ashley Teoh (`ashleytqy `__) +- Nicholas Bollweg (`bollwyvl `__) +- Alex Rothberg (`cancan101 `__) +- Celina Kilcrease (`ckilcrease `__) +- dabuside (`dabuside `__) +- Damian Avila (`damianavila `__) +- Dana Lee (`danagilliann `__) +- Dave Hirschfeld (`dhirschfeld `__) +- Heng GAO (`ehengao `__) +- Leo Gallucci (`elgalu `__) +- Evan Van Dam (`evandam `__) +- forbxy (`forbxy `__) +- Grant Nestor (`gnestor `__) +- Ethan T. Hendrix (`hendrixet `__) +- Miro Hrončok (`hroncok `__) +- Paul Ivanov (`ivanov `__) +- Darío Hereñú (`kant `__) +- Kevin Bates (`kevin-bates `__) +- Maarten Breddels (`maartenbreddels `__) +- Michael Droettboom (`mdboom `__) +- Min RK (`minrk `__) +- M Pacer (`mpacer `__) +- Peter Parente (`parente `__) +- Paul Masson (`paulmasson `__) +- Philipp Rudiger (`philippjfr `__) +- Mac Knight (`Shels1909 `__) +- Hisham Elsheshtawy (`Sheshtawy `__) +- Simon Biggs (`SimonBiggs `__) +- Sunil Hari (`sunilhari `__) +- Thomas Kluyver (`takluyver `__) +- Tim Klever (`tklever `__) +- Gabriel Ruiz (`unnamedplay-r `__) +- Vaibhav Sagar (`vaibhavsagar `__) +- William Hosford (`whosford `__) +- Hong (`xuhdev `__) + +See the 5.5 milestone on GitHub for a complete list of +`pull requests `__ involved in this release. + .. _release-5.4.1: 5.4.1 From 0f31d59c97e62e0df31b33d9a80c0b3258c982d9 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Tue, 1 May 2018 21:35:23 +0200 Subject: [PATCH 44/45] release 5.5.0rc1 --- notebook/_version.py | 2 +- notebook/static/base/js/namespace.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/notebook/_version.py b/notebook/_version.py index 019942fc5..9603754b2 100644 --- a/notebook/_version.py +++ b/notebook/_version.py @@ -9,5 +9,5 @@ store the current version info of the notebook. # Next beta/alpha/rc release: The version number for beta is X.Y.ZbN **without dots**. -version_info = (5, 5, 0, '.dev0') +version_info = (5, 5, 0, 'rc1') __version__ = '.'.join(map(str, version_info[:3])) + ''.join(version_info[3:]) diff --git a/notebook/static/base/js/namespace.js b/notebook/static/base/js/namespace.js index e1b4a2ac3..048774b27 100644 --- a/notebook/static/base/js/namespace.js +++ b/notebook/static/base/js/namespace.js @@ -73,7 +73,7 @@ define(function(){ // tree jglobal('SessionList','tree/js/sessionlist'); - Jupyter.version = "5.5.0.dev0"; + Jupyter.version = "5.5.0rc1"; Jupyter._target = '_blank'; return Jupyter; }); From 5cfba9cb24a6d06b2794dbbcda6b211477a270f1 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Tue, 1 May 2018 21:49:49 +0200 Subject: [PATCH 45/45] Back to development --- notebook/_version.py | 2 +- notebook/static/base/js/namespace.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/notebook/_version.py b/notebook/_version.py index 9603754b2..019942fc5 100644 --- a/notebook/_version.py +++ b/notebook/_version.py @@ -9,5 +9,5 @@ store the current version info of the notebook. # Next beta/alpha/rc release: The version number for beta is X.Y.ZbN **without dots**. -version_info = (5, 5, 0, 'rc1') +version_info = (5, 5, 0, '.dev0') __version__ = '.'.join(map(str, version_info[:3])) + ''.join(version_info[3:]) diff --git a/notebook/static/base/js/namespace.js b/notebook/static/base/js/namespace.js index 048774b27..e1b4a2ac3 100644 --- a/notebook/static/base/js/namespace.js +++ b/notebook/static/base/js/namespace.js @@ -73,7 +73,7 @@ define(function(){ // tree jglobal('SessionList','tree/js/sessionlist'); - Jupyter.version = "5.5.0rc1"; + Jupyter.version = "5.5.0.dev0"; Jupyter._target = '_blank'; return Jupyter; });