Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jupyter-server for
openSUSE:Factory checked in at 2022-01-19 00:35:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-server (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter-server.new.1892 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-server"
Wed Jan 19 00:35:03 2022 rev:21 rq:946720 version:1.13.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-jupyter-server/python-jupyter-server.changes
2022-01-04 19:37:48.933955647 +0100
+++
/work/SRC/openSUSE:Factory/.python-jupyter-server.new.1892/python-jupyter-server.changes
2022-01-19 00:35:04.666285440 +0100
@@ -1,0 +2,20 @@
+Sat Jan 15 19:52:09 UTC 2022 - Ben Greiner <[email protected]>
+
+- Update to 1.13.3
+ * More updates to unit tests for pending kernels work #662
+ (@Zsailer)
+ * bump traitlets dependency #663 (@Zsailer)
+- Update to 1.13.2
+ * Don't block the event loop when exporting with nbconvert #655
+ (@davidbrochart)
+ * Add more awaits for pending kernel in unit tests #654
+ (@Zsailer)
+ * Print IPv6 url as hostname or enclosed in brackets #652 (@op3)
+ * Run pre_save_hook before model check #643 (@davidbrochart)
+ * handle KeyError when get session #641 (@ccw630)
+ * Clean up deprecations #650 (@blink1073)
+ * Update branch references #646 (@blink1073)
+ * pyproject.toml: clarify build system version #634
+ (@adamjstewart)
+
+-------------------------------------------------------------------
Old:
----
jupyter_server-1.13.1.tar.gz
New:
----
jupyter_server-1.13.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter-server.spec ++++++
--- /var/tmp/diff_new_pack.3c0KpI/_old 2022-01-19 00:35:05.362285937 +0100
+++ /var/tmp/diff_new_pack.3c0KpI/_new 2022-01-19 00:35:05.366285940 +0100
@@ -1,7 +1,7 @@
#
# spec file
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -35,7 +35,7 @@
%{?!python_module:%define python_module() python3-%{**}}
%define skip_python2 1
Name: python-jupyter-server%{psuffix}
-Version: 1.13.1
+Version: 1.13.3
Release: 0
Summary: The backend to Jupyter web applications
License: BSD-3-Clause
@@ -43,27 +43,35 @@
URL: https://github.com/jupyter-server/jupyter_server
# need the release tarball for the static stylesheets
Source:
https://github.com/jupyter-server/jupyter_server/releases/download/v%{version}/jupyter_server-%{version}.tar.gz
+BuildRequires: %{python_module base >= 3.7}
BuildRequires: %{python_module jupyter_packaging}
BuildRequires: %{python_module setuptools}
-
# We need the full stdlib
BuildRequires: %{pythons}
BuildRequires: fdupes
BuildRequires: python-rpm-macros >= 20210929
+%if %{with test}
+BuildRequires: %{python_module jupyter-server-test = %{version}}
+# https://github.com/jupyter-server/jupyter_server/issues/666
+BuildRequires: %{python_module jupyter-client >= 7.1.1}
+BuildRequires: %{python_module pytest-timeout}
+%endif
+Requires: python >= 3.7
Requires: python-Jinja2
Requires: python-Send2Trash
Requires: python-anyio >= 3.1.0
Requires: python-argon2-cffi
Requires: python-ipython_genutils
Requires: python-jupyter-client >= 6.1.1
-Requires: python-jupyter-core >= 4.4.0
+Requires: python-jupyter-core >= 4.6.0
Requires: python-nbconvert
Requires: python-nbformat
+Requires: python-packaging
Requires: python-prometheus_client
Requires: python-pyzmq >= 17
Requires: python-terminado >= 0.8.3
Requires: python-tornado >= 6.1
-Requires: python-traitlets >= 4.2.1
+Requires: python-traitlets >= 5
Requires: python-websocket-client
%if %{with libalternatives}
Requires: alts
@@ -74,9 +82,6 @@
%endif
Provides: python-jupyter_server = %{version}-%{release}
Obsoletes: python-jupyter_server < %{version}-%{release}
-%if %{with test}
-BuildRequires: %{python_module jupyter-server-test = %{version}}
-%endif
%if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3"
Provides: jupyter-jupyter-server = %{version}-%{release}
Obsoletes: jupyter-jupyter-server < %{version}-%{release}
@@ -141,7 +146,7 @@
echo "WARNING: Not a clean test environment."
echo "You might need to delete ~/.local/share/jupyter in order to avoid
test failures."
fi
-%pytest jupyter_server
+%pytest jupyter_server --timeout 60 -p no:threadexception -p
no:unraisableexception
%endif
%if ! %{with test}
++++++ jupyter_server-1.13.1.tar.gz -> jupyter_server-1.13.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/CHANGELOG.md
new/jupyter_server-1.13.3/CHANGELOG.md
--- old/jupyter_server-1.13.1/CHANGELOG.md 2021-12-09 20:36:05.000000000
+0100
+++ new/jupyter_server-1.13.3/CHANGELOG.md 2022-01-14 19:51:53.000000000
+0100
@@ -4,6 +4,53 @@
<!-- <START NEW CHANGELOG ENTRY> -->
+## 1.13.3
+
+([Full
Changelog](https://github.com/jupyter-server/jupyter_server/compare/v1.13.2...ee01e1955c8881b46075c78f1fbc932fa234bc72))
+
+### Enhancements made
+
+- More updates to unit tests for pending kernels work
[#662](https://github.com/jupyter-server/jupyter_server/pull/662)
([@Zsailer](https://github.com/Zsailer))
+
+### Bugs fixed
+
+- bump traitlets dependency
[#663](https://github.com/jupyter-server/jupyter_server/pull/663)
([@Zsailer](https://github.com/Zsailer))
+
+### Contributors to this release
+
+([GitHub contributors page for this
release](https://github.com/jupyter-server/jupyter_server/graphs/contributors?from=2022-01-12&to=2022-01-14&type=c))
+
+[@Zsailer](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3AZsailer+updated%3A2022-01-12..2022-01-14&type=Issues)
+
+<!-- <END NEW CHANGELOG ENTRY> -->
+
+## 1.13.2
+
+([Full
Changelog](https://github.com/jupyter-server/jupyter_server/compare/v1.13.1...362d100ff24c1da7ef4cbd171c213e9570e8c289))
+
+### Enhancements made
+
+- Don't block the event loop when exporting with nbconvert
[#655](https://github.com/jupyter-server/jupyter_server/pull/655)
([@davidbrochart](https://github.com/davidbrochart))
+- Add more awaits for pending kernel in unit tests
[#654](https://github.com/jupyter-server/jupyter_server/pull/654)
([@Zsailer](https://github.com/Zsailer))
+- Print IPv6 url as hostname or enclosed in brackets
[#652](https://github.com/jupyter-server/jupyter_server/pull/652)
([@op3](https://github.com/op3))
+
+### Bugs fixed
+
+- Run pre_save_hook before model check
[#643](https://github.com/jupyter-server/jupyter_server/pull/643)
([@davidbrochart](https://github.com/davidbrochart))
+- handle KeyError when get session
[#641](https://github.com/jupyter-server/jupyter_server/pull/641)
([@ccw630](https://github.com/ccw630))
+
+### Maintenance and upkeep improvements
+
+- Clean up deprecations
[#650](https://github.com/jupyter-server/jupyter_server/pull/650)
([@blink1073](https://github.com/blink1073))
+- Update branch references
[#646](https://github.com/jupyter-server/jupyter_server/pull/646)
([@blink1073](https://github.com/blink1073))
+- pyproject.toml: clarify build system version
[#634](https://github.com/jupyter-server/jupyter_server/pull/634)
([@adamjstewart](https://github.com/adamjstewart))
+
+### Contributors to this release
+
+([GitHub contributors page for this
release](https://github.com/jupyter-server/jupyter_server/graphs/contributors?from=2021-12-09&to=2022-01-12&type=c))
+
+[@adamjstewart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Aadamjstewart+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@blink1073](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Ablink1073+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@ccw630](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Accw630+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Acodecov-commenter+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Adavidbrochart+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@echarles](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Aecharles+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@fcollonval](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+
involves%3Afcollonval+updated%3A2021-12-09..2022-01-12&type=Issues) |
[@kevin-bates](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Akevin-bates+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@op3](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Aop3+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@welcome](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Awelcome+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@Wh1isper](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3AWh1isper+updated%3A2021-12-09..2022-01-12&type=Issues)
|
[@Zsailer](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3AZsailer+updated%3A2021-12-09..2022-01-12&type=Issues)
+
## 1.13.1
([Full
Changelog](https://github.com/jupyter-server/jupyter_server/compare/v1.13.0...affd5d9a2e6d718baa2185518256f51921fd4484))
@@ -22,8 +69,6 @@
[@blink1073](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Ablink1073+updated%3A2021-12-06..2021-12-09&type=Issues)
|
[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3Acodecov-commenter+updated%3A2021-12-06..2021-12-09&type=Issues)
|
[@Zsailer](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+involves%3AZsailer+updated%3A2021-12-06..2021-12-09&type=Issues)
-<!-- <END NEW CHANGELOG ENTRY> -->
-
## 1.13.0
([Full
Changelog](https://github.com/jupyter-server/jupyter_server/compare/v1.12.1...b51969f16f04375d52cb029d72f90174141c760d))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/CONTRIBUTING.rst
new/jupyter_server-1.13.3/CONTRIBUTING.rst
--- old/jupyter_server-1.13.1/CONTRIBUTING.rst 2021-12-09 20:36:05.000000000
+0100
+++ new/jupyter_server-1.13.3/CONTRIBUTING.rst 2022-01-14 19:51:53.000000000
+0100
@@ -32,7 +32,7 @@
If you are using a system-wide Python installation and you only want to
install the server for you,
you can add ``--user`` to the install commands.
-Once you have done this, you can launch the master branch of Jupyter server
+Once you have done this, you can launch the main branch of Jupyter server
from any directory in your system with::
jupyter server
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/PKG-INFO
new/jupyter_server-1.13.3/PKG-INFO
--- old/jupyter_server-1.13.1/PKG-INFO 2021-12-09 20:36:35.956748700 +0100
+++ new/jupyter_server-1.13.3/PKG-INFO 2022-01-14 19:52:27.960275700 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter_server
-Version: 1.13.1
+Version: 1.13.3
Summary: The backend???i.e. core services, APIs, and REST endpoints???to
Jupyter web applications.
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -15,18 +15,18 @@
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
-Requires-Python: >=3.6
+Classifier: Programming Language :: Python :: 3.10
+Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: test
License-File: COPYING.md
# Jupyter Server
-[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amaster++)
+[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amain++)
[](http://jupyter-server.readthedocs.io/en/latest/?badge=latest)
The Jupyter Server provides the backend (i.e. the core services, APIs, and
REST endpoints) for Jupyter web applications like Jupyter notebook, JupyterLab,
and Voila.
@@ -46,9 +46,9 @@
If Jupyter Server is a dependency of your project/application, it is important
that you pin it to a version that works for your application. Currently,
Jupyter Server only has minor and patch versions. Different minor versions
likely include API-changes while patch versions do not change API.
-When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the master branch will be
bumped to the next minor version number. That way, the master branch always
reflects the latest un-released version.
+When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the main branch will be
bumped to the next minor version number. That way, the main branch always
reflects the latest un-released version.
-To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/master/CHANGELOG.md).
+To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/main/CHANGELOG.md).
## Usage - Running Jupyter Server
@@ -60,7 +60,7 @@
### Testing
-See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/master/CONTRIBUTING.rst#running-tests).
+See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/main/CONTRIBUTING.rst#running-tests).
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/README.md
new/jupyter_server-1.13.3/README.md
--- old/jupyter_server-1.13.1/README.md 2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/README.md 2022-01-14 19:51:53.000000000 +0100
@@ -1,6 +1,6 @@
# Jupyter Server
-[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amaster++)
+[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amain++)
[](http://jupyter-server.readthedocs.io/en/latest/?badge=latest)
The Jupyter Server provides the backend (i.e. the core services, APIs, and
REST endpoints) for Jupyter web applications like Jupyter notebook, JupyterLab,
and Voila.
@@ -20,9 +20,9 @@
If Jupyter Server is a dependency of your project/application, it is important
that you pin it to a version that works for your application. Currently,
Jupyter Server only has minor and patch versions. Different minor versions
likely include API-changes while patch versions do not change API.
-When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the master branch will be
bumped to the next minor version number. That way, the master branch always
reflects the latest un-released version.
+When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the main branch will be
bumped to the next minor version number. That way, the main branch always
reflects the latest un-released version.
-To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/master/CHANGELOG.md).
+To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/main/CHANGELOG.md).
## Usage - Running Jupyter Server
@@ -34,7 +34,7 @@
### Testing
-See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/master/CONTRIBUTING.rst#running-tests).
+See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/main/CONTRIBUTING.rst#running-tests).
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/docs/environment.yml
new/jupyter_server-1.13.3/docs/environment.yml
--- old/jupyter_server-1.13.1/docs/environment.yml 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/docs/environment.yml 2022-01-14
19:51:53.000000000 +0100
@@ -1,7 +1,7 @@
name: jupyter_server_docs
dependencies:
- - nodejs=14
- - python=3.8
+ - nodejs
+ - python
- pip
- pip:
- -r doc-requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/docs/source/conf.py
new/jupyter_server-1.13.3/docs/source/conf.py
--- old/jupyter_server-1.13.1/docs/source/conf.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/docs/source/conf.py 2022-01-14
19:51:53.000000000 +0100
@@ -17,6 +17,9 @@
import shutil
import sys
+from pkg_resources import parse_version
+
+
HERE = osp.abspath(osp.dirname(__file__))
@@ -106,13 +109,10 @@
# |version| and |release|, also used in various other places throughout the
# built documents.
#
-_version_py = "../../jupyter_server/_version.py"
-version_ns = {}
-exec(compile(open(_version_py).read(), _version_py, "exec"), version_ns)
+__version__ = "1.14.0.dev0"
# The short X.Y version.
-version = "%i.%i" % version_ns["version_info"][:2]
-# The full version, including alpha/beta/rc tags.
-release = version_ns["__version__"]
+version_parsed = parse_version(__version__)
+version = f"{version_parsed.major}.{version_parsed.minor}"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -336,7 +336,7 @@
# -- Options for link checks ----------------------------------------------
-linkcheck_ignore = ["http://127\.0\.0\.1/*"]
+linkcheck_ignore = [r"http://127\.0\.0\.1/*"]
# -- Options for Texinfo output -------------------------------------------
@@ -379,7 +379,7 @@
spelling_word_list_filename = "spelling_wordlist.txt"
# import before any doc is built, so _ is guaranteed to be injected
-import jupyter_server.transutils # pylint: disable=unused-import
+import jupyter_server.transutils # noqa: F401
def setup(app):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/docs/source/developers/extensions.rst
new/jupyter_server-1.13.3/docs/source/developers/extensions.rst
--- old/jupyter_server-1.13.1/docs/source/developers/extensions.rst
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/docs/source/developers/extensions.rst
2022-01-14 19:51:53.000000000 +0100
@@ -5,7 +5,7 @@
A Jupyter Server extension is typically a module or package that extends to
Server???s REST API/endpoints???i.e. adds extra request handlers to Server???s
Tornado Web Application.
You can check some simple examples on the `examples folder
-<https://github.com/jupyter/jupyter_server/tree/master/examples/simple>`_ in
the GitHub jupyter_server repository.
+<https://github.com/jupyter/jupyter_server/tree/main/examples/simple>`_ in the
GitHub jupyter_server repository.
Authoring a basic server extension
==================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/docs/source/index.rst
new/jupyter_server-1.13.3/docs/source/index.rst
--- old/jupyter_server-1.13.1/docs/source/index.rst 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/docs/source/index.rst 2022-01-14
19:51:53.000000000 +0100
@@ -19,7 +19,7 @@
.. _Tornado: https://www.tornadoweb.org/en/stable/
.. _Jupyter Notebook: https://github.com/jupyter/notebook
-.. _REST endpoints:
https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter/jupyter_server/master/jupyter_server/services/api/api.yaml
+.. _REST endpoints:
https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter/jupyter_server/main/jupyter_server/services/api/api.yaml
Who's this for?
---------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/examples/simple/conftest.py
new/jupyter_server-1.13.3/examples/simple/conftest.py
--- old/jupyter_server-1.13.1/examples/simple/conftest.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/examples/simple/conftest.py 2022-01-14
19:51:53.000000000 +0100
@@ -1 +1 @@
-from jupyter_server.conftest import *
+from jupyter_server.conftest import * # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/examples/simple/setup.py
new/jupyter_server-1.13.3/examples/simple/setup.py
--- old/jupyter_server-1.13.1/examples/simple/setup.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/examples/simple/setup.py 2022-01-14
19:51:53.000000000 +0100
@@ -34,7 +34,7 @@
version=VERSION,
description="Jupyter Server Example",
long_description=open("README.md").read(),
- python_requires=">=3.6",
+ python_requires=">=3.7",
install_requires=[
"jupyter_server",
"jinja2",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/jupyter_server/__init__.py
new/jupyter_server-1.13.3/jupyter_server/__init__.py
--- old/jupyter_server-1.13.1/jupyter_server/__init__.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/__init__.py 2022-01-14
19:51:53.000000000 +0100
@@ -13,7 +13,7 @@
del os
-from ._version import version_info, __version__
+from ._version import version_info, __version__ # noqa
def _cleanup():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/jupyter_server/_version.py
new/jupyter_server-1.13.3/jupyter_server/_version.py
--- old/jupyter_server-1.13.1/jupyter_server/_version.py 2021-12-09
20:36:21.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/_version.py 2022-01-14
19:52:13.000000000 +0100
@@ -2,5 +2,5 @@
store the current version info of the server.
"""
-version_info = (1, 13, 1, "", "")
+version_info = (1, 13, 3, "", "")
__version__ = ".".join(map(str, version_info[:3])) + "".join(version_info[3:])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/auth/__init__.py
new/jupyter_server-1.13.3/jupyter_server/auth/__init__.py
--- old/jupyter_server-1.13.1/jupyter_server/auth/__init__.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/auth/__init__.py 2022-01-14
19:51:53.000000000 +0100
@@ -1 +1 @@
-from .security import passwd
+from .security import passwd # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/gateway/gateway_client.py
new/jupyter_server-1.13.3/jupyter_server/gateway/gateway_client.py
--- old/jupyter_server-1.13.1/jupyter_server/gateway/gateway_client.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/gateway/gateway_client.py
2022-01-14 19:51:53.000000000 +0100
@@ -232,7 +232,7 @@
default_value=None,
allow_none=True,
config=True,
- help="""The authorization token used in the HTTP headers. The header
will be formatted as:
+ help="""The authorization token used in the HTTP headers. The header
will be formatted as::
{
'Authorization': '{auth_scheme} {auth_token}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/nbconvert/handlers.py
new/jupyter_server-1.13.3/jupyter_server/nbconvert/handlers.py
--- old/jupyter_server-1.13.1/jupyter_server/nbconvert/handlers.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/nbconvert/handlers.py
2022-01-14 19:51:53.000000000 +0100
@@ -5,6 +5,7 @@
import os
import zipfile
+from anyio.to_thread import run_sync
from ipython_genutils import text
from ipython_genutils.py3compat import cast_bytes
from nbformat import from_dict
@@ -115,8 +116,11 @@
if ext_resources_dir:
resource_dict["metadata"]["path"] = ext_resources_dir
+ # Exporting can take a while, delegate to a thread so we don't block
the event loop
try:
- output, resources = exporter.from_notebook_node(nb,
resources=resource_dict)
+ output, resources = await run_sync(
+ exporter.from_notebook_node(nb, resources=resource_dict)
+ )
except Exception as e:
self.log.exception("nbconvert failed: %s", e)
raise web.HTTPError(500, "nbconvert failed: %s" % e) from e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/prometheus/metrics.py
new/jupyter_server-1.13.3/jupyter_server/prometheus/metrics.py
--- old/jupyter_server-1.13.1/jupyter_server/prometheus/metrics.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/prometheus/metrics.py
2022-01-14 19:51:53.000000000 +0100
@@ -9,7 +9,6 @@
# Jupyter Notebook also defines these metrics. Re-defining them results
in a ValueError.
# Try to de-duplicate by using the ones in Notebook if available.
# See https://github.com/jupyter/jupyter_server/issues/209
- # pylint: disable=unused-import
from notebook.prometheus.metrics import (
HTTP_REQUEST_DURATION_SECONDS,
TERMINAL_CURRENTLY_RUNNING_TOTAL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/jupyter_server/serverapp.py
new/jupyter_server-1.13.3/jupyter_server/serverapp.py
--- old/jupyter_server-1.13.1/jupyter_server/serverapp.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/serverapp.py 2022-01-14
19:51:53.000000000 +0100
@@ -285,7 +285,7 @@
env.install_gettext_translations(nbui, newstyle=False)
if sys_info["commit_source"] == "repository":
- # don't cache (rely on 304) when working from master
+ # don't cache (rely on 304) when working from default branch
version_hash = ""
else:
# reset the cache on server restart
@@ -486,7 +486,6 @@
Returns True if the server was stopped by any means, False if stopping it
failed (on Windows).
"""
- from tornado.httpclient import HTTPClient, HTTPRequest
url = server_info["url"]
pid = server_info["pid"]
@@ -1901,10 +1900,10 @@
netloc = urlencode_unix_socket_path(self.sock)
else:
# Handle nonexplicit hostname.
- if self.ip in ("", "0.0.0.0"):
+ if self.ip in ("", "0.0.0.0", "::"):
ip = "%s" % socket.gethostname()
else:
- ip = self.ip
+ ip = "[{}]".format(self.ip) if ":" in self.ip else self.ip
netloc = "{ip}:{port}".format(ip=ip, port=self.port)
if self.certfile:
scheme = "https"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/services/config/__init__.py
new/jupyter_server-1.13.3/jupyter_server/services/config/__init__.py
--- old/jupyter_server-1.13.1/jupyter_server/services/config/__init__.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/services/config/__init__.py
2022-01-14 19:51:53.000000000 +0100
@@ -1 +1 @@
-from .manager import ConfigManager
+from .manager import ConfigManager # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/services/contents/filemanager.py
new/jupyter_server-1.13.3/jupyter_server/services/contents/filemanager.py
--- old/jupyter_server-1.13.1/jupyter_server/services/contents/filemanager.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/services/contents/filemanager.py
2022-01-14 19:51:53.000000000 +0100
@@ -433,6 +433,8 @@
"""Save the file model and return the model with no content."""
path = path.strip("/")
+ self.run_pre_save_hook(model=model, path=path)
+
if "type" not in model:
raise web.HTTPError(400, u"No file type provided")
if "content" not in model and model["type"] != "directory":
@@ -441,8 +443,6 @@
os_path = self._get_os_path(path)
self.log.debug("Saving %s", os_path)
- self.run_pre_save_hook(model=model, path=path)
-
try:
if model["type"] == "notebook":
nb = nbformat.from_dict(model["content"])
@@ -757,16 +757,15 @@
"""Save the file model and return the model with no content."""
path = path.strip("/")
+ os_path = self._get_os_path(path)
+ self.log.debug("Saving %s", os_path)
+ self.run_pre_save_hook(model=model, path=path)
+
if "type" not in model:
raise web.HTTPError(400, u"No file type provided")
if "content" not in model and model["type"] != "directory":
raise web.HTTPError(400, u"No file content provided")
- os_path = self._get_os_path(path)
- self.log.debug("Saving %s", os_path)
-
- self.run_pre_save_hook(model=model, path=path)
-
try:
if model["type"] == "notebook":
nb = nbformat.from_dict(model["content"])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/services/contents/largefilemanager.py
new/jupyter_server-1.13.3/jupyter_server/services/contents/largefilemanager.py
---
old/jupyter_server-1.13.1/jupyter_server/services/contents/largefilemanager.py
2021-12-09 20:36:05.000000000 +0100
+++
new/jupyter_server-1.13.3/jupyter_server/services/contents/largefilemanager.py
2022-01-14 19:51:53.000000000 +0100
@@ -18,6 +18,8 @@
if chunk is not None:
path = path.strip("/")
+ self.run_pre_save_hook(model=model, path=path)
+
if "type" not in model:
raise web.HTTPError(400, u"No file type provided")
if model["type"] != "file":
@@ -31,11 +33,10 @@
raise web.HTTPError(400, u"No file content provided")
os_path = self._get_os_path(path)
+ self.log.debug("Saving %s", os_path)
try:
if chunk == 1:
- self.log.debug("Saving %s", os_path)
- self.run_pre_save_hook(model=model, path=path)
super(LargeFileManager, self)._save_file(
os_path, model["content"], model.get("format")
)
@@ -90,6 +91,10 @@
if chunk is not None:
path = path.strip("/")
+ os_path = self._get_os_path(path)
+ self.log.debug("Saving %s", os_path)
+ self.run_pre_save_hook(model=model, path=path)
+
if "type" not in model:
raise web.HTTPError(400, u"No file type provided")
if model["type"] != "file":
@@ -102,12 +107,8 @@
if "content" not in model and model["type"] != "directory":
raise web.HTTPError(400, u"No file content provided")
- os_path = self._get_os_path(path)
-
try:
if chunk == 1:
- self.log.debug("Saving %s", os_path)
- self.run_pre_save_hook(model=model, path=path)
await super(AsyncLargeFileManager, self)._save_file(
os_path, model["content"], model.get("format")
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/services/sessions/sessionmanager.py
new/jupyter_server-1.13.3/jupyter_server/services/sessions/sessionmanager.py
---
old/jupyter_server-1.13.1/jupyter_server/services/sessions/sessionmanager.py
2021-12-09 20:36:05.000000000 +0100
+++
new/jupyter_server-1.13.3/jupyter_server/services/sessions/sessionmanager.py
2022-01-14 19:51:53.000000000 +0100
@@ -216,7 +216,10 @@
raise web.HTTPError(404, u"Session not found: %s" % (", ".join(q)))
- model = await self.row_to_model(row)
+ try:
+ model = await self.row_to_model(row)
+ except KeyError as e:
+ raise web.HTTPError(404, u"Session not found: %s" % str(e))
return model
async def update_session(self, session_id, **kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/tests/services/kernels/test_api.py
new/jupyter_server-1.13.3/jupyter_server/tests/services/kernels/test_api.py
--- old/jupyter_server-1.13.1/jupyter_server/tests/services/kernels/test_api.py
2021-12-09 20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/tests/services/kernels/test_api.py
2022-01-14 19:51:53.000000000 +0100
@@ -11,15 +11,27 @@
from jupyter_server.utils import url_path_join
-class TestMappingKernelManager(AsyncMappingKernelManager):
+class DummyMappingKernelManager(AsyncMappingKernelManager):
"""A no-op subclass to use in a fixture"""
[email protected]
+def pending_kernel_is_ready(jp_serverapp):
+ async def _(kernel_id):
+ km = jp_serverapp.kernel_manager
+ if getattr(km, "use_pending_kernels", False):
+ kernel = km.get_kernel(kernel_id)
+ if getattr(kernel, "ready"):
+ await kernel.ready
+
+ return _
+
+
@pytest.fixture(
- params=["MappingKernelManager", "AsyncMappingKernelManager",
"TestMappingKernelManager"]
+ params=["MappingKernelManager", "AsyncMappingKernelManager",
"DummyMappingKernelManager"]
)
def jp_argv(request):
- if request.param == "TestMappingKernelManager":
+ if request.param == "DummyMappingKernelManager":
extra = []
if hasattr(AsyncMappingKernelManager, "use_pending_kernels"):
extra = ["--AsyncMappingKernelManager.use_pending_kernels=True"]
@@ -54,7 +66,9 @@
await jp_cleanup_subprocesses()
-async def test_main_kernel_handler(jp_fetch, jp_base_url,
jp_cleanup_subprocesses, jp_serverapp):
+async def test_main_kernel_handler(
+ jp_fetch, jp_base_url, jp_cleanup_subprocesses, jp_serverapp,
pending_kernel_is_ready
+):
# Start the first kernel
r = await jp_fetch(
"api", "kernels", method="POST", body=json.dumps({"name":
NATIVE_KERNEL_NAME})
@@ -93,16 +107,14 @@
assert len(kernel_list) == 2
# Interrupt a kernel
+ await pending_kernel_is_ready(kernel2["id"])
r = await jp_fetch(
"api", "kernels", kernel2["id"], "interrupt", method="POST",
allow_nonstandard_methods=True
)
assert r.code == 204
# Restart a kernel
- kernel = jp_serverapp.kernel_manager.get_kernel(kernel2["id"])
- if hasattr(kernel, "ready"):
- await kernel.ready
-
+ await pending_kernel_is_ready(kernel2["id"])
r = await jp_fetch(
"api", "kernels", kernel2["id"], "restart", method="POST",
allow_nonstandard_methods=True
)
@@ -122,7 +134,7 @@
await jp_cleanup_subprocesses()
-async def test_kernel_handler(jp_fetch, jp_cleanup_subprocesses):
+async def test_kernel_handler(jp_fetch, jp_cleanup_subprocesses,
pending_kernel_is_ready):
# Create a kernel
r = await jp_fetch(
"api", "kernels", method="POST", body=json.dumps({"name":
NATIVE_KERNEL_NAME})
@@ -142,6 +154,7 @@
assert expected_http_error(e, 404)
# Delete kernel with id.
+ await pending_kernel_is_ready(kernel_id)
r = await jp_fetch(
"api",
"kernels",
@@ -151,6 +164,11 @@
assert r.code == 204
# Get list of kernels
+ try:
+ await pending_kernel_is_ready(kernel_id)
+ # If the kernel is already deleted, no need to await.
+ except tornado.web.HTTPError:
+ pass
r = await jp_fetch("api", "kernels", method="GET")
kernel_list = json.loads(r.body.decode())
assert kernel_list == []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/tests/services/sessions/test_api.py
new/jupyter_server-1.13.3/jupyter_server/tests/services/sessions/test_api.py
---
old/jupyter_server-1.13.1/jupyter_server/tests/services/sessions/test_api.py
2021-12-09 20:36:05.000000000 +0100
+++
new/jupyter_server-1.13.3/jupyter_server/tests/services/sessions/test_api.py
2022-01-14 19:51:53.000000000 +0100
@@ -114,6 +114,24 @@
@pytest.fixture
+def session_is_ready(jp_serverapp):
+ """Wait for the kernel started by a session to be ready.
+
+ This is useful when working with pending kernels.
+ """
+
+ async def _(session_id):
+ sm = jp_serverapp.session_manager
+ mkm = jp_serverapp.kernel_manager
+ session = await sm.get_session(session_id=session_id)
+ kernel_id = session["kernel"]["id"]
+ kernel = mkm.get_kernel(kernel_id)
+ await kernel.ready
+
+ return _
+
+
[email protected]
def session_client(jp_root_dir, jp_fetch):
subdir = jp_root_dir.joinpath("foo")
subdir.mkdir()
@@ -156,7 +174,9 @@
assert_kernel_equality(actual["kernel"], expected["kernel"])
-async def test_create(session_client, jp_base_url, jp_cleanup_subprocesses,
jp_serverapp):
+async def test_create(
+ session_client, jp_base_url, jp_cleanup_subprocesses, jp_serverapp,
session_is_ready
+):
# Make sure no sessions exist.
resp = await session_client.list()
sessions = j(resp)
@@ -197,7 +217,6 @@
assert_session_equality(got, new_session)
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -218,7 +237,6 @@
await session_client.create("foo/nb1.ipynb")
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -251,7 +269,6 @@
assert "non_existent_path" in session["kernel"]["reason"]
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -261,7 +278,6 @@
newsession = j(resp)
assert newsession["path"] == "foo/nb1.py"
assert newsession["type"] == "file"
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -272,7 +288,6 @@
assert newsession["path"] == "foo/abc123"
assert newsession["type"] == "console"
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -284,7 +299,6 @@
assert newsession["type"] == "notebook"
assert newsession["notebook"]["path"] == "foo/nb1.ipynb"
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -316,7 +330,6 @@
got = j(resp)
assert_session_equality(got, new_session)
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -327,14 +340,15 @@
# TODO
assert newsession["path"] == "foo/nb1.py"
assert newsession["type"] == "file"
- await session_client.cleanup()
await jp_cleanup_subprocesses()
-async def test_delete(session_client, jp_cleanup_subprocesses, jp_serverapp):
+async def test_delete(session_client, jp_cleanup_subprocesses, jp_serverapp,
session_is_ready):
resp = await session_client.create("foo/nb1.ipynb")
+
newsession = j(resp)
sid = newsession["id"]
+ await session_is_ready(sid)
resp = await session_client.delete(sid)
assert resp.code == 204
@@ -347,7 +361,6 @@
await session_client.get(sid)
assert expected_http_error(e, 404)
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -361,7 +374,6 @@
assert changed["id"] == sid
assert changed["path"] == "nb2.ipynb"
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -375,7 +387,6 @@
assert changed["id"] == sid
assert changed["notebook"]["path"] == "nb2.ipynb"
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -389,7 +400,6 @@
assert changed["id"] == sid
assert changed["type"] == "console"
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -414,7 +424,6 @@
assert kernel_list == [after["kernel"]]
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -446,7 +455,6 @@
assert kernel_list == [kernel]
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
@@ -509,5 +517,4 @@
assert model["connections"] == 1
# Need to find a better solution to this.
- await session_client.cleanup()
await jp_cleanup_subprocesses()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server/tests/services/sessions/test_manager.py
new/jupyter_server-1.13.3/jupyter_server/tests/services/sessions/test_manager.py
---
old/jupyter_server-1.13.1/jupyter_server/tests/services/sessions/test_manager.py
2021-12-09 20:36:05.000000000 +0100
+++
new/jupyter_server-1.13.3/jupyter_server/tests/services/sessions/test_manager.py
2022-01-14 19:51:53.000000000 +0100
@@ -91,7 +91,7 @@
)
# Kill the kernel
await
session_manager.kernel_manager.shutdown_kernel(session["kernel"]["id"])
- with pytest.raises(KeyError):
+ with pytest.raises(web.HTTPError):
await session_manager.get_session(session_id=session["id"])
# no session left
listed = await session_manager.list_sessions()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/jupyter_server/traittypes.py
new/jupyter_server-1.13.3/jupyter_server/traittypes.py
--- old/jupyter_server-1.13.1/jupyter_server/traittypes.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/traittypes.py 2022-01-14
19:51:53.000000000 +0100
@@ -4,153 +4,7 @@
from traitlets import ClassBasedTraitType
from traitlets import TraitError
from traitlets import Undefined
-
-# Traitlet's 5.x includes a set of utilities for building
-# description strings for objects. Traitlets 5.x does not
-# support Python 3.6, but jupyter_server does; instead
-# jupyter_server uses traitlets 4.3.x which doesn't have
-# this `descriptions` submodule. This chunk in the except
-# clause is a copy-and-paste from traitlets 5.0.5.
-try:
- from traitlets.utils.descriptions import describe
-except ImportError:
- import re
- import types
-
- def describe(article, value, name=None, verbose=False, capital=False):
- """Return string that describes a value
- Parameters
- ----------
- article : str or None
- A definite or indefinite article. If the article is
- indefinite (i.e. "a" or "an") the appropriate one
- will be infered. Thus, the arguments of ``describe``
- can themselves represent what the resulting string
- will actually look like. If None, then no article
- will be prepended to the result. For non-articled
- description, values that are instances are treated
- definitely, while classes are handled indefinitely.
- value : any
- The value which will be named.
- name : str or None (default: None)
- Only applies when ``article`` is "the" - this
- ``name`` is a definite reference to the value.
- By default one will be infered from the value's
- type and repr methods.
- verbose : bool (default: False)
- Whether the name should be concise or verbose. When
- possible, verbose names include the module, and/or
- class name where an object was defined.
- capital : bool (default: False)
- Whether the first letter of the article should
- be capitalized or not. By default it is not.
- Examples
- --------
- Indefinite description:
- >>> describe("a", object())
- 'an object'
- >>> describe("a", object)
- 'an object'
- >>> describe("a", type(object))
- 'a type'
-
- Definite description:
- >>> describe("the", object()) # doctest: +ELLIPSIS
- "the object at '0x...'"
- >>> describe("the", object)
- 'the object object'
- >>> describe("the", type(object))
- 'the type type'
-
- Definitely named description:
- >>> describe("the", object(), "I made")
- 'the object I made'
- >>> describe("the", object, "I will use")
- 'the object I will use'
- """
- if isinstance(article, str):
- article = article.lower()
-
- if not inspect.isclass(value):
- typename = type(value).__name__
- else:
- typename = value.__name__
- if verbose:
- typename = _prefix(value) + typename
-
- if article == "the" or (article is None and not
inspect.isclass(value)):
- if name is not None:
- result = "{} {}".format(typename, name)
- if article is not None:
- return add_article(result, True, capital)
- else:
- return result
- else:
- tick_wrap = False
- if inspect.isclass(value):
- name = value.__name__
- elif isinstance(value, types.FunctionType):
- name = value.__name__
- tick_wrap = True
- elif isinstance(value, types.MethodType):
- name = value.__func__.__name__
- tick_wrap = True
- elif type(value).__repr__ in (object.__repr__, type.__repr__):
- name = "at '%s'" % hex(id(value))
- verbose = False
- else:
- name = repr(value)
- verbose = False
- if verbose:
- name = _prefix(value) + name
- if tick_wrap:
- name = name.join("''")
- return describe(article, value, name=name, verbose=verbose,
capital=capital)
- elif article in ("a", "an") or article is None:
- if article is None:
- return typename
- return add_article(typename, False, capital)
- else:
- raise ValueError(
- "The 'article' argument should " "be 'the', 'a', 'an', or None
not %r" % article
- )
-
- def add_article(name, definite=False, capital=False):
- """Returns the string with a prepended article.
- The input does not need to begin with a charater.
- Parameters
- ----------
- definite : bool (default: False)
- Whether the article is definite or not.
- Indefinite articles being 'a' and 'an',
- while 'the' is definite.
- capital : bool (default: False)
- Whether the added article should have
- its first letter capitalized or not.
- """
- if definite:
- result = "the " + name
- else:
- first_letters = re.compile(r"[\W_]+").sub("", name)
- if first_letters[:1].lower() in "aeiou":
- result = "an " + name
- else:
- result = "a " + name
- if capital:
- return result[0].upper() + result[1:]
- else:
- return result
-
- def _prefix(value):
- if isinstance(value, types.MethodType):
- name = describe(None, value.__self__, verbose=True) + "."
- else:
- module = inspect.getmodule(value)
- if module is not None and module.__name__ != "builtins":
- name = module.__name__ + "."
- else:
- name = ""
- return name
+from traitlets.utils.descriptions import describe
class TypeFromClasses(ClassBasedTraitType):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/jupyter_server/utils.py
new/jupyter_server-1.13.3/jupyter_server/utils.py
--- old/jupyter_server-1.13.1/jupyter_server/utils.py 2021-12-09
20:36:05.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server/utils.py 2022-01-14
19:51:53.000000000 +0100
@@ -10,16 +10,16 @@
import sys
from _frozen_importlib_external import _NamespacePath
from contextlib import contextmanager
-from distutils.version import LooseVersion
from urllib.parse import quote
from urllib.parse import SplitResult
from urllib.parse import unquote
-from urllib.parse import urljoin # pylint: disable=unused-import
+from urllib.parse import urljoin # noqa: F401
from urllib.parse import urlparse
from urllib.parse import urlsplit
from urllib.parse import urlunsplit
-from urllib.request import pathname2url # pylint: disable=unused-import
+from urllib.request import pathname2url # noqa: F401
+from packaging.version import Version
from tornado.httpclient import AsyncHTTPClient
from tornado.httpclient import HTTPClient
from tornado.httpclient import HTTPRequest
@@ -143,7 +143,7 @@
Users on dev branches are responsible for keeping their own packages up to
date.
"""
try:
- return LooseVersion(v) >= LooseVersion(check)
+ return Version(v) >= Version(check)
except TypeError:
return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server.egg-info/PKG-INFO
new/jupyter_server-1.13.3/jupyter_server.egg-info/PKG-INFO
--- old/jupyter_server-1.13.1/jupyter_server.egg-info/PKG-INFO 2021-12-09
20:36:35.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server.egg-info/PKG-INFO 2022-01-14
19:52:27.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter-server
-Version: 1.13.1
+Version: 1.13.3
Summary: The backend???i.e. core services, APIs, and REST endpoints???to
Jupyter web applications.
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -15,18 +15,18 @@
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
-Requires-Python: >=3.6
+Classifier: Programming Language :: Python :: 3.10
+Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: test
License-File: COPYING.md
# Jupyter Server
-[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amaster++)
+[](https://github.com/jupyter-server/jupyter_server/actions?query=branch%3Amain++)
[](http://jupyter-server.readthedocs.io/en/latest/?badge=latest)
The Jupyter Server provides the backend (i.e. the core services, APIs, and
REST endpoints) for Jupyter web applications like Jupyter notebook, JupyterLab,
and Voila.
@@ -46,9 +46,9 @@
If Jupyter Server is a dependency of your project/application, it is important
that you pin it to a version that works for your application. Currently,
Jupyter Server only has minor and patch versions. Different minor versions
likely include API-changes while patch versions do not change API.
-When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the master branch will be
bumped to the next minor version number. That way, the master branch always
reflects the latest un-released version.
+When a new minor version is released on PyPI, a branch for that version will
be created in this repository, and the version of the main branch will be
bumped to the next minor version number. That way, the main branch always
reflects the latest un-released version.
-To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/master/CHANGELOG.md).
+To see the changes between releases, checkout the
[CHANGELOG](https://github.com/jupyter/jupyter_server/blob/main/CHANGELOG.md).
## Usage - Running Jupyter Server
@@ -60,7 +60,7 @@
### Testing
-See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/master/CONTRIBUTING.rst#running-tests).
+See
[CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/main/CONTRIBUTING.rst#running-tests).
## Contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_server-1.13.1/jupyter_server.egg-info/requires.txt
new/jupyter_server-1.13.3/jupyter_server.egg-info/requires.txt
--- old/jupyter_server-1.13.1/jupyter_server.egg-info/requires.txt
2021-12-09 20:36:35.000000000 +0100
+++ new/jupyter_server-1.13.3/jupyter_server.egg-info/requires.txt
2022-01-14 19:52:27.000000000 +0100
@@ -3,7 +3,7 @@
pyzmq>=17
argon2-cffi
ipython_genutils
-traitlets>=4.2.1
+traitlets>=5
jupyter_core>=4.6.0
jupyter_client>=6.1.1
nbformat
@@ -13,6 +13,7 @@
prometheus_client
anyio<4,>=3.1.0
websocket-client
+packaging
[test]
coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/pyproject.toml
new/jupyter_server-1.13.3/pyproject.toml
--- old/jupyter_server-1.13.1/pyproject.toml 2021-12-09 20:36:21.000000000
+0100
+++ new/jupyter_server-1.13.3/pyproject.toml 2022-01-14 19:52:13.000000000
+0100
@@ -1,5 +1,5 @@
[build-system]
-requires = ["jupyter_packaging~=0.9,<2"]
+requires = ["jupyter_packaging~=0.9"]
build-backend = "jupyter_packaging.build_api"
[tool.jupyter-packaging.builder]
@@ -18,7 +18,7 @@
skip = ["check-links"]
[tool.tbump.version]
-current = "1.13.1"
+current = "1.13.3"
regex = '''
(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
((?P<channel>a|b|rc|.dev)(?P<release>\d+))?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_server-1.13.1/setup.cfg
new/jupyter_server-1.13.3/setup.cfg
--- old/jupyter_server-1.13.1/setup.cfg 2021-12-09 20:36:35.956748700 +0100
+++ new/jupyter_server-1.13.3/setup.cfg 2022-01-14 19:52:27.960275700 +0100
@@ -4,7 +4,7 @@
description = The backend???i.e. core services, APIs, and REST endpoints???to
Jupyter web applications.
long_description = file: README.md
long_description_content_type = text/markdown
-license_file = COPYING.md
+license_files = COPYING.md
author = Jupyter Development Team
author_email = [email protected]
url = https://jupyter.org
@@ -16,23 +16,23 @@
Intended Audience :: Science/Research
License :: OSI Approved :: BSD License
Programming Language :: Python
- Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
[options]
zip_safe = False
include_package_data = True
packages = find:
-python_requires = >=3.6
+python_requires = >=3.7
install_requires =
jinja2
tornado>=6.1.0
pyzmq>=17
argon2-cffi
ipython_genutils
- traitlets>=4.2.1
+ traitlets>=5
jupyter_core>=4.6.0
jupyter_client>=6.1.1
nbformat
@@ -42,6 +42,7 @@
prometheus_client
anyio>=3.1.0,<4
websocket-client
+ packaging
[options.extras_require]
test =
@@ -62,7 +63,7 @@
exclude = ['docs*', 'examples*']
[flake8]
-ignore = E, C, W, F401, F403, F811, F841, E402, I100, I101, D400
+ignore = E, C, W, F403, F811, F841, E402, I100, I101, D400
builtins = c, get_config
exclude =
.cache,