@@ -102,7 +102,8 @@ def _test():
102102import  sys 
103103import  traceback 
104104import  unittest 
105- from  io  import  StringIO , IncrementalNewlineDecoder 
105+ import  importlib .resources 
106+ from  io  import  StringIO 
106107from  collections  import  namedtuple 
107108import  _colorize   # Used in doctests 
108109from  _colorize  import  ANSIColors , can_colorize 
@@ -235,25 +236,31 @@ def _normalize_module(module, depth=2):
235236    else :
236237        raise  TypeError ("Expected a module, string, or None" )
237238
238- def  _newline_convert (data ):
239-     # The IO module provides a handy decoder for universal newline conversion 
240-     return  IncrementalNewlineDecoder (None , True ).decode (data , True )
241- 
242239def  _load_testfile (filename , package , module_relative , encoding ):
243240    if  module_relative :
244241        package  =  _normalize_module (package , 3 )
245242        filename  =  _module_relative_path (package , filename )
246-         if  (loader  :=  getattr (package , '__loader__' , None )) is  None :
247-             try :
248-                 loader  =  package .__spec__ .loader 
249-             except  AttributeError :
250-                 pass 
251-         if  hasattr (loader , 'get_data' ):
252-             file_contents  =  loader .get_data (filename )
253-             file_contents  =  file_contents .decode (encoding )
254-             # get_data() opens files as 'rb', so one must do the equivalent 
255-             # conversion as universal newlines would do. 
256-             return  _newline_convert (file_contents ), filename 
243+         try :
244+             loader  =  package .__loader__ 
245+         except  AttributeError :
246+             pass 
247+         else :
248+             if  loader  is  not None :
249+                 return  (
250+                     importlib .resources .read_text (package , filename , encoding = encoding ),
251+                     filename ,
252+                 )
253+ 
254+         try :
255+             package .__spec__ .loader 
256+         except  AttributeError :
257+             pass 
258+         else :
259+             return  (
260+                 importlib .resources .read_text (package , filename , encoding = encoding ),
261+                 filename ,
262+             )
263+ 
257264    with  open (filename , encoding = encoding ) as  f :
258265        return  f .read (), filename 
259266
0 commit comments