1- from collections .abc import Callable , Iterator
1+ from collections .abc import Callable
22from datetime import datetime
33from typing import Any , BinaryIO
44
55
6- class ProgressFile ( BinaryIO ) :
7- """Wraps a file object to track read progress."""
6+ class ProgressFile :
7+ """Wrap a binary file object and report upload progress as it is read ."""
88
99 def __init__ (
1010 self ,
@@ -26,70 +26,5 @@ def read(self, n: int = -1) -> bytes:
2626 self ._last_update_time = now_
2727 return data
2828
29- def fileno (self ) -> int :
30- return self ._file .fileno ()
31-
32- @property
33- def name (self ) -> str :
34- return self ._file .name
35-
36- def seek (self , offset : int , whence : int = 0 ) -> int :
37- return self ._file .seek (offset , whence )
38-
39- def tell (self ) -> int :
40- return self ._file .tell ()
41-
42- def __iter__ (self ) -> Iterator [bytes ]:
43- return self ._file .__iter__ ()
44-
45- def __next__ (self ) -> bytes :
46- return next (self ._file ) # pragma: no cover
47-
48- @property
49- def mode (self ) -> str :
50- return self ._file .mode # pragma: no cover
51-
52- def readable (self ) -> bool :
53- return self ._file .readable () # pragma: no cover
54-
55- def seekable (self ) -> bool :
56- return self ._file .seekable () # pragma: no cover
57-
58- # Methods below are just to satisfy the BinaryIO interface
59-
60- def write (self , * _args : Any , ** kwargs : Any ) -> int :
61- raise NotImplementedError () # pragma: no cover
62-
63- def readline (self , * _args : Any , ** kwargs : Any ) -> bytes :
64- raise NotImplementedError () # pragma: no cover
65-
66- def readlines (self , * _args : Any , ** kwargs : Any ) -> list [bytes ]:
67- raise NotImplementedError () # pragma: no cover
68-
69- def writelines (self , * _args : Any , ** kwargs : Any ) -> None :
70- raise NotImplementedError () # pragma: no cover
71-
72- def __enter__ (self ) -> BinaryIO :
73- raise NotImplementedError () # pragma: no cover
74-
75- def __exit__ (self , * _args : Any ) -> None :
76- raise NotImplementedError () # pragma: no cover
77-
78- def close (self ) -> None :
79- raise NotImplementedError () # pragma: no cover
80-
81- @property
82- def closed (self ) -> bool :
83- raise NotImplementedError () # pragma: no cover
84-
85- def flush (self ) -> None :
86- raise NotImplementedError () # pragma: no cover
87-
88- def isatty (self ) -> bool :
89- raise NotImplementedError () # pragma: no cover
90-
91- def writable (self ) -> bool :
92- raise NotImplementedError () # pragma: no cover
93-
94- def truncate (self , * _args : Any , ** kwargs : Any ) -> int :
95- raise NotImplementedError () # pragma: no cover
29+ def __getattr__ (self , name : str ) -> Any :
30+ return getattr (self ._file , name )
0 commit comments