Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ligo-segments for
openSUSE:Factory checked in at 2021-02-20 22:12:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ligo-segments (Old)
and /work/SRC/openSUSE:Factory/.python-ligo-segments.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ligo-segments"
Sat Feb 20 22:12:54 2021 rev:2 rq:874002 version:1.3.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-ligo-segments/python-ligo-segments.changes
2020-10-30 11:59:04.590313529 +0100
+++
/work/SRC/openSUSE:Factory/.python-ligo-segments.new.28504/python-ligo-segments.changes
2021-02-20 22:12:55.711079762 +0100
@@ -1,0 +2,30 @@
+Fri Feb 19 16:38:24 UTC 2021 - Atri Bhattacharya <[email protected]>
+
+- Skip python2: no longer supported by upstream.
+
+-------------------------------------------------------------------
+Mon Feb 15 23:44:41 UTC 2021 - Atri Bhattacharya <[email protected]>
+
+- Update to version 1.3.0:
+ * Unit tests now automatically switch between python and C
+ implementations (previously required manual hack).
+ * More updates for Python 3 (various versions).
+ * Expand documentation (and, with it, test coverage).
+
+-------------------------------------------------------------------
+Thu Jan 21 20:15:02 UTC 2021 - Atri Bhattacharya <[email protected]>
+
+- Fix running tests for all python versions.
+- Be more specific for the file-list.
+
+-------------------------------------------------------------------
+Sat Aug 15 18:37:41 UTC 2020 - Atri Bhattacharya <[email protected]>
+
+- Add python-ligo-segments-disable-lal-tests.patch: Disable tests
+ requiring lal to avoid circular build dependency on lal (which
+ also requires python-ligo-segments).
+- Implement test as part of %check section; BuildRequires
+ python3-pytest needed.
+- Use %license to package LICENSE file.
+
+-------------------------------------------------------------------
Old:
----
ligo-segments-1.2.0.tar.gz
New:
----
ligo-segments-1.3.0.tar.gz
python-ligo-segments-disable-lal-tests.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ligo-segments.spec ++++++
--- /var/tmp/diff_new_pack.FZ5f6Y/_old 2021-02-20 22:12:56.223080306 +0100
+++ /var/tmp/diff_new_pack.FZ5f6Y/_new 2021-02-20 22:12:56.223080306 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-ligo-segments
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,30 +12,38 @@
# 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/
+#
+%define skip_python2 1
Name: python-ligo-segments
-Version: 1.2.0
+Version: 1.3.0
Release: 0
-License: GPL-3.0
Summary: Representations of semi-open intervals
-Url: https://git.ligo.org/lscsoft/ligo-segments
+License: GPL-3.0-only
Group: Development/Languages/Python
-Source:
http://software.igwn.org/lscsoft/source/ligo-segments-%{version}.tar.gz
-BuildRequires: python-rpm-macros
+URL: https://git.ligo.org/lscsoft/ligo-segments
+Source:
https://files.pythonhosted.org/packages/source/l/ligo-segments/ligo-segments-%{version}.tar.gz
+# PATCH-FEATURE-OPENSUSE python-ligo-segments-disable-lal-tests.patch
[email protected] -- Disable tests requiring lal to avoid circular build
dependency on lal (which also requires python-ligo-segments)
+Patch0: python-ligo-segments-disable-lal-tests.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
+BuildRequires: python-rpm-macros
+# SECTION For tests
+BuildRequires: %{python_module pytest}
+# /SECTION
BuildRequires: fdupes
Requires: python-six
%python_subpackages
%description
-ligo-segments defines the segment, segmentlist, and segmentlistdict objects
for manipulating semi-open intervals.
+ligo-segments defines the segment, segmentlist, and segmentlistdict objects for
+manipulating semi-open intervals.
%prep
-%setup -q -n ligo-segments-%{version}
+%autosetup -p1 -n ligo-segments-%{version}
%build
export CFLAGS="%{optflags}"
@@ -45,8 +53,21 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
+%check
+%{python_expand export PYTHON=$python
+export PYTHONDONTWRITEBYTECODE=1
+export PYTHONPATH=%{buildroot}%{$python_sitearch}
+cp -r test test-%{$python_bin_suffix}
+pushd test-%{$python_bin_suffix}
+%make_build check
+popd
+}
+
%files %{python_files}
-%doc LICENSE README.rst
-%{python_sitearch}/*
+%doc README.rst
+%license LICENSE
+%{python_sitearch}/ligo/
+%{python_sitearch}/ligo_segments-%{version}-py%{python_version}.egg-info/
+%{python_sitearch}/ligo_segments-%{version}-py%{python_version}-nspkg.pth
%changelog
++++++ ligo-segments-1.2.0.tar.gz -> ligo-segments-1.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/PKG-INFO
new/ligo-segments-1.3.0/PKG-INFO
--- old/ligo-segments-1.2.0/PKG-INFO 2019-01-16 04:36:50.000000000 +0100
+++ new/ligo-segments-1.3.0/PKG-INFO 2021-01-26 10:49:09.850000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ligo-segments
-Version: 1.2.0
+Version: 1.3.0
Summary: Representations of semi-open intervals
Home-page: UNKNOWN
Author: Kipp Cannon
@@ -14,6 +14,9 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/debian/changelog
new/ligo-segments-1.3.0/debian/changelog
--- old/ligo-segments-1.2.0/debian/changelog 2018-11-24 11:00:09.000000000
+0100
+++ new/ligo-segments-1.3.0/debian/changelog 2021-01-26 10:48:52.000000000
+0100
@@ -1,3 +1,12 @@
+ligo-segments (1.3.0-1) stable; urgency=low
+
+ * unit tests now automatically switch between python and C
+ implementations (previously required manual hack)
+ * more updates for Python 3 (various versions)
+ * expand documentation (and, with it, test coverage)
+
+ -- Kipp Cannon <[email protected]> Wed, 06 Jan 2021 15:35:00 +0900
+
ligo-segments (1.2.0-1) stable; urgency=low
* add segmentlist.value_slice_to_index()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/ligo/segments/__init__.py
new/ligo-segments-1.3.0/ligo/segments/__init__.py
--- old/ligo-segments-1.2.0/ligo/segments/__init__.py 2018-11-24
11:00:55.000000000 +0100
+++ new/ligo-segments-1.3.0/ligo/segments/__init__.py 2021-01-26
10:48:52.000000000 +0100
@@ -41,14 +41,14 @@
ligo.segments.utils
"""
-
+import sys
from bisect import bisect_left
from bisect import bisect_right
from copy import copy as shallowcopy
__author__ = "Kipp Cannon <[email protected]>"
-__version__ = '1.2.0'
+__version__ = '1.3.0'
__all__ = [
@@ -156,11 +156,18 @@
def __ne__(self, other):
return self is not other
- def __nonzero__(self):
- """
- Returns True.
- """
- return True
+ if sys.version_info.major < 3:
+ def __nonzero__(self):
+ """
+ Returns True.
+ """
+ return True
+ else:
+ def __bool__(self):
+ """
+ Returns True.
+ """
+ return True
# arithmetic
@@ -315,12 +322,20 @@
# comparisons
- def __nonzero__(self):
- """
- Return True if the segment's boudaries are not equal, False
- if they are equal.
- """
- return self[0] != self[1]
+ if sys.version_info.major < 3:
+ def __nonzero__(self):
+ """
+ Return True if the segment's boudaries are not equal,
False
+ if they are equal.
+ """
+ return self[0] != self[1]
+ else:
+ def __bool__(self):
+ """
+ Return True if the segment's boudaries are not equal,
False
+ if they are equal.
+ """
+ return self[0] != self[1]
def disjoint(self, other):
"""
@@ -367,14 +382,16 @@
return self[0] >= other
#
- # From
<https://docs.python.org/3/reference/datamodel.html#object.__hash__>:
+ # From
+ # <https://docs.python.org/3/reference/datamodel.html#object.__hash__>:
#
- # "if [a class] defines __eq__() but not __hash__(), its instances will
not
- # be usable as items in hashable collections... If a class that
overrides
- # __eq__() needs to retain the implementation of __hash__() from a
parent
- # class, the interpreter must be told this explicitly by setting
__hash__ =
- # <ParentClass>.__hash__."
+ # "if [a class] defines __eq__() but not __hash__(), its instances
+ # will not be usable as items in hashable collections... If a class
+ # that overrides __eq__() needs to retain the implementation of
+ # __hash__() from a parent class, the interpreter must be told this
+ # explicitly by setting __hash__ = <ParentClass>.__hash__."
#
+
__hash__ = tuple.__hash__
# some arithmetic operations that (mostly) make sense for segments
@@ -594,6 +611,39 @@
in reducing operation counts when many repeated operations
are required within a limited range of values.
+ NOTE: the definition of the transformation is important,
+ and some care might be needed to use this tool properly.
+ The start and stop values of the slice are transformed
+ independently. The start value is mapped to the index of
+ the first segment whose upper bound is greater than start,
+ meaning the first segment spanning values greater than or
+ equal to the value of start. The stop value is mapped to 1
+ + the index of the last segment whose lower bound is less
+ than stop, meaning the last segment spanning values less
+ than the value of stop. This can lead to unexpected
+ behaviour if value slices whose upper and lower bounds are
+ identical are transformed to index slices. For example:
+
+ >>> x = segmentlist([segment(-10, -5), segment(5, 10),
segment(20, 30)])
+ >>> x.value_slice_to_index(slice(5, 5))
+ slice(1, 1, None)
+ >>> x.value_slice_to_index(slice(6, 6))
+ slice(1, 2, None)
+
+ Both value slices are zero-length, but one has yielded a
+ zero-length (null) index slice, while the other has not.
+ The two value slices start at 5 and 6 respectively. Both
+ starting values lie within segment 1, and in both cases the
+ start value has been mapped to index 1, as expected. The
+ first slice ends at 5, meaning it expresses the idea of a
+ range of values upto but not including 5, which corresponds
+ to segments upto *but not including* index 1, and so that
+ stop value has been mapped to an index slice upper bound of
+ 1. The second slice ends at 6, and the range of values
+ upto but not including 6 corresponds to segment indexes
+ upto but not including 2, which is what we see that bound
+ has been mapped to.
+
Examples:
>>> x = segmentlist([segment(-10, -5), segment(5, 10),
segment(20, 30)])
@@ -616,6 +666,8 @@
>>> x[x.value_slice_to_index(slice(10, 25))]
[segment(20, 30)]
>>> x[x.value_slice_to_index(slice(20, 20))]
+ []
+ >>> x[x.value_slice_to_index(slice(21, 21))]
[segment(20, 30)]
>>> x[x.value_slice_to_index(slice(-20, 8))]
[segment(-10, -5), segment(5, 10)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/ligo-segments.spec
new/ligo-segments-1.3.0/ligo-segments.spec
--- old/ligo-segments-1.2.0/ligo-segments.spec 2019-01-16 04:36:50.000000000
+0100
+++ new/ligo-segments-1.3.0/ligo-segments.spec 2021-01-26 10:49:09.000000000
+0100
@@ -1,7 +1,7 @@
%global srcname ligo-segments
Name: %{srcname}
-Version: 1.2.0
+Version: 1.3.0
Release: 1%{?dist}
Summary: Representations of semi-open intervals
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/ligo_segments.egg-info/PKG-INFO
new/ligo-segments-1.3.0/ligo_segments.egg-info/PKG-INFO
--- old/ligo-segments-1.2.0/ligo_segments.egg-info/PKG-INFO 2019-01-16
04:36:50.000000000 +0100
+++ new/ligo-segments-1.3.0/ligo_segments.egg-info/PKG-INFO 2021-01-26
10:49:09.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ligo-segments
-Version: 1.2.0
+Version: 1.3.0
Summary: Representations of semi-open intervals
Home-page: UNKNOWN
Author: Kipp Cannon
@@ -14,6 +14,9 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ligo-segments-1.2.0/ligo_segments.egg-info/SOURCES.txt
new/ligo-segments-1.3.0/ligo_segments.egg-info/SOURCES.txt
--- old/ligo-segments-1.2.0/ligo_segments.egg-info/SOURCES.txt 2019-01-16
04:36:50.000000000 +0100
+++ new/ligo-segments-1.3.0/ligo_segments.egg-info/SOURCES.txt 2021-01-26
10:49:09.000000000 +0100
@@ -25,8 +25,8 @@
src/segmentlist.c
src/segments.c
src/segments.h
+test/.coverage
test/Makefile
test/segments_utils_verify.py
test/segments_verify.py
-test/verifyutils.py
-test/verifyutils.pyc
\ No newline at end of file
+test/verifyutils.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/setup.py
new/ligo-segments-1.3.0/setup.py
--- old/ligo-segments-1.2.0/setup.py 2019-01-09 06:28:51.000000000 +0100
+++ new/ligo-segments-1.3.0/setup.py 2021-01-26 10:48:52.000000000 +0100
@@ -76,6 +76,9 @@
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
'Intended Audience :: Science/Research',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Developers',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/src/segment.c
new/ligo-segments-1.3.0/src/segment.c
--- old/ligo-segments-1.2.0/src/segment.c 2018-10-14 09:42:48.000000000
+0200
+++ new/ligo-segments-1.3.0/src/segment.c 2020-10-08 23:54:33.000000000
+0200
@@ -195,6 +195,7 @@
return result;
}
+
static PyObject *connects(PyObject *self, PyObject *other)
{
PyObject *sa = PyTuple_GET_ITEM(self, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/src/segmentlist.c
new/ligo-segments-1.3.0/src/segmentlist.c
--- old/ligo-segments-1.2.0/src/segmentlist.c 2018-11-24 10:56:11.000000000
+0100
+++ new/ligo-segments-1.3.0/src/segmentlist.c 2020-10-08 23:54:33.000000000
+0200
@@ -1485,7 +1485,13 @@
static struct PyMethodDef methods[] = {
{"extent", extent, METH_NOARGS, "Return the segment whose end-points
denote the maximum and minimum extent of the segmentlist. Does not require the
segmentlist to be coalesced."},
{"find", find, METH_O, "Return the smallest i such that i is the index
of an element that wholly contains item. Raises ValueError if no such element
exists. Does not require the segmentlist to be coalesced."},
- {"value_slice_to_index", value_slice_to_index, METH_O, "Convert the
slice s from a slice of values to a slice of indexes. self must be coalesced,
the operation is O(log n). This is used to extract from a segmentlist the
segments that span a given range of values, and is useful in reducing operation
counts when many repeated operations are required within a limited range of
values.\n\nExamples:\n\n" \
+ {"value_slice_to_index", value_slice_to_index, METH_O, "Convert the
slice s from a slice of values to a slice of indexes. self must be coalesced,
the operation is O(log n). This is used to extract from a segmentlist the
segments that span a given range of values, and is useful in reducing operation
counts when many repeated operations are required within a limited range of
values.\n\nNOTE: the definition of the transformation is important, and some
care might be needed to use this tool properly. The start and stop values of
the slice are transformed independently. The start value is mapped to the
index of the first segment whose upper bound is greater than start, meaning the
first segment spanning values greater than or equal to the value of start. The
stop value is mapped to 1 + the index of the last segment whose lower bound is
less than stop, meaning the last segment spanning values less than the value of
stop. This can lead to unexpected behaviour if value slices whose u
pper and lower bounds are identical are transformed to index slices. For
example:\n\n" \
+">>> x = segmentlist([segment(-10, -5), segment(5, 10), segment(20, 30)])\n" \
+">>> x.value_slice_to_index(slice(5, 5))\n" \
+"slice(1, 1, None)\n" \
+">>> x.value_slice_to_index(slice(6, 6))\n" \
+"slice(1, 2, None)\n" \
+"Both value slices are zero-length, but one has yielded a zero-length (null)
index slice, while the other has not. The two value slices start at 5 and 6
respectively. Both starting values lie within segment 1, and in both cases the
start value has been mapped to index 1, as expected. The first slice ends at
5, meaning it expresses the idea of a range of values upto but not including 5,
which corresponds to segments upto *but not including* index 1, and so that
stop value has been mapped to an index slice upper bound of 1. The second
slice ends at 6, and the range of values upto but not including 6 corresponds
to segment indexes upto but not including 2, which is what we see that bound
has been mapped to.\n\nExamples:\n\n" \
">>> x = segmentlist([segment(-10, -5), segment(5, 10), segment(20, 30)])\n" \
">>> x\n" \
"[segment(-10, -5), segment(5, 10), segment(20, 30)]\n" \
@@ -1508,6 +1514,8 @@
">>> x[x.value_slice_to_index(slice(10, 25))]\n" \
"[segment(20, 30)]\n" \
">>> x[x.value_slice_to_index(slice(20, 20))]\n" \
+"[]\n" \
+">>> x[x.value_slice_to_index(slice(21, 21))]\n" \
"[segment(20, 30)]\n" \
">>> x[x.value_slice_to_index(slice(-20, 8))]\n" \
"[segment(-10, -5), segment(5, 10)]\n" \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/src/segments.c
new/ligo-segments-1.3.0/src/segments.c
--- old/ligo-segments-1.2.0/src/segments.c 2019-01-09 08:49:10.000000000
+0100
+++ new/ligo-segments-1.3.0/src/segments.c 2021-01-26 10:48:52.000000000
+0100
@@ -116,7 +116,11 @@
Py_INCREF(&segments_Segment_Type);
PyModule_AddObject(module, "segment", (PyObject *)
&segments_Segment_Type);
/* uninherit tp_print from tuple class */
+#if PY_VERSION_HEX < 0x03090000
+ /* FIXME: tp_print was removed in Python 3.9.
+ * Remove this once Python 3.8 reaches end of life. */
segments_Segment_Type.tp_print = NULL;
+#endif
/*
* Create segmentlist class
Binary files old/ligo-segments-1.2.0/test/.coverage and
new/ligo-segments-1.3.0/test/.coverage differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ligo-segments-1.2.0/test/segments_verify.py
new/ligo-segments-1.3.0/test/segments_verify.py
--- old/ligo-segments-1.2.0/test/segments_verify.py 2018-10-14
09:42:48.000000000 +0200
+++ new/ligo-segments-1.3.0/test/segments_verify.py 2020-10-08
23:54:33.000000000 +0200
@@ -11,6 +11,32 @@
#
+# mock import statement to correctly load python implemention
+#
+
+
+try:
+ import builtins
+except ImportError:
+ import __builtin__ as builtins
+else:
+ from importlib import reload
+
+realimport = builtins.__import__
+
+
+def no_c_library(name, globals=None, locals=None, fromlist=(), level=0):
+ if name == '__segments': # refuse to load C segments library
+ raise ImportError
+ return realimport(
+ name,
+ globals=globals,
+ locals=locals,
+ fromlist=fromlist,
+ level=level)
+
+
+#
# How many times to repeat the algebraic tests
#
@@ -512,7 +538,12 @@
if __name__ == "__main__":
# first with the pure Python segments implementation
- from ligo import segments
+ builtins.__import__ = no_c_library # refuse to load C library
+ try:
+ from ligo import segments
+ finally:
+ # reinstate original import
+ builtins.__import__ = realimport
verifyutils.segments = segments
suite = unittest.TestSuite()
@@ -530,12 +561,12 @@
# then with C extension implementation
- from ligo.segments import __segments
- segments.infinity = __segments.infinity
- segments.NegInfinity = __segments.NegInfinity
- segments.PosInfinity = __segments.PosInfinity
- segments.segment = __segments.segment
- segments.segmentlist = __segments.segmentlist
+ reload(segments) # loads C library and executes copyreg.pickle
+ segments.infinity = segments.infinity
+ segments.NegInfinity = segments.NegInfinity
+ segments.PosInfinity = segments.PosInfinity
+ segments.segment = segments.segment
+ segments.segmentlist = segments.segmentlist
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(test_infinity))
Binary files old/ligo-segments-1.2.0/test/verifyutils.pyc and
new/ligo-segments-1.3.0/test/verifyutils.pyc differ
++++++ python-ligo-segments-disable-lal-tests.patch ++++++
Index: ligo-segments-1.2.0/test/Makefile
===================================================================
--- ligo-segments-1.2.0.orig/test/Makefile
+++ ligo-segments-1.2.0/test/Makefile
@@ -2,7 +2,7 @@ PYTHON ?= python
check : \
segments_verify \
- segments_utils_verify
+ # segments_utils_verify
@echo "All Tests Passed"
define printpassfail