python-httpfile 0.0.4__tar.gz → 0.0.4.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-httpfile
3
- Version: 0.0.4
3
+ Version: 0.0.4.1
4
4
  Summary: Python httpfile.
5
5
  Home-page: https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/python-httpfile
6
6
  License: MIT
@@ -253,7 +253,16 @@ class HTTPFileReader(RawIOBase, BinaryIO):
253
253
  return 0
254
254
  if self.file_closed:
255
255
  self.reconnect()
256
- size = self.file.readinto(buffer)
256
+ try:
257
+ readinto = self.file.readinto
258
+ except AttributeError:
259
+ read = self.file.read
260
+ def readinto(buffer, /):
261
+ data = read(len(buffer))
262
+ size = len(data)
263
+ buffer[:size] = data
264
+ return data
265
+ size = readinto(buffer)
257
266
  if size:
258
267
  self._add_start(size)
259
268
  return size
@@ -265,6 +274,7 @@ class HTTPFileReader(RawIOBase, BinaryIO):
265
274
  return b""
266
275
  if self.file_closed:
267
276
  self.reconnect()
277
+ # TODO: if no readline method, give a default impl
268
278
  if size is None or size < 0:
269
279
  data = self.file.readline()
270
280
  else:
@@ -280,6 +290,7 @@ class HTTPFileReader(RawIOBase, BinaryIO):
280
290
  return []
281
291
  if self.file_closed:
282
292
  self.reconnect()
293
+ # TODO: if no readlines method, give a default impl
283
294
  ls = self.file.readlines(hint)
284
295
  if ls:
285
296
  self._add_start(sum(map(len, ls)))
@@ -520,7 +531,7 @@ class AsyncHTTPFileReader(HTTPFileReader):
520
531
  headers: None | Mapping = None,
521
532
  start: int = 0,
522
533
  seek_threshold: int = 1 << 20,
523
- urlopen = urlopen,
534
+ urlopen = None,
524
535
  ):
525
536
  run_async(self.__ainit__(
526
537
  url=url,
@@ -631,10 +642,11 @@ class AsyncHTTPFileReader(HTTPFileReader):
631
642
  return b""
632
643
  if self.file_closed:
633
644
  await self.reconnect()
645
+ read = ensure_async(self.file.read, threaded=True)
634
646
  if size is None or size < 0:
635
- data = await ensure_async(self.file.read, threaded=True)()
647
+ data = await read(-1)
636
648
  else:
637
- data = await ensure_async(self.file.read, threaded=True)(size)
649
+ data = await read(size)
638
650
  if data:
639
651
  self._add_start(len(data))
640
652
  return data
@@ -646,7 +658,16 @@ class AsyncHTTPFileReader(HTTPFileReader):
646
658
  return 0
647
659
  if self.file_closed:
648
660
  await self.reconnect()
649
- size = await ensure_async(self.file.readinto, threaded=True)(buffer)
661
+ try:
662
+ readinto = ensure_async(self.file.readinto, threaded=True)
663
+ except AttributeError:
664
+ read = ensure_async(self.file.read, threaded=True)
665
+ async def readinto(buffer, /):
666
+ data = await read(len(buffer))
667
+ size = len(data)
668
+ buffer[:size] = data
669
+ return size
670
+ size = await readinto(buffer)
650
671
  if size:
651
672
  self._add_start(size)
652
673
  return size
@@ -658,6 +679,7 @@ class AsyncHTTPFileReader(HTTPFileReader):
658
679
  return b""
659
680
  if self.file_closed:
660
681
  await self.reconnect()
682
+ # TODO: if no readline method, give a default impl
661
683
  if size is None or size < 0:
662
684
  data = await ensure_async(self.file.readline, threaded=True)()
663
685
  else:
@@ -673,6 +695,7 @@ class AsyncHTTPFileReader(HTTPFileReader):
673
695
  return []
674
696
  if self.file_closed:
675
697
  await self.reconnect()
698
+ # TODO: if no readlines method, give a default impl
676
699
  ls = await ensure_async(self.file.readlines, threaded=True)(hint)
677
700
  if ls:
678
701
  self._add_start(sum(map(len, ls)))
@@ -1197,4 +1220,5 @@ if find_spec("httpx"):
1197
1220
  __all__.append("HttpxFileReader")
1198
1221
  __all__.append("AsyncHttpxFileReader")
1199
1222
 
1223
+ # TODO: 增加 blacksheep 的 HTTPFileReader
1200
1224
  # TODO: 设计实现一个 HTTPFileWriter,用于实现上传,关闭后视为上传完成
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "python-httpfile"
3
- version = "0.0.4"
3
+ version = "0.0.4.1"
4
4
  description = "Python httpfile."
5
5
  authors = ["ChenyangGao <wosiwujm@gmail.com>"]
6
6
  license = "MIT"