bool-hybrid-array 9.10.21__py3-none-any.whl → 9.10.22__py3-none-any.whl
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/__init__.py +1 -1
- bool_hybrid_array/core.py +16 -12
- {bool_hybrid_array-9.10.21.dist-info → bool_hybrid_array-9.10.22.dist-info}/METADATA +2 -1
- bool_hybrid_array-9.10.22.dist-info/RECORD +10 -0
- bool_hybrid_array-9.10.21.dist-info/RECORD +0 -10
- {bool_hybrid_array-9.10.21.dist-info → bool_hybrid_array-9.10.22.dist-info}/WHEEL +0 -0
- {bool_hybrid_array-9.10.21.dist-info → bool_hybrid_array-9.10.22.dist-info}/licenses/LICENSE +0 -0
- {bool_hybrid_array-9.10.21.dist-info → bool_hybrid_array-9.10.22.dist-info}/top_level.txt +0 -0
bool_hybrid_array/__init__.py
CHANGED
bool_hybrid_array/core.py
CHANGED
|
@@ -8,6 +8,14 @@ import operator,ctypes,gc,abc,types
|
|
|
8
8
|
from functools import lru_cache
|
|
9
9
|
from typing import Union,_GenericAlias
|
|
10
10
|
hybrid_array_cache = []
|
|
11
|
+
try:
|
|
12
|
+
msvcrt = ctypes.CDLL('msvcrt.dll')
|
|
13
|
+
memcpy = msvcrt.memcpy
|
|
14
|
+
except:
|
|
15
|
+
libc = ctypes.CDLL('libc.so.6')
|
|
16
|
+
memcpy = libc.memcpy
|
|
17
|
+
memcpy.argtypes = (ctypes.c_void_p, ctypes.c_void_p, ctypes.c_size_t)
|
|
18
|
+
memcpy.restype = ctypes.c_void_p
|
|
11
19
|
if 'UnionType' in types.__dict__:
|
|
12
20
|
class Union:
|
|
13
21
|
def __getitem__(self,*args):
|
|
@@ -786,18 +794,14 @@ def Ask_BHA(path):
|
|
|
786
794
|
temp = mm.read().decode('utf-8').strip()
|
|
787
795
|
temp = temp.split()
|
|
788
796
|
temp2 = lambda x: BoolHybridArr(
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
)
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
)
|
|
797
|
-
n := int(x, base=16),
|
|
798
|
-
lead_zero := len(x) - len(x.lstrip('0')),
|
|
799
|
-
total_len := lead_zero + (n.bit_length() if n != 0 else 1)
|
|
800
|
-
)else None
|
|
797
|
+
(
|
|
798
|
+
bit_stream := bytes(0 if k < lead_zero else (n >> ((total_len - 1) - k)) & 1 for k in range(total_len)),
|
|
799
|
+
arr := array.array('B', FalsesArray(total_len)),
|
|
800
|
+
memcpy(arr.buffer_info()[0], bit_stream, total_len),arr)[-1]
|
|
801
|
+
if(n := int(x, base=16),
|
|
802
|
+
lead_zero := len(x) - len(x.lstrip('0')),
|
|
803
|
+
total_len := lead_zero + (n.bit_length() if n else 1))
|
|
804
|
+
else array.array('B'))
|
|
801
805
|
temp = BHA_List(map(temp2,temp))
|
|
802
806
|
if len(temp) == 1:
|
|
803
807
|
return temp[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.22
|
|
4
4
|
Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
|
|
5
5
|
Home-page: https://github.com/BKsell/bool-hybrid-array
|
|
6
6
|
Author: 蔡靖杰
|
|
@@ -571,6 +571,7 @@ except OverflowError as e:
|
|
|
571
571
|
* **9.10.19**:和9.10.18.post4相同,正式版本发布
|
|
572
572
|
* **9.10.20**:优化性能,增加BHA_jit_log日志
|
|
573
573
|
* **9.10.21**:优化Ask_BHA,移除BHA_jit_log日志
|
|
574
|
+
* **9.10.22**:进一步优化Ask_BHA的性能
|
|
574
575
|
|
|
575
576
|
|
|
576
577
|
## **彩蛋:**
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
bool_hybrid_array/__init__.py,sha256=D1b3xe3CjxboRd_BQj6FgIzT6engdRDqx8yrmH-rK-8,955
|
|
2
|
+
bool_hybrid_array/__main__.py,sha256=3MsUAXMj6Pe1EzP7YreuUePbXZeQvFSCnejnTeS42kU,8324
|
|
3
|
+
bool_hybrid_array/core.py,sha256=s-4uJycfru2veh6Jsj1Z10h8RyYE7TMEaHHZ26YsB7o,38261
|
|
4
|
+
bool_hybrid_array/秘密.md,sha256=Ii2NvXmv-Ktu04zJsGLcQZvlzT4gOatByE4B2wTK1Ks,48
|
|
5
|
+
bool_hybrid_array/int_array/__init__.py,sha256=acjFchFu3k9CQndDbvKfSIyfMMAbgprz8Skf1a4_dKY,8578
|
|
6
|
+
bool_hybrid_array-9.10.22.dist-info/licenses/LICENSE,sha256=Sg4rnGXkBDYkwJCWyxdWp5H60rhVAxpNvFh_l3JWZdY,1070
|
|
7
|
+
bool_hybrid_array-9.10.22.dist-info/METADATA,sha256=XnepIEez9plj7k1TRSublVjL7PVGTczegeqL2q9SVSc,23540
|
|
8
|
+
bool_hybrid_array-9.10.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
+
bool_hybrid_array-9.10.22.dist-info/top_level.txt,sha256=vk-TD77wuVQsN1rJ6uVWZX4sC_wya_WplRDwQKJoBZM,18
|
|
10
|
+
bool_hybrid_array-9.10.22.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
bool_hybrid_array/__init__.py,sha256=r04Lq3_vRUkxPYT4oLIz8wLBhbRP70UvXGQKMpt8tps,955
|
|
2
|
-
bool_hybrid_array/__main__.py,sha256=3MsUAXMj6Pe1EzP7YreuUePbXZeQvFSCnejnTeS42kU,8324
|
|
3
|
-
bool_hybrid_array/core.py,sha256=MNxYpZdtY36ElBbdqYjNUp1fJwYEHSTsc1Y323Cytro,37984
|
|
4
|
-
bool_hybrid_array/秘密.md,sha256=Ii2NvXmv-Ktu04zJsGLcQZvlzT4gOatByE4B2wTK1Ks,48
|
|
5
|
-
bool_hybrid_array/int_array/__init__.py,sha256=acjFchFu3k9CQndDbvKfSIyfMMAbgprz8Skf1a4_dKY,8578
|
|
6
|
-
bool_hybrid_array-9.10.21.dist-info/licenses/LICENSE,sha256=Sg4rnGXkBDYkwJCWyxdWp5H60rhVAxpNvFh_l3JWZdY,1070
|
|
7
|
-
bool_hybrid_array-9.10.21.dist-info/METADATA,sha256=k037Kzz3zMnTbD-zaIfSacesqeVIThAW2Eu6_AlEiXk,23491
|
|
8
|
-
bool_hybrid_array-9.10.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
-
bool_hybrid_array-9.10.21.dist-info/top_level.txt,sha256=vk-TD77wuVQsN1rJ6uVWZX4sC_wya_WplRDwQKJoBZM,18
|
|
10
|
-
bool_hybrid_array-9.10.21.dist-info/RECORD,,
|
|
File without changes
|
{bool_hybrid_array-9.10.21.dist-info → bool_hybrid_array-9.10.22.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|