Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pecan for openSUSE:Factory 
checked in at 2025-07-31 17:45:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pecan (Old)
 and      /work/SRC/openSUSE:Factory/.python-pecan.new.1944 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pecan"

Thu Jul 31 17:45:10 2025 rev:36 rq:1296594 version:1.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pecan/python-pecan.changes        
2025-04-08 17:51:40.567614708 +0200
+++ /work/SRC/openSUSE:Factory/.python-pecan.new.1944/python-pecan.changes      
2025-07-31 17:45:35.794647883 +0200
@@ -1,0 +2,8 @@
+Sun Jul 27 12:36:08 UTC 2025 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 1.7.0
+  * added official support for Python 3.8 through 3.13 (#165)
+  * extensions pecan imports via `pecan.ext` has been removed (#157)
+- Update BuildRequires and Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  pecan-1.6.0.tar.gz

New:
----
  pecan-1.7.0.tar.gz

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

Other differences:
------------------
++++++ python-pecan.spec ++++++
--- /var/tmp/diff_new_pack.ouOkOd/_old  2025-07-31 17:45:36.594681134 +0200
+++ /var/tmp/diff_new_pack.ouOkOd/_new  2025-07-31 17:45:36.598681300 +0200
@@ -24,7 +24,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pecan
-Version:        1.6.0
+Version:        1.7.0
 Release:        0
 Summary:        A WSGI object-dispatching web framework
 License:        BSD-3-Clause
@@ -37,7 +37,6 @@
 BuildRequires:  %{python_module WebOb >= 1.8}
 BuildRequires:  %{python_module WebTest >= 1.3.1}
 BuildRequires:  %{python_module gunicorn}
-BuildRequires:  %{python_module logutils}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module virtualenv}
@@ -51,7 +50,6 @@
 Requires:       python-WebOb >= 1.8
 # Still needed by pecan.testing
 Requires:       python-WebTest >= 1.3.1
-Requires:       python-logutils >= 0.3
 Requires:       python-setuptools
 %if %{with libalternatives}
 Requires:       alts

++++++ pecan-1.6.0.tar.gz -> pecan-1.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/PKG-INFO new/pecan-1.7.0/PKG-INFO
--- old/pecan-1.6.0/PKG-INFO    2025-03-17 21:57:59.112224300 +0100
+++ new/pecan-1.7.0/PKG-INFO    2025-07-07 18:03:54.867873400 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: pecan
-Version: 1.6.0
+Version: 1.7.0
 Summary: A WSGI object-dispatching web framework, designed to be lean and 
fast, with few dependencies.
 Home-page: http://github.com/pecan/pecan
 Author: Jonathan LaCour
@@ -17,13 +17,17 @@
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: POSIX
 Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 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: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
+Requires-Python: >=3.8
 License-File: LICENSE
 License-File: AUTHORS
 Requires-Dist: WebOb>=1.8
@@ -35,5 +39,7 @@
 Dynamic: home-page
 Dynamic: keywords
 Dynamic: license
+Dynamic: license-file
 Dynamic: requires-dist
+Dynamic: requires-python
 Dynamic: summary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/pecan/ext/__init__.py 
new/pecan-1.7.0/pecan/ext/__init__.py
--- old/pecan-1.6.0/pecan/ext/__init__.py       2025-03-17 21:27:14.000000000 
+0100
+++ new/pecan-1.7.0/pecan/ext/__init__.py       2025-07-07 18:03:44.000000000 
+0200
@@ -1,6 +0,0 @@
-def install():
-    from pecan.extensions import PecanExtensionImporter
-    PecanExtensionImporter().install()
-
-install()
-del install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/pecan/extensions.py 
new/pecan-1.7.0/pecan/extensions.py
--- old/pecan-1.6.0/pecan/extensions.py 2025-03-17 21:27:14.000000000 +0100
+++ new/pecan-1.7.0/pecan/extensions.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,83 +0,0 @@
-import sys
-import pkg_resources
-import inspect
-import logging
-
-log = logging.getLogger(__name__)
-
-
-class PecanExtensionMissing(ImportError):
-    pass
-
-
-class PecanExtensionImporter(object):
-    """
-    Short circuits imports for extensions.
-
-    This is used in combination with ``pecan.ext`` so that when a user does
-    ``from pecan.ext import foo``, it will attempt to map ``foo`` to a
-    registered setuptools entry point in some other (Pecan extension) project.
-
-    Conversely, an extension developer may define an entry point in his
-    ``setup.py``, e.g.,
-
-    setup(
-      ...
-      entry_points='''
-      [pecan.extension]
-      celery = pecancelery.lib.core
-      '''
-    )
-
-    This is mostly for convenience and consistency.  In this way, Pecan can
-    maintain an ecosystem of extensions that share a common namespace,
-    ``pecan.ext``, while still maintaining backwards compatibility for simple
-    package names (e.g., ``pecancelery``).
-    """
-
-    extension_module = 'pecan.ext'
-    prefix = extension_module + '.'
-
-    def install(self):
-        if self not in sys.meta_path:
-            sys.meta_path.append(self)
-
-    def __eq__(self, b):
-        return self.__class__.__module__ == b.__class__.__module__ and \
-            self.__class__.__name__ == b.__class__.__name__
-
-    def __ne__(self, b):
-        return not self.__eq__(b)
-
-    def find_module(self, fullname, path=None):
-        if fullname.startswith(self.prefix):
-            return self
-
-    def load_module(self, fullname):
-        if fullname in sys.modules:
-            return self
-        extname = fullname.split(self.prefix)[1]
-        module = self.find_module_for_extension(extname)
-        realname = module.__name__
-        try:
-            __import__(realname)
-        except ImportError:
-            raise sys.exc_info()
-        module = sys.modules[fullname] = sys.modules[realname]
-        if '.' not in extname:
-            setattr(sys.modules[self.extension_module], extname, module)
-        return module
-
-    def find_module_for_extension(self, name):
-        for ep in pkg_resources.iter_entry_points('pecan.extension'):
-            if ep.name != name:
-                continue
-            log.debug('%s loading extension %s', self.__class__.__name__, ep)
-            module = ep.load()
-            if not inspect.ismodule(module):
-                log.debug('%s is not a module, skipping...' % module)
-                continue
-            return module
-        raise PecanExtensionMissing(
-            'The `pecan.ext.%s` extension is not installed.' % name
-        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/pecan/middleware/static.py 
new/pecan-1.7.0/pecan/middleware/static.py
--- old/pecan-1.6.0/pecan/middleware/static.py  2025-03-17 21:27:14.000000000 
+0100
+++ new/pecan-1.7.0/pecan/middleware/static.py  2025-07-07 18:03:44.000000000 
+0200
@@ -8,6 +8,7 @@
 import os
 import mimetypes
 from datetime import datetime
+from datetime import timezone
 from time import gmtime
 
 
@@ -115,7 +116,10 @@
     def _opener(self, filename):
         return lambda: (
             open(filename, 'rb'),
-            datetime.utcfromtimestamp(os.path.getmtime(filename)),
+            datetime.fromtimestamp(
+                os.path.getmtime(filename),
+                tz=timezone.utc
+            ),
             int(os.path.getsize(filename))
         )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/pecan.egg-info/PKG-INFO 
new/pecan-1.7.0/pecan.egg-info/PKG-INFO
--- old/pecan-1.6.0/pecan.egg-info/PKG-INFO     2025-03-17 21:57:59.000000000 
+0100
+++ new/pecan-1.7.0/pecan.egg-info/PKG-INFO     2025-07-07 18:03:54.000000000 
+0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: pecan
-Version: 1.6.0
+Version: 1.7.0
 Summary: A WSGI object-dispatching web framework, designed to be lean and 
fast, with few dependencies.
 Home-page: http://github.com/pecan/pecan
 Author: Jonathan LaCour
@@ -17,13 +17,17 @@
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: POSIX
 Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 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: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
+Requires-Python: >=3.8
 License-File: LICENSE
 License-File: AUTHORS
 Requires-Dist: WebOb>=1.8
@@ -35,5 +39,7 @@
 Dynamic: home-page
 Dynamic: keywords
 Dynamic: license
+Dynamic: license-file
 Dynamic: requires-dist
+Dynamic: requires-python
 Dynamic: summary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/pecan.egg-info/SOURCES.txt 
new/pecan-1.7.0/pecan.egg-info/SOURCES.txt
--- old/pecan-1.6.0/pecan.egg-info/SOURCES.txt  2025-03-17 21:57:59.000000000 
+0100
+++ new/pecan-1.7.0/pecan.egg-info/SOURCES.txt  2025-07-07 18:03:54.000000000 
+0200
@@ -11,7 +11,6 @@
 pecan/core.py
 pecan/decorators.py
 pecan/deploy.py
-pecan/extensions.py
 pecan/hooks.py
 pecan/jsonify.py
 pecan/log.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pecan-1.6.0/setup.py new/pecan-1.7.0/setup.py
--- old/pecan-1.6.0/setup.py    2025-03-17 21:45:00.000000000 +0100
+++ new/pecan-1.7.0/setup.py    2025-07-07 18:03:45.000000000 +0200
@@ -3,7 +3,7 @@
 
 from setuptools import setup, find_packages
 
-version = '1.6.0'
+version = '1.7.0'
 
 #
 # determine requirements
@@ -66,11 +66,14 @@
         'Operating System :: Microsoft :: Windows',
         'Operating System :: POSIX',
         'Programming Language :: Python',
+        'Programming Language :: Python :: 3 :: Only',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: 3.10',
         'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
+        'Programming Language :: Python :: 3.13',
         'Topic :: Internet :: WWW/HTTP :: WSGI',
         'Topic :: Software Development :: Libraries :: Application Frameworks'
     ],
@@ -82,6 +85,7 @@
     packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
     include_package_data=True,
     zip_safe=False,
+    python_requires='>=3.8',
     install_requires=requirements,
     tests_require=tests_require,
     test_suite='pecan',

Reply via email to