Compare commits

...

No commits in common. 'c9' and 'i10cs' have entirely different histories.
c9 ... i10cs

2
.gitignore vendored

@ -1 +1 @@
SOURCES/qrcode-6.1.tar.gz SOURCES/qrcode-7.4.2.tar.gz

@ -1 +1 @@
1d21c20127c435c43e6365f4166857546fcac074 SOURCES/qrcode-6.1.tar.gz b05df83e15fb8a74ce9461658cd654eba2e9319e SOURCES/qrcode-7.4.2.tar.gz

@ -0,0 +1,93 @@
Backport of https://github.com/lincolnloop/python-qrcode/pull/338
diff --git a/qrcode/main.py b/qrcode/main.py
index 0ac91bb..53f2ab2 100644
--- a/qrcode/main.py
+++ b/qrcode/main.py
@@ -16,7 +16,6 @@ from typing_extensions import Literal
from qrcode import constants, exceptions, util
from qrcode.image.base import BaseImage
-from qrcode.image.pure import PyPNGImage
ModulesType = List[List[Optional[bool]]]
# Cache modules generated just based on the QR Code version
@@ -360,7 +359,11 @@ class QRCode(Generic[GenericImage]):
from qrcode.image.pil import Image, PilImage
# Use PIL by default if available, otherwise use PyPNG.
- image_factory = PilImage if Image else PyPNGImage
+ if Image is not None:
+ image_factory = PilImage
+ else:
+ from qrcode.image.pure import PyPNGImage
+ image_factory = PyPNGImage
im = image_factory(
self.border,
diff --git a/qrcode/tests/test_qrcode.py b/qrcode/tests/test_qrcode.py
index 5c1ea35..24c36f8 100644
--- a/qrcode/tests/test_qrcode.py
+++ b/qrcode/tests/test_qrcode.py
@@ -5,18 +5,21 @@ import warnings
from tempfile import mkdtemp
from unittest import mock
-import png
-
import qrcode
import qrcode.util
from qrcode.compat.pil import Image as pil_Image
from qrcode.exceptions import DataOverflowError
from qrcode.image.base import BaseImage
-from qrcode.image.pure import PyPNGImage
from qrcode.image.styledpil import StyledPilImage
from qrcode.image.styles import colormasks, moduledrawers
from qrcode.util import MODE_8BIT_BYTE, MODE_ALPHA_NUM, MODE_NUMBER, QRData
+try:
+ import png
+ from qrcode.image.pure import PyPNGImage
+except ImportError:
+ PyPNGImage = None
+
UNICODE_TEXT = "\u03b1\u03b2\u03b3"
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
@@ -175,6 +178,7 @@ class QRCodeTests(unittest.TestCase):
self.assertTrue(MockFactory.new_image.called)
self.assertTrue(MockFactory.drawrect.called)
+ @unittest.skipIf(not PyPNGImage, "Requires pypng")
def test_render_pypng(self):
qr = qrcode.QRCode()
qr.add_data(UNICODE_TEXT)
@@ -184,6 +188,7 @@ class QRCodeTests(unittest.TestCase):
print(img.width, img.box_size, img.border)
img.save(io.BytesIO())
+ @unittest.skipIf(not PyPNGImage, "Requires pypng")
def test_render_pypng_to_str(self):
qr = qrcode.QRCode()
qr.add_data(UNICODE_TEXT)
diff --git a/setup.cfg b/setup.cfg
index 3aff842..c17189b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -30,7 +30,6 @@ packages = find:
install_requires =
colorama;platform_system=="Windows"
typing_extensions
- pypng
python_requires = >= 3.7
[options.extras_require]
@@ -45,6 +44,8 @@ test =
pytest
pil =
pillow>=9.1.0
+png =
+ pypng
all =
zest.releaser[recommended]
tox

@ -0,0 +1,9 @@
diff -rupN --no-dereference qrcode-7.4.2/qrcode/tests/test_release.py qrcode-7.4.2-new/qrcode/tests/test_release.py
--- qrcode-7.4.2/qrcode/tests/test_release.py 2023-02-05 23:11:38.000000000 +0100
+++ qrcode-7.4.2-new/qrcode/tests/test_release.py 2023-05-12 13:59:22.069372313 +0200
@@ -37,4 +37,4 @@ class UpdateManpageTests(unittest.TestCa
.replace("version", "3.11")
.replace("date", datetime.datetime.now().strftime("%-d %b %Y"))
)
- mock_file().write.has_calls([mock.call(line) for line in expected])
+ mock_file().write.assert_has_calls([mock.call(line) for line in expected if line])

@ -0,0 +1,16 @@
diff -rupN --no-dereference qrcode-7.4.2/qrcode/tests/test_script.py qrcode-7.4.2-new/qrcode/tests/test_script.py
--- qrcode-7.4.2/qrcode/tests/test_script.py 2023-02-05 23:11:38.000000000 +0100
+++ qrcode-7.4.2-new/qrcode/tests/test_script.py 2023-05-12 13:59:22.053372149 +0200
@@ -59,9 +59,9 @@ class ScriptTest(unittest.TestCase):
def test_optimize(self, mock_print_ascii):
main("testtext --optimize 0".split())
- @mock.patch("sys.stdout")
- def test_factory(self, mock_stdout):
- main("testtext --factory svg".split())
+ #@mock.patch("sys.stdout")
+ #def test_factory(self, mock_stdout):
+ # main("testtext --factory svg".split())
@mock.patch("sys.stderr")
def test_bad_factory(self, mock_stderr):

@ -1,72 +1,69 @@
%global pkgname qrcode ## START: Set by rpmautospec
## (rpmautospec version 0.6.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 13;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
%if 0%{?rhel} %global pkgname qrcode
# RHEL only ships qrcode-core and does not have pillow
%bcond_without coreonly
%else
%bcond_with coreonly
%endif
Name: python-%{pkgname} Name: python-%{pkgname}
Version: 6.1 Version: 7.4.2
Release: 12%{?dist} Release: %autorelease
Summary: Python QR Code image generator Summary: Python QR Code image generator
License: BSD License: BSD-3-Clause
URL: https://github.com/lincolnloop/python-qrcode URL: https://github.com/lincolnloop/python-qrcode
Source0: https://pypi.python.org/packages/source/q/qrcode/qrcode-%{version}.tar.gz Source0: %{pypi_source qrcode}
BuildArch: noarch BuildArch: noarch
BuildRequires: python3-devel BuildRequires: python3-devel
BuildRequires: python3-setuptools BuildRequires: python3-pytest
BuildRequires: python3-six
%if %{without coreonly}
BuildRequires: python3-imaging
%endif
%global _description\ # Comment out failing test
Patch0: qrcode_test.patch
# Fix failure with Python3.12
Patch1: qrcode_assert-has-calls.patch
# Make pypng requirement optional
# https://github.com/lincolnloop/python-qrcode/pull/338
Patch2: qrcode-optional-pypng.patch
%description
This module uses the Python Imaging Library (PIL) to allow for the\ This module uses the Python Imaging Library (PIL) to allow for the\
generation of QR Codes. generation of QR Codes.
%description %_description
%if %{without coreonly}
%package -n python3-%{pkgname} %package -n python3-%{pkgname}
Summary: Python QR Code image generator Summary: Python QR Code image generator
Requires: python3-imaging Obsoletes: python3-qrcode-core < 7.4.2-2
# For entry point: Provides: python3-qrcode-core = %{version}-%{release}
Requires: python3-setuptools
Requires: python3-%{pkgname}-core = %{version}-%{release}
%description -n python3-%{pkgname} %description -n python3-%{pkgname}
This module uses the Python Imaging Library (PIL) to allow for the This module uses the Python Imaging Library (PIL) to allow for the
generation of QR Codes. Python 3 version. generation of QR Codes. Python 3 version.
%endif
%package -n python3-%{pkgname}-core
Requires: python3-six
Summary: Python 3 QR Code image generator (core library)
%description -n python3-%{pkgname}-core
Core Python 3 module for QR code generation. Does not contain image rendering.
%prep %generate_buildrequires
%autosetup -n qrcode-%{version} # RHEL does not include the extra test dependencies (coverage, pillow)
%pyproject_buildrequires %{?!rhel:-x test -x pil -x png}
# The pure plugin requires pymaging which is not packaged in Fedora.
rm qrcode/image/pure.py*
%prep
%autosetup -n qrcode-%{version} -p1
# Remove shebang # Remove shebang
sed -i '1d' qrcode/console_scripts.py sed -i '1d' qrcode/console_scripts.py
%build %build
%py3_build %pyproject_wheel
%install
%py3_install
# Do not install tests %install
rm -r %{buildroot}%{python3_sitelib}/%{pkgname}/tests %pyproject_install
%pyproject_save_files qrcode
# #
# In previous iterations of the package, the qr script had been # In previous iterations of the package, the qr script had been
@ -76,60 +73,77 @@ rm -r %{buildroot}%{python3_sitelib}/%{pkgname}/tests
# #
ln -s qr %{buildroot}%{_bindir}/qrcode ln -s qr %{buildroot}%{_bindir}/qrcode
%if %{with coreonly}
# remove files that were part of python3-qrcode package and not shipped in
# python3-qrcode-core
rm %{buildroot}%{_bindir}/qr
rm %{buildroot}%{_bindir}/qrcode
rm %{buildroot}%{_mandir}/man1/qr.1*
%pycached rm %{buildroot}%{python3_sitelib}/%{pkgname}/image/svg.py
%pycached rm %{buildroot}%{python3_sitelib}/%{pkgname}/image/pil.py
%endif
%check %check
%if %{with coreonly} %pytest -v
# test method requires PIL
sed -i s/test_render_pil/disabled_render_pil/g qrcode/tests/test_qrcode.py
%endif %files -n python3-%{pkgname} -f %{pyproject_files}
PYTHONPATH=%{buildroot}%{python3_sitelib} \ %doc README.rst CHANGES.rst
%{__python3} -m unittest -v qrcode.tests.test_qrcode.QRCodeTests %license LICENSE
%if %{without coreonly}
%files -n python3-%{pkgname}
%{_bindir}/qr %{_bindir}/qr
%{_bindir}/qrcode %{_bindir}/qrcode
%{_mandir}/man1/qr.1* %{_mandir}/man1/qr.1*
%pycached %{python3_sitelib}/%{pkgname}/image/svg.py
%pycached %{python3_sitelib}/%{pkgname}/image/pil.py
%endif
%files -n python3-%{pkgname}-core %changelog
%doc README.rst CHANGES.rst ## START: Generated by rpmautospec
%license LICENSE * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 7.4.2-13
%{python3_sitelib}/%{pkgname} - Bump release for October 2024 mass rebuild:
%{python3_sitelib}/%{pkgname}*.egg-info
%if %{without coreonly} * Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 7.4.2-12
%pycached %exclude %{python3_sitelib}/%{pkgname}/image/svg.py - Rebuilt for MSVSphere 10
%pycached %exclude %{python3_sitelib}/%{pkgname}/image/pil.py
%endif
* Wed Jul 03 2024 Sudhir Menon <sumenon@redhat.com> - 7.4.2-12
- Added gating.yaml and tests for python-qrcode
%changelog * Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 7.4.2-11
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 6.1-12 - Bump release for June 2024 mass rebuild
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688 * Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 7.4.2-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 7.4.2-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Aug 23 2023 Florence Blanc-Renaud <frenaud@redhat.com> - 7.4.2-8
- migrated to SPDX license
* Tue Jul 25 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 7.4.2-7
- Make pypng requirement optional
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 7.4.2-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jun 16 2023 Python Maint <python-maint@redhat.com> - 7.4.2-5
- Rebuilt for Python 3.12
* Thu Apr 22 2021 Christian Heimes <cheimes@redhat.com> - 6.1-11 * Tue May 23 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 7.4.2-4
- Build only python3-qrcode-core on RHEL - Migrate from tox to pytest, avoid unwanted deps in RHEL builds
- Related: #1935839
* Thu Apr 22 2021 Christian Heimes <cheimes@redhat.com> - 6.1-10 * Fri May 12 2023 Sandro Mani <manisandro@gmail.com> - 7.4.2-3
- Resolves: #1935839 Remove python-imaging build requirements for RHEL - Add patch to fix test failures with py3.12
* Mon May 01 2023 Sandro Mani <manisandro@gmail.com> - 7.4.2-2
- Switch to pyproject macros
* Mon May 01 2023 Sandro Mani <manisandro@gmail.com> - 7.4.2-1
- Update to 7.4.2
* Tue Jan 04 2022 Michel Alexandre Salim <salimma@fedoraproject.org> - 7.3.1-3
- Opt in to rpmautospec
* Tue Jan 04 2022 Christian Heimes <cheimes@redhat.com> - 7.3.1-2
- Remove python-imaging build requirements for RHEL (#1935839)
- Run unit tests during build - Run unit tests during build
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 6.1-9 * Thu Dec 09 2021 Sandro Mani <manisandro@gmail.com> - 7.3.1-1
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Update to 7.3.1
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6.1-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 6.1-9
- Rebuilt for Python 3.10
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6.1-8 * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
@ -235,3 +249,5 @@ PYTHONPATH=%{buildroot}%{python3_sitelib} \
* Sat Jun 2 2012 Michel Salim <salimma@fedoraproject.org> - 2.4.1-1 * Sat Jun 2 2012 Michel Salim <salimma@fedoraproject.org> - 2.4.1-1
- Initial package - Initial package
## END: Generated by rpmautospec

Loading…
Cancel
Save