python-filewrap 0.3.0.1__tar.gz → 0.3.1.1__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.
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/PKG-INFO +1 -1
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/filewrap/__init__.py +36 -26
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/pyproject.toml +1 -1
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/LICENSE +0 -0
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/filewrap/py.typed +0 -0
- {python_filewrap-0.3.0.1 → python_filewrap-0.3.1.1}/readme.md +0 -0
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
4
|
__author__ = "ChenyangGao <https://chenyanggao.github.io>"
|
|
5
|
-
__version__ = (0, 3,
|
|
5
|
+
__version__ = (0, 3, 1)
|
|
6
6
|
__all__ = [
|
|
7
7
|
"SupportsRead", "SupportsReadinto", "SupportsWrite", "SupportsSeek",
|
|
8
8
|
"AsyncBufferedReader", "AsyncTextIOWrapper", "buffer_length", "to_string_buffer",
|
|
9
|
-
"to_bytes_buffer", "
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
9
|
+
"to_bytes_buffer", "to_bytes_view", "bio_chunk_iter", "bio_chunk_async_iter",
|
|
10
|
+
"bio_skip_iter", "bio_skip_async_iter", "bytes_iter", "bytes_async_iter",
|
|
11
|
+
"bytes_iter_skip", "bytes_async_iter_skip", "bytes_iter_to_reader",
|
|
12
|
+
"bytes_iter_to_async_reader", "bytes_to_chunk_iter", "bytes_to_chunk_async_iter",
|
|
13
|
+
"bytes_ensure_part_iter", "bytes_ensure_part_async_iter", "progress_bytes_iter",
|
|
14
|
+
"progress_bytes_async_iter", "copyfileobj", "copyfileobj_async", "bound_bytes_reader",
|
|
15
|
+
"bound_async_bytes_reader",
|
|
15
16
|
]
|
|
16
17
|
|
|
17
18
|
from array import array
|
|
@@ -263,7 +264,7 @@ class AsyncBufferedReader(BufferedReader):
|
|
|
263
264
|
length = buffer_length(data)
|
|
264
265
|
self._pos += buffer_length(prev_data) + length
|
|
265
266
|
if BUFSIZE <= length:
|
|
266
|
-
buf_view[:] =
|
|
267
|
+
buf_view[:] = to_bytes_view(data)[-BUFSIZE:]
|
|
267
268
|
self._buf_pos = self._buf_stop = BUFSIZE
|
|
268
269
|
else:
|
|
269
270
|
buf_pos_stop = buf_stop + length
|
|
@@ -308,7 +309,7 @@ class AsyncBufferedReader(BufferedReader):
|
|
|
308
309
|
else:
|
|
309
310
|
return 0
|
|
310
311
|
BUFSIZE = buffer_length(buf_view)
|
|
311
|
-
buffer_view =
|
|
312
|
+
buffer_view = to_bytes_view(buffer)
|
|
312
313
|
buffer_view[:buf_size] = buf_view[buf_pos:buf_stop]
|
|
313
314
|
buf_pos = self._buf_pos = buf_stop
|
|
314
315
|
self._pos += buf_size
|
|
@@ -380,7 +381,7 @@ class AsyncBufferedReader(BufferedReader):
|
|
|
380
381
|
else:
|
|
381
382
|
return 0
|
|
382
383
|
BUFSIZE = buffer_length(buf_view)
|
|
383
|
-
buffer_view =
|
|
384
|
+
buffer_view = to_bytes_view(buffer)
|
|
384
385
|
buffer_view[:buf_size] = buf_view[buf_pos:buf_stop]
|
|
385
386
|
buf_pos = self._buf_pos = buf_stop
|
|
386
387
|
self._pos += buf_size
|
|
@@ -471,7 +472,7 @@ class AsyncBufferedReader(BufferedReader):
|
|
|
471
472
|
prev_data = buf_view[buf_pos:buf_stop].tobytes()
|
|
472
473
|
self._pos += buffer_length(prev_data) + length
|
|
473
474
|
if BUFSIZE <= length:
|
|
474
|
-
buf_view[:] =
|
|
475
|
+
buf_view[:] = to_bytes_view(data)[-BUFSIZE:]
|
|
475
476
|
self._buf_pos = self._buf_stop = BUFSIZE
|
|
476
477
|
else:
|
|
477
478
|
buf_pos_stop = buf_stop + length
|
|
@@ -657,7 +658,7 @@ class AsyncTextIOWrapper(TextIOWrapper):
|
|
|
657
658
|
size -= len(text)
|
|
658
659
|
return n
|
|
659
660
|
|
|
660
|
-
cache: bytes | memoryview =
|
|
661
|
+
cache: bytes | memoryview = to_bytes_view(data)
|
|
661
662
|
while size and buffer_length(data) == size:
|
|
662
663
|
while cache:
|
|
663
664
|
try:
|
|
@@ -847,6 +848,15 @@ def to_bytes_buffer(b: Buffer, /) -> bytes | bytearray | memoryview:
|
|
|
847
848
|
return view.tobytes()
|
|
848
849
|
|
|
849
850
|
|
|
851
|
+
def to_bytes_view(b: Buffer, /) -> memoryview:
|
|
852
|
+
view = memoryview(b)
|
|
853
|
+
if view.format == "B":
|
|
854
|
+
return view
|
|
855
|
+
if view.c_contiguous:
|
|
856
|
+
return view.cast("B")
|
|
857
|
+
return memoryview(view.tobytes())
|
|
858
|
+
|
|
859
|
+
|
|
850
860
|
def bio_chunk_iter(
|
|
851
861
|
bio: SupportsRead[Buffer] | SupportsReadinto | Callable[[int], Buffer],
|
|
852
862
|
/,
|
|
@@ -1156,7 +1166,7 @@ def bytes_iter(
|
|
|
1156
1166
|
else:
|
|
1157
1167
|
break
|
|
1158
1168
|
else:
|
|
1159
|
-
yield
|
|
1169
|
+
yield to_bytes_view(b)[:size]
|
|
1160
1170
|
if callback is not None:
|
|
1161
1171
|
callback(size)
|
|
1162
1172
|
break
|
|
@@ -1188,7 +1198,7 @@ async def bytes_async_iter(
|
|
|
1188
1198
|
else:
|
|
1189
1199
|
break
|
|
1190
1200
|
else:
|
|
1191
|
-
yield
|
|
1201
|
+
yield to_bytes_view(b)[:size]
|
|
1192
1202
|
if callback is not None:
|
|
1193
1203
|
await callback(size)
|
|
1194
1204
|
break
|
|
@@ -1206,7 +1216,7 @@ def bytes_iter_skip(
|
|
|
1206
1216
|
if not callable(callback):
|
|
1207
1217
|
callback = None
|
|
1208
1218
|
for b in it:
|
|
1209
|
-
m =
|
|
1219
|
+
m = to_bytes_view(b)
|
|
1210
1220
|
l = buffer_length(m)
|
|
1211
1221
|
if callback:
|
|
1212
1222
|
callback(min(l, size))
|
|
@@ -1231,7 +1241,7 @@ async def bytes_async_iter_skip(
|
|
|
1231
1241
|
return it
|
|
1232
1242
|
callback = ensure_async(callback) if callable(callback) else None
|
|
1233
1243
|
async for b in it:
|
|
1234
|
-
m =
|
|
1244
|
+
m = to_bytes_view(b)
|
|
1235
1245
|
l = buffer_length(m)
|
|
1236
1246
|
if callback:
|
|
1237
1247
|
await callback(min(l, size))
|
|
@@ -1307,7 +1317,7 @@ def bytes_iter_to_reader(
|
|
|
1307
1317
|
del unconsumed[:]
|
|
1308
1318
|
try:
|
|
1309
1319
|
while True:
|
|
1310
|
-
b =
|
|
1320
|
+
b = to_bytes_view(getnext())
|
|
1311
1321
|
if b_len := b.nbytes:
|
|
1312
1322
|
m = n + b_len
|
|
1313
1323
|
if m >= bufsize:
|
|
@@ -1477,7 +1487,7 @@ def bytes_iter_to_async_reader(
|
|
|
1477
1487
|
del unconsumed[:]
|
|
1478
1488
|
try:
|
|
1479
1489
|
while True:
|
|
1480
|
-
b =
|
|
1490
|
+
b = to_bytes_view(await getnext())
|
|
1481
1491
|
if b_len := b.nbytes:
|
|
1482
1492
|
m = n + b_len
|
|
1483
1493
|
if m >= bufsize:
|
|
@@ -1584,7 +1594,7 @@ def bytes_to_chunk_iter(
|
|
|
1584
1594
|
/,
|
|
1585
1595
|
chunksize: int = READ_BUFSIZE,
|
|
1586
1596
|
) -> Iterator[memoryview]:
|
|
1587
|
-
m =
|
|
1597
|
+
m = to_bytes_view(b)
|
|
1588
1598
|
for i in range(0, buffer_length(m), chunksize):
|
|
1589
1599
|
yield m[i:i+chunksize]
|
|
1590
1600
|
|
|
@@ -1594,7 +1604,7 @@ async def bytes_to_chunk_async_iter(
|
|
|
1594
1604
|
/,
|
|
1595
1605
|
chunksize: int = READ_BUFSIZE,
|
|
1596
1606
|
) -> AsyncIterator[memoryview]:
|
|
1597
|
-
m =
|
|
1607
|
+
m = to_bytes_view(b)
|
|
1598
1608
|
for i in range(0, buffer_length(m), chunksize):
|
|
1599
1609
|
yield m[i:i+chunksize]
|
|
1600
1610
|
|
|
@@ -1606,7 +1616,7 @@ def bytes_ensure_part_iter(
|
|
|
1606
1616
|
) -> Iterator[Buffer]:
|
|
1607
1617
|
n = partsize
|
|
1608
1618
|
for b in it:
|
|
1609
|
-
m =
|
|
1619
|
+
m = to_bytes_view(b)
|
|
1610
1620
|
l = buffer_length(m)
|
|
1611
1621
|
if l <= n:
|
|
1612
1622
|
yield b
|
|
@@ -1634,7 +1644,7 @@ async def bytes_ensure_part_async_iter(
|
|
|
1634
1644
|
) -> AsyncIterator[Buffer]:
|
|
1635
1645
|
n = partsize
|
|
1636
1646
|
async for b in ensure_aiter(it):
|
|
1637
|
-
m =
|
|
1647
|
+
m = to_bytes_view(b)
|
|
1638
1648
|
l = buffer_length(m)
|
|
1639
1649
|
if l <= n:
|
|
1640
1650
|
yield b
|
|
@@ -1748,7 +1758,7 @@ def copyfileobj(
|
|
|
1748
1758
|
fsrc_readinto = getattr(fsrc, "readinto", None)
|
|
1749
1759
|
if callable(fsrc_readinto):
|
|
1750
1760
|
buf = bytearray(chunksize)
|
|
1751
|
-
view =
|
|
1761
|
+
view = to_bytes_view(buf)
|
|
1752
1762
|
while size := fsrc_readinto(buf):
|
|
1753
1763
|
fdst_write(view[:size])
|
|
1754
1764
|
elif callable(fsrc_read):
|
|
@@ -1775,7 +1785,7 @@ async def copyfileobj_async(
|
|
|
1775
1785
|
if callable(fsrc_readinto):
|
|
1776
1786
|
fsrc_readinto = ensure_async(fsrc_readinto, threaded=threaded)
|
|
1777
1787
|
buf = bytearray(chunksize)
|
|
1778
|
-
view =
|
|
1788
|
+
view = to_bytes_view(buf)
|
|
1779
1789
|
while size := await fsrc_readinto(buf):
|
|
1780
1790
|
await fdst_write(view[:size])
|
|
1781
1791
|
elif callable(fsrc_read):
|
|
@@ -1816,7 +1826,7 @@ def bound_bytes_reader(
|
|
|
1816
1826
|
if f_readinto is None:
|
|
1817
1827
|
raise NotImplementedError("readinto")
|
|
1818
1828
|
if size > 0:
|
|
1819
|
-
n = f_readinto(
|
|
1829
|
+
n = f_readinto(to_bytes_view(buffer)[:size])
|
|
1820
1830
|
size -= n
|
|
1821
1831
|
return n
|
|
1822
1832
|
return 0
|
|
@@ -1851,7 +1861,7 @@ def bound_async_bytes_reader(
|
|
|
1851
1861
|
if f_readinto is None:
|
|
1852
1862
|
raise NotImplementedError("readinto")
|
|
1853
1863
|
if size > 0:
|
|
1854
|
-
n = await f_readinto(
|
|
1864
|
+
n = await f_readinto(to_bytes_view(buffer)[:size])
|
|
1855
1865
|
size -= n
|
|
1856
1866
|
return n
|
|
1857
1867
|
return 0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|