File: //lib/python3/dist-packages/twisted/python/__pycache__/failure.cpython-38.pyc
U
��W[h � @ s d Z ddlmZmZmZ ddlZddlZddlZddlZddl Z ddlm
Z
ddlmZ ddl
mZmZ dadZG dd � d e�Zd$dd�Zd
ZG dd� de�Zdd� ZG dd� de�ZG dd� de�ZG dd� de�Zg Zdd� ZG dd� de�Z dd� Z!dZ"dddde j#fd d!�Z$d"d#� Z%dS )%z9
Asynchronous-friendly error mechanism.
See L{Failure}.
� )�division�absolute_import�print_functionN)�getmro)�reflect)�_PY3�NativeStringIO� c @ s e Zd ZdS )�DefaultExceptionN)�__name__�
__module__�__qualname__� r r �8/usr/lib/python3/dist-packages/twisted/python/failure.pyr
s r
�defaultc C sX |dkrt d|f ��|}|dkrL| D ] \}}}}}|d|||f � q&�n|dkr�| D ]8\}}}}}|d|||f � |dt�||��� � qXn�|dkr�| D ] \}}}}}|d |||f � q�|d
� n�|dk�rT| D ]x\}}}}}|d |||f � |d� |D ]\} }
|d
| t|
�f � �q|d� |D ]\} }
|d
| t|
�f � �q2q�dS )a�
Format and write frames.
@param frames: is a list of frames as used by Failure.frames, with
each frame being a list of
(funcName, fileName, lineNumber, locals.items(), globals.items())
@type frames: list
@param write: this will be called with formatted strings.
@type write: callable
@param detail: Four detail levels are available:
default, brief, verbose, and verbose-vars-not-captured.
C{Failure.printDetailedTraceback} uses the latter when the caller asks
for verbose, but no vars were captured, so that an explicit warning
about the missing data is shown.
@type detail: string
)r �brief�verbose�verbose-vars-not-capturedzNDetail must be default, brief, verbose, or verbose-vars-not-captured. (not %r)r z %s:%s:%s
r z File "%s", line %s, in %s
z %s
r z%s:%d: %s(...)
zA [Capture of Locals and Globals disabled (use captureVars=True)]
r z [ Locals ]
z
%s : %s
z
( Globals )
N)�
ValueError� linecache�getline�strip�repr)�frames�write�detail�w�method�filename�linenoZ localVarsZ
globalVars�name�valr r r �
format_frames# s6 ��
r"