24 lines
739 B
Python
24 lines
739 B
Python
|
"""Utilities for providing backward compatibility."""
|
||
|
from pip._vendor import six
|
||
|
|
||
|
|
||
|
def get_exc_info_from_future(future):
|
||
|
"""
|
||
|
Get an exc_info value from a Future.
|
||
|
|
||
|
Given a a Future instance, retrieve an exc_info value suitable for passing
|
||
|
in as the exc_info parameter to logging.Logger.log() and related methods.
|
||
|
|
||
|
On Python 2, this will be a (type, value, traceback) triple.
|
||
|
On Python 3, this will be an exception instance (with embedded traceback).
|
||
|
|
||
|
If there was no exception, None is returned on both versions of Python.
|
||
|
"""
|
||
|
if six.PY3:
|
||
|
return future.exception()
|
||
|
else:
|
||
|
ex, tb = future.exception_info()
|
||
|
if ex is None:
|
||
|
return None
|
||
|
return type(ex), ex, tb
|