Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pgmagick for openSUSE:Factory 
checked in at 2026-01-27 16:17:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pgmagick (Old)
 and      /work/SRC/openSUSE:Factory/.python-pgmagick.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pgmagick"

Tue Jan 27 16:17:47 2026 rev:7 rq:1329414 version:0.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pgmagick/python-pgmagick.changes  
2025-07-09 17:29:34.126454321 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pgmagick.new.1928/python-pgmagick.changes    
    2026-01-27 16:17:54.023959399 +0100
@@ -1,0 +2,8 @@
+Tue Jan 27 07:04:02 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.8:
+  * Update docs
+  * add update
+  * Python 3.14 support
+
+-------------------------------------------------------------------

Old:
----
  pgmagick-0.7.6.tar.gz

New:
----
  pgmagick-0.8.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pgmagick.spec ++++++
--- /var/tmp/diff_new_pack.gxzSA2/_old  2026-01-27 16:17:55.004000221 +0100
+++ /var/tmp/diff_new_pack.gxzSA2/_new  2026-01-27 16:17:55.008000387 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pgmagick
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 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
@@ -22,7 +22,7 @@
 %define pythons python3
 %{?sle15_python_module_pythons}
 Name:           python-pgmagick
-Version:        0.7.6
+Version:        0.8
 Release:        0
 Summary:        Yet Another Python wrapper for GraphicsMagick
 License:        MIT

++++++ pgmagick-0.7.6.tar.gz -> pgmagick-0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/PKG-INFO new/pgmagick-0.8/PKG-INFO
--- old/pgmagick-0.7.6/PKG-INFO 2021-04-21 17:31:39.000000000 +0200
+++ new/pgmagick-0.8/PKG-INFO   2025-12-29 01:47:33.270090800 +0100
@@ -1,196 +1,202 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.4
 Name: pgmagick
-Version: 0.7.6
+Version: 0.8
 Summary: Yet Another Python wrapper for GraphicsMagick
-Home-page: https://github.com/hhatto/pgmagick
-Author: Hideo Hattori
-Author-email: [email protected]
-License: MIT
-Description: About
-        =====
-        
-        .. image:: https://img.shields.io/pypi/v/pgmagick.svg
-            :target: https://pypi.org/project/pgmagick/
-            :alt: PyPI Version
-        
-        .. image:: 
https://github.com/hhatto/pgmagick/workflows/Python%20package/badge.svg
-            :target: https://github.com/hhatto/pgmagick/actions
-            :alt: Build status
-        
-        pgmagick is a yet another boost.python based wrapper for 
GraphicsMagick_ .
-        
-        .. _GraphicsMagick: http://www.graphicsmagick.org/
-        
-        Installation
-        ============
-        install to::
-        
-            $ pip install pgmagick
-        
-        
-        Requirements
-        ============
-        Python3.5++ (or Python2.7), GraphicsMagick and Boost.Python.
-        
-        package install on Debian Buster::
-        
-            $ apt-get install g++ libgraphicsmagick++1-dev libboost-python-dev
-        
-        package install on Ubuntu(test on Ubuntu10.04+)::
-        
-            ### Ubuntu11.10+ ###
-            $ apt-get install python-pgmagick
-        
-            ### Ubuntu10.04+ ###
-            $ apt-get install libgraphicsmagick++1-dev
-            $ apt-get install libboost-python1.40-dev
-        
-        package install on Fedora::
-        
-            $ yum install GraphicsMagick-c++-devel
-            $ yum install boost-devel
-        
-        GraphicsMagick from source package::
-        
-            $ ./configure --enable-shared=yes
-            $ make && make install
-        
-        MacOSX
-        ------
-        
-        via homebrew-cask(homebrew-pgmagick) with Python3
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        use `homebrew-pgmagick`_ ::
-        
-            $ brew tap hhatto/pgmagick
-            $ brew install pgmagick
-        
-        .. _`homebrew-pgmagick`: https://github.com/hhatto/homebrew-pgmagick
-        
-        via homebrew-cask(homebrew-pgmagick) with Python3
-        
-        via homebrew and pip with Python3
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        on MacOSX (10.13.5~10.15.x)::
-        
-            $ brew install python
-            $ brew install graphicsmagick
-            $ brew install boost-python3
-            $ pip install pgmagick
-        
-        
-        Windows
-        -------
-        Now, not official support.
-        However, *unofficial* binary packages exists.
-        
-        - http://www.lfd.uci.edu/~gohlke/pythonlibs/#pgmagick
-        
-        ImageMagick support
-        -------------------
-        pgmagick is supported to ImageMagick library. (*version:0.4+*)
-        
-        package install on Ubuntu(test on Ubuntu10.04+)::
-        
-            $ apt-get install libmagick++-dev
-        
-        show library name and version::
-        
-            >>> from pgmagick import gminfo
-            >>> gminfo.library
-            'GraphicsMagick'    # or 'ImageMagick'
-            >>> gminfo.version
-            '1.3.x'
-            >>>
-        
-        Usage
-        =====
-        
-        scale example::
-        
-            >>> from pgmagick import Image
-            >>> im = Image('input.jpg')
-            >>> im.quality(100)
-            >>> im.scale('100x100')
-            >>> im.sharpen(1.0)
-            >>> im.write('output.jpg')
-        
-        resize example::
-        
-            >>> from pgmagick import Image
-            >>> im = Image('input.jpg')
-            >>> im.filterType(FilterTypes.SincFilter)
-            >>> im.resize('100x100')
-            >>> im.write('output.jpg')
-        
-        composite example::
-        
-            >>> from pgmagick import Image, CompositeOperator as co
-            >>> base = Image('base.png')
-            >>> layer = Image('layer_one.png')
-            >>> base.composite(layer, 100, 100, co.OverCompositeOp)
-            >>> im.write('output.png')
-        
-        draw example::
-        
-            >>> from pgmagick import Image, DrawableCircle, DrawableText, 
Geometry, Color
-            >>> im = Image(Geometry(300, 300), Color("yellow"))
-            >>> circle = DrawableCircle(100, 100, 20, 20)
-            >>> im.draw(circle)
-            >>> im.fontPointsize(65)
-            >>> text = DrawableText(30, 250, "Hello pgmagick")
-            >>> im.draw(text)
-            >>> im.write('hoge.png')
-        
-        blob access::
-        
-            >>> from pgmagick import Image, Blob, Geometry
-            >>> blob = Blob(open('filename.jpg').read())
-            >>> blob.update(open('filename2.jpg').read())
-            >>> img = Image(blob, Geometry(600, 480))
-            >>> img.scale('300x200')
-            >>> img.write('out.jpg')
-        
-        create animated-GIF::
-        
-            from pgmagick import Image, ImageList, Geometry, Color
-        
-            imgs = ImageList()
-            for color in ('red', 'blue', 'green', 'black', 'yellow'):
-                imgs.append(Image(Geometry(200, 200), Color(color)))
-            imgs.animationDelayImages(100)
-            imgs.scaleImages(Geometry(100, 100))
-            imgs.writeImages('output.gif')
-        
-        more API detail... read to `Magick++ API for GraphicsMagick`_ document.
-        
-        .. _`Magick++ API for GraphicsMagick`: 
http://www.graphicsmagick.org/Magick++/
-        
-        Python APIs(*NOTICE!! this api is alpha version!!*)::
-        
-            >>> from pgmagick.api import Image
-            >>> img = Image((300, 300), "gradient:#ffffff-#000000")
-            >>> img.scale(0.8)
-            >>> img.write('out.png')
-        
-        
-        Links
-        =====
-        * PyPI_
-        * `Project Page`_
-        * `Project Page (Old)`_
-        
-        .. _PyPI: http://pypi.python.org/pypi/pgmagick/
-        .. _`Project Page`: https://github.com/hhatto/pgmagick/
-        .. _`Project Page (Old)`: https://bitbucket.org/hhatto/pgmagick/
-        
-Keywords: GraphicsMagick ImageMagick graphics boost image
-Platform: UNKNOWN
+Author-email: Hideo Hattori <[email protected]>
+Project-URL: Homepage, https://github.com/hhatto/pgmagick
+Project-URL: Repository, https://github.com/hhatto/pgmagick
+Keywords: GraphicsMagick,ImageMagick,graphics,boost,image
 Classifier: Development Status :: 4 - Beta
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: POSIX
 Classifier: Programming Language :: C++
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Multimedia :: Graphics
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+Dynamic: license-file
+
+About
+=====
+
+.. image:: https://img.shields.io/pypi/v/pgmagick.svg
+    :target: https://pypi.org/project/pgmagick/
+    :alt: PyPI Version
+
+.. image:: 
https://github.com/hhatto/pgmagick/workflows/Python%20package/badge.svg
+    :target: https://github.com/hhatto/pgmagick/actions
+    :alt: Build status
+
+pgmagick is a yet another boost.python based wrapper for GraphicsMagick_ .
+
+.. _GraphicsMagick: http://www.graphicsmagick.org/
+
+Installation
+============
+install to::
+
+    $ pip install pgmagick
+
+
+Requirements
+============
+Python3.5++ (or Python2.7), GraphicsMagick and Boost.Python.
+
+package install on Debian Buster::
+
+    $ apt-get install g++ libgraphicsmagick++1-dev libboost-python-dev
+
+package install on Ubuntu(test on Ubuntu10.04+)::
+
+    ### Ubuntu11.10+ ###
+    $ apt-get install python-pgmagick
+
+    ### Ubuntu10.04+ ###
+    $ apt-get install libgraphicsmagick++1-dev
+    $ apt-get install libboost-python1.40-dev
+
+package install on Fedora::
+
+    $ yum install GraphicsMagick-c++-devel
+    $ yum install boost-devel
+
+GraphicsMagick from source package::
+
+    $ ./configure --enable-shared=yes
+    $ make && make install
+
+MacOSX
+------
+
+via homebrew-cask(homebrew-pgmagick) with Python3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+use `homebrew-pgmagick`_ ::
+
+    $ brew tap hhatto/pgmagick
+    $ brew install pgmagick
+
+.. _`homebrew-pgmagick`: https://github.com/hhatto/homebrew-pgmagick
+
+via homebrew-cask(homebrew-pgmagick) with Python3
+
+via homebrew and pip with Python3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+on MacOSX (10.13.5~10.15.x)::
+
+    $ brew install python
+    $ brew install graphicsmagick
+    $ brew install boost-python3
+    $ pip install pgmagick
+
+
+Windows
+-------
+Now, not official support.
+However, *unofficial* binary packages exists.
+
+- http://www.lfd.uci.edu/~gohlke/pythonlibs/#pgmagick
+
+ImageMagick support
+-------------------
+pgmagick is supported to ImageMagick library. (*version:0.4+*)
+
+package install on Ubuntu(test on Ubuntu10.04+)::
+
+    $ apt-get install libmagick++-dev
+
+show library name and version::
+
+    >>> from pgmagick import gminfo
+    >>> gminfo.library
+    'GraphicsMagick'    # or 'ImageMagick'
+    >>> gminfo.version
+    '1.3.x'
+    >>>
+
+Usage
+=====
+
+scale example::
+
+    >>> from pgmagick import Image
+    >>> im = Image('input.jpg')
+    >>> im.quality(100)
+    >>> im.scale('100x100')
+    >>> im.sharpen(1.0)
+    >>> im.write('output.jpg')
+
+resize example::
+
+    >>> from pgmagick import Image
+    >>> im = Image('input.jpg')
+    >>> im.filterType(FilterTypes.SincFilter)
+    >>> im.resize('100x100')
+    >>> im.write('output.jpg')
+
+composite example::
+
+    >>> from pgmagick import Image, CompositeOperator as co
+    >>> base = Image('base.png')
+    >>> layer = Image('layer_one.png')
+    >>> base.composite(layer, 100, 100, co.OverCompositeOp)
+    >>> im.write('output.png')
+
+draw example::
+
+    >>> from pgmagick import Image, DrawableCircle, DrawableText, Geometry, 
Color
+    >>> im = Image(Geometry(300, 300), Color("yellow"))
+    >>> circle = DrawableCircle(100, 100, 20, 20)
+    >>> im.draw(circle)
+    >>> im.fontPointsize(65)
+    >>> text = DrawableText(30, 250, "Hello pgmagick")
+    >>> im.draw(text)
+    >>> im.write('hoge.png')
+
+blob access::
+
+    >>> from pgmagick import Image, Blob, Geometry
+    >>> blob = Blob(open('filename.jpg').read())
+    >>> blob.update(open('filename2.jpg').read())
+    >>> img = Image(blob, Geometry(600, 480))
+    >>> img.scale('300x200')
+    >>> img.write('out.jpg')
+
+create animated-GIF::
+
+    from pgmagick import Image, ImageList, Geometry, Color
+
+    imgs = ImageList()
+    for color in ('red', 'blue', 'green', 'black', 'yellow'):
+        imgs.append(Image(Geometry(200, 200), Color(color)))
+    imgs.animationDelayImages(100)
+    imgs.scaleImages(Geometry(100, 100))
+    imgs.writeImages('output.gif')
+
+more API detail... read to `Magick++ API for GraphicsMagick`_ document.
+
+.. _`Magick++ API for GraphicsMagick`: http://www.graphicsmagick.org/Magick++/
+
+Python APIs(*NOTICE!! this api is alpha version!!*)::
+
+    >>> from pgmagick.api import Image
+    >>> img = Image((300, 300), "gradient:#ffffff-#000000")
+    >>> img.scale(0.8)
+    >>> img.write('out.png')
+
+
+Links
+=====
+* PyPI_
+* `Project Page`_
+* `Project Page (Old)`_
+
+.. _PyPI: http://pypi.python.org/pypi/pgmagick/
+.. _`Project Page`: https://github.com/hhatto/pgmagick/
+.. _`Project Page (Old)`: https://bitbucket.org/hhatto/pgmagick/
Binary files old/pgmagick-0.7.6/example/Xo.jpg and 
new/pgmagick-0.8/example/Xo.jpg differ
Binary files old/pgmagick-0.7.6/example/Y.jpg and 
new/pgmagick-0.8/example/Y.jpg differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/example/blob.py 
new/pgmagick-0.8/example/blob.py
--- old/pgmagick-0.7.6/example/blob.py  2019-10-31 14:23:42.000000000 +0100
+++ new/pgmagick-0.8/example/blob.py    2024-08-20 02:32:28.000000000 +0200
@@ -1,8 +1,5 @@
 from pgmagick import Blob, Image, Color, Geometry
 
-blob = Blob(open('example.png').read())
-#print dir(blob)
-#print len(blob.data)
-#print blob.length()
+blob = Blob(open('example.png', 'rb').read())
 img = Image(blob)
 img.write('from_blob_to_image.png')
Binary files old/pgmagick-0.7.6/example/from_blob_to_image.png and 
new/pgmagick-0.8/example/from_blob_to_image.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/example/imagelist.py 
new/pgmagick-0.8/example/imagelist.py
--- old/pgmagick-0.7.6/example/imagelist.py     2019-10-31 14:23:42.000000000 
+0100
+++ new/pgmagick-0.8/example/imagelist.py       2024-08-20 02:32:28.000000000 
+0200
@@ -5,10 +5,10 @@
     imgs.append(Image(Geometry(200, 200), Color(color)))
 imgs.animationDelayImages(100)
 imgs.scaleImages(Geometry(100, 100))
-print len(imgs)
+print(len(imgs))
 imgs.writeImages('output.gif')
 
 imgs = ImageList()
 imgs.readImages('output.gif')
 for img in imgs:
-    print img
+    print(img)
Binary files old/pgmagick-0.7.6/example/new.pdf and 
new/pgmagick-0.8/example/new.pdf differ
Binary files old/pgmagick-0.7.6/example/output.gif and 
new/pgmagick-0.8/example/output.gif differ
Binary files old/pgmagick-0.7.6/example/output.jpg and 
new/pgmagick-0.8/example/output.jpg differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/example/pixels.py 
new/pgmagick-0.8/example/pixels.py
--- old/pgmagick-0.7.6/example/pixels.py        2019-10-31 14:23:42.000000000 
+0100
+++ new/pgmagick-0.8/example/pixels.py  2024-08-20 02:32:28.000000000 +0200
@@ -1,15 +1,15 @@
 from pgmagick import Image, Blob
 
-blob = Blob(open('X.jpg').read())
+blob = Blob(open('X.jpg', 'rb').read())
 img = Image(blob)
 size = img.size()
-pixels = img.getPixels(0, 0, size.width()/2, size.height()/2)
+pixels = img.getPixels(0, 0, int(size.width()/2), int(size.height()/2))
 
 for cnt, pixel in enumerate(pixels):
     if False:
         print(pixel.red, pixel.blue, pixel.green, pixel.opacity)
-    pixel.blue = pixel.blue / 2
-    pixel.green = pixel.green / 2
-    pixel.red = pixel.red / 2
+    pixel.blue = int(pixel.blue / 2)
+    pixel.green = int(pixel.green / 2)
+    pixel.red = int(pixel.red / 2)
 img.syncPixels()
 img.write("Xo.jpg")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/example/writeimages_with_blob.py 
new/pgmagick-0.8/example/writeimages_with_blob.py
--- old/pgmagick-0.7.6/example/writeimages_with_blob.py 2019-10-31 
14:23:42.000000000 +0100
+++ new/pgmagick-0.8/example/writeimages_with_blob.py   2024-08-20 
02:32:28.000000000 +0200
@@ -1,7 +1,6 @@
-#!/usr/bin/env python
 import pgmagick
 
-im = pgmagick.Image('existing.tif')
+im = pgmagick.Image('X.jpg')
 
 pdf = pgmagick.ImageList()
 pdf.append(im)
@@ -10,4 +9,4 @@
 
 blob = pgmagick.Blob()
 pdf.writeImages(blob)
-print blob.length()
+print(blob.length())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/pgmagick/_version.py 
new/pgmagick-0.8/pgmagick/_version.py
--- old/pgmagick-0.7.6/pgmagick/_version.py     2021-04-21 17:28:31.000000000 
+0200
+++ new/pgmagick-0.8/pgmagick/_version.py       2025-12-29 01:43:45.000000000 
+0100
@@ -1 +1 @@
-__version__ = '0.7.6'
+__version__ = '0.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/pgmagick.egg-info/PKG-INFO 
new/pgmagick-0.8/pgmagick.egg-info/PKG-INFO
--- old/pgmagick-0.7.6/pgmagick.egg-info/PKG-INFO       2021-04-21 
17:31:39.000000000 +0200
+++ new/pgmagick-0.8/pgmagick.egg-info/PKG-INFO 2025-12-29 01:47:33.000000000 
+0100
@@ -1,196 +1,202 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.4
 Name: pgmagick
-Version: 0.7.6
+Version: 0.8
 Summary: Yet Another Python wrapper for GraphicsMagick
-Home-page: https://github.com/hhatto/pgmagick
-Author: Hideo Hattori
-Author-email: [email protected]
-License: MIT
-Description: About
-        =====
-        
-        .. image:: https://img.shields.io/pypi/v/pgmagick.svg
-            :target: https://pypi.org/project/pgmagick/
-            :alt: PyPI Version
-        
-        .. image:: 
https://github.com/hhatto/pgmagick/workflows/Python%20package/badge.svg
-            :target: https://github.com/hhatto/pgmagick/actions
-            :alt: Build status
-        
-        pgmagick is a yet another boost.python based wrapper for 
GraphicsMagick_ .
-        
-        .. _GraphicsMagick: http://www.graphicsmagick.org/
-        
-        Installation
-        ============
-        install to::
-        
-            $ pip install pgmagick
-        
-        
-        Requirements
-        ============
-        Python3.5++ (or Python2.7), GraphicsMagick and Boost.Python.
-        
-        package install on Debian Buster::
-        
-            $ apt-get install g++ libgraphicsmagick++1-dev libboost-python-dev
-        
-        package install on Ubuntu(test on Ubuntu10.04+)::
-        
-            ### Ubuntu11.10+ ###
-            $ apt-get install python-pgmagick
-        
-            ### Ubuntu10.04+ ###
-            $ apt-get install libgraphicsmagick++1-dev
-            $ apt-get install libboost-python1.40-dev
-        
-        package install on Fedora::
-        
-            $ yum install GraphicsMagick-c++-devel
-            $ yum install boost-devel
-        
-        GraphicsMagick from source package::
-        
-            $ ./configure --enable-shared=yes
-            $ make && make install
-        
-        MacOSX
-        ------
-        
-        via homebrew-cask(homebrew-pgmagick) with Python3
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        use `homebrew-pgmagick`_ ::
-        
-            $ brew tap hhatto/pgmagick
-            $ brew install pgmagick
-        
-        .. _`homebrew-pgmagick`: https://github.com/hhatto/homebrew-pgmagick
-        
-        via homebrew-cask(homebrew-pgmagick) with Python3
-        
-        via homebrew and pip with Python3
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        on MacOSX (10.13.5~10.15.x)::
-        
-            $ brew install python
-            $ brew install graphicsmagick
-            $ brew install boost-python3
-            $ pip install pgmagick
-        
-        
-        Windows
-        -------
-        Now, not official support.
-        However, *unofficial* binary packages exists.
-        
-        - http://www.lfd.uci.edu/~gohlke/pythonlibs/#pgmagick
-        
-        ImageMagick support
-        -------------------
-        pgmagick is supported to ImageMagick library. (*version:0.4+*)
-        
-        package install on Ubuntu(test on Ubuntu10.04+)::
-        
-            $ apt-get install libmagick++-dev
-        
-        show library name and version::
-        
-            >>> from pgmagick import gminfo
-            >>> gminfo.library
-            'GraphicsMagick'    # or 'ImageMagick'
-            >>> gminfo.version
-            '1.3.x'
-            >>>
-        
-        Usage
-        =====
-        
-        scale example::
-        
-            >>> from pgmagick import Image
-            >>> im = Image('input.jpg')
-            >>> im.quality(100)
-            >>> im.scale('100x100')
-            >>> im.sharpen(1.0)
-            >>> im.write('output.jpg')
-        
-        resize example::
-        
-            >>> from pgmagick import Image
-            >>> im = Image('input.jpg')
-            >>> im.filterType(FilterTypes.SincFilter)
-            >>> im.resize('100x100')
-            >>> im.write('output.jpg')
-        
-        composite example::
-        
-            >>> from pgmagick import Image, CompositeOperator as co
-            >>> base = Image('base.png')
-            >>> layer = Image('layer_one.png')
-            >>> base.composite(layer, 100, 100, co.OverCompositeOp)
-            >>> im.write('output.png')
-        
-        draw example::
-        
-            >>> from pgmagick import Image, DrawableCircle, DrawableText, 
Geometry, Color
-            >>> im = Image(Geometry(300, 300), Color("yellow"))
-            >>> circle = DrawableCircle(100, 100, 20, 20)
-            >>> im.draw(circle)
-            >>> im.fontPointsize(65)
-            >>> text = DrawableText(30, 250, "Hello pgmagick")
-            >>> im.draw(text)
-            >>> im.write('hoge.png')
-        
-        blob access::
-        
-            >>> from pgmagick import Image, Blob, Geometry
-            >>> blob = Blob(open('filename.jpg').read())
-            >>> blob.update(open('filename2.jpg').read())
-            >>> img = Image(blob, Geometry(600, 480))
-            >>> img.scale('300x200')
-            >>> img.write('out.jpg')
-        
-        create animated-GIF::
-        
-            from pgmagick import Image, ImageList, Geometry, Color
-        
-            imgs = ImageList()
-            for color in ('red', 'blue', 'green', 'black', 'yellow'):
-                imgs.append(Image(Geometry(200, 200), Color(color)))
-            imgs.animationDelayImages(100)
-            imgs.scaleImages(Geometry(100, 100))
-            imgs.writeImages('output.gif')
-        
-        more API detail... read to `Magick++ API for GraphicsMagick`_ document.
-        
-        .. _`Magick++ API for GraphicsMagick`: 
http://www.graphicsmagick.org/Magick++/
-        
-        Python APIs(*NOTICE!! this api is alpha version!!*)::
-        
-            >>> from pgmagick.api import Image
-            >>> img = Image((300, 300), "gradient:#ffffff-#000000")
-            >>> img.scale(0.8)
-            >>> img.write('out.png')
-        
-        
-        Links
-        =====
-        * PyPI_
-        * `Project Page`_
-        * `Project Page (Old)`_
-        
-        .. _PyPI: http://pypi.python.org/pypi/pgmagick/
-        .. _`Project Page`: https://github.com/hhatto/pgmagick/
-        .. _`Project Page (Old)`: https://bitbucket.org/hhatto/pgmagick/
-        
-Keywords: GraphicsMagick ImageMagick graphics boost image
-Platform: UNKNOWN
+Author-email: Hideo Hattori <[email protected]>
+Project-URL: Homepage, https://github.com/hhatto/pgmagick
+Project-URL: Repository, https://github.com/hhatto/pgmagick
+Keywords: GraphicsMagick,ImageMagick,graphics,boost,image
 Classifier: Development Status :: 4 - Beta
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: POSIX
 Classifier: Programming Language :: C++
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Multimedia :: Graphics
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+Dynamic: license-file
+
+About
+=====
+
+.. image:: https://img.shields.io/pypi/v/pgmagick.svg
+    :target: https://pypi.org/project/pgmagick/
+    :alt: PyPI Version
+
+.. image:: 
https://github.com/hhatto/pgmagick/workflows/Python%20package/badge.svg
+    :target: https://github.com/hhatto/pgmagick/actions
+    :alt: Build status
+
+pgmagick is a yet another boost.python based wrapper for GraphicsMagick_ .
+
+.. _GraphicsMagick: http://www.graphicsmagick.org/
+
+Installation
+============
+install to::
+
+    $ pip install pgmagick
+
+
+Requirements
+============
+Python3.5++ (or Python2.7), GraphicsMagick and Boost.Python.
+
+package install on Debian Buster::
+
+    $ apt-get install g++ libgraphicsmagick++1-dev libboost-python-dev
+
+package install on Ubuntu(test on Ubuntu10.04+)::
+
+    ### Ubuntu11.10+ ###
+    $ apt-get install python-pgmagick
+
+    ### Ubuntu10.04+ ###
+    $ apt-get install libgraphicsmagick++1-dev
+    $ apt-get install libboost-python1.40-dev
+
+package install on Fedora::
+
+    $ yum install GraphicsMagick-c++-devel
+    $ yum install boost-devel
+
+GraphicsMagick from source package::
+
+    $ ./configure --enable-shared=yes
+    $ make && make install
+
+MacOSX
+------
+
+via homebrew-cask(homebrew-pgmagick) with Python3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+use `homebrew-pgmagick`_ ::
+
+    $ brew tap hhatto/pgmagick
+    $ brew install pgmagick
+
+.. _`homebrew-pgmagick`: https://github.com/hhatto/homebrew-pgmagick
+
+via homebrew-cask(homebrew-pgmagick) with Python3
+
+via homebrew and pip with Python3
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+on MacOSX (10.13.5~10.15.x)::
+
+    $ brew install python
+    $ brew install graphicsmagick
+    $ brew install boost-python3
+    $ pip install pgmagick
+
+
+Windows
+-------
+Now, not official support.
+However, *unofficial* binary packages exists.
+
+- http://www.lfd.uci.edu/~gohlke/pythonlibs/#pgmagick
+
+ImageMagick support
+-------------------
+pgmagick is supported to ImageMagick library. (*version:0.4+*)
+
+package install on Ubuntu(test on Ubuntu10.04+)::
+
+    $ apt-get install libmagick++-dev
+
+show library name and version::
+
+    >>> from pgmagick import gminfo
+    >>> gminfo.library
+    'GraphicsMagick'    # or 'ImageMagick'
+    >>> gminfo.version
+    '1.3.x'
+    >>>
+
+Usage
+=====
+
+scale example::
+
+    >>> from pgmagick import Image
+    >>> im = Image('input.jpg')
+    >>> im.quality(100)
+    >>> im.scale('100x100')
+    >>> im.sharpen(1.0)
+    >>> im.write('output.jpg')
+
+resize example::
+
+    >>> from pgmagick import Image
+    >>> im = Image('input.jpg')
+    >>> im.filterType(FilterTypes.SincFilter)
+    >>> im.resize('100x100')
+    >>> im.write('output.jpg')
+
+composite example::
+
+    >>> from pgmagick import Image, CompositeOperator as co
+    >>> base = Image('base.png')
+    >>> layer = Image('layer_one.png')
+    >>> base.composite(layer, 100, 100, co.OverCompositeOp)
+    >>> im.write('output.png')
+
+draw example::
+
+    >>> from pgmagick import Image, DrawableCircle, DrawableText, Geometry, 
Color
+    >>> im = Image(Geometry(300, 300), Color("yellow"))
+    >>> circle = DrawableCircle(100, 100, 20, 20)
+    >>> im.draw(circle)
+    >>> im.fontPointsize(65)
+    >>> text = DrawableText(30, 250, "Hello pgmagick")
+    >>> im.draw(text)
+    >>> im.write('hoge.png')
+
+blob access::
+
+    >>> from pgmagick import Image, Blob, Geometry
+    >>> blob = Blob(open('filename.jpg').read())
+    >>> blob.update(open('filename2.jpg').read())
+    >>> img = Image(blob, Geometry(600, 480))
+    >>> img.scale('300x200')
+    >>> img.write('out.jpg')
+
+create animated-GIF::
+
+    from pgmagick import Image, ImageList, Geometry, Color
+
+    imgs = ImageList()
+    for color in ('red', 'blue', 'green', 'black', 'yellow'):
+        imgs.append(Image(Geometry(200, 200), Color(color)))
+    imgs.animationDelayImages(100)
+    imgs.scaleImages(Geometry(100, 100))
+    imgs.writeImages('output.gif')
+
+more API detail... read to `Magick++ API for GraphicsMagick`_ document.
+
+.. _`Magick++ API for GraphicsMagick`: http://www.graphicsmagick.org/Magick++/
+
+Python APIs(*NOTICE!! this api is alpha version!!*)::
+
+    >>> from pgmagick.api import Image
+    >>> img = Image((300, 300), "gradient:#ffffff-#000000")
+    >>> img.scale(0.8)
+    >>> img.write('out.png')
+
+
+Links
+=====
+* PyPI_
+* `Project Page`_
+* `Project Page (Old)`_
+
+.. _PyPI: http://pypi.python.org/pypi/pgmagick/
+.. _`Project Page`: https://github.com/hhatto/pgmagick/
+.. _`Project Page (Old)`: https://bitbucket.org/hhatto/pgmagick/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/pgmagick.egg-info/SOURCES.txt 
new/pgmagick-0.8/pgmagick.egg-info/SOURCES.txt
--- old/pgmagick-0.7.6/pgmagick.egg-info/SOURCES.txt    2021-04-21 
17:31:39.000000000 +0200
+++ new/pgmagick-0.8/pgmagick.egg-info/SOURCES.txt      2025-12-29 
01:47:33.000000000 +0100
@@ -2,6 +2,7 @@
 MANIFEST.in
 Makefile
 README.rst
+pyproject.toml
 setup.py
 ./src/_Blob.cpp
 ./src/_ChannelType.cpp
@@ -113,17 +114,23 @@
 ./src/_gminfo.cpp
 ./src/_main.cpp
 example/X.jpg
+example/Xo.jpg
+example/Y.jpg
 example/bezier.py
 example/blob.py
 example/draw.py
 example/drawablelist.py
 example/example.png
+example/from_blob_to_image.png
 example/gm.sh
 example/gradient.py
 example/gravity.py
 example/im.sh
 example/image_from_storage.py
 example/imagelist.py
+example/new.pdf
+example/output.gif
+example/output.jpg
 example/pgmagick_prof.py
 example/pixels.py
 example/profile.sh
@@ -140,7 +147,116 @@
 pgmagick.egg-info/top_level.txt
 src/Makefile
 src/_ArrayProxy.h
+src/_Blob.cpp
+src/_ChannelType.cpp
+src/_Color.cpp
+src/_ColorspaceType.cpp
+src/_CompositeOperator.cpp
+src/_CompressionType.cpp
+src/_Coordinate.cpp
+src/_DecorationType.cpp
+src/_DistortImageMethod.cpp
+src/_Drawable.cpp
+src/_DrawableAffine.cpp
+src/_DrawableArc.cpp
+src/_DrawableBezier.cpp
+src/_DrawableCircle.cpp
+src/_DrawableClipPath.cpp
+src/_DrawableColor.cpp
+src/_DrawableCompositeImage.cpp
+src/_DrawableDashArray.cpp
+src/_DrawableDashOffset.cpp
+src/_DrawableEllipse.cpp
+src/_DrawableFillColor.cpp
+src/_DrawableFillOpacity.cpp
+src/_DrawableFillRule.cpp
+src/_DrawableFont.cpp
+src/_DrawableGravity.cpp
+src/_DrawableLine.cpp
+src/_DrawableMatte.cpp
+src/_DrawableMiterLimit.cpp
+src/_DrawablePath.cpp
+src/_DrawablePoint.cpp
+src/_DrawablePointSize.cpp
+src/_DrawablePolygon.cpp
+src/_DrawablePolyline.cpp
+src/_DrawablePopClipPath.cpp
+src/_DrawablePopGraphicContext.cpp
+src/_DrawablePopPattern.cpp
+src/_DrawablePushClipPath.cpp
+src/_DrawablePushGraphicContext.cpp
+src/_DrawablePushPattern.cpp
+src/_DrawableRectangle.cpp
+src/_DrawableRotation.cpp
+src/_DrawableRoundRectangle.cpp
+src/_DrawableScaling.cpp
+src/_DrawableSkewX.cpp
+src/_DrawableSkewY.cpp
+src/_DrawableStrokeAntialias.cpp
+src/_DrawableStrokeColor.cpp
+src/_DrawableStrokeLineCap.cpp
+src/_DrawableStrokeLineJoin.cpp
+src/_DrawableStrokeOpacity.cpp
+src/_DrawableStrokeWidth.cpp
+src/_DrawableText.cpp
+src/_DrawableTextAntialias.cpp
+src/_DrawableTextDecoration.cpp
+src/_DrawableTextUnderColor.cpp
+src/_DrawableTranslation.cpp
+src/_DrawableViewbox.cpp
+src/_EndianType.cpp
+src/_Exception.cpp
+src/_FillRule.cpp
+src/_FilterTypes.cpp
+src/_Geometry.cpp
+src/_GravityType.cpp
+src/_Image.cpp
+src/_ImageType.cpp
+src/_InterlaceType.cpp
+src/_LineCap.cpp
+src/_LineJoin.cpp
+src/_Montage.cpp
+src/_NoiseType.cpp
+src/_OrientationType.cpp
+src/_PaintMethod.cpp
+src/_PathArcAbs.cpp
+src/_PathArcArgs.cpp
+src/_PathArcRel.cpp
+src/_PathClosePath.cpp
+src/_PathCurvetoAbs.cpp
+src/_PathCurvetoArgs.cpp
+src/_PathCurvetoRel.cpp
+src/_PathLinetoAbs.cpp
+src/_PathLinetoHorizontalAbs.cpp
+src/_PathLinetoHorizontalRel.cpp
+src/_PathLinetoRel.cpp
+src/_PathLinetoVerticalAbs.cpp
+src/_PathLinetoVerticalRel.cpp
+src/_PathMovetoAbs.cpp
+src/_PathMovetoRel.cpp
+src/_PathQuadraticCurvetoAbs.cpp
+src/_PathQuadraticCurvetoArgs.cpp
+src/_PathQuadraticCurvetoRel.cpp
+src/_PathSmoothCurvetoAbs.cpp
+src/_PathSmoothCurvetoRel.cpp
+src/_PathSmoothQuadraticCurvetoAbs.cpp
+src/_PathSmoothQuadraticCurvetoRel.cpp
+src/_Pixels.cpp
 src/_Pixels.h
+src/_QuantumOperator.cpp
+src/_QuantumType.cpp
+src/_RenderingIntent.cpp
+src/_ResolutionType.cpp
+src/_STL.cpp
+src/_SparseColorMethod.cpp
+src/_StorageType.cpp
+src/_StretchType.cpp
+src/_StyleType.cpp
+src/_TypeMetric.cpp
+src/_VPath.cpp
+src/_VirtualPixelMethod.cpp
+src/_gminfo.cpp
+src/_main.cpp
 test/test_cookbook.py
 test/test_pgmagick_api.py
 test/test_pgmagick_blob.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/pyproject.toml 
new/pgmagick-0.8/pyproject.toml
--- old/pgmagick-0.7.6/pyproject.toml   1970-01-01 01:00:00.000000000 +0100
+++ new/pgmagick-0.8/pyproject.toml     2025-12-29 01:41:34.000000000 +0100
@@ -0,0 +1,39 @@
+[build-system]
+requires = ["setuptools>=77.0", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "pgmagick"
+dynamic = ["version"]
+description = "Yet Another Python wrapper for GraphicsMagick"
+readme = "README.rst"
+license-files = ["LICENSE"]
+authors = [
+    {name = "Hideo Hattori", email = "[email protected]"}
+]
+keywords = ["GraphicsMagick", "ImageMagick", "graphics", "boost", "image"]
+classifiers = [
+    "Development Status :: 4 - Beta",
+    "Intended Audience :: Developers",
+    "Operating System :: POSIX",
+    "Programming Language :: C++",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
+    "Topic :: Multimedia :: Graphics",
+]
+requires-python = ">=3.10"
+
+[project.urls]
+Homepage = "https://github.com/hhatto/pgmagick";
+Repository = "https://github.com/hhatto/pgmagick";
+
+[tool.setuptools.dynamic]
+version = {attr = "pgmagick._version.__version__"}
+
+[tool.setuptools.packages.find]
+include = ["pgmagick*"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/setup.py new/pgmagick-0.8/setup.py
--- old/pgmagick-0.7.6/setup.py 2021-04-21 17:28:18.000000000 +0200
+++ new/pgmagick-0.8/setup.py   2025-12-29 01:41:34.000000000 +0100
@@ -1,11 +1,9 @@
-from setuptools import setup, find_packages, Extension
-from distutils.sysconfig import get_python_inc
+from setuptools import setup, Extension
+from sysconfig import get_path
 import glob
 import os
 import re
 import sys
-import ast
-import io
 
 GMCPP_PC = 'GraphicsMagick++.pc'
 IMCPP_PC = 'ImageMagick++.pc'
@@ -20,7 +18,7 @@
     (1, 3, 6),
     (1, 3, 'x')
 )
-include_dirs = [get_python_inc()]
+include_dirs = [get_path('include')]
 library_dirs = []
 
 search_include_dirs = ['/usr/local/include/GraphicsMagick/',
@@ -35,6 +33,8 @@
     '/usr/lib64/pkgconfig',
 ]
 if sys.platform.lower() == 'darwin':
+    include_dirs.append('/opt/homebrew/include/')
+    library_dirs.append('/opt/homebrew/lib')
     if os.path.exists('/opt/local/include'):
         include_dirs.append('/opt/local/include/')
     else:
@@ -45,6 +45,7 @@
                                 '/usr/local/Cellar/graphicsmagick'])
     search_library_dirs.extend(['/opt/local/lib/',
                                 '/opt/homebrew/lib',
+                                '/usr/local/Cellar/boost-python3',
                                 '/usr/local/Cellar/graphicsmagick'])
 # for ImageMagick
 search_include_dirs.extend(['/usr/local/include/ImageMagick/',
@@ -66,6 +67,14 @@
     print('adding extra pkgconfig directory %s' % extra_pkgconfig_dir)
     search_pkgconfig_dirs.insert(0, extra_pkgconfig_dir)
 
+if 'INCLUDE_PATH' in os.environ:
+    for include_path in os.environ['INCLUDE_PATH'].split(','):
+        include_dirs.append(include_path)
+
+if 'LIBRARY_PATH' in os.environ:
+    for library_path in os.environ['LIBRARY_PATH'].split(','):
+        library_dirs.append(library_path)
+
 
 def _grep(regex, filename):
     for line in open(filename):
@@ -76,7 +85,7 @@
 def get_version_from_devheaders(search_dirs):
     target_api_name = "addNoiseChannel"
     for dirname in search_dirs:
-        for root, dirs, files in os.walk(dirname):
+        for root, _, files in os.walk(dirname):
             for f in files:
                 if f == 'Image.h':
                     if _grep(target_api_name, os.path.join(root, 'Image.h')):
@@ -86,7 +95,7 @@
 def get_version_from_pc(search_dirs, target):
     """similar to 'pkg-config --modversion GraphicsMagick++'"""
     for dirname in search_dirs:
-        for root, dirs, files in os.walk(dirname):
+        for root, _, files in os.walk(dirname):
             for f in files:
                 if f == target:
                     file_path = os.path.join(root, target)
@@ -125,7 +134,8 @@
     api_version = sequence_type(0 if num == 'x' else num for num in 
api_version)
     if different_major_breaks_support and library_version[0] != api_version[0]:
         return False
-    assert len(api_version) <= 3     # otherwise following comparision won't 
work as intended, e.g. (2, 0, 0) > (2, 0, 0, 0)
+    # otherwise following comparision won't work as intended, e.g. (2, 0, 0) > 
(2, 0, 0, 0)
+    assert len(api_version) <= 3
     return library_version >= api_version
 
 
@@ -137,33 +147,36 @@
 include_dirs.append(header_path)
 
 # find to library path for boost_python
-# TODO: only test on Ubuntu11.10
 _python_version = sys.version_info
 
-boost_lib_target_files = []
-if _python_version >= (3, ):
-    boost_lib_target_files.append("boost_python-py%s%s" % (_python_version[0], 
_python_version[1]))
-    # ArchLinux uses boost_python3
-    boost_lib_target_files.append("boost_python3")
-    boost_lib_target_files.append("boost_python3-mt")
-boost_lib_target_files.append("boost_python-mt-py%s%s" % (_python_version[0], 
_python_version[1]))
-# gentoo appends the python version numbers to the boost_python libraries
-boost_lib_target_files.append("boost_python-%s.%s" % (_python_version[0], 
_python_version[1]))
-boost_lib_target_files.append("boost_python-mt")
-# Homebrew's boost_python
-boost_lib_target_files.append("boost_python%s%s" % (_python_version[0], 
_python_version[1]))
-boost_lib_target_files.append("boost_python%s%s-mt" % (_python_version[0], 
_python_version[1]))
+boost_lib_target_files = [
+    "boost_python-py%s%s" % (_python_version[0], _python_version[1]),
+    "boost_python3",
+    "boost_python3-mt",
+    "boost_python-mt-py%s%s" % (_python_version[0], _python_version[1]),
+    "boost_python-%s.%s" % (_python_version[0], _python_version[1]),
+    "boost_python-mt",
+    "boost_python%s%s" % (_python_version[0], _python_version[1]),
+    "boost_python%s%s-mt" % (_python_version[0], _python_version[1]),
+]
 
+print("boost_lib_target_files:", boost_lib_target_files)
+
+lib_path = None
+boost_library = None
 for boost_lib in boost_lib_target_files:
     lib_path = find_file('lib%s.' % boost_lib, search_library_dirs)
     if lib_path:
+        boost_library = boost_lib
+        print("lib_path=%s, boost_lib=%s", lib_path, boost_lib)
         break
 
 if not lib_path:
-    boost_lib = "boost_python"
-print("boost lib: %s" % boost_lib)
+    boost_library = "boost_python"
+    print("use default boost python lib")
+print("boost lib: %s" % boost_library)
 
-libraries = [boost_lib]
+libraries = [boost_library]
 
 # find to library path for Magick
 lib_path = find_file('libGraphicsMagick++', search_library_dirs)
@@ -180,6 +193,8 @@
         raise Exception("libGraphicsMagick++ (or libMagick++) not found")
 library_dirs.append(lib_path)
 
+print("library_dirs: %s" % library_dirs)
+
 # get version and extra compile argument
 ext_compile_args = []
 if LIBRARY == 'GraphicsMagick':
@@ -198,7 +213,9 @@
     if LIBRARY == 'GraphicsMagick':
         # 1.3.6 for not Ubuntu10.04
         _supported_api_versions = (v for v in TESTED_API_VERSIONS if 
library_supports_api(_version, v))
-        ext_compile_args = ["-DPGMAGICK_LIB_GRAPHICSMAGICK_" + 
'_'.join(map(str, version)) for version in _supported_api_versions]
+        ext_compile_args = [
+            "-DPGMAGICK_LIB_GRAPHICSMAGICK_" + '_'.join(map(str, version)) for 
version in _supported_api_versions
+        ]
     elif LIBRARY == 'ImageMagick':
         ext_compile_args = ["-DPGMAGICK_LIB_IMAGEMAGICK"]
     ext_compile_args.append("-D_LIBRARY_VERSION=\"%s\"" % (_str_version))
@@ -206,37 +223,13 @@
     _version = '%s version: ???' % (LIBRARY)
 
 
-def version():
-    """Return version string."""
-    with io.open('pgmagick/_version.py') as input_file:
-        for line in input_file:
-            if line.startswith('__version__'):
-                return ast.parse(line).body[0].value.s
-
-
-setup(name='pgmagick',
-      version=version(),
-      description="Yet Another Python wrapper for GraphicsMagick",
-      long_description=open('README.rst').read(),
-      author='Hideo Hattori',
-      author_email='[email protected]',
-      url='https://github.com/hhatto/pgmagick',
-      license='MIT',
-      packages=find_packages(),
-      ext_modules=[
-          Extension('pgmagick._pgmagick',
-                    sources=sorted(glob.glob('./src/*.cpp')),
-                    include_dirs=include_dirs,
-                    library_dirs=library_dirs,
-                    libraries=libraries,
-                    extra_compile_args=ext_compile_args)],
-      classifiers=[
-          'Development Status :: 4 - Beta',
-          'Intended Audience :: Developers',
-          'License :: OSI Approved :: MIT License',
-          'Operating System :: POSIX',
-          'Programming Language :: C++',
-          'Programming Language :: Python',
-          'Programming Language :: Python :: 3',
-          'Topic :: Multimedia :: Graphics'],
-      keywords="GraphicsMagick ImageMagick graphics boost image")
+setup(
+    ext_modules=[
+        Extension('pgmagick._pgmagick',
+                  sources=sorted(glob.glob('./src/*.cpp')),
+                  include_dirs=include_dirs,
+                  library_dirs=library_dirs,
+                  libraries=libraries,
+                  extra_compile_args=ext_compile_args)
+    ]
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/test/test_cookbook.py 
new/pgmagick-0.8/test/test_cookbook.py
--- old/pgmagick-0.7.6/test/test_cookbook.py    2021-01-02 17:15:49.000000000 
+0100
+++ new/pgmagick-0.8/test/test_cookbook.py      2025-12-28 11:14:51.000000000 
+0100
@@ -1,11 +1,10 @@
-# coding: utf-8
 import os.path
 import sys
 import unittest
 from pgmagick import api
 from pgmagick import Image, Geometry, Blob
 
-from utils import MACOSX_FONT
+from utils import LINUX_FONT, MACOSX_FONT
 
 
 class TestCookbook(unittest.TestCase):
@@ -36,6 +35,8 @@
         img = api.Image((300, 200))
         if sys.platform.lower() == 'darwin':
             img.font(MACOSX_FONT)
+        elif sys.platform.lower() == 'linux':
+            img.font(LINUX_FONT)
         img.annotate('Hello World')
         img.write(self.tmp_filename_png)
 
@@ -43,6 +44,8 @@
         img = api.Image((300, 200))
         if sys.platform.lower() == 'darwin':
             img.font(MACOSX_FONT)
+        elif sys.platform.lower() == 'linux':
+            img.font(LINUX_FONT)
         img.annotate('Hello World', angle=45)
         img.write(self.tmp_filename_png)
 
@@ -50,9 +53,8 @@
         img = api.Image((300, 200))
         if sys.platform.lower() == 'darwin':
             img.font("/System/Library/Fonts/Hiragino Sans GB.ttc")
-        else:
-            # TODO: not support windows
-            img.font("/usr/share/fonts/truetype/ttf-japanese-gothic.ttf")
+        elif sys.platform.lower() == 'linux':
+            img.font(LINUX_FONT)
         img.annotate('ようこそpgmagickへ!!')
         img.write(self.tmp_filename_png)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pgmagick-0.7.6/test/test_pgmagick_api.py 
new/pgmagick-0.8/test/test_pgmagick_api.py
--- old/pgmagick-0.7.6/test/test_pgmagick_api.py        2021-01-02 
17:15:49.000000000 +0100
+++ new/pgmagick-0.8/test/test_pgmagick_api.py  2025-12-28 11:14:51.000000000 
+0100
@@ -6,7 +6,7 @@
 import pgmagick
 from pgmagick.api import Image, Draw
 
-from utils import MACOSX_FONT
+from utils import LINUX_FONT, MACOSX_FONT
 
 
 print(pgmagick.gminfo().version)
@@ -52,6 +52,8 @@
             img = Image((600, 400), 'gradient:#ffffff-#000000')
             if sys.platform.lower() == 'darwin':
                 img.font(MACOSX_FONT)
+            elif sys.platform.lower() == 'linux':
+                img.font(LINUX_FONT)
             img.annotate("hello", (100, 100))
             if k != "None":
                 img.scale(0.6, k)
@@ -97,6 +99,8 @@
         self.assertEqual(float, type(img.font_pointsize()))
         if sys.platform.lower() == 'darwin':
             img.font(MACOSX_FONT)
+        elif sys.platform.lower() == 'linux':
+            img.font(LINUX_FONT)
         img.annotate("hello", (100, 100))
         img.write('t.png')
 
@@ -186,6 +190,8 @@
     def test_font_style_italic(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', 'italic')
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -194,6 +200,8 @@
     def test_font_style_oblique(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', 'oblique')
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -202,6 +210,8 @@
     def test_font_stretch_ultracondensed(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', 'oblique', stretch='ultracondensed')
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -210,6 +220,8 @@
     def test_font_stretch_extraexpanded(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', 'oblique', stretch='extraexpanded')
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -218,6 +230,8 @@
     def test_font_weight100(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', weight=100)
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -226,6 +240,8 @@
     def test_font_bold(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('vera.ttf', weight='bold')
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
@@ -234,6 +250,8 @@
     def test_gravity(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.gravity('center')
         self.d.text(0, 0, "hello pgmagick")
         self.img.draw(self.d)
@@ -401,6 +419,8 @@
     def test_text(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.text(30, 30, "hello pgmagick")
         self.img.draw(self.d)
         self.img.write('t.png')
@@ -408,6 +428,8 @@
     def test_text_antialias(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.font('courier', weight='bold')
         self.d.pointsize(70)
         self.d.text_antialias(False)
@@ -420,6 +442,8 @@
     def test_text_decoration(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.pointsize(70)
         self.d.text_decoration('overline')
         self.d.text(30, 100, "hello pgmagick")
@@ -433,6 +457,8 @@
     def test_text_undercolor(self):
         if sys.platform.lower() == 'darwin':
             self.skipTest("DrawableFont() is broken")
+        elif sys.platform.lower() == 'linux':
+            self.img.font(LINUX_FONT)
         self.d.pointsize(70)
         self.d.text_undercolor('lime')
         self.d.text(30, 100, "hello pgmagick")

++++++ utils.py ++++++
--- /var/tmp/diff_new_pack.gxzSA2/_old  2026-01-27 16:17:55.344014382 +0100
+++ /var/tmp/diff_new_pack.gxzSA2/_new  2026-01-27 16:17:55.352014716 +0100
@@ -1,2 +1,3 @@
 MACOSX_FONT = "/System/Library/Fonts/Keyboard.ttf"
+LINUX_FONT = "/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf"
 

Reply via email to