python-filewrap 0.2.7__tar.gz → 0.2.8__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.2.7 → python_filewrap-0.2.8}/PKG-INFO +1 -1
- {python_filewrap-0.2.7 → python_filewrap-0.2.8}/filewrap/__init__.py +66 -59
- {python_filewrap-0.2.7 → python_filewrap-0.2.8}/pyproject.toml +1 -1
- {python_filewrap-0.2.7 → python_filewrap-0.2.8}/LICENSE +0 -0
- {python_filewrap-0.2.7 → python_filewrap-0.2.8}/filewrap/py.typed +0 -0
- {python_filewrap-0.2.7 → python_filewrap-0.2.8}/readme.md +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
4
|
__author__ = "ChenyangGao <https://chenyanggao.github.io>"
|
|
5
|
-
__version__ = (0, 2,
|
|
5
|
+
__version__ = (0, 2, 8)
|
|
6
6
|
__all__ = [
|
|
7
7
|
"SupportsRead", "SupportsReadinto", "SupportsWrite", "SupportsSeek",
|
|
8
8
|
"AsyncBufferedReader", "AsyncTextIOWrapper", "buffer_length",
|
|
@@ -640,9 +640,9 @@ class AsyncTextIOWrapper(TextIOWrapper):
|
|
|
640
640
|
if newline is None:
|
|
641
641
|
text_new = CRE_NOT_UNIX_NEWLINES.sub("\n", text_new)
|
|
642
642
|
self._text = ""
|
|
643
|
-
return text_new
|
|
643
|
+
return text + text_new
|
|
644
644
|
|
|
645
|
-
ls_parts = [
|
|
645
|
+
ls_parts: list[str] = []
|
|
646
646
|
add_part = ls_parts.append
|
|
647
647
|
|
|
648
648
|
def process_part(data, errors="strict", /) -> int:
|
|
@@ -719,14 +719,29 @@ class AsyncTextIOWrapper(TextIOWrapper):
|
|
|
719
719
|
idx += 1
|
|
720
720
|
return idx
|
|
721
721
|
if size > 0:
|
|
722
|
-
text
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
722
|
+
if text := self._text:
|
|
723
|
+
if stop := find_stop(text):
|
|
724
|
+
stop = min(stop, size)
|
|
725
|
+
self._text = text[stop:]
|
|
726
|
+
return text[:stop]
|
|
727
|
+
elif size <= len(text):
|
|
728
|
+
self._text = text[size:]
|
|
729
|
+
return text[:size]
|
|
730
|
+
self._text = ""
|
|
731
|
+
size -= len(text)
|
|
732
|
+
text_new = await self.read(size)
|
|
733
|
+
stop = find_stop(text_new)
|
|
734
|
+
if not stop or stop == len(text_new):
|
|
735
|
+
return text + text_new
|
|
736
|
+
self._text = text_new[stop:] + self._text
|
|
737
|
+
return text + text_new[:stop]
|
|
728
738
|
else:
|
|
729
|
-
|
|
739
|
+
if text := self._text:
|
|
740
|
+
if stop := find_stop(text):
|
|
741
|
+
self._text = text[stop:]
|
|
742
|
+
return text[:stop]
|
|
743
|
+
self._text = ""
|
|
744
|
+
ls_part: list[str] = [text]
|
|
730
745
|
add_part = ls_part.append
|
|
731
746
|
while text := await self.read(READ_BUFSIZE):
|
|
732
747
|
if stop := find_stop(text):
|
|
@@ -1260,28 +1275,28 @@ def bytes_iter_to_reader(
|
|
|
1260
1275
|
if at_end or not (bufsize := buffer_length(buf)):
|
|
1261
1276
|
return 0
|
|
1262
1277
|
with lock:
|
|
1263
|
-
n
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1278
|
+
if n := buffer_length(unconsumed):
|
|
1279
|
+
if bufsize <= n:
|
|
1280
|
+
buf[:], unconsumed = unconsumed[:bufsize], unconsumed[bufsize:]
|
|
1281
|
+
pos += bufsize
|
|
1282
|
+
return bufsize
|
|
1283
|
+
buf[:n] = unconsumed
|
|
1284
|
+
pos += n
|
|
1285
|
+
del unconsumed[:]
|
|
1270
1286
|
try:
|
|
1271
1287
|
while True:
|
|
1272
|
-
b
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
n = m
|
|
1288
|
+
if b := memoryview(getnext()):
|
|
1289
|
+
m = n + len(b)
|
|
1290
|
+
if m >= bufsize:
|
|
1291
|
+
delta = bufsize - n
|
|
1292
|
+
buf[n:] = b[:delta]
|
|
1293
|
+
unconsumed += b[delta:]
|
|
1294
|
+
pos += delta
|
|
1295
|
+
return bufsize
|
|
1296
|
+
else:
|
|
1297
|
+
buf[n:m] = b
|
|
1298
|
+
pos += len(b)
|
|
1299
|
+
n = m
|
|
1285
1300
|
except StopIteration:
|
|
1286
1301
|
at_end = True
|
|
1287
1302
|
return n
|
|
@@ -1386,15 +1401,7 @@ def bytes_iter_to_async_reader(
|
|
|
1386
1401
|
except:
|
|
1387
1402
|
pass
|
|
1388
1403
|
def close():
|
|
1389
|
-
|
|
1390
|
-
try:
|
|
1391
|
-
method = getattr(it, "aclose")
|
|
1392
|
-
except AttributeError:
|
|
1393
|
-
method = getattr(it, "close")
|
|
1394
|
-
ret = method()
|
|
1395
|
-
if isawaitable(ret):
|
|
1396
|
-
run_async(ret)
|
|
1397
|
-
at_end = True
|
|
1404
|
+
run_async(aclose())
|
|
1398
1405
|
async def aclose():
|
|
1399
1406
|
nonlocal at_end
|
|
1400
1407
|
try:
|
|
@@ -1437,28 +1444,28 @@ def bytes_iter_to_async_reader(
|
|
|
1437
1444
|
if at_end or not (bufsize := buffer_length(buf)):
|
|
1438
1445
|
return 0
|
|
1439
1446
|
async with lock:
|
|
1440
|
-
n
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
+
if n := buffer_length(unconsumed):
|
|
1448
|
+
if bufsize <= n:
|
|
1449
|
+
buf[:], unconsumed = unconsumed[:bufsize], unconsumed[bufsize:]
|
|
1450
|
+
pos += bufsize
|
|
1451
|
+
return bufsize
|
|
1452
|
+
buf[:n] = unconsumed
|
|
1453
|
+
pos += n
|
|
1454
|
+
del unconsumed[:]
|
|
1447
1455
|
try:
|
|
1448
1456
|
while True:
|
|
1449
|
-
b
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
n = m
|
|
1457
|
+
if b := memoryview(await getnext()):
|
|
1458
|
+
m = n + len(b)
|
|
1459
|
+
if m >= bufsize:
|
|
1460
|
+
delta = bufsize - n
|
|
1461
|
+
buf[n:] = b[:delta]
|
|
1462
|
+
unconsumed += b[delta:]
|
|
1463
|
+
pos += delta
|
|
1464
|
+
return bufsize
|
|
1465
|
+
else:
|
|
1466
|
+
buf[n:m] = b
|
|
1467
|
+
pos += len(b)
|
|
1468
|
+
n = m
|
|
1462
1469
|
except (StopIteration, StopAsyncIteration):
|
|
1463
1470
|
at_end = True
|
|
1464
1471
|
return n
|
|
File without changes
|
|
File without changes
|
|
File without changes
|