From fa76b01dd8e9996fe09ed64d373e366200f340b79b7bf712d27d7832dceca67f Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Wed, 15 Oct 2025 03:13:36 +0000 Subject: [PATCH] - 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. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pywebpush?expand=0&rev=10 --- .gitattributes | 23 +++++++++++ .gitignore | 1 + no-more-six.patch | 57 +++++++++++++++++++++++++++ python-pywebpush.changes | 48 +++++++++++++++++++++++ python-pywebpush.spec | 83 ++++++++++++++++++++++++++++++++++++++++ pywebpush-1.14.0.tar.gz | 3 ++ pywebpush-2.1.0.tar.gz | 3 ++ use-unittest-mock.patch | 42 ++++++++++++++++++++ 8 files changed, 260 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 no-more-six.patch create mode 100644 python-pywebpush.changes create mode 100644 python-pywebpush.spec create mode 100644 pywebpush-1.14.0.tar.gz create mode 100644 pywebpush-2.1.0.tar.gz create mode 100644 use-unittest-mock.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/no-more-six.patch b/no-more-six.patch new file mode 100644 index 0000000..362f1ac --- /dev/null +++ b/no-more-six.patch @@ -0,0 +1,57 @@ +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-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 + 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(cast(str, keys[k]).encode("utf8")) + receiver_raw = base64.urlsafe_b64decode( + 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")) + if content_encoding == "aes128gcm": + self.verb("Encrypting to aes128gcm...") +Index: pywebpush-2.1.0/requirements.txt +=================================================================== +--- 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 +-six>=1.15.0 + py-vapid>=1.7.0 diff --git a/python-pywebpush.changes b/python-pywebpush.changes new file mode 100644 index 0000000..dd78f08 --- /dev/null +++ b/python-pywebpush.changes @@ -0,0 +1,48 @@ +------------------------------------------------------------------- +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 + +- Switch to pyproject macros. + +------------------------------------------------------------------- +Wed Jun 28 06:43:49 UTC 2023 - Steve Kowalik + +- Add patch no-more-six.patch: + * Do not require six. +- Do not use greedy globs in %files. + +------------------------------------------------------------------- +Fri Apr 8 10:03:17 UTC 2022 - pgajdos@suse.com + +- do not require python-mock for build + +------------------------------------------------------------------- +Tue Sep 28 01:08:03 UTC 2021 - Steve Kowalik + +- Update to 1.14.0: + * bug: accept all VAPID key instances (thanks @mthu) + * Support requests_session param in webpush fn too + * chore: library update, remove nose tests + +------------------------------------------------------------------- +Sun Jun 7 05:11:49 UTC 2020 - John Vandenberg + +- Tidy spec, removing unnecessary build dependencies and suggests +- Update to v1.11.0 + +------------------------------------------------------------------- +Wed Aug 14 17:55:17 UTC 2019 - Antonio Larrosa + +- Initial release of python-pywebpush 1.10.0 diff --git a/python-pywebpush.spec b/python-pywebpush.spec new file mode 100644 index 0000000..683ebfc --- /dev/null +++ b/python-pywebpush.spec @@ -0,0 +1,83 @@ +# +# spec file for package python-pywebpush +# +# 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 +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-pywebpush +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-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 +Requires: python-requests >= 2.21.0 +Requires(post): update-alternatives +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} +BuildRequires: %{python_module requests >= 2.21.0} +# /SECTION +%python_subpackages + +%description +WebPush publication library. + +%prep +%autosetup -p1 -n pywebpush-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/pywebpush +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +%pytest + +%post +%python_install_alternative pywebpush + +%postun +%python_uninstall_alternative pywebpush + +%files %{python_files} +%doc CHANGELOG.md README.md README.rst +%license LICENSE +%python_alternative %{_bindir}/pywebpush +%{python_sitelib}/pywebpush +%{python_sitelib}/pywebpush-%{version}.dist-info + +%changelog diff --git a/pywebpush-1.14.0.tar.gz b/pywebpush-1.14.0.tar.gz new file mode 100644 index 0000000..babb95b --- /dev/null +++ b/pywebpush-1.14.0.tar.gz @@ -0,0 +1,3 @@ +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