Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-wirerope for openSUSE:Factory
checked in at 2026-06-11 17:27:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wirerope (Old)
and /work/SRC/openSUSE:Factory/.python-wirerope.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wirerope"
Thu Jun 11 17:27:41 2026 rev:7 rq:1358625 version:1.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-wirerope/python-wirerope.changes
2025-11-10 19:19:52.622724936 +0100
+++
/work/SRC/openSUSE:Factory/.python-wirerope.new.1981/python-wirerope.changes
2026-06-11 17:29:24.115465282 +0200
@@ -1,0 +2,6 @@
+Thu Jun 11 02:28:57 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Add patch no-six.patch:
+ * Drop use of six and Python 2 compat code.
+
+-------------------------------------------------------------------
New:
----
no-six.patch
----------(New B)----------
New:
- Add patch no-six.patch:
* Drop use of six and Python 2 compat code.
----------(New E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-wirerope.spec ++++++
--- /var/tmp/diff_new_pack.CCuaKO/_old 2026-06-11 17:29:24.995502187 +0200
+++ /var/tmp/diff_new_pack.CCuaKO/_new 2026-06-11 17:29:24.999502354 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-wirerope
#
-# Copyright (c) 2025 SUSE LLC and contributors
+# 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
@@ -23,14 +23,14 @@
License: BSD-2-Clause
URL: https://github.com/youknowone/wirerope
Source0:
https://github.com/youknowone/wirerope/archive/%{version}.tar.gz#/wirerope-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM gh#youknowone/wirerope#31
+Patch0: no-six.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest >= 4.0}
BuildRequires: %{python_module setuptools >= 39.2.0}
-BuildRequires: %{python_module six >= 1.11.0}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-six >= 1.11.0
BuildArch: noarch
%python_subpackages
@@ -40,7 +40,7 @@
wire object will be created by each function or bound method.
%prep
-%setup -q -n wirerope-%{version}
+%autosetup -p1 -n wirerope-%{version}
sed -i -e '/addopts/d' setup.cfg
%build
++++++ no-six.patch ++++++
>From 601854d970f2c2e3f40d4a5c43acf1d816f4728f Mon Sep 17 00:00:00 2001
From: Steve Kowalik <[email protected]>
Date: Thu, 11 Jun 2026 12:01:43 +1000
Subject: [PATCH] Remove six and Python 2 compatibility code
Now that Python 3.4 is the lowest supported version, we can remove a
large amount of code that support versions before it, as well as use of
six, as well as the entire _compat module. Drive-by removing the
pkg_resources check from setup.py since setuptools 39 is now ten years
old.
---
setup.cfg | 3 ---
setup.py | 10 --------
wirerope/_compat.py | 13 ----------
wirerope/callable.py | 57 ++++++++++++--------------------------------
wirerope/rope.py | 14 +++--------
wirerope/wire.py | 8 +------
6 files changed, 19 insertions(+), 86 deletions(-)
delete mode 100644 wirerope/_compat.py
diff --git a/setup.cfg b/setup.cfg
index 80dc8cf..2cd90a4 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -25,9 +25,6 @@ keywords = ring,methodtools,hack,method
[options]
packages = wirerope
install_requires=
- six>=1.11.0
- inspect2>=0.1.0;python_version<"3"
- singledispatch>=3.4.0.3;python_version<"3.4"
[options.extras_require]
test =
pytest>=4.6.7
diff --git a/setup.py b/setup.py
index cf5756f..b908cbe 100644
--- a/setup.py
+++ b/setup.py
@@ -1,13 +1,3 @@
import setuptools
-from pkg_resources import get_distribution
-
-try:
- get_distribution("setuptools>=39.2.0")
-except Exception as e:
- raise AssertionError(
- "Please upgrade setuptools by `pip install -U setuptools`: {}".format(
- e
- )
- )
setuptools.setup()
diff --git a/wirerope/_compat.py b/wirerope/_compat.py
deleted file mode 100644
index 7600f7e..0000000
--- a/wirerope/_compat.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from __future__ import absolute_import
-
-import six
-
-import functools
-if not hasattr(functools, 'singledispatch'):
- import singledispatch
- functools.singledispatch = singledispatch.singledispatch
-
-if six.PY3:
- import inspect
-else:
- import inspect2 as inspect # noqa
diff --git a/wirerope/callable.py b/wirerope/callable.py
index 73c3123..775dc82 100644
--- a/wirerope/callable.py
+++ b/wirerope/callable.py
@@ -1,9 +1,8 @@
from __future__ import absolute_import
+import inspect
import types
-import six
from ._util import cached_property
-from ._compat import inspect
__all__ = ('Callable', )
@@ -135,27 +134,16 @@ def is_boundmethod(self):
return False
new_bound = self.wrapped_object.__get__(object())
try:
- if six.PY2:
- return new_bound is self.wrapped_object
- else:
- return type(new_bound) is type(self.wrapped_object) # noqa
+ return type(new_bound) is type(self.wrapped_object) # noqa
except Exception:
return False
- if six.PY2:
- @property
- def is_unboundmethod(self):
- return type(self.wrapped_object) is type(Callable.__init__) # noqa
-
@cached_property
def is_descriptor(self):
if self.is_boundmethod:
return False
is_descriptor = type(self.wrapped_object).__get__ \
is not types.FunctionType.__get__ # noqa
- if six.PY2:
- is_descriptor = is_descriptor and \
- not (self.is_unboundmethod or self.is_boundmethod)
return is_descriptor
@cached_property
@@ -168,24 +156,11 @@ def is_property(self):
(self.is_descriptor and self.descriptor.detect_property(
_reagent, _Reagent))
- if six.PY34:
- @cached_property
- def is_barefunction(self):
- cc = self.wrapped_callable
- method_name = cc.__qualname__.split('<locals>.')[-1]
- if method_name == cc.__name__:
- return True
- return False
- else:
- @cached_property
- def is_barefunction(self):
- # im_class does not exist at this point
- if self.is_descriptor:
- return False
- if six.PY2:
- if self.is_unboundmethod:
- return False
- return not (self.is_membermethod or self.is_classmethod)
+ @cached_property
+ def is_barefunction(self):
+ cc = self.wrapped_callable
+ method_name = cc.__qualname__.split('<locals>.')[-1]
+ return method_name == cc.__name__
@cached_property
def is_member(self):
@@ -196,11 +171,10 @@ def is_member(self):
:note: The test is partially based on the first parameter name.
The test result might be wrong.
"""
- if six.PY34:
- if self.is_barefunction:
- return False
- if not self.is_descriptor:
- return True
+ if self.is_barefunction:
+ return False
+ if not self.is_descriptor:
+ return True
return self.first_parameter is not None \
and self.first_parameter.name == 'self'
@@ -230,11 +204,10 @@ def is_classmethod(self):
"""
if isinstance(self.wrapped_object, classmethod):
return True
- if six.PY34:
- if self.is_barefunction:
- return False
- if not self.is_descriptor:
- return False
+ if self.is_barefunction:
+ return False
+ if not self.is_descriptor:
+ return False
return self.first_parameter is not None \
and self.first_parameter.name == 'cls'
diff --git a/wirerope/rope.py b/wirerope/rope.py
index aba90b1..16aa468 100644
--- a/wirerope/rope.py
+++ b/wirerope/rope.py
@@ -1,10 +1,9 @@
""":mod:`wirerope.rope` --- Wire access dispatcher for descriptor type.
=======================================================================
"""
-import six
+import functools
from .callable import Callable
from .wire import descriptor_bind
-from ._compat import functools
__all__ = 'WireRope', 'RopeCore'
@@ -159,15 +158,8 @@ def __call__(self, function):
if cw.is_barefunction or cw.is_boundmethod:
rope_class = self.callable_function_rope
wire_class_call = self.wire_class.__call__
- if six.PY3:
- if wire_class_call.__qualname__ == 'type.__call__':
- rope_class = self.function_rope
- else:
- # method-wrapper test for CPython2.7
- # im_class == type test for PyPy2.7
- if type(wire_class_call).__name__ == 'method-wrapper' or \
- wire_class_call.im_class == type:
- rope_class = self.function_rope
+ if wire_class_call.__qualname__ == 'type.__call__':
+ rope_class = self.function_rope
elif cw.is_property:
rope_class = self.property_rope
else:
diff --git a/wirerope/wire.py b/wirerope/wire.py
index 974d601..1ee3290 100644
--- a/wirerope/wire.py
+++ b/wirerope/wire.py
@@ -1,10 +1,9 @@
""":mod:`wirerope.wire` --- end-point instant for each bound method
===================================================================
"""
-import six
+import functools
import types
from .callable import Descriptor
-from ._compat import functools
__all__ = 'Wire',
@@ -44,11 +43,6 @@ def __init__(self, rope, owner, binding):
func = self._callable.wrapped_object.__get__
if self._callable.is_property:
wrapped = functools.partial(func, *binding)
- if six.PY2:
- # functools.wraps requires those attributes but
- # py2 functools.partial doesn't have them
- wrapped.__module__ = owner.__module__
- wrapped.__name__ = func.__name__
self.__func__ = wrapped
else:
self.__func__ = func(*binding)