Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

""" 

This module adds several functions for interactive source code inspection. 

""" 

 

from __future__ import print_function, division 

 

import inspect 

 

 

def source(object): 

""" 

Prints the source code of a given object. 

""" 

print('In file: %s' % inspect.getsourcefile(object)) 

print(inspect.getsource(object)) 

 

 

def get_class(lookup_view): 

""" 

Convert a string version of a class name to the object. 

 

For example, get_class('sympy.core.Basic') will return 

class Basic located in module sympy.core 

""" 

if isinstance(lookup_view, str): 

mod_name, func_name = get_mod_func(lookup_view) 

if func_name != '': 

lookup_view = getattr( 

__import__(mod_name, {}, {}, ['*']), func_name) 

if not callable(lookup_view): 

raise AttributeError( 

"'%s.%s' is not a callable." % (mod_name, func_name)) 

return lookup_view 

 

 

def get_mod_func(callback): 

""" 

splits the string path to a class into a string path to the module 

and the name of the class. For example: 

 

>>> from sympy.utilities.source import get_mod_func 

>>> get_mod_func('sympy.core.basic.Basic') 

('sympy.core.basic', 'Basic') 

 

""" 

dot = callback.rfind('.') 

if dot == -1: 

return callback, '' 

return callback[:dot], callback[dot + 1:]