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__':

Reply via email to