Hello community,

here is the log from the commit of package python-ethtool for openSUSE:Factory 
checked in at 2019-03-01 16:49:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ethtool (Old)
 and      /work/SRC/openSUSE:Factory/.python-ethtool.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ethtool"

Fri Mar  1 16:49:51 2019 rev:5 rq:680454 version:0.14

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ethtool/python-ethtool.changes    
2017-11-03 16:26:26.120749097 +0100
+++ /work/SRC/openSUSE:Factory/.python-ethtool.new.28833/python-ethtool.changes 
2019-03-01 16:49:54.797742754 +0100
@@ -1,0 +2,11 @@
+Fri Mar  1 10:55:25 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.14:
+  * Declared project as bugfix only from now on
+  * Support Python 3.7
+  * Fix important issues reported by static analysis
+  * Fix installation on non-UTF-8 locales on Python 3.5 and 3.6
+  * Added set_gso(), get_gro() and set_gro() functions
+  * Added installation instructions
+
+-------------------------------------------------------------------

Old:
----
  ethtool-0.13.tar.gz

New:
----
  ethtool-0.14.tar.gz

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

Other differences:
------------------
++++++ python-ethtool.spec ++++++
--- /var/tmp/diff_new_pack.FgnL88/_old  2019-03-01 16:49:55.193742605 +0100
+++ /var/tmp/diff_new_pack.FgnL88/_new  2019-03-01 16:49:55.197742604 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,27 +12,28 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 %global pypi_name ethtool
-
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-%{pypi_name}
-Version:        0.13
+Version:        0.14
 Release:        0
 Summary:        Ethernet settings Python bindings
-License:        GPL-2.0
+License:        GPL-2.0-only
 Group:          Development/Languages/Python
-Url:            https://github.com/fedora-python/%{name}
+URL:            https://github.com/fedora-python/%{name}
 Source:         
https://files.pythonhosted.org/packages/source/e/%{pypi_name}/%{pypi_name}-%{version}.tar.gz
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
 BuildRequires:  libnl3-devel
+# needs ifconfig for tests (to check feature parity)
+BuildRequires:  net-tools-deprecated
 BuildRequires:  pkgconfig
 BuildRequires:  python-rpm-macros
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %python_subpackages
 
 %description
@@ -44,21 +45,23 @@
 %setup -q -n %{pypi_name}-%{version}
 
 %build
-export LANG=C.UTF-8
 export CFLAGS="%{optflags}"
 %python_build
 
 %install
-export LANG=C.UTF-8
 %python_install
+%python_expand %fdupes %{buildroot}%{$python_sitearch}
 
-mkdir -p %{buildroot}%{_sbindir}  %{buildroot}%{_mandir}/man8
+mkdir -p %{buildroot}%{_sbindir}
 mv %{buildroot}{%{_bindir},%{_sbindir}}/pifconfig
 mv %{buildroot}{%{_bindir},%{_sbindir}}/pethtool
 
+%check
+%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m unittest 
discover -v
+
 %files %{python_files}
-%defattr(-,root,root)
-%doc README.rst CHANGES.rst COPYING
+%license COPYING
+%doc README.rst CHANGES.rst
 %{python_sitearch}/
 %python3_only %{_sbindir}/pethtool
 %python3_only %{_sbindir}/pifconfig

++++++ ethtool-0.13.tar.gz -> ethtool-0.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/CHANGES.rst new/ethtool-0.14/CHANGES.rst
--- old/ethtool-0.13/CHANGES.rst        2017-06-13 17:21:13.000000000 +0200
+++ new/ethtool-0.14/CHANGES.rst        2018-09-13 11:16:52.000000000 +0200
@@ -1,6 +1,17 @@
 Changelog
 =========
 
+0.14
+----
+Wed Sep 12 2018 Miro Hrončok <[email protected]>
+
+- Declared project as bugfix only from now on
+- Support Python 3.7
+- Fix important issues reported by static analysis
+- Fix installation on non-UTF-8 locales on Python 3.5 and 3.6
+- Added set_gso(), get_gro() and set_gro() functions
+- Added installation instructions
+
 0.13
 ----
 Tue Jun 13 2017 Miro Hrončok <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/PKG-INFO new/ethtool-0.14/PKG-INFO
--- old/ethtool-0.13/PKG-INFO   2017-06-13 17:21:37.000000000 +0200
+++ new/ethtool-0.14/PKG-INFO   2018-09-13 11:19:03.000000000 +0200
@@ -1,21 +1,50 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: ethtool
-Version: 0.13
+Version: 0.14
 Summary: Python module to interface with ethtool
 Home-page: https://github.com/fedora-python/python-ethtool
-Author: Lumír Balhar, Miro Hrončok, Charalampos Stratakis, Sanqui
-Author-email: [email protected]
+Author: Harald Hoyer, Arnaldo Carvalho de Melo, David Sommerseth
+Author-email: [email protected]
+Maintainer: Lumír Balhar, Miro Hrončok, Charalampos Stratakis, Sanqui
+Maintainer-email: [email protected]
 License: GPL-2.0
 Description: Python ethtool module
         =====================
         
         *Python bindings for the ethtool kernel interface*
         
-        The Python ``ethtool`` module allows querying and changing of ethernet 
card settings,
-        such as speed, port, autonegotiation, and PCI locations.
+        The Python ``ethtool`` module allows querying and partially 
controlling network
+        interfaces, driver, and hardware settings.
+        
+        .. warning::
+            This is the new upstream for python-ethtool maintained by Fedora's
+            Python SIG. We ported it to Python 3 and only maintain it for the 
current
+            tools to keep working. **No new development is happening. This is a
+            deprecated package.** If you are considering to start using this, 
please
+            don't. We recommend `netifaces 
<https://pypi.org/project/netifaces/>`_ instead.
+        
+        Installation
+        ------------
+        
+        The easiest way to install ``ethtool`` is to use your distribution 
packages
+        repositories. For example:
+        
+        **Fedora**: ``sudo dnf install python3-ethtool`` or ``sudo dnf install 
python2-ethtool``
+        
+        **Ubuntu**: ``sudo apt install python-ethtool``
+        
+        In order to install ``ethtool`` from source or PyPI install its 
dependencies first:
+        
+        **Fedora**: ``sudo dnf install libnl3-devel gcc redhat-rpm-config 
python3-devel``
+        
+        **Ubuntu**: ``sudo apt install python3 python3-setuptools 
libpython3.6-dev libnl-route-3-dev``
+        
+        And then install ``ethtool``:
+        
+        **from PyPI**: ``pip3 install ethtool``
+        
+        **from source**: ``python3 setup.py install``
         
-        **This is the new upstream for python-ethtool maintained by Fedora's
-        Python SIG.**
         
         Usage
         -----
@@ -112,6 +141,17 @@
         Changelog
         =========
         
+        0.14
+        ----
+        Wed Sep 12 2018 Miro Hrončok <[email protected]>
+        
+        - Declared project as bugfix only from now on
+        - Support Python 3.7
+        - Fix important issues reported by static analysis
+        - Fix installation on non-UTF-8 locales on Python 3.5 and 3.6
+        - Added set_gso(), get_gro() and set_gro() functions
+        - Added installation instructions
+        
         0.13
         ----
         Tue Jun 13 2017 Miro Hrončok <[email protected]>
@@ -221,6 +261,7 @@
         
 Keywords: network networking ethernet tool ethtool
 Platform: UNKNOWN
+Classifier: Development Status :: 7 - Inactive
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: System Administrators
 Classifier: Operating System :: POSIX :: Linux
@@ -231,6 +272,7 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Topic :: Software Development :: Libraries
 Classifier: Topic :: System :: Networking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/README.rst new/ethtool-0.14/README.rst
--- old/ethtool-0.13/README.rst 2017-05-30 12:26:02.000000000 +0200
+++ new/ethtool-0.14/README.rst 2018-09-12 15:38:50.000000000 +0200
@@ -3,11 +3,38 @@
 
 *Python bindings for the ethtool kernel interface*
 
-The Python ``ethtool`` module allows querying and changing of ethernet card 
settings,
-such as speed, port, autonegotiation, and PCI locations.
+The Python ``ethtool`` module allows querying and partially controlling network
+interfaces, driver, and hardware settings.
+
+.. warning::
+    This is the new upstream for python-ethtool maintained by Fedora's
+    Python SIG. We ported it to Python 3 and only maintain it for the current
+    tools to keep working. **No new development is happening. This is a
+    deprecated package.** If you are considering to start using this, please
+    don't. We recommend `netifaces <https://pypi.org/project/netifaces/>`_ 
instead.
+
+Installation
+------------
+
+The easiest way to install ``ethtool`` is to use your distribution packages
+repositories. For example:
+
+**Fedora**: ``sudo dnf install python3-ethtool`` or ``sudo dnf install 
python2-ethtool``
+
+**Ubuntu**: ``sudo apt install python-ethtool``
+
+In order to install ``ethtool`` from source or PyPI install its dependencies 
first:
+
+**Fedora**: ``sudo dnf install libnl3-devel gcc redhat-rpm-config 
python3-devel``
+
+**Ubuntu**: ``sudo apt install python3 python3-setuptools libpython3.6-dev 
libnl-route-3-dev``
+
+And then install ``ethtool``:
+
+**from PyPI**: ``pip3 install ethtool``
+
+**from source**: ``python3 setup.py install``
 
-**This is the new upstream for python-ethtool maintained by Fedora's
-Python SIG.**
 
 Usage
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/ethtool.egg-info/PKG-INFO 
new/ethtool-0.14/ethtool.egg-info/PKG-INFO
--- old/ethtool-0.13/ethtool.egg-info/PKG-INFO  2017-06-13 17:21:37.000000000 
+0200
+++ new/ethtool-0.14/ethtool.egg-info/PKG-INFO  2018-09-13 11:19:02.000000000 
+0200
@@ -1,21 +1,50 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: ethtool
-Version: 0.13
+Version: 0.14
 Summary: Python module to interface with ethtool
 Home-page: https://github.com/fedora-python/python-ethtool
-Author: Lumír Balhar, Miro Hrončok, Charalampos Stratakis, Sanqui
-Author-email: [email protected]
+Author: Harald Hoyer, Arnaldo Carvalho de Melo, David Sommerseth
+Author-email: [email protected]
+Maintainer: Lumír Balhar, Miro Hrončok, Charalampos Stratakis, Sanqui
+Maintainer-email: [email protected]
 License: GPL-2.0
 Description: Python ethtool module
         =====================
         
         *Python bindings for the ethtool kernel interface*
         
-        The Python ``ethtool`` module allows querying and changing of ethernet 
card settings,
-        such as speed, port, autonegotiation, and PCI locations.
+        The Python ``ethtool`` module allows querying and partially 
controlling network
+        interfaces, driver, and hardware settings.
+        
+        .. warning::
+            This is the new upstream for python-ethtool maintained by Fedora's
+            Python SIG. We ported it to Python 3 and only maintain it for the 
current
+            tools to keep working. **No new development is happening. This is a
+            deprecated package.** If you are considering to start using this, 
please
+            don't. We recommend `netifaces 
<https://pypi.org/project/netifaces/>`_ instead.
+        
+        Installation
+        ------------
+        
+        The easiest way to install ``ethtool`` is to use your distribution 
packages
+        repositories. For example:
+        
+        **Fedora**: ``sudo dnf install python3-ethtool`` or ``sudo dnf install 
python2-ethtool``
+        
+        **Ubuntu**: ``sudo apt install python-ethtool``
+        
+        In order to install ``ethtool`` from source or PyPI install its 
dependencies first:
+        
+        **Fedora**: ``sudo dnf install libnl3-devel gcc redhat-rpm-config 
python3-devel``
+        
+        **Ubuntu**: ``sudo apt install python3 python3-setuptools 
libpython3.6-dev libnl-route-3-dev``
+        
+        And then install ``ethtool``:
+        
+        **from PyPI**: ``pip3 install ethtool``
+        
+        **from source**: ``python3 setup.py install``
         
-        **This is the new upstream for python-ethtool maintained by Fedora's
-        Python SIG.**
         
         Usage
         -----
@@ -112,6 +141,17 @@
         Changelog
         =========
         
+        0.14
+        ----
+        Wed Sep 12 2018 Miro Hrončok <[email protected]>
+        
+        - Declared project as bugfix only from now on
+        - Support Python 3.7
+        - Fix important issues reported by static analysis
+        - Fix installation on non-UTF-8 locales on Python 3.5 and 3.6
+        - Added set_gso(), get_gro() and set_gro() functions
+        - Added installation instructions
+        
         0.13
         ----
         Tue Jun 13 2017 Miro Hrončok <[email protected]>
@@ -221,6 +261,7 @@
         
 Keywords: network networking ethernet tool ethtool
 Platform: UNKNOWN
+Classifier: Development Status :: 7 - Inactive
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: System Administrators
 Classifier: Operating System :: POSIX :: Linux
@@ -231,6 +272,7 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Topic :: Software Development :: Libraries
 Classifier: Topic :: System :: Networking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/python-ethtool/ethtool-copy.h 
new/ethtool-0.14/python-ethtool/ethtool-copy.h
--- old/ethtool-0.13/python-ethtool/ethtool-copy.h      2017-04-07 
15:36:15.000000000 +0200
+++ new/ethtool-0.14/python-ethtool/ethtool-copy.h      2018-02-14 
14:36:14.000000000 +0100
@@ -290,6 +290,8 @@
 #define ETHTOOL_SUFO        0x00000022  /* Set UFO enable (e.v.) */
 #define ETHTOOL_GGSO        0x00000023  /* Get GSO enable (e.v.) */
 #define ETHTOOL_SGSO        0x00000024  /* Set GSO enable (e.v.) */
+#define ETHTOOL_GGRO        0x0000002b  /* Get GRO enable (e.v.) */
+#define ETHTOOL_SGRO        0x0000002c  /* Set GRO enable (e.v.) */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET ETHTOOL_GSET
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/python-ethtool/ethtool.c 
new/ethtool-0.14/python-ethtool/ethtool.c
--- old/ethtool-0.13/python-ethtool/ethtool.c   2017-04-12 13:38:36.000000000 
+0200
+++ new/ethtool-0.14/python-ethtool/ethtool.c   2018-09-12 15:38:50.000000000 
+0200
@@ -94,6 +94,7 @@
     ret = fgets(buffer, 256, fd);
     ret = fgets(buffer, 256, fd);
     if (!ret) {
+        fclose(fd);
         return PyErr_SetFromErrno(PyExc_OSError);
     }
 
@@ -592,8 +593,7 @@
     if (dev_set_int_value(ETHTOOL_STSO, args) < 0)
         return NULL;
 
-    Py_INCREF(Py_None);
-    return Py_None;
+    Py_RETURN_NONE;
 }
 
 static PyObject *get_ufo(PyObject *self __unused, PyObject *args)
@@ -616,6 +616,32 @@
     return Py_BuildValue("b", value);
 }
 
+static PyObject *set_gso(PyObject *self __unused, PyObject *args)
+{
+    if (dev_set_int_value(ETHTOOL_SGSO, args) < 0)
+        return NULL;
+
+    Py_RETURN_NONE;
+}
+
+static PyObject *get_gro(PyObject *self __unused, PyObject *args)
+{
+    int value = 0;
+
+    if (get_dev_int_value(ETHTOOL_GGRO, args, &value) < 0)
+        return NULL;
+
+    return Py_BuildValue("b", value);
+}
+
+static PyObject *set_gro(PyObject *self __unused, PyObject *args)
+{
+    if (dev_set_int_value(ETHTOOL_SGRO, args) < 0)
+        return NULL;
+
+    Py_RETURN_NONE;
+}
+
 static PyObject *get_sg(PyObject *self __unused, PyObject *args)
 {
     int value = 0;
@@ -637,7 +663,8 @@
 
     /* Setup our request structure. */
     memset(&iwr, 0, sizeof(iwr));
-    strncpy(iwr.ifr_name, devname, IFNAMSIZ);
+    strncpy(iwr.ifr_name, devname, IFNAMSIZ-1);
+    iwr.ifr_name[IFNAMSIZ-1] = 0;
 
     /* Open control socket. */
     fd = socket(AF_INET, SOCK_DGRAM, 0);
@@ -700,7 +727,7 @@
     PyObject *dict = PyDict_New();
 
     if (dict == NULL)
-        goto out;
+        return NULL;
 
     for (i = 0; i < nr_entries; ++i) {
         struct struct_desc *d = &table[i];
@@ -713,21 +740,21 @@
             break;
         }
 
-        if (objval == NULL)
-            goto free_dict;
+        if (objval == NULL) {
+            Py_DECREF(dict);
+            return NULL;
+        }
 
         if (PyDict_SetItemString(dict, d->name, objval) != 0) {
             Py_DECREF(objval);
-            goto free_dict;
+            Py_DECREF(dict);
+            return NULL;
         }
 
         Py_DECREF(objval);
     }
-out:
+
     return dict;
-free_dict:
-    goto out;
-    dict = NULL;
 }
 
 #define struct_desc_create_dict(table, values) \
@@ -796,8 +823,7 @@
     if (send_command(ETHTOOL_SCOALESCE, devname, &coal))
         return NULL;
 
-    Py_INCREF(Py_None);
-    return Py_None;
+    Py_RETURN_NONE;
 }
 
 struct struct_desc ethtool_ringparam_desc[] = {
@@ -836,8 +862,7 @@
     if (send_command(ETHTOOL_SRINGPARAM, devname, &ring))
         return NULL;
 
-    Py_INCREF(Py_None);
-    return Py_None;
+    Py_RETURN_NONE;
 }
 
 static struct PyMethodDef PyEthModuleMethods[] = {
@@ -929,6 +954,21 @@
         .ml_flags = METH_VARARGS,
     },
     {
+        .ml_name = "set_gso",
+        .ml_meth = (PyCFunction)set_gso,
+        .ml_flags = METH_VARARGS,
+    },
+    {
+        .ml_name = "get_gro",
+        .ml_meth = (PyCFunction)get_gro,
+        .ml_flags = METH_VARARGS,
+    },
+    {
+        .ml_name = "set_gro",
+        .ml_meth = (PyCFunction)set_gro,
+        .ml_flags = METH_VARARGS,
+    },
+    {
         .ml_name = "get_sg",
         .ml_meth = (PyCFunction)get_sg,
         .ml_flags = METH_VARARGS,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/scripts/pethtool 
new/ethtool-0.14/scripts/pethtool
--- old/ethtool-0.13/scripts/pethtool   2017-04-12 13:38:36.000000000 +0200
+++ new/ethtool-0.14/scripts/pethtool   2018-02-14 14:36:14.000000000 +0100
@@ -211,10 +211,16 @@
     except IOError:
         gso = 'not supported'
 
+    try:
+        gro = ethtool.get_gro(interface) and 'on' or 'off'
+    except IOError:
+        gro = 'not supported'
+
     printtab('scatter-gather: %s' % sg)
     printtab('tcp segmentation offload: %s' % tso)
     printtab('udp fragmentation offload: %s' % ufo)
     printtab('generic segmentation offload: %s' % gso)
+    printtab('generic receive offload: %s' % gro)
 
 
 def set_offload(interface, args):
@@ -226,6 +232,18 @@
             ethtool.set_tso(interface, value)
         except:
             pass
+    elif cmd == 'gso':
+        value = value == 'on' and 1 or 0
+        try:
+            ethtool.set_gso(interface, value)
+        except:
+            pass
+    elif cmd == 'gro':
+        value = value == 'on' and 1 or 0
+        try:
+            ethtool.set_gro(interface, value)
+        except:
+            pass
 
 
 ethtool_ringparam_msgs = (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/scripts/pifconfig 
new/ethtool-0.14/scripts/pifconfig
--- old/ethtool-0.13/scripts/pifconfig  2017-04-12 13:38:36.000000000 +0200
+++ new/ethtool-0.14/scripts/pifconfig  2018-02-14 14:36:14.000000000 +0100
@@ -63,7 +63,7 @@
     ipaddr = ethtool.get_ipaddr(device)
     netmask = ethtool.get_netmask(device)
     flags = ethtool.get_flags(device)
-    print('%-9.9s' % device)
+    print('%s' % device)
     if not (flags & ethtool.IFF_LOOPBACK):
         print('\tHWaddr %s' % ethtool.get_hwaddr(device))
     print('\tinet addr:%s' % ipaddr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/setup.py new/ethtool-0.14/setup.py
--- old/ethtool-0.13/setup.py   2017-06-13 17:21:13.000000000 +0200
+++ new/ethtool-0.14/setup.py   2018-09-13 11:16:52.000000000 +0200
@@ -5,13 +5,14 @@
 
 from setuptools import setup, Extension
 import sys
+from io import open
 
 try:
     import commands
 except ImportError:
     import subprocess as commands
 
-version = '0.13'
+version = '0.14'
 
 
 class PkgConfigExtension(Extension):
@@ -90,10 +91,10 @@
         pass
 
 
-with open('README.rst') as f:
+with open('README.rst', encoding='utf-8') as f:
     long_description = f.read()
 
-with open('CHANGES.rst') as f:
+with open('CHANGES.rst', encoding='utf-8') as f:
     long_description += '\n\n'
     long_description += f.read()
 
@@ -113,6 +114,7 @@
       keywords='network networking ethernet tool ethtool',
 
       classifiers=[
+          'Development Status :: 7 - Inactive',
           'Intended Audience :: Developers',
           'Intended Audience :: System Administrators',
           'Operating System :: POSIX :: Linux',
@@ -123,6 +125,7 @@
           'Programming Language :: Python :: 3',
           'Programming Language :: Python :: 3.5',
           'Programming Language :: Python :: 3.6',
+          'Programming Language :: Python :: 3.7',
           'Programming Language :: Python :: Implementation :: CPython',
           'Topic :: Software Development :: Libraries',
           'Topic :: System :: Networking',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/tests/parse_ifconfig.py 
new/ethtool-0.14/tests/parse_ifconfig.py
--- old/ethtool-0.13/tests/parse_ifconfig.py    2017-04-07 15:36:15.000000000 
+0200
+++ new/ethtool-0.14/tests/parse_ifconfig.py    2018-09-12 15:38:50.000000000 
+0200
@@ -113,6 +113,11 @@
                 curdev._parse_rest_of_first_line_old(mo.group(2))
                 continue
 
+            # If we don't have current device yet, doesn't make sense to
+            # read the rest of output lines
+            if curdev is None:
+                continue
+
             if self.oldFormat:
                 curdev._parse_line_old(line)
             else:
@@ -540,8 +545,6 @@
 
         return
 
-        raise ValueError('parser could not handle line: %r' % line)
-
 # ifconfig = IfConfig()
 # for dev in ifconfig.devices:
 #    print(dev)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/tests/test_ethtool.py 
new/ethtool-0.14/tests/test_ethtool.py
--- old/ethtool-0.13/tests/test_ethtool.py      2017-04-07 15:36:15.000000000 
+0200
+++ new/ethtool-0.14/tests/test_ethtool.py      2018-09-12 15:38:50.000000000 
+0200
@@ -121,6 +121,7 @@
         if not ifconfig.oldFormat:
             self.assertEqual(ethtool.get_flags(devname), scraped.flagsint)
         self.assertIsInt(ethtool.get_gso(devname))
+        self.assertIsInt(ethtool.get_gro(devname))
         self.assertIsString(ethtool.get_hwaddr(devname))
         self.assertEqualHwAddr(ethtool.get_hwaddr(devname),
                                scraped.hwaddr)
@@ -144,7 +145,13 @@
                                      '[Errno 95] Operation not supported')
 
         self.assertIsInt(ethtool.get_sg(devname))
-        self.assertIsInt(ethtool.get_ufo(devname))
+
+        try:
+            self.assertIsInt(ethtool.get_ufo(devname))
+        except (OSError, IOError):
+            # This test may fail due to insufficient privileges
+            # That's IOError on 2.7, OSError (PermissionError) on 3
+            pass
 
         self.assertIsInt(ethtool.get_tso(devname))
 
@@ -154,6 +161,10 @@
 
         # TODO: self.assertIsString(ethtool.set_tso(devname))
 
+        # TODO: self.assertIsString(ethtool.set_gso(devname))
+
+        # TODO: self.assertIsString(ethtool.set_gro(devname))
+
     def _verify_etherinfo_object(self, ei):
         self.assertTrue(isinstance(ei, ethtool.etherinfo))
         self.assertIsString(ei.device)
@@ -196,14 +207,15 @@
         # Verify sane handling of non-existant devices
 
         get_fns = ('get_broadcast', 'get_businfo', 'get_coalesce', 'get_flags',
-                   'get_gso', 'get_hwaddr', 'get_ipaddr', 'get_module',
-                   'get_netmask', 'get_ringparam', 'get_sg', 'get_tso',
-                   'get_ufo')
+                   'get_gso', 'get_gso', 'get_hwaddr', 'get_ipaddr',
+                   'get_module', 'get_netmask', 'get_ringparam', 'get_sg',
+                   'get_tso', 'get_ufo')
         for fnname in get_fns:
             self.assertRaisesNoSuchDevice(getattr(ethtool, fnname),
                                           INVALID_DEVICE_NAME)
 
-        set_fns = ('set_coalesce', 'set_ringparam', 'set_tso')
+        set_fns = ('set_coalesce', 'set_ringparam', 'set_tso', 'set_gso',
+                   'set_gro')
         for fnname in set_fns:
             # Currently this fails, with an IOError from
             #   ethtool.c:__struct_desc_from_dict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ethtool-0.13/tests/test_scripts.py 
new/ethtool-0.14/tests/test_scripts.py
--- old/ethtool-0.13/tests/test_scripts.py      2017-04-12 17:11:52.000000000 
+0200
+++ new/ethtool-0.14/tests/test_scripts.py      2018-09-12 15:38:50.000000000 
+0200
@@ -72,12 +72,21 @@
 
     def test_show_offload_lo(self):
         self.assertIsNone(peth.show_offload(loopback))
+
+        # Check if we have rights to obtain ufo and set proper expected output
+        try:
+            ethtool.get_ufo(loopback)
+            expected_ufo = 'on'
+        except (OSError, IOError):
+            expected_ufo = 'not supported'
+
         self.assertEqual(self._output(),
                          '''scatter-gather: on
 tcp segmentation offload: on
-udp fragmentation offload: on
+udp fragmentation offload: {expected_ufo}
 generic segmentation offload: on
-'''
+generic receive offload: on
+'''.format(expected_ufo=expected_ufo)
                          )
 
     # Tests for another device


Reply via email to