@@ -113,63 +113,71 @@ class FileLoader(_bootstrap_external.FileLoader, ResourceLoader, ExecutionLoader
113113 def get_filename (self , name : str | None = None ) -> str : ...
114114 def load_module (self , name : str | None = None ) -> types .ModuleType : ...
115115
116- class ResourceReader (metaclass = ABCMeta ):
117- @abstractmethod
118- def open_resource (self , resource : str ) -> IO [bytes ]: ...
119- @abstractmethod
120- def resource_path (self , resource : str ) -> str : ...
121- if sys .version_info >= (3 , 10 ):
116+ if sys .version_info < (3 , 11 ):
117+ class ResourceReader (metaclass = ABCMeta ):
122118 @abstractmethod
123- def is_resource (self , path : str ) -> bool : ...
124- else :
119+ def open_resource (self , resource : str ) -> IO [bytes ]: ...
125120 @abstractmethod
126- def is_resource (self , name : str ) -> bool : ...
121+ def resource_path (self , resource : str ) -> str : ...
122+ if sys .version_info >= (3 , 10 ):
123+ @abstractmethod
124+ def is_resource (self , path : str ) -> bool : ...
125+ else :
126+ @abstractmethod
127+ def is_resource (self , name : str ) -> bool : ...
127128
128- @abstractmethod
129- def contents (self ) -> Iterator [str ]: ...
129+ @abstractmethod
130+ def contents (self ) -> Iterator [str ]: ...
130131
131- @runtime_checkable
132- class Traversable (Protocol ):
133- @abstractmethod
134- def is_dir (self ) -> bool : ...
135- @abstractmethod
136- def is_file (self ) -> bool : ...
137- @abstractmethod
138- def iterdir (self ) -> Iterator [Traversable ]: ...
139- if sys .version_info >= (3 , 11 ):
132+ @runtime_checkable
133+ class Traversable (Protocol ):
140134 @abstractmethod
141- def joinpath (self , * descendants : str ) -> Traversable : ...
142- else :
135+ def is_dir (self ) -> bool : ...
143136 @abstractmethod
144- def joinpath (self , child : str , / ) -> Traversable : ...
145-
146- # The documentation and runtime protocol allows *args, **kwargs arguments,
147- # but this would mean that all implementers would have to support them,
148- # which is not the case.
149- @ overload
150- @ abstractmethod
151- def open ( self , mode : Literal [ "r" ] = "r" , * , encoding : str | None = None , errors : str | None = None ) -> IO [ str ]: ...
152- @ overload
153- @ abstractmethod
154- def open ( self , mode : Literal [ "rb" ]) -> IO [ bytes ]: ...
155- @ property
156- @ abstractmethod
157- def name ( self ) -> str : ...
158- if sys . version_info >= ( 3 , 10 ):
159- def __truediv__ (self , child : str , / ) -> Traversable : ...
160- else :
137+ def is_file (self ) -> bool : ...
138+ @ abstractmethod
139+ def iterdir ( self ) -> Iterator [ Traversable ]: ...
140+ if sys . version_info >= ( 3 , 11 ):
141+ @ abstractmethod
142+ def joinpath ( self , * descendants : str ) -> Traversable : ...
143+ else :
144+ @ abstractmethod
145+ def joinpath ( self , child : str , / ) -> Traversable : ...
146+
147+ # The documentation and runtime protocol allows *args, **kwargs arguments,
148+ # but this would mean that all implementers would have to support them,
149+ # which is not the case.
150+ @ overload
151+ @ abstractmethod
152+ def open (self , mode : Literal [ "r" ] = "r" , * , encoding : str | None = None , errors : str | None = None ) -> IO [ str ] : ...
153+ @ overload
161154 @abstractmethod
162- def __truediv__ (self , child : str , / ) -> Traversable : ...
155+ def open (self , mode : Literal ["rb" ]) -> IO [bytes ]: ...
156+ @property
157+ @abstractmethod
158+ def name (self ) -> str : ...
159+ if sys .version_info >= (3 , 10 ):
160+ def __truediv__ (self , child : str , / ) -> Traversable : ...
161+ else :
162+ @abstractmethod
163+ def __truediv__ (self , child : str , / ) -> Traversable : ...
163164
164- @abstractmethod
165- def read_bytes (self ) -> bytes : ...
166- @abstractmethod
167- def read_text (self , encoding : str | None = None ) -> str : ...
165+ @abstractmethod
166+ def read_bytes (self ) -> bytes : ...
167+ @abstractmethod
168+ def read_text (self , encoding : str | None = None ) -> str : ...
168169
169- class TraversableResources (ResourceReader ):
170- @abstractmethod
171- def files (self ) -> Traversable : ...
172- def open_resource (self , resource : str ) -> BufferedReader : ...
173- def resource_path (self , resource : Any ) -> str : ...
174- def is_resource (self , path : str ) -> bool : ...
175- def contents (self ) -> Iterator [str ]: ...
170+ class TraversableResources (ResourceReader ):
171+ @abstractmethod
172+ def files (self ) -> Traversable : ...
173+ def open_resource (self , resource : str ) -> BufferedReader : ...
174+ def resource_path (self , resource : Any ) -> str : ...
175+ def is_resource (self , path : str ) -> bool : ...
176+ def contents (self ) -> Iterator [str ]: ...
177+
178+ elif sys .version_info < (3 , 14 ):
179+ from importlib .resources .abc import (
180+ ResourceReader as ResourceReader ,
181+ Traversable as Traversable ,
182+ TraversableResources as TraversableResources ,
183+ )
0 commit comments