Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-netpbmfile for
openSUSE:Factory checked in at 2026-08-22 21:35:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-netpbmfile (Old)
and /work/SRC/openSUSE:Factory/.python-netpbmfile.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-netpbmfile"
Sat Aug 22 21:35:54 2026 rev:8 rq:1373034 version:2026.7.25
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-netpbmfile/python-netpbmfile.changes
2026-02-17 18:14:38.238158019 +0100
+++
/work/SRC/openSUSE:Factory/.python-netpbmfile.new.1258/python-netpbmfile.changes
2026-08-22 21:38:03.381323437 +0200
@@ -1,0 +2,7 @@
+Sat Aug 22 09:29:10 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2026.7.25:
+ * Drop support for Python 3.11 and numpy 2.0 (SPEC0), support
+ Python 3.15.
+
+-------------------------------------------------------------------
Old:
----
netpbmfile-2026.1.29.tar.gz
New:
----
netpbmfile-2026.7.25.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-netpbmfile.spec ++++++
--- /var/tmp/diff_new_pack.7RYYiQ/_old 2026-08-22 21:38:04.189352379 +0200
+++ /var/tmp/diff_new_pack.7RYYiQ/_new 2026-08-22 21:38:04.193352522 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-netpbmfile
-Version: 2026.1.29
+Version: 2026.7.25
Release: 0
Summary: Read and write image files in the Netpbm format
License: BSD-3-Clause
++++++ netpbmfile-2026.1.29.tar.gz -> netpbmfile-2026.7.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/.gitignore
new/netpbmfile-2026.7.25/.gitignore
--- old/netpbmfile-2026.1.29/.gitignore 2026-01-29 17:39:04.000000000 +0100
+++ new/netpbmfile-2026.7.25/.gitignore 2026-07-26 01:06:53.000000000 +0200
@@ -105,6 +105,7 @@
# Environments
.env
+.envrc
.venv
env/
venv/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/CHANGES.rst
new/netpbmfile-2026.7.25/CHANGES.rst
--- old/netpbmfile-2026.1.29/CHANGES.rst 2026-01-29 17:39:04.000000000
+0100
+++ new/netpbmfile-2026.7.25/CHANGES.rst 2026-07-26 01:06:53.000000000
+0200
@@ -1,6 +1,10 @@
Revisions
---------
+2026.7.25
+
+- Drop support for Python 3.11 and numpy 2.0 (SPEC0), support Python 3.15.
+
2026.1.29
- Fix code review issues.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/MANIFEST.in
new/netpbmfile-2026.7.25/MANIFEST.in
--- old/netpbmfile-2026.1.29/MANIFEST.in 2026-01-29 17:39:04.000000000
+0100
+++ new/netpbmfile-2026.7.25/MANIFEST.in 2026-07-26 01:06:53.000000000
+0200
@@ -6,14 +6,19 @@
include netpbmfile/py.typed
exclude .env
+exclude .gitignore
exclude *.cmd
exclude *.yaml
+exclude *.code-workspace
exclude mypy.ini
exclude ruff.toml
+exclude typos.toml
+recursive-exclude .vscode *
recursive-exclude doc *
recursive-exclude docs *
recursive-exclude test *
recursive-exclude tests *
+recursive-exclude examples *
recursive-exclude * __pycache__
recursive-exclude * *.py[co]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/README.rst
new/netpbmfile-2026.7.25/README.rst
--- old/netpbmfile-2026.1.29/README.rst 2026-01-29 17:39:04.000000000 +0100
+++ new/netpbmfile-2026.7.25/README.rst 2026-07-26 01:06:53.000000000 +0200
@@ -24,7 +24,7 @@
:Author: `Christoph Gohlke <https://www.cgohlke.com>`_
:License: BSD-3-Clause
-:Version: 2026.1.29
+:Version: 2026.7.25
:DOI: `10.5281/zenodo.17903402 <https://doi.org/10.5281/zenodo.17903402>`_
Quickstart
@@ -45,12 +45,16 @@
This revision was tested with the following requirements and dependencies
(other versions may work):
-- `CPython <https://www.python.org>`_ 3.11.9, 3.12.10, 3.13.11, 3.14.2 64-bit
-- `NumPy <https://pypi.org/project/numpy>`_ 2.4.1
+- `CPython <https://www.python.org>`_ 3.12.10, 3.13.14, 3.14.6, 3.15.0b4 64-bit
+- `Numpy <https://pypi.org/project/numpy>`_ 2.5.1
Revisions
---------
+2026.7.25
+
+- Drop support for Python 3.11 and numpy 2.0 (SPEC0), support Python 3.15.
+
2026.1.29
- Fix code review issues.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/netpbmfile/netpbmfile.py
new/netpbmfile-2026.7.25/netpbmfile/netpbmfile.py
--- old/netpbmfile-2026.1.29/netpbmfile/netpbmfile.py 2026-01-29
17:39:04.000000000 +0100
+++ new/netpbmfile-2026.7.25/netpbmfile/netpbmfile.py 2026-07-26
01:06:53.000000000 +0200
@@ -51,7 +51,7 @@
:Author: `Christoph Gohlke <https://www.cgohlke.com>`_
:License: BSD-3-Clause
-:Version: 2026.1.29
+:Version: 2026.7.25
:DOI: `10.5281/zenodo.17903402 <https://doi.org/10.5281/zenodo.17903402>`_
Quickstart
@@ -72,12 +72,16 @@
This revision was tested with the following requirements and dependencies
(other versions may work):
-- `CPython <https://www.python.org>`_ 3.11.9, 3.12.10, 3.13.11, 3.14.2 64-bit
-- `NumPy <https://pypi.org/project/numpy>`_ 2.4.1
+- `CPython <https://www.python.org>`_ 3.12.10, 3.13.14, 3.14.6, 3.15.0b4 64-bit
+- `Numpy <https://pypi.org/project/numpy>`_ 2.5.1
Revisions
---------
+2026.7.25
+
+- Drop support for Python 3.11 and numpy 2.0 (SPEC0), support Python 3.15.
+
2026.1.29
- Fix code review issues.
@@ -144,9 +148,16 @@
from __future__ import annotations
-__version__ = '2026.1.29'
+__version__ = '2026.7.25'
-__all__ = ['NetpbmFile', '__version__', 'imread', 'imsave', 'imwrite']
+__all__ = [
+ 'FILE_EXTENSIONS',
+ 'NetpbmFile',
+ '__version__',
+ 'imread',
+ 'imsave',
+ 'imwrite',
+]
import logging
import math
@@ -390,11 +401,13 @@
if byteorder is not None:
self.byteorder = byteorder
- if self.magicnumber in {'P1', 'P4'}:
+ magicnumber: MagicNumber = self.magicnumber
+
+ if magicnumber in {'P1', 'P4'}:
dtype = 'bool_'
- elif self.magicnumber in {'PF', 'PF4', 'Pf'}:
+ elif magicnumber in {'PF', 'PF4', 'Pf'}:
dtype = self.byteorder + 'f4'
- elif self.magicnumber in {'PG'}:
+ elif magicnumber in {'PG'}: # noqa: FURB171
dtype = self.byteorder + self.dtype.char
elif self.maxval < 256:
dtype = 'u1'
@@ -408,7 +421,7 @@
self.dtype = numpy.dtype(dtype)
- if self.magicnumber in {'P1', 'P2', 'P3'}:
+ if magicnumber in {'P1', 'P2', 'P3'}:
self.frames = 1
else:
bytecount = self._fh.seek(0, 2) - len(self.header)
@@ -416,7 +429,7 @@
self.height,
(
math.ceil(self.width / 8)
- if self.magicnumber in {'P4'}
+ if magicnumber in {'P4'} # noqa: FURB171
else self.width
),
self.depth,
@@ -1059,6 +1072,19 @@
return logging.getLogger('netpbmfile')
+FILE_EXTENSIONS = {
+ '.pbm': 'Portable Bit Map',
+ '.pgm': 'Portable Gray Map',
+ '.ppm': 'Portable Pixel Map',
+ '.pnm': 'Portable Any Map',
+ '.pam': 'Portable Arbitrary Map',
+ '.pgx': 'Portable Graymap Signed',
+ '.pfm': 'Portable Float Map)',
+ '.xv': 'XV thumbnail',
+}
+"""File extensions of Netpbm files."""
+
+
def main(argv: list[str] | None = None) -> int:
"""Command line usage main function.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/pyproject.toml
new/netpbmfile-2026.7.25/pyproject.toml
--- old/netpbmfile-2026.1.29/pyproject.toml 2026-01-29 17:39:04.000000000
+0100
+++ new/netpbmfile-2026.7.25/pyproject.toml 2026-07-26 01:06:53.000000000
+0200
@@ -4,7 +4,7 @@
[tool.black]
line-length = 79
-target-version = ["py311", "py312", "py313", "py314"]
+target-version = ["py312", "py313", "py314"]
skip-string-normalization = true
[tool.isort]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/setup.py
new/netpbmfile-2026.7.25/setup.py
--- old/netpbmfile-2026.1.29/setup.py 2026-01-29 17:39:04.000000000 +0100
+++ new/netpbmfile-2026.7.25/setup.py 2026-07-26 01:06:53.000000000 +0200
@@ -7,8 +7,6 @@
from setuptools import setup
-buildnumber = ''
-
def search(pattern: str, string: str, flags: int = 0) -> str:
"""Return first match of pattern in string."""
@@ -41,7 +39,6 @@
code = fh.read().replace('\r\n', '\n').replace('\r', '\n')
version = search(r"__version__ = '(.*?)'", code).replace('.x.x', '.dev0')
-version += ('.' + buildnumber) if buildnumber else ''
description = search(r'"""(.*)\.(?:\r\n|\r|\n)', code)
@@ -100,15 +97,15 @@
project_urls={
'Bug Tracker': 'https://github.com/cgohlke/netpbmfile/issues',
'Source Code': 'https://github.com/cgohlke/netpbmfile',
- # 'Documentation': 'https://',
+ 'Documentation': 'https://www.cgohlke.com/docs/netpbmfile',
},
packages=['netpbmfile'],
package_data={'netpbmfile': ['py.typed']},
entry_points={
'console_scripts': ['netpbmfile = netpbmfile.netpbmfile:main']
},
- python_requires='>=3.11',
- install_requires=['numpy'],
+ python_requires='>=3.12',
+ install_requires=['numpy>=2.1'],
extras_require={'all': ['tifffile', 'matplotlib']},
platforms=['any'],
classifiers=[
@@ -117,9 +114,9 @@
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3 :: Only',
- 'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
+ 'Programming Language :: Python :: 3.15',
],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netpbmfile-2026.1.29/tests/test_netpbmfile.py
new/netpbmfile-2026.7.25/tests/test_netpbmfile.py
--- old/netpbmfile-2026.1.29/tests/test_netpbmfile.py 2026-01-29
17:39:04.000000000 +0100
+++ new/netpbmfile-2026.7.25/tests/test_netpbmfile.py 2026-07-26
01:06:53.000000000 +0200
@@ -29,12 +29,14 @@
"""Unittests for the netpbmfile package.
-:Version: 2026.1.29
+:Version: 2026.7.25
"""
+import glob
import hashlib
import io
+import itertools
import os
import sys
import tempfile
@@ -44,7 +46,7 @@
from numpy.testing import assert_array_equal
import netpbmfile
-from netpbmfile import NetpbmFile, imread, imwrite
+from netpbmfile import FILE_EXTENSIONS, NetpbmFile, imread, imwrite
TEST_DIR = os.path.dirname(__file__)
TEMP_DIR = os.path.join(TEST_DIR, '_tmp')
@@ -533,17 +535,23 @@
imread(io.BytesIO(b'P7 '))
-def test_lfdfiles():
- """Test lfdfiles package."""
- try:
- from lfdfiles import LfdFile
- except ImportError as exc:
- pytest.skip(exc.msg)
-
- filename = os.path.join(TEST_DIR, 'P4_multi.pbm')
- data = imread(filename)
- with LfdFile(filename) as lfd:
- assert_array_equal(data, lfd.asarray())
[email protected](
+ 'filename',
+ tuple(
+ itertools.chain.from_iterable(
+ glob.glob(f'**/*{ext}', root_dir=TEST_DIR, recursive=True)
+ for ext in FILE_EXTENSIONS
+ )
+ ),
+)
+def test_glob(filename):
+ """Test read all Netpbm files."""
+ if 'empty' in filename or 'negative_size' in filename:
+ pytest.skip(f'{filename} skipped')
+ filename = os.path.join(TEST_DIR, filename)
+ with NetpbmFile(filename) as fh:
+ fh.asarray()
+ str(fh)
if __name__ == '__main__':