Hello community,
here is the log from the commit of package python-bitarray for openSUSE:Factory checked in at 2020-09-30 19:54:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bitarray (Old)
and /work/SRC/openSUSE:Factory/.python-bitarray.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bitarray"
Wed Sep 30 19:54:21 2020 rev:5 rq:838633 version:1.5.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bitarray/python-bitarray.changes 2020-08-31 16:51:12.696382388 +0200
+++ /work/SRC/openSUSE:Factory/.python-bitarray.new.4249/python-bitarray.changes 2020-09-30 19:54:40.516799937 +0200
@@ -1,0 +2,7 @@
+Wed Sep 30 04:35:36 UTC 2020 - Steve Kowalik
+
+- Update to 1.5.3:
+ * add optional index parameter to `.index()` to invert single bit
+ * fix `sys.getsizeof(bitarray)` by adding `.__sizeof__()`, see issue #100
+
+-------------------------------------------------------------------
Old:
----
bitarray-1.5.2.tar.gz
New:
----
bitarray-1.5.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bitarray.spec ++++++
--- /var/tmp/diff_new_pack.byfWWI/_old 2020-09-30 19:54:41.096800456 +0200
+++ /var/tmp/diff_new_pack.byfWWI/_new 2020-09-30 19:54:41.100800459 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-bitarray
-Version: 1.5.2
+Version: 1.5.3
Release: 0
Summary: Efficient Arrays of Booleans
License: Python-2.0
++++++ bitarray-1.5.2.tar.gz -> bitarray-1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/CHANGE_LOG new/bitarray-1.5.3/CHANGE_LOG
--- old/bitarray-1.5.2/CHANGE_LOG 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/CHANGE_LOG 2020-08-24 21:14:16.000000000 +0200
@@ -1,3 +1,9 @@
+2020-08-24 1.5.3:
+-------------------
+ * add optional index parameter to `.index()` to invert single bit
+ * fix `sys.getsizeof(bitarray)` by adding `.__sizeof__()`, see issue #100
+
+
2020-08-16 1.5.2:
-------------------
* add PyType_Ready usage, issue #66
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/README.md new/bitarray-1.5.3/README.md
--- old/bitarray-1.5.2/README.md 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/README.md 2020-08-24 21:14:16.000000000 +0200
@@ -35,23 +35,33 @@
Bitarray can be installed from source:
- $ tar xzf bitarray-1.5.2.tar.gz
- $ cd bitarray-1.5.2
+ $ tar xzf bitarray-1.5.3.tar.gz
+ $ cd bitarray-1.5.3
$ python setup.py install
On Unix systems, the latter command may have to be executed with root
-privileges. You can also pip install bitarray.
+privileges. You can also pip install bitarray. Please note that you need
+a working C compiler to run the `python setup.py install` command.
+If you rather want to use precompiled binaries, you can:
+
+* `pip install bitarray-hardbyte` (this PyPI package contains Python
+ wheels for Linux, MaxOSX and Windows and all common Python versions)
+* `conda install bitarray` (both the default Anaconda repository as well
+ as conda-forge support bitarray)
+* download Windows wheels from
+ [Chris Gohlke](https://www.lfd.uci.edu/~gohlke/pythonlibs/#bitarray)
+
Once you have installed the package, you may want to test it:
$ python -c 'import bitarray; bitarray.test()'
bitarray is installed in: /usr/local/lib/python2.7/site-packages/bitarray
- bitarray version: 1.5.2
+ bitarray version: 1.5.3
3.7.4 (r271:86832, Dec 29 2018) [GCC 4.2.1 (SUSE Linux)]
.........................................................................
.........................................................................
..............................
----------------------------------------------------------------------
- Ran 230 tests in 0.889s
+ Ran 250 tests in 0.921s
OK
@@ -420,10 +430,10 @@
Insert `bool(value)` into the bitarray before index.
-`invert()`
+`invert(index=<all bits>)`
-Invert all bits in the array (in-place),
-i.e. convert each 1-bit into a 0-bit and vice versa.
+Invert all bits in the array (in-place).
+When the optional `index` is given, only invert the single bit at index.
`iterdecode(code, /)` -> iterator
@@ -674,6 +684,12 @@
Change log
----------
+*1.5.3* (2020-08-24):
+
+ * add optional index parameter to `.index()` to invert single bit
+ * fix `sys.getsizeof(bitarray)` by adding `.__sizeof__()`, see issue #100
+
+
*1.5.2* (2020-08-16):
* add PyType_Ready usage, issue #66
@@ -705,44 +721,4 @@
in 2013). We do NOT plan to stop support for Python 2.7 anytime soon.
-*1.4.2* (2020-07-15):
-
- * add more tests
- * C-level:
- - simplify pack/unpack code
- - fix memory leak in `~` operation (bitarray_cpinvert)
-
-
-*1.4.1* (2020-07-14):
-
- * add official Python 3.9 support
- * improve many docstrings
- * add DeprecationWarning for `bitdiff()`
- * add DeprecationWarning when trying to extend bitarrays
- from bytes on Python 3 (`bitarrays(b'011')` and `.extend(b'110')`)
- * C-level:
- - Rewrote `.fromfile()` and `.tofile()` implementation,
- such that now the same code is used for Python 2 and 3.
- The new implementation is more memoery efficient on
- Python 3.
- - use memcmp() in richcompare to shortcut EQ/NE, when
- comparing two very large bitarrays for equality the
- speedup can easily be 100x
- - simplify how unpacking is handled
- * add more tests
-
-
-*1.4.0* (2020-07-11):
-
- * add `.clear()` method (Python 3.3 added this method to lists)
- * avoid overallocation when bitarray objects are initially created
- * raise BufferError when resizing bitarrays which is exporting buffers
- * add example to study the resize() function
- * improve some error messages
- * add more tests
- * raise `NotImplementedError` with (useful message) when trying to call
- the `.fromstring()` or `.tostring()` methods, which have been removed
- in the last release
-
-
Please find the complete change log [here](https://github.com/ilanschnell/bitarray/blob/master/CHANGE_LOG).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/bitarray/_bitarray.c new/bitarray-1.5.3/bitarray/_bitarray.c
--- old/bitarray-1.5.2/bitarray/_bitarray.c 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/bitarray/_bitarray.c 2020-08-24 21:14:16.000000000 +0200
@@ -7,7 +7,7 @@
Author: Ilan Schnell
*/
-#define BITARRAY_VERSION "1.5.2"
+#define BITARRAY_VERSION "1.5.3"
#define PY_SSIZE_T_CLEAN
#include "Python.h"
@@ -727,7 +727,7 @@
PyLong_Check(x))
#endif
-/* given an PyLong (which must be 0 or 1), or a PyBool, return 0 or 1,
+/* given a PyLong (which must be 0 or 1) or a PyBool, return 0 or 1,
or -1 on error */
static int
IntBool_AsInt(PyObject *v)
@@ -784,7 +784,7 @@
"use len(self) instead", 1) < 0)
return NULL;
- return PyLong_FromLongLong(self->nbits);
+ return PyLong_FromSsize_t(self->nbits);
}
PyDoc_STRVAR(length_doc,
@@ -831,7 +831,7 @@
normalize_index(self->nbits, &start);
normalize_index(self->nbits, &stop);
- return PyLong_FromLongLong(count(self, vi, start, stop));
+ return PyLong_FromSsize_t(count(self, vi, start, stop));
}
PyDoc_STRVAR(count_doc,
@@ -862,7 +862,7 @@
PyErr_Format(PyExc_ValueError, "%d is not in bitarray", vi);
return NULL;
}
- return PyLong_FromLongLong(i);
+ return PyLong_FromSsize_t(i);
}
PyDoc_STRVAR(index_doc,
@@ -920,7 +920,7 @@
p = search(self, xa, p);
if (p < 0)
break;
- item = PyLong_FromLongLong(p);
+ item = PyLong_FromSsize_t(p);
p++;
if (item == NULL || PyList_Append(list, item) < 0) {
Py_XDECREF(item);
@@ -1109,17 +1109,34 @@
static PyObject *
-bitarray_invert(bitarrayobject *self)
+bitarray_invert(bitarrayobject *self, PyObject *args)
{
- invert(self);
+ Py_ssize_t i = PY_SSIZE_T_MAX;
+
+ if (!PyArg_ParseTuple(args, "|n:invert", &i))
+ return NULL;
+
+ if (i == PY_SSIZE_T_MAX) { /* default - invert all bits */
+ invert(self);
+ Py_RETURN_NONE;
+ }
+
+ if (i < 0)
+ i += self->nbits;
+
+ if (i < 0 || i >= self->nbits) {
+ PyErr_SetString(PyExc_IndexError, "index out of range");
+ return NULL;
+ }
+ setbit(self, i, 1 - GETBIT(self, i));
Py_RETURN_NONE;
}
PyDoc_STRVAR(invert_doc,
-"invert()\n\
+"invert(index=<all bits>)\n\
\n\
-Invert all bits in the array (in-place),\n\
-i.e. convert each 1-bit into a 0-bit and vice versa.");
+Invert all bits in the array (in-place).\n\
+When the optional `index` is given, only invert the single bit at index.");
static PyObject *
@@ -1578,6 +1595,19 @@
Remove all items from the bitarray.");
+static PyObject *
+bitarray_sizeof(bitarrayobject *self)
+{
+ Py_ssize_t res;
+
+ res = sizeof(bitarrayobject) + self->allocated;
+ return PyLong_FromSsize_t(res);
+}
+
+PyDoc_STRVAR(sizeof_doc,
+"Return the size of the bitarray in memory, in bytes.");
+
+
/* ----------------------- bitarray_as_sequence ------------------------ */
static Py_ssize_t
@@ -2447,7 +2477,7 @@
if (p < 0) /* no more positions -- stop iteration */
return NULL;
it->p = p + 1; /* next search position */
- return PyLong_FromLongLong(p);
+ return PyLong_FromSsize_t(p);
}
static void
@@ -2542,7 +2572,7 @@
index_doc},
{"insert", (PyCFunction) bitarray_insert, METH_VARARGS,
insert_doc},
- {"invert", (PyCFunction) bitarray_invert, METH_NOARGS,
+ {"invert", (PyCFunction) bitarray_invert, METH_VARARGS,
invert_doc},
{"length", (PyCFunction) bitarray_length, METH_NOARGS,
length_doc},
@@ -2582,6 +2612,8 @@
copy_doc},
{"__reduce__", (PyCFunction) bitarray_reduce, METH_NOARGS,
reduce_doc},
+ {"__sizeof__", (PyCFunction) bitarray_sizeof, METH_NOARGS,
+ sizeof_doc},
{NULL, NULL} /* sentinel */
};
@@ -3084,7 +3116,7 @@
}
#undef aa
#undef bb
- return PyLong_FromLongLong(res);
+ return PyLong_FromSsize_t(res);
}
PyDoc_STRVAR(bitdiff_doc,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/bitarray/_util.c new/bitarray-1.5.3/bitarray/_util.c
--- old/bitarray-1.5.2/bitarray/_util.c 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/bitarray/_util.c 2020-08-24 21:14:16.000000000 +0200
@@ -232,7 +232,7 @@
PyErr_SetString(PyExc_ValueError, "n exceeds total count");
return NULL;
}
- return PyLong_FromLongLong(i);
+ return PyLong_FromSsize_t(i);
}
PyDoc_STRVAR(count_n_doc,
@@ -264,7 +264,7 @@
PyErr_Format(PyExc_ValueError, "%d not in bitarray", vi);
return NULL;
}
- return PyLong_FromLongLong(i);
+ return PyLong_FromSsize_t(i);
}
PyDoc_STRVAR(rindex_doc,
@@ -335,7 +335,7 @@
}
#undef aa
#undef bb
- return PyLong_FromLongLong(res);
+ return PyLong_FromSsize_t(res);
}
#define COUNT_FUNC(oper, ochar) \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/bitarray/test_bitarray.py new/bitarray-1.5.3/bitarray/test_bitarray.py
--- old/bitarray-1.5.2/bitarray/test_bitarray.py 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/bitarray/test_bitarray.py 2020-08-24 21:14:16.000000000 +0200
@@ -869,7 +869,6 @@
self.assertEqual(any(a), a.any())
self.assertEqual(any(a.tolist()), a.any())
-
def test_repr(self):
r = repr(bitarray())
self.assertEqual(r, "bitarray()")
@@ -885,7 +884,6 @@
self.assertEqual(a, b)
self.check_obj(b)
-
def test_copy(self):
for a in self.randombitarrays():
b = a.copy()
@@ -900,7 +898,6 @@
self.assertFalse(b is a)
self.assertEQUAL(a, b)
-
def assertReallyEqual(self, a, b):
# assertEqual first, because it will have a good message if the
# assertion fails.
@@ -942,9 +939,19 @@
b = a.copy()
self.assertReallyEqual(a, b)
n = len(a)
- b[n - 1] = not b[n - 1] # flip the last bit
+ b.invert(n - 1) # flip last bit
self.assertReallyNotEqual(a, b)
+ def test_sizeof(self):
+ a = bitarray()
+ size = sys.getsizeof(a)
+ self.assertEqual(size, a.__sizeof__())
+ self.assertIsInstance(size, int if is_py3k else (int, long))
+ self.assertTrue(size < 200)
+ a = bitarray(8000)
+ self.assertTrue(sys.getsizeof(a) > 1000)
+
+
tests.append(SpecialMethodTests)
# ---------------------------------------------------------------------------
@@ -1170,14 +1177,6 @@
self.assertEQUAL(a, bitarray('010100101'))
def test_invert(self):
- a = bitarray()
- a.invert()
- self.assertEQUAL(a, bitarray())
-
- a = bitarray('11011')
- a.invert()
- self.assertEQUAL(a, bitarray('00100'))
-
a = bitarray('11011')
b = ~a
self.assertEQUAL(b, bitarray('00100'))
@@ -1338,7 +1337,7 @@
class MethodTests(unittest.TestCase, Util):
- def test_append(self):
+ def test_append_simple(self):
a = bitarray()
a.append(True)
a.append(False)
@@ -1352,6 +1351,7 @@
a.append('a')
self.assertEQUAL(a, bitarray('100011001'))
+ def test_append_random(self):
for a in self.randombitarrays():
aa = a.tolist()
b = a
@@ -1362,7 +1362,6 @@
b.append('')
self.assertEQUAL(b, bitarray(aa + [1, 0], endian=a.endian()))
-
def test_insert(self):
a = bitarray()
b = a
@@ -1382,7 +1381,6 @@
self.assertEqual(a.tolist(), aa)
self.check_obj(a)
-
def test_index1(self):
a = bitarray()
for i in (True, False, 1, 0):
@@ -1547,7 +1545,6 @@
self.assertEqual(a.count(1, i, j), s[i:j].count('1'))
self.assertEqual(a.count(0, i, j), s[i:j].count('0'))
-
def test_search(self):
a = bitarray('')
self.assertEqual(a.search(bitarray('0')), [])
@@ -1645,8 +1642,36 @@
self.assertEqual(b[len(a):],
(len(b) - len(a)) * bitarray('0'))
+ def test_invert_simple(self):
+ a = bitarray()
+ a.invert()
+ self.assertEQUAL(a, bitarray())
+
+ a = bitarray('11011')
+ a.invert()
+ self.assertEQUAL(a, bitarray('00100'))
+ a.invert(2)
+ self.assertEQUAL(a, bitarray('00000'))
+ a.invert(-1)
+ self.assertEQUAL(a, bitarray('00001'))
+
+ def test_invert_errors(self):
+ a = bitarray(5)
+ self.assertRaises(IndexError, a.invert, 5)
+ self.assertRaises(IndexError, a.invert, -6)
+ self.assertRaises(TypeError, a.invert, "A")
+ self.assertRaises(TypeError, a.invert, 0, 1)
+
+ def test_invert_random(self):
+ for a in self.randombitarrays(start=1):
+ b = a.copy()
+ c = a.copy()
+ i = randint(0, len(a) - 1)
+ b.invert(i)
+ c[i] = not c[i]
+ self.assertEQUAL(b, c)
- def test_sort(self):
+ def test_sort_simple(self):
a = bitarray('1101000')
a.sort()
self.assertEqual(a, bitarray('0000111'))
@@ -1663,26 +1688,14 @@
self.assertRaises(TypeError, a.sort, 'A')
- N = 100000
- a = bitarray(randint(N, N + 100))
- for dum in range(100):
- a[randint(0, N - 1)] = randint(0, 1)
- b = a.tolist()
- a.sort()
- self.assertEqual(a, bitarray(sorted(b)))
-
- for a in self.randombitarrays():
- b = a.tolist()
- ida = id(a)
- rev = randint(0, 1)
- a.sort(rev)
- self.assertEqual(a, bitarray(sorted(b, reverse=rev)))
- self.assertEqual(id(a), ida)
-
-
- def test_reverse(self):
- self.assertRaises(TypeError, bitarray().reverse, 42)
+ def test_sort_random(self):
+ for rev in 0, 1:
+ for a in self.randombitarrays():
+ b = a.tolist()
+ a.sort(rev)
+ self.assertEqual(a, bitarray(sorted(b, reverse=rev)))
+ def test_reverse_simple(self):
for x, y in [('', ''), ('1', '1'), ('10', '01'), ('001', '100'),
('1110', '0111'), ('11100', '00111'),
('011000', '000110'), ('1101100', '0011011'),
@@ -1694,15 +1707,14 @@
a.reverse()
self.assertEQUAL(a, bitarray(y))
+ self.assertRaises(TypeError, bitarray().reverse, 42)
+
+ def test_reverse_random(self):
for a in self.randombitarrays():
- aa = a.tolist()
- b = bitarray(a)
- ida = id(a)
+ b = a.copy()
a.reverse()
- self.assertEqual(ida, id(a))
- self.assertEQUAL(a, bitarray(aa[::-1], endian=a.endian()))
- self.assertEqual(a, b[::-1])
-
+ self.assertEQUAL(a, bitarray(b.tolist()[::-1], endian=a.endian()))
+ self.assertEQUAL(a, b[::-1])
def test_tolist(self):
a = bitarray()
@@ -1715,18 +1727,7 @@
a = bitarray(lst)
self.assertEqual(a.tolist(), lst)
-
def test_remove(self):
- a = bitarray()
- for i in (True, False, 1, 0):
- self.assertRaises(ValueError, a.remove, i)
-
- a = bitarray(21)
- a.setall(0)
- self.assertRaises(ValueError, a.remove, 1)
- a.setall(1)
- self.assertRaises(ValueError, a.remove, 0)
-
a = bitarray('1010110')
for val, res in [(False, '110110'), (True, '10110'),
(1, '0110'), (1, '010'), (0, '10'),
@@ -1740,8 +1741,18 @@
self.assertTrue(b is a)
self.assertEQUAL(b, bitarray('000011'))
+ def test_remove_errors(self):
+ a = bitarray()
+ for i in (True, False, 1, 0):
+ self.assertRaises(ValueError, a.remove, i)
- def test_pop(self):
+ a = bitarray(21)
+ a.setall(0)
+ self.assertRaises(ValueError, a.remove, 1)
+ a.setall(1)
+ self.assertRaises(ValueError, a.remove, 0)
+
+ def test_pop_simple(self):
for x, n, r, y in [('1', 0, True, ''),
('0', -1, False, ''),
('0011100', 3, True, '001100')]:
@@ -1754,6 +1765,7 @@
self.assertEqual(a.pop(), False)
self.assertRaises(IndexError, a.pop)
+ def test_pop_random(self):
for a in self.randombitarrays():
self.assertRaises(IndexError, a.pop, len(a))
self.assertRaises(IndexError, a.pop, -len(a) - 1)
@@ -1773,7 +1785,6 @@
self.assertEqual(a, bitarray(aa))
self.check_obj(a)
-
def test_clear(self):
for a in self.randombitarrays():
ida = id(a)
@@ -1806,8 +1817,7 @@
self.assertTrue(a is b)
self.check_obj(b)
-
- def test_bytereverse(self):
+ def test_bytereverse_explicit(self):
for x, y in [('', ''),
('1', '0'),
('1011', '0000'),
@@ -1820,14 +1830,13 @@
a.bytereverse()
self.assertEqual(a, bitarray(y))
+ def test_bytereverse_byte(self):
for i in range(256):
a = bitarray()
a.frombytes(bytes(bytearray([i])))
- aa = a.tolist()
- b = a
+ b = a.copy()
b.bytereverse()
- self.assertEqual(b, bitarray(aa[::-1]))
- self.assertTrue(a is b)
+ self.assertEqual(b, a[::-1])
self.check_obj(b)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/bitarray/test_util.py new/bitarray-1.5.3/bitarray/test_util.py
--- old/bitarray-1.5.2/bitarray/test_util.py 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/bitarray/test_util.py 2020-08-24 21:14:16.000000000 +0200
@@ -219,6 +219,16 @@
class TestsCount_N(unittest.TestCase, Util):
+ @staticmethod
+ def count_n(a, n):
+ "return the index i for which a[:i].count() == n"
+ i, j = n, a.count(1, 0, n)
+ while j < n:
+ if a[i]:
+ j += 1
+ i += 1
+ return i
+
def check_result(self, a, n, i):
self.assertEqual(a.count(1, 0, i), n)
if i:
@@ -244,6 +254,7 @@
i = count_n(a, n)
self.check_result(a, n, i)
self.assertEqual(a[:i].count(), n)
+ self.assertEqual(i, self.count_n(a, n))
self.assertEQUAL(a, b)
def test_frozen(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/examples/README new/bitarray-1.5.3/examples/README
--- old/bitarray-1.5.2/examples/README 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/examples/README 2020-08-24 21:14:16.000000000 +0200
@@ -13,11 +13,6 @@
current implementation.
-helpers.py:
- some useful helper function which people have requested, but which are
- not common enough to add to the library itself.
-
-
huffman/
Directory containing a library and examples for working with Huffman
trees and codes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/examples/helpers.py new/bitarray-1.5.3/examples/helpers.py
--- old/bitarray-1.5.2/examples/helpers.py 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/examples/helpers.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-from bitarray import bitarray
-
-
-# an optimized C version of this function can be found in bitarray.util
-def count_n(a, n):
- "return the index i for which a[:i].count() == n"
- i, j = n, a.count(1, 0, n)
- while j < n:
- if a[i]:
- j += 1
- i += 1
- return i
-
-if __name__ == '__main__':
- # count_n
- a = bitarray('11111011111011111011111001111011111011111011111010111010111')
- for n in range(0, 48):
- i = count_n(a, n)
- assert a[:i].count() == n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bitarray-1.5.2/update_readme.py new/bitarray-1.5.3/update_readme.py
--- old/bitarray-1.5.2/update_readme.py 2020-08-16 23:16:22.000000000 +0200
+++ new/bitarray-1.5.3/update_readme.py 2020-08-24 21:14:16.000000000 +0200
@@ -21,7 +21,7 @@
for line in open('CHANGE_LOG'):
m = ver_pat.match(line)
if m:
- if count == 6:
+ if count == 4:
break
count += 1
fo.write(m.expand(r'*\2* (\1):\n'))