From 4cbd0121fe02e8c3c8d591f8b0e0336cda9e1986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 26 Sep 2023 12:31:11 -0300 Subject: [PATCH 01/27] python3-send2trash: update to 1.8.2. --- srcpkgs/python3-send2trash/template | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/srcpkgs/python3-send2trash/template b/srcpkgs/python3-send2trash/template index a77d479475365..34c635ff1e178 100644 --- a/srcpkgs/python3-send2trash/template +++ b/srcpkgs/python3-send2trash/template @@ -1,17 +1,25 @@ # Template file for 'python3-send2trash' pkgname=python3-send2trash -version=1.8.0 -revision=3 -build_style=python3-module -hostmakedepends="python3-setuptools python3-pytest" +version=1.8.2 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel" depends="python3" +checkdepends="python3-pytest" short_desc="Python3 library to natively send files to trash" maintainer="Eloi Torrents " license="BSD-3-Clause" homepage="https://github.com/hsoft/send2trash" -distfiles="https://github.com/hsoft/send2trash/archive/${version}.tar.gz" -checksum=937b038abd9f1e7b8c5d7a116be5dc4663beb71df74dcccffe56cacf992c7a9c -make_check=ci-skip # fails "test_trash_topdir_failure" due to root +changelog="https://raw.githubusercontent.com/arsenetar/send2trash/master/CHANGES.rst" +distfiles="${PYPI_SITE}/S/Send2Trash/Send2Trash-${version}.tar.gz" +checksum=c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312 + +if [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then + # this test fails on CI (due to root) + make_check_args=" + --deselect=tests/test_plat_other.py::test_trash_topdir_failure + " +fi post_install() { vlicense LICENSE From 52116a2379442e2afae1efdf5519039bcceeb113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 26 Sep 2023 10:30:14 -0300 Subject: [PATCH 02/27] python3-comm: update to 0.1.4. --- srcpkgs/python3-comm/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-comm/template b/srcpkgs/python3-comm/template index 2e07727855022..13ad0328ee940 100644 --- a/srcpkgs/python3-comm/template +++ b/srcpkgs/python3-comm/template @@ -1,7 +1,7 @@ # Template file for 'python3-comm' pkgname=python3-comm -version=0.1.3 -revision=2 +version=0.1.4 +revision=1 build_style=python3-pep517 hostmakedepends="hatchling" depends="python3-traitlets" @@ -12,7 +12,7 @@ license="BSD-3-Clause" homepage="https://github.com/ipython/comm/" changelog="https://raw.githubusercontent.com/ipython/comm/main/CHANGELOG.md" distfiles="https://github.com/ipython/comm/archive/refs/tags/v$version.tar.gz" -checksum=9bdea650a6194bf1628b17c2668bf74bf5295c87a7528a8aa4fe4472904b26f2 +checksum=4b7c0b56439d6835c1f4abf31b81c931fd6a6eba9e38f11f74ac80d1a720bed7 post_install() { vlicense LICENSE From c716956c18ca3044c1f40f059d70fb4e8b03d2cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 26 Sep 2023 10:30:19 -0300 Subject: [PATCH 03/27] python3-traitlets: update to 5.11.2. --- srcpkgs/python3-traitlets/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/python3-traitlets/template b/srcpkgs/python3-traitlets/template index 0949220e9ae0b..f48119dadca32 100644 --- a/srcpkgs/python3-traitlets/template +++ b/srcpkgs/python3-traitlets/template @@ -1,7 +1,7 @@ # Template file for 'python3-traitlets' pkgname=python3-traitlets -version=5.10.0 -revision=2 +version=5.11.2 +revision=1 build_style=python3-pep517 hostmakedepends="hatchling" depends="python3" @@ -10,9 +10,9 @@ short_desc="Configuration system for Python applications" maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/ipython/traitlets" -changelog="https://github.com/ipython/traitlets/raw/main/CHANGELOG.md" +changelog="https://raw.githubusercontent.com/ipython/traitlets/main/CHANGELOG.md" distfiles="${PYPI_SITE}/t/traitlets/traitlets-${version}.tar.gz" -checksum=f584ea209240466e66e91f3c81aa7d004ba4cf794990b0c775938a1544217cd1 +checksum=7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e post_install() { vlicense LICENSE From 69dec4368791880838dd0c7c46e5191b17ec4907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 29 Sep 2023 22:50:26 -0300 Subject: [PATCH 04/27] python3-QtPy: update to 2.4.0, adopt. --- srcpkgs/python3-QtPy/patches/fix-test.patch | 11 +++++++ srcpkgs/python3-QtPy/template | 36 +++++++++++---------- 2 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 srcpkgs/python3-QtPy/patches/fix-test.patch diff --git a/srcpkgs/python3-QtPy/patches/fix-test.patch b/srcpkgs/python3-QtPy/patches/fix-test.patch new file mode 100644 index 0000000000000..23987e260c928 --- /dev/null +++ b/srcpkgs/python3-QtPy/patches/fix-test.patch @@ -0,0 +1,11 @@ +--- a/qtpy/tests/test_main.py 2023-08-29 13:07:50.000000000 -0300 ++++ b/qtpy/tests/test_main.py 2023-09-29 22:04:52.945280612 -0300 +@@ -115,7 +115,7 @@ + pytest.importorskip(mod, reason=f"Requires {api}") + # clean env + env = os.environ.copy() +- for key in ("QT_API", "USE_QT_API"): ++ for key in ("QT_API", "USE_QT_API", "FORCE_QT_API"): + if key in env: + del env[key] + cmd = f""" diff --git a/srcpkgs/python3-QtPy/template b/srcpkgs/python3-QtPy/template index 10563bde6b23d..4f545f6a6e4df 100644 --- a/srcpkgs/python3-QtPy/template +++ b/srcpkgs/python3-QtPy/template @@ -1,36 +1,38 @@ # Template file for 'python3-QtPy' pkgname=python3-QtPy -version=2.3.1 +version=2.4.0 revision=1 build_style=python3-pep517 hostmakedepends="python3-setuptools python3-wheel" # depends on either of PyQt5, PyQt6 depends="python3" -# Packages common to both PyQt5 and PyQt6 -_qtcommon="python3-PyQt5-sql python3-PyQt5-svg python3-PyQt5-webengine - python3-PyQt5-websockets python3-PyQt5-multimedia python3-PyQt5-tools" -checkdepends="python3-pytest python3-mock python3-pyqt6-declarative - python3-pyqt6-widgets python3-pyqt6-gui python3-pyqt6-opengl-widgets - python3-pyqt6-printsupport python3-pyqt6-network python3-pyqt6-devel-tools - python3-pyqt6-test python3-pyqt6-webchannel python3-pyqt6-xml - qt6-plugin-sqlite python3-PyQt5-quick python3-PyQt5-xmlpatterns - python3-PyQt5-location python3-PyQt5-opengl qt5-plugin-sqlite ${_qtcommon} - ${_qtcommon//PyQt5/pyqt6}" +# check dependencies common to both PyQt5 and PyQt6 +_qtcommon=":connectivity :multimedia :sensors :serialport :sql :svg :tools + :webchannel :webengine :websockets" +# check dependencies only for PyQt5 +_qt5check="${_qtcommon} :location :opengl :quick :x11extras :xmlpatterns + qt5-plugin-sqlite" +# check dependencies only for PyQt6 +_qt6check="${_qtcommon} :dbus :declarative :devel-tools :gui :network + :opengl-widgets :printsupport :quick3d :remoteobjects :test :widgets :xml + qt6-plugin-sqlite" +checkdepends="python3-pytest-cov python3-pytest-qt font-liberation-ttf + ${_qt5check//:/python3-PyQt5-} ${_qt6check//:/python3-pyqt6-}" short_desc="Abstraction layer on top of various Python Qt bindings" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="MIT" homepage="https://github.com/spyder-ide/qtpy" +changelog="https://raw.githubusercontent.com/spyder-ide/qtpy/master/CHANGELOG.md" distfiles="${PYPI_SITE}/Q/QtPy/QtPy-${version}.tar.gz" -checksum=a8c74982d6d172ce124d80cafd39653df78989683f760f2281ba91a6e7b9de8b +checksum=db2d508167aa6106781565c8da5c6f1487debacba33519cedc35fa8997d424d4 do_check() { local qtapi - rm -f pytest.ini - for qtapi in pyqt5 pyqt6; do - CI=1 USE_QT_API="${qtapi}" QT_API="${qtapi}" \ - python3 -m pytest -k 'not test_qttexttospeech' qtpy/tests + msg_normal "... running pytest with QT_API=$qtapi\n" + FORCE_QT_API=1 QT_API="${qtapi}" \ + python3 -m pytest -k 'not test_qttexttospeech' done } From 05448d241d58b1c1ba6fcc5c007b4b1657ece05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sat, 7 Oct 2023 14:23:56 -0300 Subject: [PATCH 05/27] python3-dateutil: fix deprecation warning --- .../avoid-deprecated-utcfromtimestamp.patch | 25 +++++++++++++++++++ srcpkgs/python3-dateutil/template | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-dateutil/patches/avoid-deprecated-utcfromtimestamp.patch diff --git a/srcpkgs/python3-dateutil/patches/avoid-deprecated-utcfromtimestamp.patch b/srcpkgs/python3-dateutil/patches/avoid-deprecated-utcfromtimestamp.patch new file mode 100644 index 0000000000000..9ac4acc89947d --- /dev/null +++ b/srcpkgs/python3-dateutil/patches/avoid-deprecated-utcfromtimestamp.patch @@ -0,0 +1,25 @@ +Taken from https://github.com/dateutil/dateutil/pull/1285 + +From f2293200747fb03d56c6c5997bfebeabe703576f Mon Sep 17 00:00:00 2001 +From: Thomas Grainger +Date: Fri, 2 Jun 2023 14:06:41 +0100 +Subject: [PATCH 1/2] avoid deprecated utcfromtimestamp + +Fixes #1284 +--- + src/dateutil/tz/tz.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dateutil/tz/tz.py b/src/dateutil/tz/tz.py +index c67f56d46..617591446 100644 +--- a/dateutil/tz/tz.py ++++ b/dateutil/tz/tz.py +@@ -34,7 +34,7 @@ + from warnings import warn + + ZERO = datetime.timedelta(0) +-EPOCH = datetime.datetime.utcfromtimestamp(0) ++EPOCH = datetime.datetime(1970, 1, 1, 0, 0) + EPOCHORDINAL = EPOCH.toordinal() + + diff --git a/srcpkgs/python3-dateutil/template b/srcpkgs/python3-dateutil/template index 1d86829608a45..c5b2ad5b03e6e 100644 --- a/srcpkgs/python3-dateutil/template +++ b/srcpkgs/python3-dateutil/template @@ -1,7 +1,7 @@ # Template file for 'python3-dateutil' pkgname=python3-dateutil version=2.8.2 -revision=3 +revision=4 build_style=python3-module hostmakedepends="python3-setuptools_scm" depends="python3-six tzdata" From 8dd5ff13bea0c6528b728ad5f6f86f4a6c94aed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sat, 7 Oct 2023 22:11:00 -0300 Subject: [PATCH 06/27] python3-tornado: update to 6.3.3. --- .../patches/3288-utcnow-deprecation.patch | 378 ++++++++++++++++++ .../patches/3335-utcnow-deprecation.patch | 81 ++++ srcpkgs/python3-tornado/template | 6 +- 3 files changed, 462 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/python3-tornado/patches/3288-utcnow-deprecation.patch create mode 100644 srcpkgs/python3-tornado/patches/3335-utcnow-deprecation.patch diff --git a/srcpkgs/python3-tornado/patches/3288-utcnow-deprecation.patch b/srcpkgs/python3-tornado/patches/3288-utcnow-deprecation.patch new file mode 100644 index 0000000000000..19e7ff9714e5d --- /dev/null +++ b/srcpkgs/python3-tornado/patches/3288-utcnow-deprecation.patch @@ -0,0 +1,378 @@ +Taken from https://github.com/tornadoweb/tornado/pull/3288 + +From 4d4d80c1d076dcb4e051c969ae4b66557d3856b8 Mon Sep 17 00:00:00 2001 +From: Ben Darnell +Date: Thu, 8 Jun 2023 22:52:19 -0400 +Subject: [PATCH] *: Adapt to deprecation of datetime utc methods + +Python 3.12 deprecates the utcnow and utcfromtimestamp methods and +discourages the use of naive datetimes to represent UTC. This was +previously the main way that Tornado used datetimes (since it was +the only option available in Python 2 before the introduction +of datetime.timezone.utc in Python 3.2). + +- httpclient_test: Test-only change to test that both kinds of datetimes + are supported in If-Modified-Since (this just calls + httputil.format_timestamp) +- httputil: No functional changes, but format_timestamp's + support for both naive and aware datetimes is now tested. +- locale: format_timestamp now supports aware datetimes (in + addition to the existing support for naive datetimes). +- web: Cookie expirations internally use aware datetimes. + StaticFileHandler.get_modified_time now supports both and the + standard implementation returns aware. + +It feels fragile that "naive" and "aware" datetimes are not distinct +types but subject to data-dependent behavior. This change uses +"aware" datetimes throughout Tornado, but some operations (comparisons +and subtraction) fail with mixed datetime types and if I missed any +in this change may cause errors if naive datetimes were used (where +previously naive datetimes would have been required). But that's +apparently the API we have to work with. +--- + tornado/httputil.py | 3 +- + tornado/locale.py | 12 +++-- + tornado/test/httpclient_test.py | 12 ++++- + tornado/test/httputil_test.py | 26 +++++++++- + tornado/test/locale_test.py | 88 ++++++++++++++++++--------------- + tornado/test/web_test.py | 25 +++++----- + tornado/web.py | 28 +++++++---- + 7 files changed, 126 insertions(+), 68 deletions(-) + +diff --git a/tornado/httputil.py b/tornado/httputil.py +index 9c341d47cc..b21d8046c4 100644 +--- a/tornado/httputil.py ++++ b/tornado/httputil.py +@@ -856,7 +856,8 @@ def format_timestamp( + + The argument may be a numeric timestamp as returned by `time.time`, + a time tuple as returned by `time.gmtime`, or a `datetime.datetime` +- object. ++ object. Naive `datetime.datetime` objects are assumed to represent ++ UTC; aware objects are converted to UTC before formatting. + + >>> format_timestamp(1359312200) + 'Sun, 27 Jan 2013 18:43:20 GMT' +diff --git a/tornado/locale.py b/tornado/locale.py +index 55072af28d..c5526703b1 100644 +--- a/tornado/locale.py ++++ b/tornado/locale.py +@@ -333,7 +333,7 @@ def format_date( + shorter: bool = False, + full_format: bool = False, + ) -> str: +- """Formats the given date (which should be GMT). ++ """Formats the given date. + + By default, we return a relative time (e.g., "2 minutes ago"). You + can return an absolute date string with ``relative=False``. +@@ -343,10 +343,16 @@ def format_date( + + This method is primarily intended for dates in the past. + For dates in the future, we fall back to full format. ++ ++ .. versionchanged:: 6.4 ++ Aware `datetime.datetime` objects are now supported (naive ++ datetimes are still assumed to be UTC). + """ + if isinstance(date, (int, float)): +- date = datetime.datetime.utcfromtimestamp(date) +- now = datetime.datetime.utcnow() ++ date = datetime.datetime.fromtimestamp(date, datetime.timezone.utc) ++ if date.tzinfo is None: ++ date = date.replace(tzinfo=datetime.timezone.utc) ++ now = datetime.datetime.now(datetime.timezone.utc) + if date > now: + if relative and (date - now).seconds < 60: + # Due to click skew, things are some things slightly +diff --git a/tornado/test/httpclient_test.py b/tornado/test/httpclient_test.py +index a71ec0afb6..a41040e64a 100644 +--- a/tornado/test/httpclient_test.py ++++ b/tornado/test/httpclient_test.py +@@ -28,7 +28,7 @@ + from tornado.log import gen_log, app_log + from tornado import netutil + from tornado.testing import AsyncHTTPTestCase, bind_unused_port, gen_test, ExpectLog +-from tornado.test.util import skipOnTravis ++from tornado.test.util import skipOnTravis, ignore_deprecation + from tornado.web import Application, RequestHandler, url + from tornado.httputil import format_timestamp, HTTPHeaders + +@@ -887,7 +887,15 @@ def test_body_setter(self): + self.assertEqual(request.body, utf8("foo")) + + def test_if_modified_since(self): +- http_date = datetime.datetime.utcnow() ++ http_date = datetime.datetime.now(datetime.timezone.utc) ++ request = HTTPRequest("http://example.com", if_modified_since=http_date) ++ self.assertEqual( ++ request.headers, {"If-Modified-Since": format_timestamp(http_date)} ++ ) ++ ++ def test_if_modified_since_naive_deprecated(self): ++ with ignore_deprecation(): ++ http_date = datetime.datetime.utcnow() + request = HTTPRequest("http://example.com", if_modified_since=http_date) + self.assertEqual( + request.headers, {"If-Modified-Since": format_timestamp(http_date)} +diff --git a/tornado/test/httputil_test.py b/tornado/test/httputil_test.py +index 8424491d87..aa9b6ee253 100644 +--- a/tornado/test/httputil_test.py ++++ b/tornado/test/httputil_test.py +@@ -13,6 +13,7 @@ + from tornado.escape import utf8, native_str + from tornado.log import gen_log + from tornado.testing import ExpectLog ++from tornado.test.util import ignore_deprecation + + import copy + import datetime +@@ -412,8 +413,29 @@ def test_time_tuple(self): + self.assertEqual(9, len(tup)) + self.check(tup) + +- def test_datetime(self): +- self.check(datetime.datetime.utcfromtimestamp(self.TIMESTAMP)) ++ def test_utc_naive_datetime(self): ++ self.check( ++ datetime.datetime.fromtimestamp( ++ self.TIMESTAMP, datetime.timezone.utc ++ ).replace(tzinfo=None) ++ ) ++ ++ def test_utc_naive_datetime_deprecated(self): ++ with ignore_deprecation(): ++ self.check(datetime.datetime.utcfromtimestamp(self.TIMESTAMP)) ++ ++ def test_utc_aware_datetime(self): ++ self.check( ++ datetime.datetime.fromtimestamp(self.TIMESTAMP, datetime.timezone.utc) ++ ) ++ ++ def test_other_aware_datetime(self): ++ # Other timezones are ignored; the timezone is always printed as GMT ++ self.check( ++ datetime.datetime.fromtimestamp( ++ self.TIMESTAMP, datetime.timezone(datetime.timedelta(hours=-4)) ++ ) ++ ) + + + # HTTPServerRequest is mainly tested incidentally to the server itself, +diff --git a/tornado/test/locale_test.py b/tornado/test/locale_test.py +index ee74cb05e8..a2e0872b8f 100644 +--- a/tornado/test/locale_test.py ++++ b/tornado/test/locale_test.py +@@ -91,45 +91,55 @@ def test_format_date(self): + locale.format_date(date, full_format=True), "April 28, 2013 at 6:35 pm" + ) + +- now = datetime.datetime.utcnow() +- +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(seconds=2), full_format=False), +- "2 seconds ago", +- ) +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(minutes=2), full_format=False), +- "2 minutes ago", +- ) +- self.assertEqual( +- locale.format_date(now - datetime.timedelta(hours=2), full_format=False), +- "2 hours ago", +- ) +- +- self.assertEqual( +- locale.format_date( +- now - datetime.timedelta(days=1), full_format=False, shorter=True +- ), +- "yesterday", +- ) +- +- date = now - datetime.timedelta(days=2) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- locale._weekdays[date.weekday()], +- ) +- +- date = now - datetime.timedelta(days=300) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- "%s %d" % (locale._months[date.month - 1], date.day), +- ) +- +- date = now - datetime.timedelta(days=500) +- self.assertEqual( +- locale.format_date(date, full_format=False, shorter=True), +- "%s %d, %d" % (locale._months[date.month - 1], date.day, date.year), +- ) ++ aware_dt = datetime.datetime.now(datetime.timezone.utc) ++ naive_dt = aware_dt.replace(tzinfo=None) ++ for name, now in {"aware": aware_dt, "naive": naive_dt}.items(): ++ with self.subTest(dt=name): ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(seconds=2), full_format=False ++ ), ++ "2 seconds ago", ++ ) ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(minutes=2), full_format=False ++ ), ++ "2 minutes ago", ++ ) ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(hours=2), full_format=False ++ ), ++ "2 hours ago", ++ ) ++ ++ self.assertEqual( ++ locale.format_date( ++ now - datetime.timedelta(days=1), ++ full_format=False, ++ shorter=True, ++ ), ++ "yesterday", ++ ) ++ ++ date = now - datetime.timedelta(days=2) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ locale._weekdays[date.weekday()], ++ ) ++ ++ date = now - datetime.timedelta(days=300) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ "%s %d" % (locale._months[date.month - 1], date.day), ++ ) ++ ++ date = now - datetime.timedelta(days=500) ++ self.assertEqual( ++ locale.format_date(date, full_format=False, shorter=True), ++ "%s %d, %d" % (locale._months[date.month - 1], date.day, date.year), ++ ) + + def test_friendly_number(self): + locale = tornado.locale.get("en_US") +diff --git a/tornado/test/web_test.py b/tornado/test/web_test.py +index 56900d9a00..fb9c3417b9 100644 +--- a/tornado/test/web_test.py ++++ b/tornado/test/web_test.py +@@ -404,10 +404,10 @@ def test_set_cookie_expires_days(self): + match = re.match("foo=bar; expires=(?P.+); Path=/", header) + assert match is not None + +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=10) +- parsed = email.utils.parsedate(match.groupdict()["expires"]) +- assert parsed is not None +- header_expires = datetime.datetime(*parsed[:6]) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=10 ++ ) ++ header_expires = email.utils.parsedate_to_datetime(match.groupdict()["expires"]) + self.assertTrue(abs((expires - header_expires).total_seconds()) < 10) + + def test_set_cookie_false_flags(self): +@@ -1697,11 +1697,10 @@ def get(self): + + def test_date_header(self): + response = self.fetch("/") +- parsed = email.utils.parsedate(response.headers["Date"]) +- assert parsed is not None +- header_date = datetime.datetime(*parsed[:6]) ++ header_date = email.utils.parsedate_to_datetime(response.headers["Date"]) + self.assertTrue( +- header_date - datetime.datetime.utcnow() < datetime.timedelta(seconds=2) ++ header_date - datetime.datetime.now(datetime.timezone.utc) ++ < datetime.timedelta(seconds=2) + ) + + +@@ -3010,10 +3009,12 @@ def test_xsrf_httponly(self): + match = re.match(".*; expires=(?P.+);.*", header) + assert match is not None + +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=2) +- parsed = email.utils.parsedate(match.groupdict()["expires"]) +- assert parsed is not None +- header_expires = datetime.datetime(*parsed[:6]) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=2 ++ ) ++ header_expires = email.utils.parsedate_to_datetime(match.groupdict()["expires"]) ++ if header_expires.tzinfo is None: ++ header_expires = header_expires.replace(tzinfo=datetime.timezone.utc) + self.assertTrue(abs((expires - header_expires).total_seconds()) < 10) + + +diff --git a/tornado/web.py b/tornado/web.py +index 565140493e..439e02c47b 100644 +--- a/tornado/web.py ++++ b/tornado/web.py +@@ -647,7 +647,9 @@ def set_cookie( + if domain: + morsel["domain"] = domain + if expires_days is not None and not expires: +- expires = datetime.datetime.utcnow() + datetime.timedelta(days=expires_days) ++ expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta( ++ days=expires_days ++ ) + if expires: + morsel["expires"] = httputil.format_timestamp(expires) + if path: +@@ -698,7 +700,9 @@ def clear_cookie(self, name: str, **kwargs: Any) -> None: + raise TypeError( + f"clear_cookie() got an unexpected keyword argument '{excluded_arg}'" + ) +- expires = datetime.datetime.utcnow() - datetime.timedelta(days=365) ++ expires = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta( ++ days=365 ++ ) + self.set_cookie(name, value="", expires=expires, **kwargs) + + def clear_all_cookies(self, **kwargs: Any) -> None: +@@ -2812,12 +2816,12 @@ def should_return_304(self) -> bool: + # content has not been modified + ims_value = self.request.headers.get("If-Modified-Since") + if ims_value is not None: +- date_tuple = email.utils.parsedate(ims_value) +- if date_tuple is not None: +- if_since = datetime.datetime(*date_tuple[:6]) +- assert self.modified is not None +- if if_since >= self.modified: +- return True ++ if_since = email.utils.parsedate_to_datetime(ims_value) ++ if if_since.tzinfo is None: ++ if_since = if_since.replace(tzinfo=datetime.timezone.utc) ++ assert self.modified is not None ++ if if_since >= self.modified: ++ return True + + return False + +@@ -2981,6 +2985,10 @@ def get_modified_time(self) -> Optional[datetime.datetime]: + object or None. + + .. versionadded:: 3.1 ++ ++ .. versionchanged:: 6.4 ++ Now returns an aware datetime object instead of a naive one. ++ Subclasses that override this method may return either kind. + """ + stat_result = self._stat() + # NOTE: Historically, this used stat_result[stat.ST_MTIME], +@@ -2991,7 +2999,9 @@ def get_modified_time(self) -> Optional[datetime.datetime]: + # consistency with the past (and because we have a unit test + # that relies on this), we truncate the float here, although + # I'm not sure that's the right thing to do. +- modified = datetime.datetime.utcfromtimestamp(int(stat_result.st_mtime)) ++ modified = datetime.datetime.fromtimestamp( ++ int(stat_result.st_mtime), datetime.timezone.utc ++ ) + return modified + + def get_content_type(self) -> str: diff --git a/srcpkgs/python3-tornado/patches/3335-utcnow-deprecation.patch b/srcpkgs/python3-tornado/patches/3335-utcnow-deprecation.patch new file mode 100644 index 0000000000000..23c210d12f689 --- /dev/null +++ b/srcpkgs/python3-tornado/patches/3335-utcnow-deprecation.patch @@ -0,0 +1,81 @@ +Taken from https://github.com/tornadoweb/tornado/pull/3335 + +From 0bfca3f2d72a0c6e5d3ba17caac88a79e7b4e0dd Mon Sep 17 00:00:00 2001 +From: Thomas Grainger +Date: Tue, 3 Oct 2023 15:08:08 +0100 +Subject: [PATCH] remove calls to utcnow and utcfromtimestamp + +--- + demos/blog/templates/feed.xml | 2 +- + demos/s3server/s3server.py | 16 +++++++++++----- + tornado/web.py | 3 ++- + 3 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/demos/blog/templates/feed.xml b/demos/blog/templates/feed.xml +index a98826c8d3..4a4a252f60 100644 +--- a/demos/blog/templates/feed.xml ++++ b/demos/blog/templates/feed.xml +@@ -5,7 +5,7 @@ + {% if len(entries) > 0 %} + {{ max(e.updated for e in entries).strftime(date_format) }} + {% else %} +- {{ datetime.datetime.utcnow().strftime(date_format) }} ++ {{ datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).strftime(date_format) }} + {% end %} + http://{{ request.host }}/ + +diff --git a/demos/s3server/s3server.py b/demos/s3server/s3server.py +index 5c5e6af2ba..104a7c8f81 100644 +--- a/demos/s3server/s3server.py ++++ b/demos/s3server/s3server.py +@@ -138,7 +138,9 @@ def get(self): + buckets.append( + { + "Name": name, +- "CreationDate": datetime.datetime.utcfromtimestamp(info.st_ctime), ++ "CreationDate": datetime.datetime.fromtimestamp( ++ info.st_ctime, datetime.timezone.utc ++ ).replace(tzinfo=None), + } + ) + self.render_xml({"ListAllMyBucketsResult": {"Buckets": {"Bucket": buckets}}}) +@@ -183,9 +185,10 @@ def get(self, bucket_name): + info = os.stat(object_path) + c.update( + { +- "LastModified": datetime.datetime.utcfromtimestamp( +- info.st_mtime +- ), ++ "LastModified": datetime.datetime.fromtimestamp( ++ info.st_mtime, ++ datetime.timezone.utc, ++ ).replace(tzinfo=None), + "Size": info.st_size, + } + ) +@@ -231,7 +234,10 @@ def get(self, bucket, object_name): + info = os.stat(path) + self.set_header("Content-Type", "application/unknown") + self.set_header( +- "Last-Modified", datetime.datetime.utcfromtimestamp(info.st_mtime) ++ "Last-Modified", ++ datetime.datetime.fromtimestamp( ++ info.st_mtime, datetime.timezone.utc ++ ).replace(tzinfo=None), + ) + with open(path, "rb") as object_file: + self.finish(object_file.read()) +diff --git a/tornado/web.py b/tornado/web.py +index 333f736808..4416e2013e 100644 +--- a/tornado/web.py ++++ b/tornado/web.py +@@ -2797,7 +2797,8 @@ def set_headers(self) -> None: + if cache_time > 0: + self.set_header( + "Expires", +- datetime.datetime.utcnow() + datetime.timedelta(seconds=cache_time), ++ datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None) ++ + datetime.timedelta(seconds=cache_time), + ) + self.set_header("Cache-Control", "max-age=" + str(cache_time)) + diff --git a/srcpkgs/python3-tornado/template b/srcpkgs/python3-tornado/template index 103c4cc4f099e..65bc0e55ac83e 100644 --- a/srcpkgs/python3-tornado/template +++ b/srcpkgs/python3-tornado/template @@ -1,7 +1,7 @@ # Template file for 'python3-tornado' pkgname=python3-tornado -version=6.3.2 -revision=2 +version=6.3.3 +revision=1 build_style=python3-pep517 hostmakedepends="python3-setuptools python3-wheel" makedepends="python3-devel" @@ -13,7 +13,7 @@ license="Apache-2.0" homepage="http://www.tornadoweb.org/" changelog="https://www.tornadoweb.org/en/stable/releases.html" distfiles="${PYPI_SITE}/t/tornado/tornado-${version}.tar.gz" -checksum=4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba +checksum=e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe do_check() { # There is one instance of test_bind_source_ip (the one for From f1db3cd0361b563655dec6948af499a4126c67fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 1 May 2023 21:17:12 -0300 Subject: [PATCH 07/27] python3-jupyter_core: update to 5.3.1, adopt. --- .../patches/platform_dirs_true.patch | 24 +++++++++++++++++ srcpkgs/python3-jupyter_core/template | 26 +++++++++++++------ srcpkgs/python3-jupyter_core/update | 3 +++ 3 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 srcpkgs/python3-jupyter_core/patches/platform_dirs_true.patch diff --git a/srcpkgs/python3-jupyter_core/patches/platform_dirs_true.patch b/srcpkgs/python3-jupyter_core/patches/platform_dirs_true.patch new file mode 100644 index 0000000000000..7f8a56d62bd96 --- /dev/null +++ b/srcpkgs/python3-jupyter_core/patches/platform_dirs_true.patch @@ -0,0 +1,24 @@ +Default to using platformdirs + +--- a/jupyter_core/paths.py 2020-02-01 21:00:00.000000000 -0300 ++++ b/jupyter_core/paths.py 2023-06-04 00:49:36.985844333 -0300 +@@ -53,7 +53,7 @@ + We plan for this to default to False in jupyter_core version 5 and to True + in jupyter_core version 6. + """ +- return envset("JUPYTER_PLATFORM_DIRS", False) # type:ignore[return-value] ++ return envset("JUPYTER_PLATFORM_DIRS", True) # type:ignore[return-value] + + + def get_home_dir() -> str: +--- a/jupyter_core/tests/test_paths.py 2020-02-01 21:00:00.000000000 -0300 ++++ b/jupyter_core/tests/test_paths.py 2023-06-04 00:49:05.967219753 -0300 +@@ -86,7 +86,7 @@ + return os.path.abspath(os.path.realpath(os.path.expanduser(path))) + + +-home_jupyter = realpath("~/.jupyter") ++home_jupyter = realpath("~/.config/jupyter") + + + def test_envset(): diff --git a/srcpkgs/python3-jupyter_core/template b/srcpkgs/python3-jupyter_core/template index 092921c77a5d4..57af2b9eff989 100644 --- a/srcpkgs/python3-jupyter_core/template +++ b/srcpkgs/python3-jupyter_core/template @@ -1,20 +1,30 @@ # Template file for 'python3-jupyter_core' pkgname=python3-jupyter_core -version=5.0.0 -revision=3 +version=5.3.1 +revision=1 build_style=python3-pep517 -hostmakedepends="python3-flit_core hatchling" +hostmakedepends="hatchling" depends="python3-traitlets python3-platformdirs" +checkdepends="$depends python3-pytest python3-pip" short_desc="Jupyter core package" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://jupyter.org" +changelog="https://raw.githubusercontent.com/jupyter/jupyter_core/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyter_core/jupyter_core-${version}.tar.gz" -checksum=4ed68b7c606197c7e344a24b7195eef57898157075a69655a886074b6beb7043 +checksum=5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba conflicts="python-jupyter_core<=4.4.0_3" -# checks create a cycle with python3-jypter_client and python3-ipython_ipykernel -make_check=no + +do_check() { + # Running via PYTHONPATH breaks a few tests so we use a venv + local testdir="${wrksrc}/.xbps-testdir/$(date +%s)" + python3 -m venv --system-site-packages --without-pip "${testdir}" + + local testpy="${testdir}/bin/python3" + "${testpy}" -m installer dist/*.whl + PATH="${testdir}/bin:${PATH}" "${testpy}" -m pytest +} post_install() { - vlicense COPYING.md LICENSE + vlicense LICENSE } diff --git a/srcpkgs/python3-jupyter_core/update b/srcpkgs/python3-jupyter_core/update index 25ef51d109a4f..a42c0d0b9f127 100644 --- a/srcpkgs/python3-jupyter_core/update +++ b/srcpkgs/python3-jupyter_core/update @@ -1 +1,4 @@ ignore="*a* *b* *rc*" +# 5.3.2 breaks jupyter_client +# (https://github.com/jupyter/jupyter_core/pull/362) +ignore+=" 5.3.2" From 123a9bbcb0b39409186fb82d01e4c743ad8e7c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 25 May 2023 18:39:23 -0300 Subject: [PATCH 08/27] New package: python3-jupyter_events-0.7.0 --- srcpkgs/python3-jupyter_events/template | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 srcpkgs/python3-jupyter_events/template diff --git a/srcpkgs/python3-jupyter_events/template b/srcpkgs/python3-jupyter_events/template new file mode 100644 index 0000000000000..a2d35ce419788 --- /dev/null +++ b/srcpkgs/python3-jupyter_events/template @@ -0,0 +1,20 @@ +# Template file for 'python3-jupyter_events' +pkgname=python3-jupyter_events +version=0.7.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-jsonschema python3-json-logger python3-yaml python3-traitlets + python3-click python3-rich python3-rfc3339-validator python3-rfc3987" +checkdepends="$depends python3-pytest-asyncio python3-pytest-console-scripts" +short_desc="Configurable event system for Jupyter applications and extensions" +maintainer="Gonzalo Tornaría " +license="BSD-3-Clause" +homepage="https://github.com/jupyter/jupyter_events" +changelog="https://raw.githubusercontent.com/jupyter/jupyter_events/main/CHANGELOG.md" +distfiles="${PYPI_SITE}/j/jupyter_events/jupyter_events-${version}.tar.gz" +checksum=7be27f54b8388c03eefea123a4f79247c5b9381c49fb1cd48615ee191eb12615 + +post_install() { + vlicense LICENSE +} From fbcc08f8ba2072de9af1160cb28edc3539a0bf2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 23 May 2023 23:15:56 -0300 Subject: [PATCH 09/27] python3-jupyter_nbformat: update to 5.9.2, adopt. --- srcpkgs/python3-jupyter_nbformat/template | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/srcpkgs/python3-jupyter_nbformat/template b/srcpkgs/python3-jupyter_nbformat/template index 12c384639fe7f..357d1053e002a 100644 --- a/srcpkgs/python3-jupyter_nbformat/template +++ b/srcpkgs/python3-jupyter_nbformat/template @@ -1,21 +1,21 @@ # Template file for 'python3-jupyter_nbformat' pkgname=python3-jupyter_nbformat -version=5.3.0 -revision=3 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-jsonschema python3-traitlets - python3-ipython_genutils python3-jupyter_core - python3-fastjsonschema" -checkdepends="python3-pytest python3-testpath $depends" +version=5.9.2 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling hatch-nodejs-version" +depends="python3-fastjsonschema python3-jsonschema python3-jupyter_core + python3-traitlets" +checkdepends="$depends python3-pytest python3-testpath python3-pep440" short_desc="Jupyter notebook format" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter/nbformat" +changelog="https://raw.githubusercontent.com/jupyter/nbformat/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/nbformat/nbformat-${version}.tar.gz" -checksum=fcc5ab8cb74e20b19570b5be809e2dba9b82836fd2761a89066ad43394ba29f5 +checksum=5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192 conflicts="python-jupyter_nbformat<=4.4.0_3" post_install() { - vlicense COPYING.md LICENSE + vlicense LICENSE } From 3c6de7dd8cadd519ef41fb7e826461a72cd28972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 24 May 2023 17:54:18 -0300 Subject: [PATCH 10/27] python3-jupyter_widgetsnbextension: update to 4.0.9, adopt. --- .../python3-jupyter_widgetsnbextension/template | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/srcpkgs/python3-jupyter_widgetsnbextension/template b/srcpkgs/python3-jupyter_widgetsnbextension/template index 059756289a09f..6015ea6e8d69a 100644 --- a/srcpkgs/python3-jupyter_widgetsnbextension/template +++ b/srcpkgs/python3-jupyter_widgetsnbextension/template @@ -1,19 +1,16 @@ # Template file for 'python3-jupyter_widgetsnbextension' pkgname=python3-jupyter_widgetsnbextension -version=3.5.1 -revision=5 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-jupyter_notebook" -checkdepends="$depends" +version=4.0.9 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-jupyter_packaging" short_desc="Interactive HTML widgets for Jupyter notebooks" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://pypi.org/project/widgetsnbextension/" distfiles="${PYPI_SITE}/w/widgetsnbextension/widgetsnbextension-${version}.tar.gz" -checksum=079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7 -replaces="python-jupyter_widgetsnbextension-data>=0" -conf_files="/etc/jupyter/nbconfig/notebook.d/widgetsnbextension.json" +checksum=3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385 +make_check=no # Upstream defines no tests post_install() { # /usr/etc is intended for *example configuration* From d9ac4194b8e98ca08f1fce53f19e3beb74f87264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 24 May 2023 13:25:40 -0300 Subject: [PATCH 11/27] python3-jupyterlab_pygments: update to 0.2.2. --- srcpkgs/python3-jupyterlab_pygments/template | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/srcpkgs/python3-jupyterlab_pygments/template b/srcpkgs/python3-jupyterlab_pygments/template index 034398f8cadac..cf382fcb45af2 100644 --- a/srcpkgs/python3-jupyterlab_pygments/template +++ b/srcpkgs/python3-jupyterlab_pygments/template @@ -1,18 +1,22 @@ # Template file for 'python3-jupyterlab_pygments' pkgname=python3-jupyterlab_pygments -version=0.1.2 -revision=4 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=0.2.2 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-jupyter_packaging" depends="python3-Pygments" short_desc="Pygments theme making use of JupyterLab CSS variables" maintainer="dkwo " license="BSD-3-Clause" homepage="https://github.com/jupyterlab/jupyterlab_pygments" distfiles="${PYPI_SITE}/j/jupyterlab_pygments/jupyterlab_pygments-${version}.tar.gz" -checksum=cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146 -# Upstream defines no tests -make_check=no +checksum=7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d +make_check=no # Upstream defines no tests + +post_patch() { + # jupyterlab not really needed for building + vsed -i -e 's|, "jupyterlab~=3.1"||' pyproject.toml +} post_install() { vlicense LICENSE From 97786034f2f7f53c28cab490b7805a1eafccd084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 1 May 2023 23:01:30 -0300 Subject: [PATCH 12/27] New package: python3-pytest-jupyter-0.7.0 --- srcpkgs/python3-pytest-jupyter/template | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 srcpkgs/python3-pytest-jupyter/template diff --git a/srcpkgs/python3-pytest-jupyter/template b/srcpkgs/python3-pytest-jupyter/template new file mode 100644 index 0000000000000..c93ad7314446c --- /dev/null +++ b/srcpkgs/python3-pytest-jupyter/template @@ -0,0 +1,25 @@ +# Template file for 'python3-pytest-jupyter' +pkgname=python3-pytest-jupyter +version=0.7.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-jupyter_core python3-pytest-timeout" +checkdepends="$depends" +short_desc="Pytest plugins for Jupyter libraries and extensions" +maintainer="Gonzalo Tornaría " +license="BSD-3-Clause" +homepage="https://github.com/jupyter-server/pytest-jupyter" +changelog="https://raw.githubusercontent.com/jupyter-server/pytest-jupyter/main/CHANGELOG.md" +distfiles="${PYPI_SITE}/p/pytest_jupyter/pytest_jupyter-${version}.tar.gz" +checksum=6403b7f6f5eaaa5a9faffd73d2ff1097106a7dc5c3204292212487fc9fb71843 +make_check=extended # avoid a circular dependency + +if [ "$XBPS_CHECK_PKGS" = full ]; then + # this would cause a check cycle + checkdepends+=" python3-ipython_ipykernel python3-jupyter_server" +fi + +post_install() { + vlicense LICENSE +} From 7c2c6425ade007551ed344c3dd62ab07a3a2dd0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 1 May 2023 22:43:07 -0300 Subject: [PATCH 13/27] python3-jupyter_client: update to 8.3.1, adopt. --- .../patches/972-utcnow-deprecation.patch | 149 ++++++++++++++++++ srcpkgs/python3-jupyter_client/template | 26 +-- 2 files changed, 165 insertions(+), 10 deletions(-) create mode 100644 srcpkgs/python3-jupyter_client/patches/972-utcnow-deprecation.patch diff --git a/srcpkgs/python3-jupyter_client/patches/972-utcnow-deprecation.patch b/srcpkgs/python3-jupyter_client/patches/972-utcnow-deprecation.patch new file mode 100644 index 0000000000000..47563fbed9ecf --- /dev/null +++ b/srcpkgs/python3-jupyter_client/patches/972-utcnow-deprecation.patch @@ -0,0 +1,149 @@ +Taken from https://github.com/jupyter/jupyter_client/pull/972/ + +From 493366dd9e11736c32d32b1d84f5fa56d9ee74ab Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 11 Sep 2023 06:37:16 +0200 +Subject: [PATCH 1/4] Do not use datetime.utcnow() that is deprecated in Python + 3.12 + +Import session.utcnow() into utils instead of reimplementing it +--- + jupyter_client/session.py | 2 +- + jupyter_client/utils.py | 34 +--------------------------------- + 2 files changed, 2 insertions(+), 34 deletions(-) + +diff --git a/jupyter_client/session.py b/jupyter_client/session.py +index ca9d9bbe..ee172d53 100644 +--- a/jupyter_client/session.py ++++ b/jupyter_client/session.py +@@ -197,7 +197,7 @@ def default_secure(cfg: t.Any) -> None: # pragma: no cover + + def utcnow() -> datetime: + """Return timezone-aware UTC timestamp""" +- return datetime.utcnow().replace(tzinfo=utc) # noqa ++ return datetime.now(utc) # noqa + + + # ----------------------------------------------------------------------------- +diff --git a/jupyter_client/utils.py b/jupyter_client/utils.py +index ab1cbcaa..4e2943c0 100644 +--- a/jupyter_client/utils.py ++++ b/jupyter_client/utils.py +@@ -4,10 +4,10 @@ + - vendor functions from ipython_genutils that should be retired at some point. + """ + import os +-from datetime import datetime, timedelta, tzinfo + + from jupyter_core.utils import ensure_async, run_sync # noqa: F401 # noqa: F401 + ++from .session import utcnow + + def _filefind(filename, path_dirs=None): + """Find a file by looking through a sequence of paths. +@@ -84,35 +84,3 @@ def _expand_path(s): + if os.name == "nt": + s = s.replace("IPYTHON_TEMP", "$\\") + return s +- +- +-# constant for zero offset +-ZERO = timedelta(0) +- +- +-class tzUTC(tzinfo): # noqa +- """tzinfo object for UTC (zero offset)""" +- +- def utcoffset(self, d): +- """Compute utcoffset.""" +- return ZERO +- +- def dst(self, d): +- """Compute dst.""" +- return ZERO +- +- +-UTC = tzUTC() # type:ignore +- +- +-def utc_aware(unaware): +- """decorator for adding UTC tzinfo to datetime's utcfoo methods""" +- +- def utc_method(*args, **kwargs): +- dt = unaware(*args, **kwargs) +- return dt.replace(tzinfo=UTC) +- +- return utc_method +- +- +-utcnow = utc_aware(datetime.utcnow) + +From 5468546499f5071171bcb8bccafe034837cc092d Mon Sep 17 00:00:00 2001 +From: "pre-commit-ci[bot]" + <66853113+pre-commit-ci[bot]@users.noreply.github.com> +Date: Mon, 11 Sep 2023 04:44:48 +0000 +Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks + +for more information, see https://pre-commit.ci +--- + jupyter_client/utils.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/jupyter_client/utils.py b/jupyter_client/utils.py +index 4e2943c0..0186a001 100644 +--- a/jupyter_client/utils.py ++++ b/jupyter_client/utils.py +@@ -9,6 +9,7 @@ + + from .session import utcnow + ++ + def _filefind(filename, path_dirs=None): + """Find a file by looking through a sequence of paths. + + +From d78c153d819fb3da3dc80f916747291b5200a302 Mon Sep 17 00:00:00 2001 +From: David Brochart +Date: Mon, 11 Sep 2023 09:22:41 +0200 +Subject: [PATCH 3/4] Remove unneeded noqa + +--- + jupyter_client/session.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/jupyter_client/session.py b/jupyter_client/session.py +index ee172d53..e22c9d44 100644 +--- a/jupyter_client/session.py ++++ b/jupyter_client/session.py +@@ -197,7 +197,7 @@ def default_secure(cfg: t.Any) -> None: # pragma: no cover + + def utcnow() -> datetime: + """Return timezone-aware UTC timestamp""" +- return datetime.now(utc) # noqa ++ return datetime.now(utc) + + + # ----------------------------------------------------------------------------- + +From 7ba40db1c6fb505e95df4cf4c3f9176661f2f270 Mon Sep 17 00:00:00 2001 +From: David Brochart +Date: Mon, 11 Sep 2023 09:22:57 +0200 +Subject: [PATCH 4/4] Add noqa + +--- + jupyter_client/utils.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/jupyter_client/utils.py b/jupyter_client/utils.py +index 0186a001..9f1c38e9 100644 +--- a/jupyter_client/utils.py ++++ b/jupyter_client/utils.py +@@ -7,7 +7,7 @@ + + from jupyter_core.utils import ensure_async, run_sync # noqa: F401 # noqa: F401 + +-from .session import utcnow ++from .session import utcnow # noqa + + + def _filefind(filename, path_dirs=None): diff --git a/srcpkgs/python3-jupyter_client/template b/srcpkgs/python3-jupyter_client/template index 0cba01daca6f5..3484b2a96bec0 100644 --- a/srcpkgs/python3-jupyter_client/template +++ b/srcpkgs/python3-jupyter_client/template @@ -1,21 +1,27 @@ # Template file for 'python3-jupyter_client' pkgname=python3-jupyter_client -version=7.4.5 -revision=2 +version=8.3.1 +revision=1 build_style=python3-pep517 -hostmakedepends="python3-flit_core hatchling" -depends="python3-traitlets python3-jupyter_core python3-pyzmq - python3-dateutil python3-tornado python3-nest_asyncio python3-entrypoints" +hostmakedepends="hatchling" +depends="python3-dateutil python3-jupyter_core python3-pyzmq python3-tornado" +checkdepends="$depends inetutils-ifconfig iproute2 openssh + python3-pytest-jupyter python3-pytest-timeout" short_desc="Jupyter protocol client APIs" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter/jupyter_client" +changelog="https://raw.githubusercontent.com/jupyter/jupyter_client/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyter_client/jupyter_client-${version}.tar.gz" -checksum=63eae06c40e1f2d9afa14447511fddc065c95dea3f2491fda2acccf91221954a +checksum=60294b2d5b869356c893f57b1a877ea6510d60d45cf4b38057f1672d85699ac9 conflicts="python-jupyter_client<=5.2.4_2" -# checks create a cycle with python3-jupyter_core and python3-ipython_ipykernel -make_check=no +make_check=extended # avoid a circular dependency + +if [ "$XBPS_CHECK_PKGS" = full ]; then + # this would cause a build-time circular dependency + checkdepends+=" python3-ipython_ipykernel" +fi post_install() { - vlicense COPYING.md LICENSE + vlicense LICENSE } From 92e21244b21a898d3579818380f6378cfb54facc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 2 May 2023 01:07:04 -0300 Subject: [PATCH 14/27] python3-ipython_ipykernel: update to 6.25.2, adopt. --- srcpkgs/python3-ipython_ipykernel/template | 41 +++++++++++++++------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/srcpkgs/python3-ipython_ipykernel/template b/srcpkgs/python3-ipython_ipykernel/template index 68f4678ff2c9a..028b1aa989ba4 100644 --- a/srcpkgs/python3-ipython_ipykernel/template +++ b/srcpkgs/python3-ipython_ipykernel/template @@ -1,21 +1,38 @@ # Template file for 'python3-ipython_ipykernel' pkgname=python3-ipython_ipykernel -version=6.19.2 -revision=2 +version=6.25.2 +revision=1 build_style=python3-pep517 -hostmakedepends="hatchling python3-jupyter_client python3-jupyter_core - python3-platformdirs" -depends="python3-ipython python3-traitlets python3-jupyter_client python3-tornado - python3-matplotlib-inline python3-nest_asyncio python3-packaging python3-psutil - python3 python3-comm python3-pyzmq" -short_desc="IPython kernel for Jupyter (Python3)" -maintainer="Orphaned " +# these tests fail in 6.25.2 +make_check_args=" + --deselect ipykernel/tests/test_eventloop.py::test_asyncio_interrupt + --deselect ipykernel/tests/test_embed_kernel.py::test_embed_kernel_func + --deselect ipykernel/tests/test_kernelspec.py::test_install_kernelspec" +hostmakedepends="hatchling python3-jupyter_client" +depends="python3-comm python3-ipython python3-jupyter_client + python3-nest_asyncio python3-packaging python3-psutil python3-tornado" +checkdepends="$depends python3-flaky python3-pytest-asyncio + python3-pytest-timeout python3-trio python3-curio python3-matplotlib + python3-PyQt5 python3-PyQt5-svg" +short_desc="IPython kernel for Jupyter" +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/ipython/ipykernel" +changelog="https://raw.githubusercontent.com/ipython/ipykernel/main/CHANGELOG.md" distfiles="${PYPI_SITE}/i/ipykernel/ipykernel-${version}.tar.gz" -checksum=1ab68d3d3654196266baa93990055413e167263ffbe4cfe834f871bcd3d3506d -make_check=no # cycle with python3-jupyter_core and python3-jupyter_client +checksum=f468ddd1f17acb48c8ce67fcfa49ba6d46d4f9ac0438c1f441be7c3d1372230b + +if [ "$XBPS_CHECK_PKGS" = full ]; then + # this would cause a build-time circular dependency + checkdepends+=" python3-ipyparallel" +else + # These tests require ipyparallel + make_check_args+=" + --ignore ipykernel/tests/test_pickleutil.py + --deselect ipykernel/tests/test_ipkernel_direct.py::test_do_apply + " +fi post_install() { - vlicense COPYING.md LICENSE + vlicense LICENSE } From 744427d62ef5c110ce69a0afea8b2390fbc85f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 24 May 2023 23:03:23 -0300 Subject: [PATCH 15/27] python3-jupyter_ipywidgets: update to 8.1.1, adopt. --- srcpkgs/python3-jupyter_ipywidgets/template | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/srcpkgs/python3-jupyter_ipywidgets/template b/srcpkgs/python3-jupyter_ipywidgets/template index 74dc055801347..55d14cac26b21 100644 --- a/srcpkgs/python3-jupyter_ipywidgets/template +++ b/srcpkgs/python3-jupyter_ipywidgets/template @@ -1,17 +1,18 @@ # Template file for 'python3-jupyter_ipywidgets' pkgname=python3-jupyter_ipywidgets -version=7.6.3 -revision=4 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-jupyter_widgetsnbextension python3-ipython_ipykernel python3-traitlets" -checkdepends="python3-pytest $depends" +version=8.1.1 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-wheel" +depends="python3-ipython_ipykernel" +checkdepends="$depends python3-pytest python3-jsonschema python3-pytz" short_desc="IPython widgets for the Jupyter notebook" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter-widgets/ipywidgets" +changelog="https://raw.githubusercontent.com/jupyter-widgets/ipywidgets/main/docs/source/changelog.md" distfiles="${PYPI_SITE}/i/ipywidgets/ipywidgets-${version}.tar.gz" -checksum=9f1a43e620530f9e570e4a493677d25f08310118d315b00e25a18f12913c41f0 +checksum=40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8 post_install() { vlicense LICENSE From 3d780acc0a42438c50189e7607f57ed7738a8bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 24 May 2023 23:14:20 -0300 Subject: [PATCH 16/27] python3-nbclient: update to 0.8.0. --- srcpkgs/python3-nbclient/template | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/srcpkgs/python3-nbclient/template b/srcpkgs/python3-nbclient/template index 2b85205d4179e..9b2556aa53670 100644 --- a/srcpkgs/python3-nbclient/template +++ b/srcpkgs/python3-nbclient/template @@ -1,19 +1,25 @@ # Template file for 'python3-nbclient' pkgname=python3-nbclient -version=0.7.0 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-traitlets python3-jupyter_client - python3-jupyter_nbformat python3-async_generator python3-nest_asyncio" +version=0.8.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-jupyter_client python3-jupyter_nbformat" +checkdepends="$depends python3-pytest-asyncio python3-testpath + python3-flaky python3-jupyter_ipywidgets python3-xmltodict" short_desc="Client library for executing Jupyter notebooks" maintainer="dkwo " license="BSD-3-Clause" homepage="https://nbclient.readthedocs.io/en/latest/" +changelog="https://raw.githubusercontent.com/jupyter/nbclient/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/nbclient/nbclient-${version}.tar.gz" -checksum=a1d844efd6da9bc39d2209bf996dbd8e07bf0f36b796edfabaa8f8a9ab77c3aa -# Package might need to be installed for testing -make_check=no +checksum=f9b179cd4b2d7bca965f900a2ebf0db4a12ebff2f36a711cb66861e4ae158e55 +make_check=extended # avoid a circular dependency + +if [ "$XBPS_CHECK_PKGS" = full ]; then + # this would cause a build-time circular dependency + checkdepends+=" python3-jupyter_nbconvert" +fi post_install() { vlicense LICENSE From 11368422621a3cadae9697c915f82f2777e9fdf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 15 Jun 2023 17:05:06 -0300 Subject: [PATCH 17/27] python3-mistune: update to 3.0.2, adopt. --- srcpkgs/python3-mistune/template | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/srcpkgs/python3-mistune/template b/srcpkgs/python3-mistune/template index 6a448f5c78363..7630964cf1dd1 100644 --- a/srcpkgs/python3-mistune/template +++ b/srcpkgs/python3-mistune/template @@ -1,16 +1,18 @@ # Template file for 'python3-mistune' pkgname=python3-mistune -version=0.8.4 -revision=7 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=3.0.2 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel" depends="python3" -short_desc="Fast markdown parser for Python3" -maintainer="Orphaned " +checkdepends="python3-pytest" +short_desc="Markdown parser for Python" +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" -homepage="https://github.com/lepture/mistune" +homepage="https://mistune.lepture.com/" +changelog="https://raw.githubusercontent.com/lepture/mistune/master/docs/changes.rst" distfiles="${PYPI_SITE}/m/mistune/mistune-${version}.tar.gz" -checksum=59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e +checksum=fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8 post_install() { vlicense LICENSE From 794a9c592a5164e440e2741cf02a00ec69797cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 25 May 2023 15:11:44 -0300 Subject: [PATCH 18/27] python3-jupyter_nbconvert: update to 7.9.2, adopt. --- .../files/README.voidlinux | 2 - srcpkgs/python3-jupyter_nbconvert/template | 40 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) delete mode 100644 srcpkgs/python3-jupyter_nbconvert/files/README.voidlinux diff --git a/srcpkgs/python3-jupyter_nbconvert/files/README.voidlinux b/srcpkgs/python3-jupyter_nbconvert/files/README.voidlinux deleted file mode 100644 index 5efba6bbb86f1..0000000000000 --- a/srcpkgs/python3-jupyter_nbconvert/files/README.voidlinux +++ /dev/null @@ -1,2 +0,0 @@ -To convert notebooks to formats other than HTML and markdown install -python3-Sphinx and/or pandoc. diff --git a/srcpkgs/python3-jupyter_nbconvert/template b/srcpkgs/python3-jupyter_nbconvert/template index 1ded2af967487..a580377d0f03f 100644 --- a/srcpkgs/python3-jupyter_nbconvert/template +++ b/srcpkgs/python3-jupyter_nbconvert/template @@ -1,26 +1,34 @@ # Template file for 'python3-jupyter_nbconvert' pkgname=python3-jupyter_nbconvert -version=6.4.5 -revision=3 -build_style=python3-module -# WebPDF export depends on unpackaged pyppeteer -make_check_args="-m not(network) -k not(test_webpdf_without_chromium)" -hostmakedepends="python3-setuptools" -depends="python3-mistune python3-Jinja2 python3-jupyterlab_pygments - python3-nbclient python3-jupyter_core python3-entrypoints python3-testpath - python3-bleach python3-pandocfilters python3-defusedxml - python3-BeautifulSoup4" -checkdepends="python3-pytest python3-ipython_ipykernel - python3-jupyter_ipywidgets python3-Pebble pandoc inkscape $depends" +version=7.9.2 +revision=1 +build_style=python3-pep517 +# these two tests require nbconvert.tests (not installed) +make_check_args="-k not((test_convert_full_qualified_name)or(test_post_processor))" +hostmakedepends="hatchling" +depends="python3-BeautifulSoup4 python3-bleach python3-defusedxml + python3-Jinja2 python3-jupyter_core python3-jupyterlab_pygments + python3-MarkupSafe python3-mistune python3-nbclient + python3-jupyter_nbformat python3-packaging python3-pandocfilters + python3-tinycss2" +checkdepends="$depends python3-pytest python3-jupyter_ipywidgets + asciidoc inkscape pandoc python3-flaky python3-PyQt5" short_desc="Converting Jupyter notebooks" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter/nbconvert" +changelog="https://raw.githubusercontent.com/jupyter/nbconvert/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/nbconvert/nbconvert-${version}.tar.gz" -checksum=21163a8e2073c07109ca8f398836e45efdba2aacea68d6f75a8a545fef070d4e -conflicts="python-jupyter_nbconvert<=5.4.1_2" +checksum=e56cc7588acc4f93e2bb5a34ec69028e4941797b2bfaf6462f18a41d1cc258c9 + +pre_check() { + # templates must be in $JUPYTER_DATA_DIR/nbconvert/templates + # but they are in ${wrksrc}/share/templates + # fix with a symlink share/nbconvert -> share/. + [ -d share/nbconvert ] || ln -s . share/nbconvert + make_check_pre="env JUPYTER_DATA_DIR=${wrksrc}/share" +} post_install() { vlicense LICENSE - vdoc "${FILESDIR}/README.voidlinux" } From ca63fedb6124a4a765ec85078eb79e77468dbdda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 25 May 2023 19:05:16 -0300 Subject: [PATCH 19/27] New package: python3-jupyter_server_terminals-0.4.4 --- .../python3-jupyter_server_terminals/template | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 srcpkgs/python3-jupyter_server_terminals/template diff --git a/srcpkgs/python3-jupyter_server_terminals/template b/srcpkgs/python3-jupyter_server_terminals/template new file mode 100644 index 0000000000000..799e4396f8325 --- /dev/null +++ b/srcpkgs/python3-jupyter_server_terminals/template @@ -0,0 +1,26 @@ +# Template file for 'python3-jupyter_server_terminals' +pkgname=python3-jupyter_server_terminals +version=0.4.4 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-terminado" +checkdepends="$depends python3-pytest-jupyter" +short_desc="Jupyter server extension providing support for terminals" +maintainer="Gonzalo Tornaría " +license="BSD-3-Clause" +homepage="https://github.com/jupyter-server/jupyter_server_terminals" +changelog="https://raw.githubusercontent.com/jupyter-server/jupyter_server_terminals/main/CHANGELOG.md" +distfiles="${PYPI_SITE}/j/jupyter_server_terminals/jupyter_server_terminals-${version}.tar.gz" +checksum=57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d +make_check=extended # avoid a circular dependency + +if [ "$XBPS_CHECK_PKGS" = full ]; then + # this would cause a build-time circular dependency + checkdepends+=" python3-jupyter_server" +fi + +post_install() { + mv ${DESTDIR}/usr/etc ${DESTDIR} + vlicense LICENSE +} From 6917e32eb83c377f944e7f9bd81369b3dce6b4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 25 May 2023 22:30:26 -0300 Subject: [PATCH 20/27] python3-jupyter_server: update to 2.7.3. --- .../patches/pytest-xdist.patch | 38 ++++++++++++++++++ .../patches/utcnow-deprecation.patch | 39 ++++++++++++++++++ srcpkgs/python3-jupyter_server/template | 40 +++++++++++-------- 3 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 srcpkgs/python3-jupyter_server/patches/pytest-xdist.patch create mode 100644 srcpkgs/python3-jupyter_server/patches/utcnow-deprecation.patch diff --git a/srcpkgs/python3-jupyter_server/patches/pytest-xdist.patch b/srcpkgs/python3-jupyter_server/patches/pytest-xdist.patch new file mode 100644 index 0000000000000..4b2c6976a3b4e --- /dev/null +++ b/srcpkgs/python3-jupyter_server/patches/pytest-xdist.patch @@ -0,0 +1,38 @@ +commit 2dfc67655dd589948250c49c093bd25c4f08f77c +Author: Gonzalo Tornaría +Date: Thu May 25 22:28:37 2023 -0300 + + Fix test param for pytest-xdist + +diff --git a/tests/test_gateway.py b/tests/test_gateway.py +index fec747afe..8f7f8a463 100644 +--- a/tests/test_gateway.py ++++ b/tests/test_gateway.py +@@ -362,15 +362,12 @@ def test_gateway_request_timeout_pad_option( + GatewayClient.clear_instance() + + +-cookie_expire_time = format_datetime(datetime.now(tz=timezone.utc) + timedelta(seconds=180)) +- +- + @pytest.mark.parametrize( + "accept_cookies,expire_arg,expire_param,existing_cookies,cookie_exists", + [ + (False, None, None, "EXISTING=1", False), + (True, None, None, "EXISTING=1", True), +- (True, "Expires", cookie_expire_time, None, True), ++ (True, "Expires", 180, None, True), + (True, "Max-Age", "-360", "EXISTING=1", False), + ], + ) +@@ -389,6 +386,10 @@ def test_gateway_request_with_expiring_cookies( + + cookie: SimpleCookie = SimpleCookie() + cookie.load("SERVERID=1234567; Path=/") ++ if expire_arg == "Expires": ++ expire_param = format_datetime( ++ datetime.now(tz=timezone.utc) + ++ timedelta(seconds=expire_param)) + if expire_arg: + cookie["SERVERID"][expire_arg] = expire_param + diff --git a/srcpkgs/python3-jupyter_server/patches/utcnow-deprecation.patch b/srcpkgs/python3-jupyter_server/patches/utcnow-deprecation.patch new file mode 100644 index 0000000000000..e5f7a2af5b335 --- /dev/null +++ b/srcpkgs/python3-jupyter_server/patches/utcnow-deprecation.patch @@ -0,0 +1,39 @@ +See: https://github.com/jupyter-server/jupyter_server/issues/1296#issuecomment-1751887150 + +--- a/jupyter_server/_tz.py ++++ b/jupyter_server/_tz.py +@@ -5,7 +5,7 @@ Just UTC-awareness right now + """ + # Copyright (c) Jupyter Development Team. + # Distributed under the terms of the Modified BSD License. +-from datetime import datetime, timedelta, tzinfo ++from datetime import datetime, timedelta, tzinfo, timezone + + # constant for zero offset + ZERO = timedelta(0) +@@ -39,6 +39,12 @@ def utc_aware(unaware): + utcfromtimestamp = utc_aware(datetime.utcfromtimestamp) + utcnow = utc_aware(datetime.utcnow) + ++def utcnow() -> datetime: ++ """ Return timezone-aware UTC timestamp""" ++ return datetime.now(timezone.utc) ++ ++def utcfromtimestamp(timestamp): ++ return datetime.fromtimestamp(timestamp, timezone.utc) + + def isoformat(dt): + """Return iso-formatted timestamp +diff --git a/tests/test_gateway.py b/tests/test_gateway.py +index 8f7f8a463..598006e29 100644 +--- a/tests/test_gateway.py ++++ b/tests/test_gateway.py +@@ -78,7 +78,7 @@ omitted_kernels: Dict[str, bool] = {} + + def generate_model(name): + """Generate a mocked kernel model. Caller is responsible for adding model to running_kernels dictionary.""" +- dt = datetime.utcnow().isoformat() + "Z" # noqa ++ dt = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z") # noqa + kernel_id = str(uuid.uuid4()) + model = { + "id": kernel_id, diff --git a/srcpkgs/python3-jupyter_server/template b/srcpkgs/python3-jupyter_server/template index 8b1cf9fe7c569..b0bd9f2f758bc 100644 --- a/srcpkgs/python3-jupyter_server/template +++ b/srcpkgs/python3-jupyter_server/template @@ -1,26 +1,34 @@ # Template file for 'python3-jupyter_server' pkgname=python3-jupyter_server -version=1.23.1 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-anyio python3-jupyter_client python3-jupyter_nbformat - python3-jupyter_nbconvert python3-terminado - python3-prometheus_client python3-traitlets python3-tornado - python3-Jinja2 python3-send2trash python3-websocket-client" -checkdepends="${depends} python3-argon2 python3-packaging - python3-coverage python3-pytest-mock python3-requests - python3-pytest python3-pytest-timeout python3-pytest-asyncio" +version=2.7.3 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling hatch-jupyter-builder" +depends="python3-anyio python3-argon2 python3-jupyter_client + python3-jupyter_events python3-jupyter_nbconvert + python3-jupyter_server_terminals python3-overrides + python3-prometheus_client python3-send2trash + python3-websocket-client" +checkdepends="$depends pandoc python3-ipython_ipykernel + python3-pytest-console-scripts python3-pytest-jupyter + python3-pytest-xdist python3-requests python3-flaky" short_desc="Backend to Jupyter web applications" maintainer="dkwo " license="BSD-3-Clause" -homepage="https://jupyter.org" +homepage="https://github.com/jupyter-server/jupyter_server" changelog="https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyter-server/jupyter_server-${version}.tar.gz" -checksum=cee48d9d96cecd0f94b7cb41ecd4f0ab05b01643769f61c5d397b7873bc9a1e2 -# missing pytest-tornasync, pytest-console-scripts -make_check=no +checksum=d4916c8581c4ebbc534cebdaa8eca2478d9f3bfdd88eae29fcab0120eac57649 + +if [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then + # these tests fail on CI (connect to a tcp address) + make_check_args=" + --deselect=tests/extension/test_launch.py::test_launch_instance + --deselect=tests/extension/test_launch.py::test_base_url + --deselect=tests/extension/test_launch.py::test_token_file + " +fi post_install() { - vlicense COPYING.md + vlicense LICENSE } From 000ff797e1307036340a1c1761859a2af1ddf5c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 24 May 2023 12:09:02 -0300 Subject: [PATCH 21/27] python3-notebook_shim: update to 0.2.3. --- srcpkgs/python3-notebook_shim/template | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/srcpkgs/python3-notebook_shim/template b/srcpkgs/python3-notebook_shim/template index 490564a7fb8e9..c1e58a8e8159a 100644 --- a/srcpkgs/python3-notebook_shim/template +++ b/srcpkgs/python3-notebook_shim/template @@ -1,19 +1,20 @@ # Template file for 'python3-notebook_shim' pkgname=python3-notebook_shim -version=0.2.2 -revision=2 +version=0.2.3 +revision=1 build_style=python3-pep517 hostmakedepends="hatchling" depends="python3-jupyter_server" +checkdepends="$depends python3-pytest-jupyter" short_desc="Shim layer for notebook traits and config" maintainer="dkwo " license="BSD-3-Clause" homepage="https://github.com/jupyter/notebook_shim" +changelog="https://raw.githubusercontent.com/jupyter/notebook_shim/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/notebook_shim/notebook_shim-${version}.tar.gz" -checksum=090e0baf9a5582ff59b607af523ca2db68ff216da0c69956b62cab2ef4fc9c3f -make_check=no # missing pytest_tornasync +checksum=f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9 post_install() { + mv ${DESTDIR}/usr/etc ${DESTDIR} vlicense LICENSE - mv "${PKGDESTDIR}/usr/etc" ${PKGDESTDIR}/etc/ } From 6609d774ab0b1eb5077ae98dc8932e0df381f9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 25 May 2023 23:12:45 -0300 Subject: [PATCH 22/27] python3-nbclassic: update to 1.0.0. --- srcpkgs/python3-nbclassic/template | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/srcpkgs/python3-nbclassic/template b/srcpkgs/python3-nbclassic/template index 81fb183100692..6f6d16a47a4ed 100644 --- a/srcpkgs/python3-nbclassic/template +++ b/srcpkgs/python3-nbclassic/template @@ -1,25 +1,25 @@ # Template file for 'python3-nbclassic' pkgname=python3-nbclassic -version=0.4.8 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-jupyter_notebook python3-jupyter_server" -checkdepends="${depends} python3-pytest python3-pytest-fixture-config python3-pytest-subtests" +version=1.0.0 +revision=1 +build_style=python3-pep517 +make_build_args="--skip-dependency-check" +hostmakedepends="python3-jupyter_packaging python3-jupyter_server" +depends="mathjax2 python3-notebook_shim" +checkdepends="$depends python3-pytest-jupyter" short_desc="Jupyter Notebook as a Jupyter Server Extension" maintainer="dkwo " license="BSD-3-Clause" -homepage="https://jupyter.org" +homepage="https://github.com/jupyter/nbclassic" +changelog="https://raw.githubusercontent.com/jupyter/nbclassic/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/nbclassic/nbclassic-${version}.tar.gz" -checksum=c74d8a500f8e058d46b576a41e5bc640711e1032cf7541dde5f73ea49497e283 -# missing fixtures: jp_create_notebook jp_fetch -make_check=no - -conf_files="/etc/jupyter/jupyter_server_config.d/*.json" +checksum=0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3 post_install() { vlicense LICENSE + mv ${DESTDIR}/usr/etc ${DESTDIR} - # jupyter honors /etc/juypter; move config files there - mv "${DESTDIR}/usr/etc" "${DESTDIR}/etc" + # use system mathjax2 + rm -rf ${DESTDIR}/${py3_sitelib}/nbclassic/static/components/MathJax + ln -sf /usr/share/mathjax ${DESTDIR}/${py3_sitelib}/nbclassic/static/components/MathJax } From f1cf604f8a498e23ec8449658bb30baa128d01cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sat, 27 May 2023 17:50:24 -0300 Subject: [PATCH 23/27] python3-jupyterlab_server: update to 2.25.0. --- srcpkgs/python3-jupyterlab_server/template | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/srcpkgs/python3-jupyterlab_server/template b/srcpkgs/python3-jupyterlab_server/template index 41f51c913ebb0..a5e452e9d6c81 100644 --- a/srcpkgs/python3-jupyterlab_server/template +++ b/srcpkgs/python3-jupyterlab_server/template @@ -1,18 +1,34 @@ # Template file for 'python3-jupyterlab_server' pkgname=python3-jupyterlab_server -version=2.10.3 -revision=3 -build_style=python3-module -hostmakedepends="python3-setuptools python3-jupyter_notebook python3-jupyter_server" -depends="python3-requests python3-json5 python3-Babel" -short_desc="Server components for JupyterLab and -like applications" +version=2.25.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-jupyter_server python3-Babel python3-json5 python3-requests" +checkdepends="$depends python3-pytest-jupyter python3-openapi-core + python3-requests-mock python3-strict-rfc3339 python3-ruamel.yaml python3-pip" +short_desc="Server components for JupyterLab and JL-like applications" maintainer="dkwo " license="BSD-3-Clause" -homepage="https://jupyter.org" +homepage="https://github.com/jupyterlab/jupyterlab_server" +changelog="https://raw.githubusercontent.com/jupyterlab/jupyterlab_server/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyterlab_server/jupyterlab_server-${version}.tar.gz" -checksum=3fb84a5813d6d836ceda773fb2d4e9ef3c7944dbc1b45a8d59d98641a80de80a -# Tests require unpackaged dependencies -make_check=no +checksum=77c2f1f282d610f95e496e20d5bf1d2a7706826dfb7b18f3378ae2870d272fb7 + +if [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then + # tests setup fails on CI (no idea why) + make_check_args="-p no:unraisableexception" +fi + +do_check() { + # test_translation_api.py needs to run in a venv + local testdir="${wrksrc}/.xbps-testdir/$(date +%s)" + python3 -m venv --system-site-packages --without-pip "${testdir}" + + local testpy="${testdir}/bin/python3" + "${testpy}" -m installer dist/*.whl + PATH="${testdir}/bin:${PATH}" "${testpy}" -m pytest +} post_install() { vlicense LICENSE From 03844e55992b3e33f6af8019c84daf3f62985354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 28 May 2023 18:19:20 -0300 Subject: [PATCH 24/27] jupyterlab: update to 4.0.6. --- srcpkgs/jupyterlab/files/jupyterlab.sh | 1 - srcpkgs/jupyterlab/template | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 srcpkgs/jupyterlab/files/jupyterlab.sh diff --git a/srcpkgs/jupyterlab/files/jupyterlab.sh b/srcpkgs/jupyterlab/files/jupyterlab.sh deleted file mode 100644 index a90f35521b9c2..0000000000000 --- a/srcpkgs/jupyterlab/files/jupyterlab.sh +++ /dev/null @@ -1 +0,0 @@ -export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab diff --git a/srcpkgs/jupyterlab/template b/srcpkgs/jupyterlab/template index b7159e5a0311b..360a41f3a5b26 100644 --- a/srcpkgs/jupyterlab/template +++ b/srcpkgs/jupyterlab/template @@ -1,22 +1,22 @@ # Template file for 'jupyterlab' pkgname=jupyterlab -version=3.5.0 -revision=3 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-jupyterlab_server nodejs python3-nbclassic - python3-requests-unixsocket python3-jupyter_ipywidgets - python3-notebook_shim" +version=4.0.6 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling hatch-jupyter-builder" +depends="nodejs python3-async-lru python3-ipython_ipykernel + python3-jupyterlab_server python3-notebook_shim python3-tomli" +checkdepends="$depends python3-pytest-jupyter python3-pytest-xdist" short_desc="JupyterLab computational environment" maintainer="dkwo " license="custom:jupyterlab" -homepage="https://jupyter.org" +homepage="https://github.com/jupyterlab/jupyterlab/" +changelog="https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyterlab/jupyterlab-${version}.tar.gz" -checksum=e02556c8ea1b386963c4b464e4618aee153c5416b07ab481425c817a033323a2 -# Tests require unpackaged dependencies -make_check=no +checksum=6c43ae5a6a1fd2fdfafcb3454004958bde6da76331abb44cffc6f9e436b19ba1 post_install() { + mv ${DESTDIR}/usr/etc ${DESTDIR} vlicense LICENSE vinstall "${FILESDIR}/jupyterlab.sh" 644 etc/profile.d } From bc89f0b405ab6fa01b0a1c9e29426d5cd0b1b099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 29 May 2023 16:40:44 -0300 Subject: [PATCH 25/27] python3-jupyter_notebook: update to 7.0.4. --- srcpkgs/python3-jupyter_notebook/template | 30 +++++++++-------------- srcpkgs/python3-jupyter_notebook/update | 2 +- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/srcpkgs/python3-jupyter_notebook/template b/srcpkgs/python3-jupyter_notebook/template index 6aafbbba6d7cb..6e386070f27c5 100644 --- a/srcpkgs/python3-jupyter_notebook/template +++ b/srcpkgs/python3-jupyter_notebook/template @@ -1,27 +1,21 @@ # Template file for 'python3-jupyter_notebook' pkgname=python3-jupyter_notebook -version=6.4.10 -revision=4 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-Jinja2 python3-terminado python3-tornado - python3-ipython_genutils python3-traitlets python3-jupyter_core - python3-jupyter_client python3-jupyter_nbformat python3-jupyter_nbconvert - python3-ipython_ipykernel python3-send2trash python3-prometheus_client - mathjax2 python3-argon2" +version=7.0.4 +revision=1 +build_style=python3-pep517 +make_build_args="--skip-dependency-check" +hostmakedepends="hatchling hatch-jupyter-builder jupyterlab" +depends="python3-jupyter_client python3-jupyter_server" +checkdepends="$depends python3-pytest-jupyter" short_desc="Jupyter interactive notebook" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" -homepage="https://jupyter.org/" +homepage="https://github.com/jupyter/notebook" +changelog="https://raw.githubusercontent.com/jupyter/notebook/main/CHANGELOG.md" distfiles="${PYPI_SITE}/n/notebook/notebook-${version}.tar.gz" -checksum=2408a76bc6289283a8eecfca67e298ec83c67db51a4c2e1b713dd180bb39e90e -conflicts="python-jupyter_notebook<=5.7.0_2" -# Tests require unpackaged selenium -make_check=no +checksum=0c1b458f72ce8774445c8ef9ed2492bd0b9ce9605ac996e2b066114f69795e71 post_install() { + mv ${DESTDIR}/usr/etc ${DESTDIR} vlicense LICENSE - # use system mathjax - rm -rf ${DESTDIR}/${py3_sitelib}/notebook/static/components/MathJax - ln -sf /usr/share/mathjax ${DESTDIR}/${py3_sitelib}/notebook/static/components/MathJax } diff --git a/srcpkgs/python3-jupyter_notebook/update b/srcpkgs/python3-jupyter_notebook/update index 1bb284fed4967..276c9bf787e58 100644 --- a/srcpkgs/python3-jupyter_notebook/update +++ b/srcpkgs/python3-jupyter_notebook/update @@ -1,2 +1,2 @@ pkgname=notebook -ignore="*a* *b* *rc*" +#ignore="*a* *b* *rc*" From 34e566cad4cbfcb135e073e9507419bc46964ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 26 Sep 2023 17:13:52 -0300 Subject: [PATCH 26/27] python3-jupyter_console: update to 6.6.3, adopt. --- srcpkgs/python3-jupyter_console/template | 31 +++++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/srcpkgs/python3-jupyter_console/template b/srcpkgs/python3-jupyter_console/template index 9bbbb0488d400..2af1e4875ca39 100644 --- a/srcpkgs/python3-jupyter_console/template +++ b/srcpkgs/python3-jupyter_console/template @@ -1,22 +1,29 @@ # Template file for 'python3-jupyter_console' pkgname=python3-jupyter_console -version=6.4.4 -revision=2 -build_style=python3-module -hostmakedepends="python3-setuptools" -depends="python3-ipython python3-ipython_ipykernel python3-jupyter_client - python3-prompt_toolkit python3-Pygments python3-traitlets" -checkdepends="$depends python3-pytest" +version=6.6.3 +revision=1 +build_style=python3-pep517 +hostmakedepends="hatchling" +depends="python3-ipython_ipykernel python3-ipython python3-jupyter_client + python3-jupyter_core python3-prompt_toolkit python3-Pygments python3-pyzmq + python3-traitlets" +checkdepends="$depends python3-pytest python3-flaky" short_desc="Jupyter terminal console (Python3)" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter/jupyter_console" +changelog="https://raw.githubusercontent.com/jupyter/jupyter_console/main/CHANGELOG.md" distfiles="${PYPI_SITE}/j/jupyter_console/jupyter_console-${version}.tar.gz" -checksum=172f5335e31d600df61613a97b7f0352f2c8250bbd1092ef2d658f77249f89fb -# alternatives will be a conflict +checksum=566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539 conflicts="python-jupyter_console<=6.0.0_2" -# Tests fail because stdin is not a terminal -make_check=no + +if [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then + # this test fails on CI (pexpect gets ": 5" instead of the + # expected "Out[1]: 5" causing a timeout) + make_check_args=" + --deselect=jupyter_console/tests/test_console.py::test_console_starts + " +fi post_install() { vlicense LICENSE From 40004d1ffb36f10c07be45da0fd9028946a3cfe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 26 Sep 2023 17:42:33 -0300 Subject: [PATCH 27/27] python3-jupyter_qtconsole: update to 5.4.4, adopt. --- srcpkgs/python3-jupyter_qtconsole/template | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/srcpkgs/python3-jupyter_qtconsole/template b/srcpkgs/python3-jupyter_qtconsole/template index e3ffc5eb87dec..a7d38b0253ca9 100644 --- a/srcpkgs/python3-jupyter_qtconsole/template +++ b/srcpkgs/python3-jupyter_qtconsole/template @@ -1,26 +1,22 @@ # Template file for 'python3-jupyter_qtconsole' pkgname=python3-jupyter_qtconsole -version=4.7.1 -revision=5 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=5.4.4 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel" depends="python3-traitlets python3-jupyter_core python3-jupyter_client python3-Pygments python3-ipython_ipykernel python3-ipython_genutils python3-PyQt5-svg python3-QtPy" checkdepends="$depends python3-pytest-qt python3-flaky" short_desc="Jupyter Qt console" -maintainer="Orphaned " +maintainer="Gonzalo Tornaría " license="BSD-3-Clause" homepage="https://github.com/jupyter/qtconsole" +changelog="https://raw.githubusercontent.com/jupyter/qtconsole/master/docs/source/changelog.rst" distfiles="${PYPI_SITE}/q/qtconsole/qtconsole-${version}.tar.gz" -checksum=d51c1c51c81fbd1fac62b2d4bdc8b54fb6b7cbe6cbf70c3baeea11516525c956 +checksum=b7ffb53d74f23cee29f4cdb55dd6fabc8ec312d94f3c46ba38e1dde458693dfb conflicts="python-jupyter_qtconsole<=4.4.3_2" -do_check() { - # flaky test - pytest -k 'not test_frontend_to_kernel' -} - post_install() { vlicense LICENSE }