66# License: 3-clause BSD.  The full license text is available at: 
77#  - https://github.com/uqfoundation/dill/blob/master/LICENSE 
88
9- from  dill .source  import  getsource , getname , _wrap , likely_import 
10- from  dill .source  import  getimportable 
9+ from  dill .source  import  getsource , getname , _wrap , getimport 
10+ from  dill .source  import  importable 
1111from  dill ._dill  import  IS_PYPY 
1212
1313import  sys 
@@ -55,31 +55,31 @@ def test_getsource():
5555
5656# test itself 
5757def  test_itself ():
58-   assert  likely_import ( likely_import )== 'from dill.source import likely_import \n ' 
58+   assert  getimport ( getimport )== 'from dill.source import getimport \n ' 
5959
6060# builtin functions and objects 
6161def  test_builtin ():
62-   assert  likely_import (pow ) ==  'pow\n ' 
63-   assert  likely_import (100 ) ==  '100\n ' 
64-   assert  likely_import (True ) ==  'True\n ' 
65-   assert  likely_import (pow , explicit = True ) ==  'from builtins import pow\n ' 
66-   assert  likely_import (100 , explicit = True ) ==  '100\n ' 
67-   assert  likely_import (True , explicit = True ) ==  'True\n ' 
62+   assert  getimport (pow ) ==  'pow\n ' 
63+   assert  getimport (100 ) ==  '100\n ' 
64+   assert  getimport (True ) ==  'True\n ' 
65+   assert  getimport (pow , builtin = True ) ==  'from builtins import pow\n ' 
66+   assert  getimport (100 , builtin = True ) ==  '100\n ' 
67+   assert  getimport (True , builtin = True ) ==  'True\n ' 
6868  # this is kinda BS... you can't import a None 
69-   assert  likely_import (None ) ==  'None\n ' 
70-   assert  likely_import (None , explicit = True ) ==  'None\n ' 
69+   assert  getimport (None ) ==  'None\n ' 
70+   assert  getimport (None , builtin = True ) ==  'None\n ' 
7171
7272
7373# other imported functions 
7474def  test_imported ():
7575  from  math  import  sin 
76-   assert  likely_import (sin ) ==  'from math import sin\n ' 
76+   assert  getimport (sin ) ==  'from math import sin\n ' 
7777
7878# interactively defined functions 
7979def  test_dynamic ():
80-   assert  likely_import (add ) ==  'from %s import add\n '  %  __name__ 
80+   assert  getimport (add ) ==  'from %s import add\n '  %  __name__ 
8181  # interactive lambdas 
82-   assert  likely_import (squared ) ==  'from %s import squared\n '  %  __name__ 
82+   assert  getimport (squared ) ==  'from %s import squared\n '  %  __name__ 
8383
8484# classes and class instances 
8585def  test_classes ():
@@ -88,61 +88,61 @@ def test_classes():
8888  x  =  y  if  (IS_PYPY  or  sys .hexversion  >=  PY310b ) else  "from io import BytesIO\n " 
8989  s  =  StringIO ()
9090
91-   assert  likely_import (StringIO ) ==  x 
92-   assert  likely_import (s ) ==  y 
91+   assert  getimport (StringIO ) ==  x 
92+   assert  getimport (s ) ==  y 
9393  # interactively defined classes and class instances 
94-   assert  likely_import (Foo ) ==  'from %s import Foo\n '  %  __name__ 
95-   assert  likely_import (_foo ) ==  'from %s import Foo\n '  %  __name__ 
94+   assert  getimport (Foo ) ==  'from %s import Foo\n '  %  __name__ 
95+   assert  getimport (_foo ) ==  'from %s import Foo\n '  %  __name__ 
9696
9797
98- # test getimportable  
98+ # test importable  
9999def  test_importable ():
100-   assert  getimportable (add ) ==  'from %s import add\n '  %  __name__ 
101-   assert  getimportable (squared ) ==  'from %s import squared\n '  %  __name__ 
102-   assert  getimportable (Foo ) ==  'from %s import Foo\n '  %  __name__ 
103-   assert  getimportable (Foo .bar ) ==  'from %s import bar\n '  %  __name__ 
104-   assert  getimportable (_foo .bar ) ==  'from %s import bar\n '  %  __name__ 
105-   assert  getimportable (None ) ==  'None\n ' 
106-   assert  getimportable (100 ) ==  '100\n ' 
107- 
108-   assert  getimportable (add , byname = False ) ==  'def add(x,y):\n   return x+y\n ' 
109-   assert  getimportable (squared , byname = False ) ==  'squared = lambda x:x**2\n ' 
110-   assert  getimportable (None , byname = False ) ==  'None\n ' 
111-   assert  getimportable (Bar , byname = False ) ==  'class Bar:\n   pass\n ' 
112-   assert  getimportable (Foo , byname = False ) ==  'class Foo(object):\n   def bar(self, x):\n     return x*x+x\n ' 
113-   assert  getimportable (Foo .bar , byname = False ) ==  'def bar(self, x):\n   return x*x+x\n ' 
114-   assert  getimportable (Foo .bar , byname = True ) ==  'from %s import bar\n '  %  __name__ 
115-   assert  getimportable (Foo .bar , alias = 'memo' , byname = True ) ==  'from %s import bar as memo\n '  %  __name__ 
116-   assert  getimportable (Foo , alias = 'memo' , byname = True ) ==  'from %s import Foo as memo\n '  %  __name__ 
117-   assert  getimportable (squared , alias = 'memo' , byname = True ) ==  'from %s import squared as memo\n '  %  __name__ 
118-   assert  getimportable (squared , alias = 'memo' , byname = False ) ==  'memo = squared = lambda x:x**2\n ' 
119-   assert  getimportable (add , alias = 'memo' , byname = False ) ==  'def add(x,y):\n   return x+y\n \n memo = add\n ' 
120-   assert  getimportable (None , alias = 'memo' , byname = False ) ==  'memo = None\n ' 
121-   assert  getimportable (100 , alias = 'memo' , byname = False ) ==  'memo = 100\n ' 
122-   assert  getimportable (add , explicit = True ) ==  'from %s import add\n '  %  __name__ 
123-   assert  getimportable (squared , explicit = True ) ==  'from %s import squared\n '  %  __name__ 
124-   assert  getimportable (Foo , explicit = True ) ==  'from %s import Foo\n '  %  __name__ 
125-   assert  getimportable (Foo .bar , explicit = True ) ==  'from %s import bar\n '  %  __name__ 
126-   assert  getimportable (_foo .bar , explicit = True ) ==  'from %s import bar\n '  %  __name__ 
127-   assert  getimportable (None , explicit = True ) ==  'None\n ' 
128-   assert  getimportable (100 , explicit = True ) ==  '100\n ' 
100+   assert  importable (add ,  source = False ) ==  'from %s import add\n '  %  __name__ 
101+   assert  importable (squared ,  source = False ) ==  'from %s import squared\n '  %  __name__ 
102+   assert  importable (Foo ,  source = False ) ==  'from %s import Foo\n '  %  __name__ 
103+   assert  importable (Foo .bar ,  source = False ) ==  'from %s import bar\n '  %  __name__ 
104+   assert  importable (_foo .bar ,  source = False ) ==  'from %s import bar\n '  %  __name__ 
105+   assert  importable (None ,  source = False ) ==  'None\n ' 
106+   assert  importable (100 ,  source = False ) ==  '100\n ' 
107+ 
108+   assert  importable (add , source = True ) ==  'def add(x,y):\n   return x+y\n ' 
109+   assert  importable (squared , source = True ) ==  'squared = lambda x:x**2\n ' 
110+   assert  importable (None , source = True ) ==  'None\n ' 
111+   assert  importable (Bar , source = True ) ==  'class Bar:\n   pass\n ' 
112+   assert  importable (Foo , source = True ) ==  'class Foo(object):\n   def bar(self, x):\n     return x*x+x\n ' 
113+   assert  importable (Foo .bar , source = True ) ==  'def bar(self, x):\n   return x*x+x\n ' 
114+   assert  importable (Foo .bar , source = False ) ==  'from %s import bar\n '  %  __name__ 
115+   assert  importable (Foo .bar , alias = 'memo' , source = False ) ==  'from %s import bar as memo\n '  %  __name__ 
116+   assert  importable (Foo , alias = 'memo' , source = False ) ==  'from %s import Foo as memo\n '  %  __name__ 
117+   assert  importable (squared , alias = 'memo' , source = False ) ==  'from %s import squared as memo\n '  %  __name__ 
118+   assert  importable (squared , alias = 'memo' , source = True ) ==  'memo = squared = lambda x:x**2\n ' 
119+   assert  importable (add , alias = 'memo' , source = True ) ==  'def add(x,y):\n   return x+y\n \n memo = add\n ' 
120+   assert  importable (None , alias = 'memo' , source = True ) ==  'memo = None\n ' 
121+   assert  importable (100 , alias = 'memo' , source = True ) ==  'memo = 100\n ' 
122+   assert  importable (add , builtin = True ,  source = False ) ==  'from %s import add\n '  %  __name__ 
123+   assert  importable (squared , builtin = True ,  source = False ) ==  'from %s import squared\n '  %  __name__ 
124+   assert  importable (Foo , builtin = True ,  source = False ) ==  'from %s import Foo\n '  %  __name__ 
125+   assert  importable (Foo .bar , builtin = True ,  source = False ) ==  'from %s import bar\n '  %  __name__ 
126+   assert  importable (_foo .bar , builtin = True ,  source = False ) ==  'from %s import bar\n '  %  __name__ 
127+   assert  importable (None , builtin = True ,  source = False ) ==  'None\n ' 
128+   assert  importable (100 , builtin = True ,  source = False ) ==  '100\n ' 
129129
130130
131131def  test_numpy ():
132132  try :
133133    import  numpy  as  np 
134134    y  =  np .array 
135135    x  =  y ([1 ,2 ,3 ])
136-     assert  getimportable ( x ) ==  'from numpy import array\n array([1, 2, 3])\n ' 
137-     assert  getimportable ( y ) ==  'from %s import array\n '  %  y .__module__ 
138-     assert  getimportable (x , byname = False ) ==  'from numpy import array\n array([1, 2, 3])\n ' 
139-     assert  getimportable (y , byname = False ) ==  'from %s import array\n '  %  y .__module__ 
136+     assert  importable ( x ,  source = False ) ==  'from numpy import array\n array([1, 2, 3])\n ' 
137+     assert  importable ( y ,  source = False ) ==  'from %s import array\n '  %  y .__module__ 
138+     assert  importable (x , source = True ) ==  'from numpy import array\n array([1, 2, 3])\n ' 
139+     assert  importable (y , source = True ) ==  'from %s import array\n '  %  y .__module__ 
140140    y  =  np .int64 
141141    x  =  y (0 )
142-     assert  getimportable ( x ) ==  'from numpy import int64\n int64(0)\n ' 
143-     assert  getimportable ( y ) ==  'from %s import int64\n '  %  y .__module__ 
144-     assert  getimportable (x , byname = False ) ==  'from numpy import int64\n int64(0)\n ' 
145-     assert  getimportable (y , byname = False ) ==  'from %s import int64\n '  %  y .__module__ 
142+     assert  importable ( x ,  source = False ) ==  'from numpy import int64\n int64(0)\n ' 
143+     assert  importable ( y ,  source = False ) ==  'from %s import int64\n '  %  y .__module__ 
144+     assert  importable (x , source = True ) ==  'from numpy import int64\n int64(0)\n ' 
145+     assert  importable (y , source = True ) ==  'from %s import int64\n '  %  y .__module__ 
146146    y  =  np .bool_ 
147147    x  =  y (0 )
148148    import  warnings 
@@ -151,15 +151,15 @@ def test_numpy():
151151        warnings .filterwarnings ('ignore' , category = DeprecationWarning )
152152        if  hasattr (np , 'bool' ): b  =  'bool_'  if  np .bool  is  bool  else  'bool' 
153153        else : b  =  'bool_' 
154-     assert  getimportable ( x ) ==  'from numpy import %s\n %s(False)\n '  %  (b ,b )
155-     assert  getimportable ( y ) ==  'from %s import %s\n '  %  (y .__module__ ,b )
156-     assert  getimportable (x , byname = False ) ==  'from numpy import %s\n %s(False)\n '  %  (b ,b )
157-     assert  getimportable (y , byname = False ) ==  'from %s import %s\n '  %  (y .__module__ ,b )
154+     assert  importable ( x ,  source = False ) ==  'from numpy import %s\n %s(False)\n '  %  (b ,b )
155+     assert  importable ( y ,  source = False ) ==  'from %s import %s\n '  %  (y .__module__ ,b )
156+     assert  importable (x , source = True ) ==  'from numpy import %s\n %s(False)\n '  %  (b ,b )
157+     assert  importable (y , source = True ) ==  'from %s import %s\n '  %  (y .__module__ ,b )
158158  except  ImportError : pass 
159159
160- #NOTE: if before likely_import (pow), will cause pow to throw AssertionError 
160+ #NOTE: if before getimport (pow), will cause pow to throw AssertionError 
161161def  test_foo ():
162-   assert  getimportable (_foo , byname = False ).startswith ("import dill\n class Foo(object):\n   def bar(self, x):\n     return x*x+x\n dill.loads(" )
162+   assert  importable (_foo , source = True ).startswith ("import dill\n class Foo(object):\n   def bar(self, x):\n     return x*x+x\n dill.loads(" )
163163
164164if  __name__  ==  '__main__' :
165165    test_getsource ()
0 commit comments