bool-hybrid-array 9.10.13__tar.gz → 9.10.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/PKG-INFO +2 -1
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/README.md +1 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array/__init__.py +2 -1
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array/int_array/__init__.py +14 -13
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/PKG-INFO +2 -1
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/setup.py +1 -1
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/LICENSE +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array/__main__.py +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array/core.py +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array//347/247/230/345/257/206.md" +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/SOURCES.txt +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/dependency_links.txt +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/requires.txt +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/top_level.txt +0 -0
- {bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bool-hybrid-array
|
|
3
|
-
Version: 9.10.
|
|
3
|
+
Version: 9.10.14
|
|
4
4
|
Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
|
|
5
5
|
Home-page: https://github.com/BKsell/bool-hybrid-array
|
|
6
6
|
Author: 蔡靖杰
|
|
@@ -558,6 +558,7 @@ except OverflowError as e:
|
|
|
558
558
|
* **9.10.11**:修复NameError: name 'int_array' is not defined. Did you mean: 'bytearray'?的错误
|
|
559
559
|
* **9.10.12**:把find方法的返回值改为IntHybridArray
|
|
560
560
|
* **9.10.13**:给IntHybridArray新增多种列表操作
|
|
561
|
+
* **9.10.14**:修复IntHybridArray中因单个 0 导致所有数字位长被压缩到 1的问题
|
|
561
562
|
|
|
562
563
|
|
|
563
564
|
|
|
@@ -519,6 +519,7 @@ except OverflowError as e:
|
|
|
519
519
|
* **9.10.11**:修复NameError: name 'int_array' is not defined. Did you mean: 'bytearray'?的错误
|
|
520
520
|
* **9.10.12**:把find方法的返回值改为IntHybridArray
|
|
521
521
|
* **9.10.13**:给IntHybridArray新增多种列表操作
|
|
522
|
+
* **9.10.14**:修复IntHybridArray中因单个 0 导致所有数字位长被压缩到 1的问题
|
|
522
523
|
|
|
523
524
|
|
|
524
525
|
|
|
@@ -3,7 +3,7 @@ from types import ModuleType
|
|
|
3
3
|
from . import core
|
|
4
4
|
from .core import __builtins__,builtins
|
|
5
5
|
from . import int_array
|
|
6
|
-
__version__ = "9.10.
|
|
6
|
+
__version__ = "9.10.14"
|
|
7
7
|
public_objects = []
|
|
8
8
|
for name in dir(core):
|
|
9
9
|
if not name.startswith("_"):
|
|
@@ -17,6 +17,7 @@ globals().update({
|
|
|
17
17
|
})
|
|
18
18
|
try:
|
|
19
19
|
__dict__ = ProtectedBuiltinsDict(globals())
|
|
20
|
+
sys.modules[name+".int_array"] = ProtectedBuiltinsDict(int_array.__dict__)
|
|
20
21
|
sys.modules[__name__] = ProtectedBuiltinsDict(globals().copy())
|
|
21
22
|
sys.modules[__name__].name = 'bool_hybrid_array'
|
|
22
23
|
core.__dict__ = ProtectedBuiltinsDict(core.__dict__)
|
{bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array/int_array/__init__.py
RENAMED
|
@@ -15,14 +15,14 @@ class IntHybridArray(BoolHybridArray):
|
|
|
15
15
|
max_required_bits = 1
|
|
16
16
|
for num in int_array:
|
|
17
17
|
if num == 0:
|
|
18
|
-
required_bits =
|
|
18
|
+
required_bits = 2
|
|
19
19
|
else:
|
|
20
20
|
abs_num = abs(num)
|
|
21
21
|
num_bits_needed = abs_num.bit_length()
|
|
22
22
|
required_bits = 1 + num_bits_needed
|
|
23
23
|
if required_bits > max_required_bits:
|
|
24
24
|
max_required_bits = required_bits
|
|
25
|
-
self.bit_length = max_required_bits
|
|
25
|
+
self.bit_length = max(max_required_bits, 2)
|
|
26
26
|
for num in int_array:
|
|
27
27
|
if num >= 0:
|
|
28
28
|
sign_bit = False
|
|
@@ -41,15 +41,10 @@ class IntHybridArray(BoolHybridArray):
|
|
|
41
41
|
self.total_bits = len(bool_data)
|
|
42
42
|
super().__init__(0, self.total_bits, False, IntBitTag, False)
|
|
43
43
|
for idx in range(self.total_bits):
|
|
44
|
-
|
|
45
|
-
super().__setitem__(idx, bool_data[idx])
|
|
46
|
-
else:
|
|
47
|
-
super().append(bool_data[idx])
|
|
44
|
+
super().__setitem__(idx, bool_data[idx])
|
|
48
45
|
for i in range(0, self.total_bits, self.bit_length):
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
bit_tag.is_sign_bit = True
|
|
52
|
-
|
|
46
|
+
bit_tag = super().__getitem__(i)
|
|
47
|
+
bit_tag.is_sign_bit = True
|
|
53
48
|
def to_int(self, bit_chunk):
|
|
54
49
|
sign_bit = bit_chunk[0].value
|
|
55
50
|
num_bits = [bit.value for bit in bit_chunk[1:]]
|
|
@@ -71,7 +66,6 @@ class IntHybridArray(BoolHybridArray):
|
|
|
71
66
|
num += (1 << j)
|
|
72
67
|
num = -num
|
|
73
68
|
return num
|
|
74
|
-
|
|
75
69
|
def __getitem__(self, key):
|
|
76
70
|
if isinstance(key, slice):
|
|
77
71
|
start, stop, step = key.indices(len(self))
|
|
@@ -94,9 +88,7 @@ class IntHybridArray(BoolHybridArray):
|
|
|
94
88
|
raise IndexError("索引超出范围")
|
|
95
89
|
bit_chunk = [super().__getitem__(j) for j in range(block_start, block_end)]
|
|
96
90
|
return self.Type(self.to_int(bit_chunk))
|
|
97
|
-
|
|
98
91
|
def __setitem__(self, key, value):
|
|
99
|
-
|
|
100
92
|
value = int(value)
|
|
101
93
|
if isinstance(key, slice):
|
|
102
94
|
start, stop, step = key.indices(len(self))
|
|
@@ -239,3 +231,12 @@ class IntHybridArray(BoolHybridArray):
|
|
|
239
231
|
if x != f"{value} 不在 IntHybridArray 中":
|
|
240
232
|
return x
|
|
241
233
|
raise ValueError(x)
|
|
234
|
+
def extend(self, iterable:Iterable) -> None:
|
|
235
|
+
if isinstance(iterable, (Iterator, Generator, map)):
|
|
236
|
+
iterable,copy = itertools.tee(iterable, 2)
|
|
237
|
+
len_ = sum(1 for _ in copy)
|
|
238
|
+
else:
|
|
239
|
+
len_ = len(iterable)
|
|
240
|
+
self.total_bits += len_*self.bit_length
|
|
241
|
+
for i,j in zip(range(len_),iterable):
|
|
242
|
+
self[-i-1] = j
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bool-hybrid-array
|
|
3
|
-
Version: 9.10.
|
|
3
|
+
Version: 9.10.14
|
|
4
4
|
Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
|
|
5
5
|
Home-page: https://github.com/BKsell/bool-hybrid-array
|
|
6
6
|
Author: 蔡靖杰
|
|
@@ -558,6 +558,7 @@ except OverflowError as e:
|
|
|
558
558
|
* **9.10.11**:修复NameError: name 'int_array' is not defined. Did you mean: 'bytearray'?的错误
|
|
559
559
|
* **9.10.12**:把find方法的返回值改为IntHybridArray
|
|
560
560
|
* **9.10.13**:给IntHybridArray新增多种列表操作
|
|
561
|
+
* **9.10.14**:修复IntHybridArray中因单个 0 导致所有数字位长被压缩到 1的问题
|
|
561
562
|
|
|
562
563
|
|
|
563
564
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/requires.txt
RENAMED
|
File without changes
|
{bool_hybrid_array-9.10.13 → bool_hybrid_array-9.10.14}/bool_hybrid_array.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|