ficapy
7/1/2016 - 8:46 AM

打印模块的异常结构

打印模块的异常结构

BaseException
	Exception
		OSError
			RequestException
				ConnectionError
					ConnectTimeout
				Timeout
					ReadTimeout
				HTTPError
				TooManyRedirects
				URLRequired
		Warning
			HTTPWarning
				DependencyWarning
			RequestsWarning
				FileModeWarning
import requests
import inspect
from collections import defaultdict


def _tree(): return defaultdict(_tree)


tree = _tree()


def getitem(tree,seq):
    tree = tree
    for i in seq:
        tree = tree.__getitem__(i)


def classtree(cls):
    ret = []

    def inner(cls):
        if cls is object:
            return
        ret.append(cls.__name__)
        inner(cls.__base__)

    inner(cls)
    getitem(tree,reversed(ret))


def pretty(d, indent=0):
    for key, value in d.items():
        print('\t' * indent + str(key))
        if isinstance(value, dict):
            pretty(value, indent + 1)
        else:
            print('\t' * (indent + 1) + str(value))

def main(requests):
    for i in dir(requests):
        if inspect.isclass(getattr(requests, i)):
            ret = issubclass(getattr(requests, i), BaseException)
            if ret:
                classtree(getattr(requests, i))

    pretty(dict(tree))

if __name__ == '__main__':
    main(requests)