diff --git a/no-more-six.patch b/no-more-six.patch index c791058..362f1ac 100644 --- a/no-more-six.patch +++ b/no-more-six.patch @@ -1,38 +1,55 @@ -Index: pywebpush-1.14.0/pywebpush/__init__.py +From bb664d9862f1aa427744e34c51e7f2c1a8f35e15 Mon Sep 17 00:00:00 2001 +From: jrconlin +Date: Fri, 14 Jun 2024 14:25:02 -0700 +Subject: [PATCH] bug: remove six requirement, add license classifer + +There are a few other "poetry" related changes +that should be made, but I'm skipping those for +now. + +Closes #166, 167 +--- + pyproject.toml | 9 ++++++++- + pywebpush/__init__.py | 5 ++--- + requirements.txt | 1 - + setup.py | 2 +- + 4 files changed, 11 insertions(+), 6 deletions(-) + +Index: pywebpush-2.1.0/pywebpush/__init__.py =================================================================== ---- pywebpush-1.14.0.orig/pywebpush/__init__.py -+++ pywebpush-1.14.0/pywebpush/__init__.py -@@ -13,7 +13,6 @@ try: - except ImportError: # pragma nocover - from urlparse import urlparse - --import six +--- pywebpush-2.1.0.orig/pywebpush/__init__.py ++++ pywebpush-2.1.0/pywebpush/__init__.py +@@ -19,7 +19,6 @@ except ImportError: # pragma nocover + import aiohttp import http_ece import requests +-import six from cryptography.hazmat.backends import default_backend -@@ -152,7 +151,7 @@ class WebPusher: - for k in ['p256dh', 'auth']: + from cryptography.hazmat.primitives.asymmetric import ec + from cryptography.hazmat.primitives import serialization +@@ -175,7 +174,7 @@ class WebPusher: + for k in ["p256dh", "auth"]: if keys.get(k) is None: raise WebPushException("Missing keys value: {}".format(k)) - if isinstance(keys[k], six.text_type): + if isinstance(keys[k], str): - keys[k] = bytes(keys[k].encode('utf8')) + keys[k] = bytes(cast(str, keys[k]).encode("utf8")) receiver_raw = base64.urlsafe_b64decode( - self._repad(keys['p256dh'])) -@@ -206,7 +205,7 @@ class WebPusher: - format=serialization.PublicFormat.UncompressedPoint + self._repad(cast(bytes, keys["p256dh"])) +@@ -236,7 +235,7 @@ class WebPusher: + format=serialization.PublicFormat.UncompressedPoint, ) - if isinstance(data, six.text_type): + if isinstance(data, str): - data = bytes(data.encode('utf8')) + data = bytes(data.encode("utf8")) if content_encoding == "aes128gcm": self.verb("Encrypting to aes128gcm...") -Index: pywebpush-1.14.0/requirements.txt +Index: pywebpush-2.1.0/requirements.txt =================================================================== ---- pywebpush-1.14.0.orig/requirements.txt -+++ pywebpush-1.14.0/requirements.txt -@@ -1,5 +1,4 @@ +--- pywebpush-2.1.0.orig/requirements.txt ++++ pywebpush-2.1.0/requirements.txt +@@ -2,5 +2,4 @@ aiohttp cryptography>=2.6.1 http-ece>=1.1.0 requests>=2.21.0 diff --git a/python-pywebpush.changes b/python-pywebpush.changes index 8104e9e..dd78f08 100644 --- a/python-pywebpush.changes +++ b/python-pywebpush.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Wed Oct 15 03:12:29 UTC 2025 - Steve Kowalik + +- Update to 2.1.0: + * feat: Add a async_webpush one call func + * set license classifier + * chore: Update to modern python practices (well, Python 3.8) + * Webpusher.encode will now return a NoData exception if no data is + present to encode +- Refresh patch no-more-six.patch from upstream. +- Add patch use-unittest-mock.patch: + * Use unittest.mock rather than mock. + ------------------------------------------------------------------- Wed Jun 11 05:49:38 UTC 2025 - Steve Kowalik diff --git a/python-pywebpush.spec b/python-pywebpush.spec index e5cec1f..683ebfc 100644 --- a/python-pywebpush.spec +++ b/python-pywebpush.spec @@ -1,7 +1,7 @@ # # spec file for package python-pywebpush # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,19 +17,22 @@ Name: python-pywebpush -Version: 1.14.0 +Version: 2.1.0 Release: 0 Summary: WebPush publication library License: MPL-2.0 URL: https://github.com/web-push-libs/pywebpush Source: https://files.pythonhosted.org/packages/source/p/pywebpush/pywebpush-%{version}.tar.gz -# PATCH-FIX-OPENSUSE Do not require six module +# PATCH-FIX-UPSTREAM Based on gh#web-push-libs/pywebpush#bb664d9862f1aa427744e34c51e7f2c1a8f35e15 Patch0: no-more-six.patch +# PATCH-FIX-UPSTREAM gh#web-push-libs/pywebpush#180 +Patch1: use-unittest-mock.patch BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros +Requires: python-aiohttp Requires: python-cryptography >= 2.6.1 Requires: python-http-ece >= 1.1.0 Requires: python-py-vapid >= 1.5.0 @@ -39,6 +42,7 @@ Requires(postun): update-alternatives BuildArch: noarch # SECTION test requirements BuildRequires: %{python_module cryptography >= 2.6.1} +BuildRequires: %{python_module aiohttp} BuildRequires: %{python_module http-ece >= 1.1.0} BuildRequires: %{python_module py-vapid >= 1.5.0} BuildRequires: %{python_module pytest} @@ -61,8 +65,6 @@ WebPush publication library. %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -# https://github.com/web-push-libs/pywebpush/issues/146 -sed -i 's:from mock:from unittest.mock:' pywebpush/tests/test_webpush.py %pytest %post diff --git a/pywebpush-1.14.0.tar.gz b/pywebpush-1.14.0.tar.gz deleted file mode 100644 index babb95b..0000000 --- a/pywebpush-1.14.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6c36e1679268219e693ba940db2bf254c240ca02664de102b7269afc3c545731 -size 25497 diff --git a/pywebpush-2.1.0.tar.gz b/pywebpush-2.1.0.tar.gz new file mode 100644 index 0000000..6b3b635 --- /dev/null +++ b/pywebpush-2.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cd55b7d217ab95beb083e68f61b812f0545f74566928312203076b069ff55c8 +size 27233 diff --git a/use-unittest-mock.patch b/use-unittest-mock.patch new file mode 100644 index 0000000..0109905 --- /dev/null +++ b/use-unittest-mock.patch @@ -0,0 +1,42 @@ +From 232eb3f7033f9bfa58c6583f68661628eee847a9 Mon Sep 17 00:00:00 2001 +From: Steve Kowalik +Date: Wed, 15 Oct 2025 13:08:03 +1100 +Subject: [PATCH] Use unittest.mock + +Drop the use of the external mock module, unittest.mock has been +included in the standard library since Python 3.4. + +Closes: #146 +--- + pywebpush/tests/test_webpush.py | 2 +- + test-requirements.txt | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/pywebpush/tests/test_webpush.py b/pywebpush/tests/test_webpush.py +index 324c6d4..b8d2081 100644 +--- a/pywebpush/tests/test_webpush.py ++++ b/pywebpush/tests/test_webpush.py +@@ -4,11 +4,11 @@ + import unittest + import time + from typing import cast, Union, Dict ++from unittest.mock import patch, Mock, AsyncMock + + import http_ece + import py_vapid + import requests +-from mock import patch, Mock, AsyncMock + from cryptography.hazmat.primitives.asymmetric import ec + from cryptography.hazmat.primitives import serialization + from cryptography.hazmat.backends import default_backend +diff --git a/test-requirements.txt b/test-requirements.txt +index c284191..a3e3fb9 100644 +--- a/test-requirements.txt ++++ b/test-requirements.txt +@@ -1,4 +1,3 @@ + -r requirements.txt + black +-mock +-pytest +\ No newline at end of file ++pytest