diff --git a/notebook/_version.py b/notebook/_version.py index 5a634ac2b3..d1022c0f75 100644 --- a/notebook/_version.py +++ b/notebook/_version.py @@ -1,2 +1,13 @@ +""" +store the current version info of the notebook. + +""" + +# Downstream maintainer, when running `python.setup.py jsversion`, +# the version string is propagated to the JavaScript files, do not forget to +# patch the JavaScript files in `.postN` release done by distributions. + +# Next beta/alpha/rc release: The version number for beta is X.Y.ZbN **without dots**. + version_info = (4, 1, 0, 'b1') -__version__ = '.'.join(map(str, version_info)) +__version__ = '.'.join(map(str, version_info[:3])) + ''.join(version_info[3:]) diff --git a/notebook/tests/test_notebookapp.py b/notebook/tests/test_notebookapp.py index daf4c4654c..d74857d046 100644 --- a/notebook/tests/test_notebookapp.py +++ b/notebook/tests/test_notebookapp.py @@ -3,6 +3,7 @@ import logging import os +import re from tempfile import NamedTemporaryFile import nose.tools as nt @@ -12,7 +13,7 @@ from jupyter_core.application import NoStart from ipython_genutils.tempdir import TemporaryDirectory from traitlets import TraitError -from notebook import notebookapp +from notebook import notebookapp, __version__ NotebookApp = notebookapp.NotebookApp @@ -74,4 +75,40 @@ def test_generate_config(): with nt.assert_raises(NoStart): app.start() assert os.path.exists(os.path.join(td, 'jupyter_notebook_config.py')) - + + +#test if the version testin function works +def test_pep440_version(): + + for version in [ + '4.1.0.b1', + '4.1.b1', + '4.2', + 'X.y.z', + '1.2.3.dev1.post2', + ]: + def loc(): + with nt.assert_raises(ValueError): + raise_on_bad_version(version) + yield loc + + for version in [ + '4.1.1', + '4.2.1b3', + ]: + + yield (raise_on_bad_version, version) + + + +pep440re = re.compile('^(\d+)\.(\d+)\.(\d+((a|b|rc)\d+)?)(\.post\d+)?(\.dev\d+)?$') + +def raise_on_bad_version(version): + if not pep440re.match(version): + raise ValueError("Versions String does apparently not match Pep 440 specification, " + "which might lead to sdist and wheel being seen as 2 different release. " + "E.g: do not use dots for beta/alpha/rc markers.") + + +def test_current_version(): + raise_on_bad_version(__version__)