Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-iptables for openSUSE:Factory 
checked in at 2026-08-18 16:36:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-iptables (Old)
 and      /work/SRC/openSUSE:Factory/.python-iptables.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-iptables"

Tue Aug 18 16:36:05 2026 rev:10 rq:1371598 version:1.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-iptables/python-iptables.changes  
2024-08-23 22:27:54.379990164 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-iptables.new.1258/python-iptables.changes    
    2026-08-18 16:36:40.730348313 +0200
@@ -1,0 +2,7 @@
+Mon Aug 17 15:57:22 UTC 2026 - Markéta Machová <[email protected]>
+
+- Upgrade to 1.2.0
+  * bump sources archive to version 1.2.0
+  * fix cpython expression to also match armv7hl flavor of lib
+
+-------------------------------------------------------------------

Old:
----
  v1.0.1.tar.gz

New:
----
  v1.2.0.tar.gz

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

Other differences:
------------------
++++++ python-iptables.spec ++++++
--- /var/tmp/diff_new_pack.z7Soym/_old  2026-08-18 16:36:41.425373177 +0200
+++ /var/tmp/diff_new_pack.z7Soym/_new  2026-08-18 16:36:41.427373249 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-iptables
 #
-# Copyright (c) 2024 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
@@ -17,7 +17,7 @@
 
 
 Name:           python-iptables
-Version:        1.0.1
+Version:        1.2.0
 Release:        0
 Summary:        Python bindings for iptables
 License:        Apache-2.0
@@ -63,6 +63,6 @@
 %license NOTICE
 %doc doc README.md
 %{python_sitearch}/iptc
-%{python_sitearch}/libxtwrapper.cpython*-linux-gnu.so
+%{python_sitearch}/libxtwrapper.cpython*.so
 %{python_sitearch}/python_iptables-%{version}.dist-info
 

++++++ v1.0.1.tar.gz -> v1.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/.github/workflows/build.yaml 
new/python-iptables-1.2.0/.github/workflows/build.yaml
--- old/python-iptables-1.0.1/.github/workflows/build.yaml      2023-01-22 
21:50:31.000000000 +0100
+++ new/python-iptables-1.2.0/.github/workflows/build.yaml      2025-04-07 
00:11:08.000000000 +0200
@@ -6,9 +6,10 @@
     tags:
       - "v*"
   pull_request:
+
 jobs:
   build-and-test:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-20.04
     strategy:
       matrix:
         python-version:
@@ -19,9 +20,9 @@
           - "3.11"
     steps:
     - name: Check out code
-      uses: actions/checkout@v2
+      uses: actions/checkout@v4
     - name: Set up Python ${{ matrix.python-version }}
-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python-version }}
     - name: Build package
@@ -35,15 +36,15 @@
       run: sudo PATH=$PATH coverage run setup.py test
 
   release:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-20.04
     if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
     needs:
       - build-and-test
     steps:
     - name: Check out code
-      uses: actions/checkout@v2
+      uses: actions/checkout@v4
     - name: Set up Python
-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v5
       with:
         python-version: "3.x"
     - name: Build package
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/doc/conf.py 
new/python-iptables-1.2.0/doc/conf.py
--- old/python-iptables-1.0.1/doc/conf.py       2023-01-22 21:50:31.000000000 
+0100
+++ new/python-iptables-1.2.0/doc/conf.py       2025-04-07 00:11:08.000000000 
+0200
@@ -196,6 +196,6 @@
 
 
 # Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'http://docs.python.org/': None}
+intersphinx_mapping = {'python': ('http://docs.python.org/', None)}
 
 autoclass_content="both"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/iptc/ip4tc.py 
new/python-iptables-1.2.0/iptc/ip4tc.py
--- old/python-iptables-1.0.1/iptc/ip4tc.py     2023-01-22 21:50:31.000000000 
+0100
+++ new/python-iptables-1.2.0/iptc/ip4tc.py     2025-04-07 00:11:08.000000000 
+0200
@@ -42,10 +42,14 @@
 
 def is_table_available(name):
     try:
+        if name in Table.existing_table_names:
+            return Table.existing_table_names[name]
         Table(name)
+        Table.existing_table_names[name] = True
         return True
     except IPTCError:
         pass
+    Table.existing_table_names[name] = False
     return False
 
 
@@ -669,6 +673,11 @@
     does not take any value in the iptables extension, an empty string i.e. ""
     should be used.
     """
+
+    STANDARD_TARGETS = ["", "ACCEPT", "DROP", "REJECT", "RETURN", "REDIRECT", 
"SNAT", "DNAT", \
+        "MASQUERADE", "MIRROR", "TOS", "MARK", "QUEUE", "LOG"]
+    """This is the constant for all standard targets."""
+
     def __init__(self, rule, name=None, target=None, revision=None, goto=None):
         """
         *rule* is the Rule object this match belongs to; it can be changed
@@ -784,6 +793,8 @@
             self.reset()
 
     def _is_standard_target(self):
+        if self._name in Target.STANDARD_TARGETS:
+            return False
         for t in self._rule.tables:
             if t.is_chain(self._name):
                 return True
@@ -1572,6 +1583,8 @@
     """This is the constant for all tables."""
 
     _cache = dict()
+    existing_table_names = dict()
+    """Dictionary to check faster if a table is available."""
 
     def __new__(cls, name, autocommit=None):
         obj = Table._cache.get(name, None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/iptc/ip6tc.py 
new/python-iptables-1.2.0/iptc/ip6tc.py
--- old/python-iptables-1.0.1/iptc/ip6tc.py     2023-01-22 21:50:31.000000000 
+0100
+++ new/python-iptables-1.2.0/iptc/ip6tc.py     2025-04-07 00:11:08.000000000 
+0200
@@ -19,10 +19,14 @@
 
 def is_table6_available(name):
     try:
+        if name in Table6.existing_table_names:
+            return Table6.existing_table_names[name]
         Table6(name)
+        Table6.existing_table_names[name] = True
         return True
     except IPTCError:
         pass
+    Table6.existing_table_names[name] = False
     return False
 
 
@@ -412,22 +416,19 @@
     def get_in_interface(self):
         intf = ""
         if self.entry.ipv6.invflags & ip6t_ip6.IP6T_INV_VIA_IN:
-            intf = "".join(["!", intf])
-        iface = bytearray(_IFNAMSIZ)
-        iface[:len(self.entry.ipv6.iniface)] = self.entry.ipv6.iniface
-        mask = bytearray(_IFNAMSIZ)
-        mask[:len(self.entry.ipv6.iniface_mask)] = self.entry.ipv6.iniface_mask
-        if mask[0] == 0:
+            intf = "!"
+
+        iface = self.entry.ipv6.iniface.decode()
+        mask = self.entry.ipv6.iniface_mask
+
+        if len(mask) == 0:
             return None
-        for i in range(_IFNAMSIZ):
-            if mask[i] != 0:
-                intf = "".join([intf, chr(iface[i])])
-            else:
-                if iface[i - 1] != 0:
-                    intf = "".join([intf, "+"])
-                else:
-                    intf = intf[:-1]
-                break
+
+        intf += iface
+        if len(iface) == len(mask):
+            intf += '+'
+        intf = intf[:_IFNAMSIZ]
+
         return intf
 
     def set_in_interface(self, intf):
@@ -456,23 +457,19 @@
     def get_out_interface(self):
         intf = ""
         if self.entry.ipv6.invflags & ip6t_ip6.IP6T_INV_VIA_OUT:
-            intf = "".join(["!", intf])
-        iface = bytearray(_IFNAMSIZ)
-        iface[:len(self.entry.ipv6.outiface)] = self.entry.ipv6.outiface
-        mask = bytearray(_IFNAMSIZ)
-        mask[:len(self.entry.ipv6.outiface_mask)] = \
-            self.entry.ipv6.outiface_mask
-        if mask[0] == 0:
+            intf = "!"
+
+        iface = self.entry.ipv6.outiface.decode()
+        mask = self.entry.ipv6.outiface_mask
+
+        if len(mask) == 0:
             return None
-        for i in range(_IFNAMSIZ):
-            if mask[i] != 0:
-                intf = "".join([intf, chr(iface[i])])
-            else:
-                if iface[i - 1] != 0:
-                    intf = "".join([intf, "+"])
-                else:
-                    intf = intf[:-1]
-                break
+
+        intf += iface
+        if len(iface) == len(mask):
+            intf += '+'
+        intf = intf[:_IFNAMSIZ]
+
         return intf
 
     def set_out_interface(self, intf):
@@ -579,6 +576,8 @@
     """This is the constant for all tables."""
 
     _cache = dict()
+    existing_table_names = dict()
+    """Dictionary to check faster if a table is available."""
 
     def __new__(cls, name, autocommit=None):
         obj = Table6._cache.get(name, None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/iptc/util.py 
new/python-iptables-1.2.0/iptc/util.py
--- old/python-iptables-1.0.1/iptc/util.py      2023-01-22 21:50:31.000000000 
+0100
+++ new/python-iptables-1.2.0/iptc/util.py      2025-04-07 00:11:08.000000000 
+0200
@@ -3,7 +3,6 @@
 import sys
 import ctypes
 import ctypes.util
-from distutils.sysconfig import get_python_lib
 from itertools import product
 from subprocess import Popen, PIPE
 from sys import version_info
@@ -14,6 +13,12 @@
         if name == 'SO':
             return '.so'
         raise Exception('Not implemented')
+try:
+    from distutils.sysconfig import get_python_lib
+except ModuleNotFoundError:
+    import sysconfig
+    def get_python_lib():
+        return sysconfig.get_path("purelib")
 
 
 def _insert_ko(modprobe, modname):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/iptc/version.py 
new/python-iptables-1.2.0/iptc/version.py
--- old/python-iptables-1.0.1/iptc/version.py   2023-01-22 21:50:31.000000000 
+0100
+++ new/python-iptables-1.2.0/iptc/version.py   2025-04-07 00:11:08.000000000 
+0200
@@ -1,4 +1,4 @@
 # -*- coding: utf-8 -*-
 
 __pkgname__ = "python-iptables"
-__version__ = "1.0.1"
+__version__ = "1.2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/setup.py 
new/python-iptables-1.2.0/setup.py
--- old/python-iptables-1.0.1/setup.py  2023-01-22 21:50:31.000000000 +0100
+++ new/python-iptables-1.2.0/setup.py  2025-04-07 00:11:08.000000000 +0200
@@ -3,7 +3,6 @@
 """python-iptables setup script"""
 
 from setuptools import setup, Extension
-#from distutils.core import setup, Extension
 
 # make pyflakes happy
 __pkgname__ = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-iptables-1.0.1/tests/test_iptc.py 
new/python-iptables-1.2.0/tests/test_iptc.py
--- old/python-iptables-1.0.1/tests/test_iptc.py        2023-01-22 
21:50:31.000000000 +0100
+++ new/python-iptables-1.2.0/tests/test_iptc.py        2025-04-07 
00:11:08.000000000 +0200
@@ -423,7 +423,9 @@
     def test_rule_interface(self):
         # valid interfaces
         rule = iptc.Rule6()
-        for intf in ["eth0", "eth+", "ip6tnl1", "ip6tnl+", "!ppp0", "!ppp+"]:
+
+        max_length_valid_interface_name = "0123456789abcde"
+        for intf in ["eth0", "eth+", "ip6tnl1", "ip6tnl+", "!ppp0", "!ppp+", 
max_length_valid_interface_name]:
             rule.in_interface = intf
             self.assertEquals(intf, rule.in_interface)
             rule.out_interface = intf

Reply via email to