pybase16384 0.3.6__cp310-cp310-win_amd64.whl → 0.3.7__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of pybase16384 might be problematic. Click here for more details.

Binary file
@@ -6,12 +6,13 @@ from cpython.object cimport PyObject_HasAttrString
6
6
  from libc.stdint cimport int32_t, uint8_t
7
7
 
8
8
  from pybase16384.backends.cython.base16384 cimport (
9
- BASE16384_DECBUFSZ, BASE16384_ENCBUFSZ, BASE16384_FLAG_NOHEADER,
10
- BASE16384_FLAG_SUM_CHECK_ON_REMAIN, BASE16384_SIMPLE_SUM_INIT_VALUE,
11
- b14_decode, b14_decode_fd, b14_decode_fd_detailed, b14_decode_file,
12
- b14_decode_file_detailed, b14_decode_len, b14_encode, b14_encode_fd,
9
+ BASE16384_DECBUFSZ, BASE16384_ENCBUFSZ,
10
+ BASE16384_FLAG_DO_SUM_CHECK_FORCELY, BASE16384_FLAG_NOHEADER,
11
+ BASE16384_FLAG_SUM_CHECK_ON_REMAIN, b14_decode, b14_decode_fd,
12
+ b14_decode_fd_detailed, b14_decode_file, b14_decode_file_detailed,
13
+ b14_decode_len, b14_decode_safe, b14_encode, b14_encode_fd,
13
14
  b14_encode_fd_detailed, b14_encode_file, b14_encode_file_detailed,
14
- b14_encode_len, base16384_err_fopen_input_file,
15
+ b14_encode_len, b14_encode_safe, base16384_err_fopen_input_file,
15
16
  base16384_err_fopen_output_file, base16384_err_get_file_size,
16
17
  base16384_err_invalid_commandline_parameter,
17
18
  base16384_err_invalid_decoding_checksum, base16384_err_invalid_file_name,
@@ -25,7 +26,7 @@ ENCBUFSZ = BASE16384_ENCBUFSZ
25
26
  DECBUFSZ = BASE16384_DECBUFSZ
26
27
  FLAG_NOHEADER = BASE16384_FLAG_NOHEADER
27
28
  FLAG_SUM_CHECK_ON_REMAIN = BASE16384_FLAG_SUM_CHECK_ON_REMAIN
28
- SIMPLE_SUM_INIT_VALUE = BASE16384_SIMPLE_SUM_INIT_VALUE
29
+ FLAG_DO_SUM_CHECK_FORCELY = BASE16384_FLAG_DO_SUM_CHECK_FORCELY
29
30
 
30
31
  cdef inline bytes ensure_bytes(object inp):
31
32
  if isinstance(inp, unicode):
@@ -65,6 +66,22 @@ cpdef inline bytes _encode(const uint8_t[::1] data):
65
66
  finally:
66
67
  PyMem_Free(output_buf)
67
68
 
69
+ cpdef inline bytes _encode_safe(const uint8_t[::1] data):
70
+ cdef size_t length = data.shape[0]
71
+ cdef size_t output_size = <size_t> b14_encode_len(<int>length)
72
+ cdef char *output_buf = <char*>PyMem_Malloc(output_size)
73
+ if output_buf == NULL:
74
+ raise MemoryError
75
+ cdef int count
76
+ with nogil:
77
+ count = b14_encode_safe(<const char*> &data[0],
78
+ <int>length,
79
+ output_buf) # encode 整数倍的那个
80
+ try:
81
+ return <bytes>output_buf[:count]
82
+ finally:
83
+ PyMem_Free(output_buf)
84
+
68
85
  cpdef inline bytes _decode(const uint8_t[::1] data):
69
86
  cdef size_t length = data.shape[0]
70
87
  cdef size_t output_size = <size_t> b14_decode_len(<int>length, 0) + 16
@@ -81,6 +98,22 @@ cpdef inline bytes _decode(const uint8_t[::1] data):
81
98
  finally:
82
99
  PyMem_Free(output_buf)
83
100
 
101
+ cpdef inline bytes _decode_safe(const uint8_t[::1] data):
102
+ cdef size_t length = data.shape[0]
103
+ cdef size_t output_size = <size_t> b14_decode_len(<int>length, 0)
104
+ cdef char *output_buf = <char *> PyMem_Malloc(output_size)
105
+ if output_buf == NULL:
106
+ raise MemoryError
107
+ cdef int count
108
+ with nogil:
109
+ count = b14_decode_safe(<const char *> &data[0],
110
+ <int> length,
111
+ output_buf) # decode
112
+ try:
113
+ return <bytes> output_buf[:count]
114
+ finally:
115
+ PyMem_Free(output_buf)
116
+
84
117
  cpdef inline int _encode_into(const uint8_t[::1] data, uint8_t[::1] dest) except -1:
85
118
  cdef size_t input_size = data.shape[0]
86
119
  cdef size_t output_size = <size_t> b14_encode_len(<int> input_size)
@@ -92,6 +125,17 @@ cpdef inline int _encode_into(const uint8_t[::1] data, uint8_t[::1] dest) except
92
125
  <int> input_size,
93
126
  <char *> &dest[0])
94
127
 
128
+ cpdef inline int _encode_into_safe(const uint8_t[::1] data, uint8_t[::1] dest) except -1:
129
+ cdef size_t input_size = data.shape[0]
130
+ cdef size_t output_size = <size_t> b14_encode_len(<int> input_size)
131
+ cdef size_t output_buf_size = dest.shape[0]
132
+ if output_buf_size < output_size:
133
+ raise ValueError("Buffer is too small to hold result")
134
+ with nogil:
135
+ return b14_encode_safe(<const char *> &data[0],
136
+ <int> input_size,
137
+ <char *> &dest[0])
138
+
95
139
  cpdef inline int _decode_into(const uint8_t[::1] data, uint8_t[::1] dest) except -1:
96
140
  cdef size_t input_size = data.shape[0]
97
141
  cdef size_t output_size = <size_t> b14_decode_len(<int> input_size, 0)
@@ -103,6 +147,16 @@ cpdef inline int _decode_into(const uint8_t[::1] data, uint8_t[::1] dest) except
103
147
  <int> input_size,
104
148
  <char *> &dest[0])
105
149
 
150
+ cpdef inline int _decode_into_safe(const uint8_t[::1] data, uint8_t[::1] dest) except -1:
151
+ cdef size_t input_size = data.shape[0]
152
+ cdef size_t output_size = <size_t> b14_decode_len(<int> input_size, 0)
153
+ cdef size_t output_buf_size = dest.shape[0]
154
+ if output_buf_size < output_size:
155
+ raise ValueError("Buffer is too small to hold result")
156
+ with nogil:
157
+ return b14_decode_safe(<const char *> &data[0],
158
+ <int> input_size,
159
+ <char *> &dest[0])
106
160
 
107
161
  def encode_file(object input,
108
162
  object output,
@@ -151,6 +205,53 @@ def encode_file(object input,
151
205
  finally:
152
206
  PyMem_Free(output_buf)
153
207
 
208
+ def encode_file_safe(object input,
209
+ object output,
210
+ bint write_head = False,
211
+ int32_t buf_rate = 10):
212
+ if not PyFile_Check(input):
213
+ raise TypeError("input except a file-like object, got %s" % type(input).__name__)
214
+ if not PyFile_Check(output):
215
+ raise TypeError("output except a file-like object, got %s" % type(output).__name__)
216
+ if buf_rate <= 0:
217
+ buf_rate = 1
218
+
219
+ if write_head:
220
+ output.write(b'\xfe\xff')
221
+
222
+ cdef int32_t current_buf_len = buf_rate * 7 # 一次读取这么多字节
223
+ cdef size_t output_size = <size_t> b14_encode_len(<int> current_buf_len) # 因为encode_len不是单调的 这16备用
224
+ cdef char *output_buf = <char *> PyMem_Malloc(output_size)
225
+ if output_buf == NULL:
226
+ raise MemoryError
227
+
228
+ cdef Py_ssize_t size
229
+ cdef uint8_t first_check = 1 # 检查一次就行了 怎么可能出现第一次读出来是bytes 以后又变卦了的对象呢 不会吧不会吧
230
+ cdef int count = 0
231
+ cdef const char *chunk_ptr
232
+ try:
233
+ while True:
234
+ chunk = input.read(current_buf_len)
235
+ if first_check:
236
+ first_check = 0
237
+ if not PyBytes_Check(chunk):
238
+ raise TypeError(f"input must be a file-like rb object, got {type(input).__name__}")
239
+ size = PyBytes_Size(chunk)
240
+ if <int32_t> size < current_buf_len: # 数据不够了 要减小一次读取的量
241
+ if buf_rate > 1: # 重新设置一次读取的大小 重新设置流的位置 当然要是已经是一次读取7字节了 那就不能再变小了 直接encode吧
242
+ buf_rate = buf_rate / 2
243
+ current_buf_len = buf_rate * 7
244
+ input.seek(-size, 1)
245
+ continue
246
+ chunk_ptr = <const char*>PyBytes_AS_STRING(chunk)
247
+ with nogil:
248
+ count = b14_encode_safe(chunk_ptr, <int>size, output_buf)
249
+ output.write(<bytes>output_buf[:count])
250
+ if size < 7:
251
+ break
252
+ finally:
253
+ PyMem_Free(output_buf)
254
+
154
255
  def decode_file(object input,
155
256
  object output,
156
257
  int32_t buf_rate = 10):
@@ -203,6 +304,58 @@ def decode_file(object input,
203
304
  finally:
204
305
  PyMem_Free(output_buf)
205
306
 
307
+ def decode_file_safe(object input,
308
+ object output,
309
+ int32_t buf_rate = 10):
310
+ if not PyFile_Check(input):
311
+ raise TypeError("input except a file-like object, got %s" % type(input).__name__)
312
+ if not PyFile_Check(output):
313
+ raise TypeError("output except a file-like object, got %s" % type(output).__name__)
314
+ if buf_rate <= 0:
315
+ buf_rate = 1
316
+
317
+ chunk = input.read(1) # type: bytes
318
+ if not PyBytes_Check(chunk):
319
+ raise TypeError(f"input must be a file-like rb object, got {type(input).__name__}")
320
+ if chunk == b"\xfe": # 去头
321
+ input.read(1)
322
+ else:
323
+ input.seek(0, 0) # 没有头 回到开头
324
+
325
+ cdef int32_t current_buf_len = buf_rate * 8
326
+ cdef size_t output_size = <size_t> b14_decode_len(<int> current_buf_len, 0)
327
+ cdef char *output_buf = <char *> PyMem_Malloc(output_size)
328
+ if output_buf == NULL:
329
+ raise MemoryError
330
+ cdef Py_ssize_t size
331
+ cdef int count = 0
332
+ cdef const char *chunk_ptr
333
+ try:
334
+ while True:
335
+ chunk = input.read(current_buf_len) # 8的倍数
336
+ size = PyBytes_Size(chunk)
337
+ if size == 0:
338
+ break
339
+ if <int32_t> size < current_buf_len: # 长度不够了
340
+ if buf_rate > 1: # 还能继续变小
341
+ buf_rate = buf_rate / 2 # 重新设置一次读取的大小
342
+ current_buf_len = buf_rate * 8
343
+ input.seek(-size, 1)
344
+ continue
345
+ tmp = input.read(2) # type: bytes
346
+ if PyBytes_Size(tmp) == 2:
347
+ if tmp[0] == 61: # = stream完了 一次解码8n+2个字节
348
+ chunk += tmp
349
+ size += 2
350
+ else:
351
+ input.seek(-2, 1)
352
+ chunk_ptr = <const char *> PyBytes_AS_STRING(chunk)
353
+ with nogil:
354
+ count = b14_decode_safe(chunk_ptr, <int> size, output_buf)
355
+ output.write(<bytes>output_buf[:count])
356
+ finally:
357
+ PyMem_Free(output_buf)
358
+
206
359
  cpdef inline bint is_64bits() nogil:
207
360
  return pybase16384_64bits()
208
361
 
@@ -10,7 +10,7 @@ cdef extern from "base16384.h" nogil:
10
10
 
11
11
  int BASE16384_FLAG_NOHEADER
12
12
  int BASE16384_FLAG_SUM_CHECK_ON_REMAIN
13
- int BASE16384_SIMPLE_SUM_INIT_VALUE
13
+ int BASE16384_FLAG_DO_SUM_CHECK_FORCELY
14
14
 
15
15
  ctypedef enum base16384_err_t:
16
16
  base16384_err_ok
@@ -29,11 +29,14 @@ cdef extern from "base16384.h" nogil:
29
29
  # decode_len calc min buf size to fill decode result
30
30
  int b14_decode_len "base16384_decode_len" (int dlen, int offset)
31
31
 
32
+ int b14_encode_safe "base16384_encode_safe" (const char * data, int dlen, char * buf)
32
33
  # encode data and write result into buf
33
34
  int b14_encode "base16384_encode" (const char* data, int dlen, char* buf)
34
35
 
35
36
  int b14_encode_unsafe "base16384_encode_unsafe" (const char * data, int dlen, char * buf)
36
37
  # decode data and write result into buf
38
+ int b14_decode_safe "base16384_decode_safe" (const char * data, int dlen, char * buf)
39
+
37
40
  int b14_decode "base16384_decode" (const char* data, int dlen, char* buf)
38
41
 
39
42
  int b14_decode_unsafe "base16384_decode_unsafe"(const char * data, int dlen, char * buf)
@@ -87,9 +90,9 @@ cdef extern from "base16384.h" nogil:
87
90
  cdef extern from * nogil:
88
91
  """
89
92
  #ifdef CPUBIT32
90
- #define pybase16384_64bits() 0
93
+ #define pybase16384_64bits() (0)
91
94
  #else
92
- #define pybase16384_64bits() 1
95
+ #define pybase16384_64bits() (1)
93
96
  #endif
94
97
  """
95
98
  int32_t pybase16384_64bits()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybase16384
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: fast base16384 encode and decode
5
5
  Home-page: https://github.com/synodriver/pybase16384
6
6
  Author: synodriver
@@ -78,37 +78,77 @@ for i in range(1):
78
78
 
79
79
  ### 公开函数
80
80
  ```python
81
+ from typing import IO
82
+
81
83
  def encode_len(dlen: int) -> int: ...
82
84
 
83
85
  def decode_len(dlen: int, offset: int) -> int: ...
84
86
 
87
+ ENCBUFSZ: int
88
+ DECBUFSZ: int
89
+ FLAG_NOHEADER: int
90
+ FLAG_SUM_CHECK_ON_REMAIN: int
91
+ FLAG_DO_SUM_CHECK_FORCELY: int
92
+
93
+ def is_64bits() -> bool: ...
94
+
95
+ def encode_file(input: IO, output: IO, write_head: bool = ..., buf_rate: int = ...): ...
96
+
97
+ def encode_file_safe(input: IO, output: IO, write_head: bool = ..., buf_rate: int = ...): ...
98
+
99
+ def decode_file(input: IO, output: IO, buf_rate: int = ...): ...
100
+
101
+ def decode_file_safe(input: IO, output: IO, buf_rate: int = ...): ...
102
+
103
+ def ensure_bytes(inp) -> bytes: ...
104
+
105
+ def encode_local_file(inp, out) -> None: ...
106
+
107
+ def decode_local_file(inp, out) -> None: ...
108
+
109
+ def encode_fd(inp: int, out: int) -> None: ...
110
+
111
+ def decode_fd(inp: int, out: int) -> None: ...
112
+
113
+ def encode_local_file_detailed(inp, out, flag: int) -> None: ...
114
+
115
+ def decode_local_file_detailed(inp, out, flag: int) -> None: ...
116
+
117
+ def encode_fd_detailed(inp: int, out: int, flag: int) -> None: ...
118
+
119
+ def decode_fd_detailed(inp: int, out: int, flag: int) -> None: ...
120
+
85
121
  def encode(data: bytes) -> bytes: ...
86
122
 
123
+ def encode_safe(data: bytes) -> bytes: ...
124
+
87
125
  def decode(data: bytes) -> bytes: ...
88
126
 
89
- def decode_file(input: BinaryIO, output: BinaryIO, buf_rate: int = 10) -> None: ...
127
+ def decode_safe(data: bytes) -> bytes: ...
90
128
 
91
- def encode_file(input: BinaryIO, output: BinaryIO, boolwrite_head: bool = False, buf_rate: int = 10) -> None: ...
129
+ def encode_from_string(data: str, write_head: bool = ...) -> bytes: ...
92
130
 
93
- def encode_from_string(data: str, write_head: bool = False) -> bytes: ...
131
+ def encode_from_string_safe(data: str, write_head: bool = ...) -> bytes: ...
94
132
 
95
133
  def encode_to_string(data: bytes) -> str: ...
96
134
 
135
+ def encode_to_string_safe(data: bytes) -> str: ...
136
+
97
137
  def encode_string(data: str) -> str: ...
98
138
 
139
+ def encode_string_safe(data: str) -> str: ...
140
+
99
141
  def decode_from_bytes(data: bytes) -> str: ...
100
142
 
101
- def decode_from_string(data: str) -> bytes: ...
143
+ def decode_from_bytes_safe(data: bytes) -> str: ...
102
144
 
103
- def decode_string(data: str) -> str: ...
145
+ def decode_from_string(data: str) -> bytes: ...
104
146
 
105
- def encode_local_file(inp: Union[str, bytes, Path], out: Union[str, bytes, Path], encsize: int, decsize: int) -> None: ...
147
+ def decode_from_string_safe(data: str) -> bytes: ...
106
148
 
107
- def decode_local_file(inp: Union[str, bytes, Path], out: Union[str, bytes, Path], encsize: int, decsize: int) -> None: ...
149
+ def decode_string(data: str) -> str: ...
108
150
 
109
- def encode_fd(inp: int, out: int) -> None: ...
110
-
111
- def decode_fd(inp: int, out: int) -> None: ...
151
+ def decode_string_safe(data: str) -> str: ...
112
152
  ```
113
153
  - write_head将显式指明编码出的文本格式(utf16be),以便文本编辑器(如记事本)能够正确渲染,一般在写入文件时使用。
114
154
 
@@ -124,12 +164,20 @@ def decode_fd(inp: int, out: int) -> None: ...
124
164
  ```python
125
165
  def _encode(data: BufferProtocol) -> bytes: ...
126
166
 
167
+ def _encode_safe(data: BufferProtocol) -> bytes: ...
168
+
127
169
  def _decode(data: BufferProtocol) -> bytes: ...
128
170
 
171
+ def _decode_safe(data: BufferProtocol) -> bytes: ...
172
+
129
173
  def _encode_into(data: BufferProtocol, dest: BufferProtocol) -> int: ...
130
174
 
175
+ def _encode_into_safe(data: BufferProtocol, dest: BufferProtocol) -> int: ...
176
+
131
177
  def _decode_into(data: BufferProtocol, dest: BufferProtocol) -> int: ...
132
178
 
179
+ def _decode_into_safe(data: BufferProtocol, dest: BufferProtocol) -> int: ...
180
+
133
181
  def is_64bits() -> bool: ...
134
182
  ```
135
183
  - ```_decode```在解码```b'='```开头的数据时***不安全***:***解释器异常***
@@ -0,0 +1,16 @@
1
+ pybase16384/__init__.py,sha256=I4fq10U7x38tDhMUUp_K_tzArZfRkU_4M8QvaIER5no,4970
2
+ pybase16384/backends/__init__.py,sha256=9aG9WOI42Hcgaj9QGw99OIvKZTG-sYNlLBUctorc4Kg,56
3
+ pybase16384/backends/cffi/__init__.py,sha256=4wLAqQkOhzMU06rHjiP3vsq4tLpA3BSE-ZRWIyXQISk,14451
4
+ pybase16384/backends/cffi/_core.pyd,sha256=0M1oG6fBTzAk91gjWSzbvBIwwgUJQjmdJ5MycRHjt80,41472
5
+ pybase16384/backends/cffi/build.py,sha256=m585-SvsiRrx4stB6C0nrl2NpLOvn-faTir86PSiEdc,4693
6
+ pybase16384/backends/cython/__init__.py,sha256=sNk05eduO-ErnMqUjnES6X4KnWfdpcCQnd_EYAyFFCg,714
7
+ pybase16384/backends/cython/_core.c,sha256=kn3l1f2RQOuSIMx9CnqGIdWrgOqkbs7cAWnAkxoU5Hc,1538911
8
+ pybase16384/backends/cython/_core.pxi,sha256=SPgwG7QKofRYdJDRrhx2TWRvOuBuwTjRGg2WvGUrQw4,542
9
+ pybase16384/backends/cython/_core.pyd,sha256=MkvjdEPK9Z4dYY7KyfBFKI9FBiSoOS277JM8GQCWSqE,214016
10
+ pybase16384/backends/cython/_core.pyx,sha256=p4p59Yqlmo-_2bG0T-f_0yyjUIE9S4XgGF14q2OsF0U,22414
11
+ pybase16384/backends/cython/base16384.pxd,sha256=6KgB5vEipJXw1v1nZPE3JgQapxDtO6yHoGz0FPP7JDE,4941
12
+ pybase16384-0.3.7.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
13
+ pybase16384-0.3.7.dist-info/METADATA,sha256=dUK9Dwj9bE6KH2tZGan1kv5KaaQnAKRztTYzK0UvUJs,6699
14
+ pybase16384-0.3.7.dist-info/WHEEL,sha256=jrOhEbqKwvzRFSJcbYXlJCyVkgVdHg4_7__YHrdTUfw,102
15
+ pybase16384-0.3.7.dist-info/top_level.txt,sha256=kXpl7pWjnjpm74qJP0SJg3JhbiWuwKQApJgkJH0B5Mk,12
16
+ pybase16384-0.3.7.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- pybase16384/__init__.py,sha256=ORhQHbG_JSqXq78YxjIaWxJpSzv84TVS7rgd2wQKpS0,3062
2
- pybase16384/backends/__init__.py,sha256=9aG9WOI42Hcgaj9QGw99OIvKZTG-sYNlLBUctorc4Kg,56
3
- pybase16384/backends/cffi/__init__.py,sha256=5Uk7Il3xmAkj9HxhbB1OdXE2Cslc0rDuIYcfDrLQcug,9774
4
- pybase16384/backends/cffi/_core.pyd,sha256=ujQz_cbPeV-XuWfXytpSI5LYwoLoIhBWfJ1ytF7qN1o,37888
5
- pybase16384/backends/cffi/build.py,sha256=DXOVlPcnnjNFt11n3TSeiMd5OUbdcm3bbylDQppy-mo,4539
6
- pybase16384/backends/cython/__init__.py,sha256=b3qH9k-e72aqwxdZHfR-PipQNzvBFGWq9uiX6v_PfuI,578
7
- pybase16384/backends/cython/_core.c,sha256=7WXWJg1wJV3E7rMLUsfmSFPdNW7zvMJ6uic7H_zEiTM,1393181
8
- pybase16384/backends/cython/_core.pxi,sha256=SPgwG7QKofRYdJDRrhx2TWRvOuBuwTjRGg2WvGUrQw4,542
9
- pybase16384/backends/cython/_core.pyd,sha256=BHSQmY7YllltbcCYFYGKqjHy4NqytsMeyfM2nmSrxXU,190976
10
- pybase16384/backends/cython/_core.pyx,sha256=mWb4dr-hEjp1QPI37mU_lyJyUohHYxacCPyPbmAjP5U,15765
11
- pybase16384/backends/cython/base16384.pxd,sha256=ZIOMla80PKuWAIUZIFsJh4b7rzjfHxxaa-VEQ9CQe5E,4749
12
- pybase16384-0.3.6.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
13
- pybase16384-0.3.6.dist-info/METADATA,sha256=ASRzCwkCUBoHKlPqlv1GT5P1dNjhILV4Yetdp4oM_w8,5539
14
- pybase16384-0.3.6.dist-info/WHEEL,sha256=jrOhEbqKwvzRFSJcbYXlJCyVkgVdHg4_7__YHrdTUfw,102
15
- pybase16384-0.3.6.dist-info/top_level.txt,sha256=kXpl7pWjnjpm74qJP0SJg3JhbiWuwKQApJgkJH0B5Mk,12
16
- pybase16384-0.3.6.dist-info/RECORD,,