Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-bitarray for openSUSE:Factory
checked in at 2023-06-26 18:15:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bitarray (Old)
and /work/SRC/openSUSE:Factory/.python-bitarray.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bitarray"
Mon Jun 26 18:15:40 2023 rev:19 rq:1095233 version:2.7.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bitarray/python-bitarray.changes
2023-06-12 15:26:51.051193781 +0200
+++
/work/SRC/openSUSE:Factory/.python-bitarray.new.15902/python-bitarray.changes
2023-06-26 18:15:43.398371587 +0200
@@ -1,0 +2,6 @@
+Sun Jun 25 19:01:34 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 2.7.6:
+ * remove caching hash value
+
+-------------------------------------------------------------------
Old:
----
bitarray-2.7.5.tar.gz
New:
----
bitarray-2.7.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bitarray.spec ++++++
--- /var/tmp/diff_new_pack.f8Y1UC/_old 2023-06-26 18:15:44.110374750 +0200
+++ /var/tmp/diff_new_pack.f8Y1UC/_new 2023-06-26 18:15:44.118374785 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-bitarray
-Version: 2.7.5
+Version: 2.7.6
Release: 0
Summary: Efficient Arrays of Booleans
License: Python-2.0
++++++ bitarray-2.7.5.tar.gz -> bitarray-2.7.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/CHANGE_LOG
new/bitarray-2.7.6/CHANGE_LOG
--- old/bitarray-2.7.5/CHANGE_LOG 2023-06-10 21:56:55.000000000 +0200
+++ new/bitarray-2.7.6/CHANGE_LOG 2023-06-24 23:18:21.000000000 +0200
@@ -1,3 +1,8 @@
+2023-06-24 2.7.6:
+-------------------
+ * remove caching hash value, fixes issue #201
+
+
2023-06-10 2.7.5:
-------------------
* fix for pypy3.9-v7.3.11, #198 (fixes #188)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/README.rst
new/bitarray-2.7.6/README.rst
--- old/bitarray-2.7.5/README.rst 2023-06-10 21:56:55.000000000 +0200
+++ new/bitarray-2.7.6/README.rst 2023-06-24 23:18:21.000000000 +0200
@@ -63,7 +63,7 @@
$ python -c 'import bitarray; bitarray.test()'
bitarray is installed in: /Users/ilan/bitarray/bitarray
- bitarray version: 2.7.5
+ bitarray version: 2.7.6
sys.version: 3.11.0 (main, Oct 25 2022) [Clang 14.0.4]
sys.prefix: /Users/ilan/Mini3/envs/py311
pointer size: 64 bit
@@ -407,7 +407,7 @@
Reference
=========
-bitarray version: 2.7.5 -- `change log
<https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst>`__
+bitarray version: 2.7.6 -- `change log
<https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst>`__
In the following, ``item`` and ``value`` are usually a single bit -
an integer 0 or 1.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/__init__.py
new/bitarray-2.7.6/bitarray/__init__.py
--- old/bitarray-2.7.5/bitarray/__init__.py 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/bitarray/__init__.py 2023-06-24 23:18:21.000000000
+0200
@@ -35,13 +35,9 @@
def __hash__(self):
"Return hash(self)."
- try:
- return self._hash
- except AttributeError:
- # ensure hash is independent of endianness
- a = self if self.endian() == 'big' else bitarray(self, 'big')
- self._hash = hash((len(a), a.tobytes()))
- return self._hash
+ # ensure hash is independent of endianness
+ a = self if self.endian() == 'big' else bitarray(self, 'big')
+ return hash((len(a), a.tobytes()))
# Technically the code below is not necessary, as all these methods will
# raise a TypeError on read-only memory. However, with a different error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/_bitarray.c
new/bitarray-2.7.6/bitarray/_bitarray.c
--- old/bitarray-2.7.5/bitarray/_bitarray.c 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/bitarray/_bitarray.c 2023-06-24 23:18:21.000000000
+0200
@@ -2237,32 +2237,32 @@
return 0;
}
-#define BITWISE_FUNC(name, inplace, ostr) \
-static PyObject * \
-bitarray_ ## name (PyObject *self, PyObject *other) \
-{ \
- PyObject *res; \
- \
- if (bitwise_check(self, other, ostr) < 0) \
- return NULL; \
- if (inplace) { \
- RAISE_IF_READONLY(self, NULL); \
- res = self; \
- Py_INCREF(res); \
- } \
- else { \
- res = bitarray_copy((bitarrayobject *) self); \
- if (res == NULL) \
- return NULL; \
- } \
- bitwise((bitarrayobject *) res, \
- (bitarrayobject *) other, *ostr); \
- return res; \
+#define BITWISE_FUNC(name, inplace, ostr) \
+static PyObject * \
+bitarray_ ## name (PyObject *self, PyObject *other) \
+{ \
+ PyObject *res; \
+ \
+ if (bitwise_check(self, other, ostr) < 0) \
+ return NULL; \
+ if (inplace) { \
+ RAISE_IF_READONLY(self, NULL); \
+ res = self; \
+ Py_INCREF(res); \
+ } \
+ else { \
+ res = bitarray_copy((bitarrayobject *) self); \
+ if (res == NULL) \
+ return NULL; \
+ } \
+ bitwise((bitarrayobject *) res, \
+ (bitarrayobject *) other, *ostr); \
+ return res; \
}
-BITWISE_FUNC(and, 0, "&") /* bitarray_and */
-BITWISE_FUNC(or, 0, "|") /* bitarray_or */
-BITWISE_FUNC(xor, 0, "^") /* bitarray_xor */
+BITWISE_FUNC(and, 0, "&") /* bitarray_and */
+BITWISE_FUNC(or, 0, "|") /* bitarray_or */
+BITWISE_FUNC(xor, 0, "^") /* bitarray_xor */
BITWISE_FUNC(iand, 1, "&=") /* bitarray_iand */
BITWISE_FUNC(ior, 1, "|=") /* bitarray_ior */
BITWISE_FUNC(ixor, 1, "^=") /* bitarray_ixor */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/_util.c
new/bitarray-2.7.6/bitarray/_util.c
--- old/bitarray-2.7.5/bitarray/_util.c 2023-06-10 21:56:55.000000000 +0200
+++ new/bitarray-2.7.6/bitarray/_util.c 2023-06-24 23:18:21.000000000 +0200
@@ -57,6 +57,18 @@
return res;
}
+/* Starting from word index `i`, count the remaining population in bitarray
+ buffer. Equivalent to: a[64 * i:].count() */
+static Py_ssize_t
+count_from_word(bitarrayobject *a, Py_ssize_t i)
+{
+ assert(i >= 0);
+ if (64 * i >= a->nbits)
+ return 0;
+
+ return popcnt_words(WBUFF(a) + i, a->nbits / 64 - i) + popcnt_64(zlw(a));
+}
+
/* -------------------------------- zeros ------------------------------ */
static PyObject *
@@ -89,9 +101,9 @@
/* ------------------------------- count_n ----------------------------- */
/* Return the smallest index i for which a.count(vi, 0, i) == n.
- When n exceeds the total count, the result is a always negative
- number (the negative of the total count + 1, which is useful
- for displaying the error message). */
+ When n exceeds the total count, the result is a negative
+ number; the negative of the total count + 1, which is useful
+ for displaying the error message. */
static Py_ssize_t
count_n_core(bitarrayobject *a, Py_ssize_t n, int vi)
{
@@ -102,8 +114,6 @@
Py_ssize_t m; /* popcount in each block */
assert(0 <= n && n <= nbits);
- if (n == 0)
- return 0;
/* by counting big blocks we save comparisons and updates */
#define BLOCK_BITS 4096 /* block size: 4096 bits = 64 words */
@@ -129,12 +139,14 @@
}
while (i < nbits && t < n) {
- t += getbit(a, i++) == vi;
+ t += getbit(a, i) == vi;
+ i++;
}
- if (t < n) /* n exceeds total count */
+ if (t < n) { /* n exceeds total count */
+ assert((vi ? t : nbits - t) == count_from_word(a, 0));
return -(t + 1);
-
+ }
return i;
}
@@ -1028,22 +1040,6 @@
return n;
}
-/* Starting from word index `i`, count the remaining population in bitarray
- buffer. Equivalent to: a[64 * i:].count() */
-static Py_ssize_t
-count_from_word(bitarrayobject *a, Py_ssize_t i)
-{
- const Py_ssize_t nbits = a->nbits;
- Py_ssize_t cnt = 0;
-
- if (64 * i >= nbits)
- return 0;
- cnt += popcnt_words(WBUFF(a) + i, nbits / 64 - i);
- if (nbits % 64)
- cnt += popcnt_64(zlw(a));
- return cnt;
-}
-
/* ---------------------- sparse compressed bitarray -------------------
*
* see also: doc/sparse_compression.rst
@@ -1063,7 +1059,7 @@
is constructed around this. */
#define SEGSIZE 32
-/* number of 256 bit segments given nbits */
+/* number of segments for given number of bits */
#define NSEG(nbits) (((nbits) + 8 * SEGSIZE - 1) / (8 * SEGSIZE))
/* Calculate an array with the running totals (rts) for 256 bit segments.
@@ -1109,9 +1105,9 @@
static Py_ssize_t *
sc_calc_rts(bitarrayobject *a)
{
- const Py_ssize_t nbits = a->nbits;
- const Py_ssize_t n_seg = NSEG(nbits); /* number of segments */
- const Py_ssize_t c_seg = nbits / (8 * SEGSIZE); /* complete segments */
+ /* total number of segments - number of complete segments */
+ const Py_ssize_t n_seg = NSEG(a->nbits);
+ const Py_ssize_t c_seg = a->nbits / (8 * SEGSIZE);
char zeros[SEGSIZE]; /* segment with only zeros */
Py_ssize_t cnt = 0; /* current count */
char *buff; /* buffer in current segment */
@@ -1134,7 +1130,7 @@
res[c_seg] = cnt;
if (n_seg > c_seg) { /* we have a final partial segment */
- cnt += count_from_word(a, (SEGSIZE / 8) * c_seg);
+ cnt += count_from_word(a, c_seg * SEGSIZE / 8);
res[n_seg] = cnt;
}
return res;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/bitarray.h
new/bitarray-2.7.6/bitarray/bitarray.h
--- old/bitarray-2.7.5/bitarray/bitarray.h 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/bitarray/bitarray.h 2023-06-24 23:18:21.000000000
+0200
@@ -4,7 +4,7 @@
Author: Ilan Schnell
*/
-#define BITARRAY_VERSION "2.7.5"
+#define BITARRAY_VERSION "2.7.6"
#ifdef STDC_HEADERS
#include <stddef.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/test_bitarray.py
new/bitarray-2.7.6/bitarray/test_bitarray.py
--- old/bitarray-2.7.5/bitarray/test_bitarray.py 2023-06-10
21:56:55.000000000 +0200
+++ new/bitarray-2.7.6/bitarray/test_bitarray.py 2023-06-24
23:18:21.000000000 +0200
@@ -103,7 +103,7 @@
return randint(-length - 5, length + 5)
@staticmethod
- def other_endian(endian):
+ def opposite_endian(endian):
t = {'little': 'big',
'big': 'little'}
return t[endian]
@@ -542,13 +542,13 @@
self.assertFalse(a is b)
self.assertEQUAL(a, b)
- endian2 = self.other_endian(endian)
+ endian2 = self.opposite_endian(endian)
b = bitarray(a, endian2)
self.assertEqual(b.endian(), endian2)
self.assertEqual(a, b)
for a in self.randombitarrays():
- endian2 = self.other_endian(a.endian())
+ endian2 = self.opposite_endian(a.endian())
b = bitarray(a, endian2)
self.assertEqual(a, b)
self.assertEqual(b.endian(), endian2)
@@ -2816,7 +2816,7 @@
a = urandom(8 * n, self.random_endian())
b = a.copy()
a.bytereverse()
- a = bitarray(a, self.other_endian(a.endian()))
+ a = bitarray(a, self.opposite_endian(a.endian()))
self.assertEqual(a.tobytes(), b.tobytes())
tests.append(MethodTests)
@@ -4652,7 +4652,7 @@
n = 0
for a in self.randombitarrays():
a = frozenbitarray(a)
- b = frozenbitarray(a, self.other_endian(a.endian()))
+ b = frozenbitarray(a, self.opposite_endian(a.endian()))
self.assertEqual(a, b)
self.assertNotEqual(a.endian(), b.endian())
self.assertEqual(hash(a), hash(b))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/bitarray/test_util.py
new/bitarray-2.7.6/bitarray/test_util.py
--- old/bitarray-2.7.5/bitarray/test_util.py 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/bitarray/test_util.py 2023-06-24 23:18:21.000000000
+0200
@@ -552,9 +552,10 @@
tc = a.count(v) # total count
i = count_n(a, tc, v)
self.check_result(a, tc, i, v)
+ n = tc + 1
self.assertRaisesMessage(ValueError, "n = %d exceeds total count "
- "(a.count(%d) = %d)" % (tc + 1, v, tc),
- count_n, a, tc + 1, v)
+ "(a.count(%d) = %d)" % (n, v, tc),
+ count_n, a, n, v)
for _ in range(20):
n = randint(0, tc)
i = count_n(a, n, v)
@@ -566,6 +567,8 @@
n = a.count(v) // 2
i = count_n(a, n, v)
self.check_result(a, n, i, v)
+ # n = 0 -> count_n always 0
+ self.assertEqual(count_n(a, 0, v), 0)
tests.append(TestsCount_N)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/doc/changelog.rst
new/bitarray-2.7.6/doc/changelog.rst
--- old/bitarray-2.7.5/doc/changelog.rst 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/doc/changelog.rst 2023-06-24 23:18:21.000000000
+0200
@@ -1,6 +1,11 @@
Change log
==========
+**2.7.6** (2023-06-24):
+
+* remove caching hash value, fixes issue `#201
<https://github.com/ilanschnell/bitarray/issues/201>`__
+
+
**2.7.5** (2023-06-10):
* fix for pypy3.9-v7.3.11, `#198
<https://github.com/ilanschnell/bitarray/issues/198>`__ (fixes `#188
<https://github.com/ilanschnell/bitarray/issues/188>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/bitarray-2.7.5/doc/reference.rst
new/bitarray-2.7.6/doc/reference.rst
--- old/bitarray-2.7.5/doc/reference.rst 2023-06-10 21:56:55.000000000
+0200
+++ new/bitarray-2.7.6/doc/reference.rst 2023-06-24 23:18:21.000000000
+0200
@@ -1,7 +1,7 @@
Reference
=========
-bitarray version: 2.7.5 -- `change log
<https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst>`__
+bitarray version: 2.7.6 -- `change log
<https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst>`__
In the following, ``item`` and ``value`` are usually a single bit -
an integer 0 or 1.