2424import warnings
2525
2626
27- # XXX "deprecate" once find_module(), load_module(), and get_suffixes() are
28- # deprecated.
27+ # DEPRECATED
2928SEARCH_ERROR = 0
3029PY_SOURCE = 1
3130PY_COMPILED = 2
@@ -112,8 +111,11 @@ class _LoadSourceCompatibility(_HackedGetData, _bootstrap.SourceFileLoader):
112111 """Compatibility support for implementing load_source()."""
113112
114113
115- # XXX deprecate after better API exposed in importlib
116114def load_source (name , pathname , file = None ):
115+ msg = ('imp.load_source() is deprecated; use '
116+ 'importlib.machinery.SourceFileLoader(name, pathname).load_module()'
117+ ' instead' )
118+ warnings .warn (msg , DeprecationWarning , 2 )
117119 return _LoadSourceCompatibility (name , pathname , file ).load_module (name )
118120
119121
@@ -123,15 +125,22 @@ class _LoadCompiledCompatibility(_HackedGetData,
123125 """Compatibility support for implementing load_compiled()."""
124126
125127
126- # XXX deprecate
127128def load_compiled (name , pathname , file = None ):
129+ msg = ('imp.load_compiled() is deprecated; use '
130+ 'importlib.machinery.SourcelessFileLoader(name, pathname).'
131+ 'load_module() instead ' )
132+ warnings .warn (msg , DeprecationWarning , 2 )
128133 return _LoadCompiledCompatibility (name , pathname , file ).load_module (name )
129134
130135
131- # XXX deprecate
132136def load_package (name , path ):
137+ msg = ('imp.load_package() is deprecated; use either '
138+ 'importlib.machinery.SourceFileLoader() or '
139+ 'importlib.machinery.SourcelessFileLoader() instead' )
140+ warnings .warn (msg , DeprecationWarning , 2 )
133141 if os .path .isdir (path ):
134- extensions = machinery .SOURCE_SUFFIXES [:] + [machinery .BYTECODE_SUFFIXES ]
142+ extensions = (machinery .SOURCE_SUFFIXES [:] +
143+ machinery .BYTECODE_SUFFIXES [:])
135144 for extension in extensions :
136145 path = os .path .join (path , '__init__' + extension )
137146 if os .path .exists (path ):
@@ -149,26 +158,29 @@ def load_module(name, file, filename, details):
149158
150159 """
151160 suffix , mode , type_ = details
152- if mode and (not mode .startswith (('r' , 'U' )) or '+' in mode ):
153- raise ValueError ('invalid file open mode {!r}' .format (mode ))
154- elif file is None and type_ in {PY_SOURCE , PY_COMPILED }:
155- msg = 'file object required for import (type code {})' .format (type_ )
156- raise ValueError (msg )
157- elif type_ == PY_SOURCE :
158- return load_source (name , filename , file )
159- elif type_ == PY_COMPILED :
160- return load_compiled (name , filename , file )
161- elif type_ == PKG_DIRECTORY :
162- return load_package (name , filename )
163- elif type_ == C_BUILTIN :
164- return init_builtin (name )
165- elif type_ == PY_FROZEN :
166- return init_frozen (name )
167- else :
168- msg = "Don't know how to import {} (type code {}" .format (name , type_ )
169- raise ImportError (msg , name = name )
161+ with warnings .catch_warnings ():
162+ warnings .simplefilter ('ignore' )
163+ if mode and (not mode .startswith (('r' , 'U' )) or '+' in mode ):
164+ raise ValueError ('invalid file open mode {!r}' .format (mode ))
165+ elif file is None and type_ in {PY_SOURCE , PY_COMPILED }:
166+ msg = 'file object required for import (type code {})' .format (type_ )
167+ raise ValueError (msg )
168+ elif type_ == PY_SOURCE :
169+ return load_source (name , filename , file )
170+ elif type_ == PY_COMPILED :
171+ return load_compiled (name , filename , file )
172+ elif type_ == PKG_DIRECTORY :
173+ return load_package (name , filename )
174+ elif type_ == C_BUILTIN :
175+ return init_builtin (name )
176+ elif type_ == PY_FROZEN :
177+ return init_frozen (name )
178+ else :
179+ msg = "Don't know how to import {} (type code {}" .format (name , type_ )
180+ raise ImportError (msg , name = name )
170181
171182
183+ # XXX deprecate
172184def find_module (name , path = None ):
173185 """Search for a module.
174186
0 commit comments