�`^c@sSdZddlZddlZddlZddddddgZdd d
�Zddd�ZeZdd�Z d
e
d
ddd�Ze
ddd�Zd�Z
defd��YZd�Zd�Zd�Zd�Zdd d�Zdddd�Zdefd��YZdefd��YZeZy>ddlmZmZmZmZmZeZeZ e!ZWn#e"k
r�gZdZiZ nXeej#�esLe$e%gZ&ej'r�ej(j)r�e&j*e+�nxe&D]Z,edd e,�q�ej(j-Z-e-d krd!Z.ne-r-dZ.ndZ.ee.d e/d"d �n[dS(#s&Python part of the warnings subsystem.i�Ntwarntshowwarningt
formatwarningtfilterwarningst
resetwarningstcatch_warningsicCs9tjr5|dkrt}nt|||d�ndS(s�Issue a deprecation warning for Python 3.x related changes.
Warnings are omitted unless Python is started with the -3 option.
iN(tsystpy3kwarningtNonetDeprecationWarningR(tmessagetcategoryt
stacklevel((s/sys/lib/python2.7/warnings.pytwarnpy3ks cCsS|dkrtj}ny#|jt|||||��Wntk
rNnXdS(s7Hook to write a warning to a file; replace if you like.N(RRtstderrtwriteRtIOError(R
Rtfilenametlinenotfiletline((s/sys/lib/python2.7/warnings.pyt
_show_warnings#
cCsdd|||j|f}|dkr7tj||�n|}|r`|j�}|d|7}n|S(s.Function to format a warning the standard way.s%s:%s: %s: %s
s %s
N(t__name__Rt linecachetgetlinetstrip(R
RRRRts((s/sys/lib/python2.7/warnings.pyR$s$ticCsddl}|dks+td |f��t|t�sFtd
��t|ttjf�sjtd��t|t�s�td��t|t�s�td
��t|t �r�|dks�td��||j
||j�||j
|�|f}|r
tj
|�ntjd|�dS(s�Insert an entry into the list of warnings filters (at the front).
'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'message' -- a regex that the warning message must match
'category' -- a class that the warning must be a subclass of
'module' -- a regex that the module name must match
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
i�Nterrortignoretalwaystdefaulttmoduletoncesinvalid action: %rsmessage must be a stringscategory must be a classs#category must be a Warning subclasssmodule must be a stringislineno must be an int >= 0(serrorsignoresalwayssdefaultsmodulesonce(tretAssertionErrort
isinstancet
basestringttypettypest ClassTypet
issubclasstWarningtinttcompiletItfilterstappendtinsert(tactionR
RR RR/R"titem((s/sys/lib/python2.7/warnings.pyR-s cCs�|dkstd|f��t|t�r:|dksFtd ��|d
|d
|f}|rqtj|�ntjd|�d
S(s�Insert a simple entry into the list of warnings filters (at the front).
A simple filter matches all modules and messages.
'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'category' -- a class that the warning must be a subclass of
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
RRRRR R!sinvalid action: %rislineno must be an int >= 0N(serrorsignoresalwayssdefaultsmodulesonce(R#R$R+RR.R/R0(R1RRR/R2((s/sys/lib/python2.7/warnings.pytsimplefilterJs
cCsgt(dS(sAClear the list of warning filters, so that no filters are active.N(R.(((s/sys/lib/python2.7/warnings.pyR^st_OptionErrorcBseZdZRS(s,Exception used by option processing helpers.(Rt
__module__t__doc__(((s/sys/lib/python2.7/warnings.pyR4bscCsLxE|D]=}yt|�Wqtk
rC}tjdI|IJqXqWdS(NsInvalid -W option ignored:(t
_setoptionR4RR(targstargtmsg((s/sys/lib/python2.7/warnings.pyt_processoptionsgs
c Cs[ddl}|jd�}t|�dkrCtd|f��nx#t|�dkrh|jd�qFWg|D]}|j�^qp\}}}}}t|�}|j|�}t|�}|j|�}|r�d}n|r;y%t |�}|dkr
t
�nWqAt
tfk
r7td|f��qAXnd}t|||||�dS( Ni�t:istoo many fields (max 5): %rRt$isinvalid lineno %r(
R"tsplittlenR4R/Rt
_getactiontescapet_getcategoryR+t
ValueErrort
OverflowErrorR( R9R"tpartsRR1R
RR R((s/sys/lib/python2.7/warnings.pyR7os.+
cCsU|s
dS|dkrdSx!d D]}|j|�r!|Sq!Wtd|f��dS(
NRtallRRR R!Rsinvalid action: %r(sdefaultsalwayssignoresmodulesonceserror(t
startswithR4(R1ta((s/sys/lib/python2.7/warnings.pyR@�s
cCs/ddl}|stS|jd|�rbyt|�}Wqtk
r^td|f��qXn�|jd�}|| }||d}yt|dd|g�}Wn$t k
r�td|f��nXyt
||�}Wn$tk
rtd|f��nXt|t�s+td|f��n|S(Ni�s^[a-zA-Z0-9_]+$sunknown warning category: %rt.isinvalid module name: %rsinvalid warning category: %r(
R"R*tmatchtevalt NameErrorR4trfindt
__import__RtImportErrortgetattrtAttributeErrorR)(RR"tcattiR tklasstm((s/sys/lib/python2.7/warnings.pyRB�s,
c
Csgt|t�r|j}n|dkr0t}nt|t�sEt�ytj|�}Wn t k
rztj
}d}nX|j}|j}d|kr�|d}nd}|j
d�}|r�j�}|jd�r5|d }q5nI|dkr&ytjd }Wq&tk
r"d}q&Xn|s5|}n|jd
i�} t|||||| |�dS(
s:Issue a warning, or maybe ignore it or raise an exception.iRs<string>t__file__s.pycs.pyoi�t__main__it__warningregistry__N(s.pycs.pyo(R$R*t __class__RtUserWarningR)R#Rt _getframeRCt__dict__t f_globalstf_linenotgettlowertendswithtargvRQt
setdefaultt
warn_explicit(
R
RRtcallertglobalsRR Rtfnltregistry((s/sys/lib/python2.7/warnings.pyR�s<
cCsbt|�}|dkrJ|p!d}|dj�dkrJ|d }qJn|dkr_i}nt|t�r�t|�}|j}n|}||�}|||f}|j|�r�dSx�tD]|} | \}
}}}
}|dks�j |�r�t
||�r�|
dks!|
j |�r�|dks9||kr�Pq�q�Wt}
|
dkrad||<dStj
||�|
dkr�|�n|
dkr�d||<||f}tj|�r�dSdt|<n�|
d kr�nt|
d
krd||<||df}|j|�rdSd||<n/|
dkr5d||<ntd|
| f��t||||�dS(
Ns <unknown>i�s.pyiRiRR!RR Rs1Unrecognized action (%r) in warnings.filters:
%s(R+RR`R$R*tstrRYR_R.RJR)t
defaultactionRtgetlinestonceregistrytRuntimeErrorR(R
RRRR Rhtmodule_globalsttexttkeyR2R1R:RRtmodtlntoncekeytaltkey((s/sys/lib/python2.7/warnings.pyRd�sb
tWarningMessagecBs,eZdZd Zd
d
d�Zd�ZRS(s0Holds the result of a single showwarning() call.R
RRRRRc CsMt�}x%|jD]}t||||�qW|r@|jnd|_dS(N(tlocalst_WARNING_DETAILStsetattrRRt_category_name( tselfR
RRRRRtlocal_valuestattr((s/sys/lib/python2.7/warnings.pyt__init__ s cCs&d|j|j|j|j|jfS(NsD{message : %r, category : %r, filename : %r, lineno : %s, line : %r}(R
RyRRR(Rz((s/sys/lib/python2.7/warnings.pyt__str__'s(smessagescategorysfilenameslinenosfileslineN(RR5R6RwRR}R~(((s/sys/lib/python2.7/warnings.pyRuscBs8eZdZedd�Zd�Zd�Zd�ZRS(s�A context manager that copies and restores the warnings filter upon
exiting the context.
The 'record' argument specifies whether warnings should be captured by a
custom implementation of warnings.showwarning() and be appended to a list
returned by the context manager. Otherwise None is returned by the context
manager. The objects appended to the list are arguments whose attributes
mirror the arguments to showwarning().
The 'module' argument is to specify an alternative module to the module
named 'warnings' and imported under that name. This argument is only useful
when testing the warnings module itself.
cCs8||_|dkr"tjdn||_t|_dS(s�Specify whether to record warnings and if an alternative module
should be used other than sys.modules['warnings'].
For compatibility with Python 3.0, please consider all arguments to be
keyword-only.
twarningsN(t_recordRRtmodulest_moduletFalset_entered(RztrecordR ((s/sys/lib/python2.7/warnings.pyR}>s "cCsrg}|jr|jd�n|jtjdk rL|jd|j�nt|�j}d|dj|�fS(Nsrecord=TrueRs module=%rs%s(%s)s, (R�R/R�RR�R&Rtjoin(RzR8tname((s/sys/lib/python2.7/warnings.pyt__repr__Js cs�|jrtd|��nt|_|jj|_|j|j_|jj|_|jr�g��fd�}||j_�SdSdS(NsCannot enter %r twicecs�jt||��dS(N(R/Ru(R8tkwargs(tlog(s/sys/lib/python2.7/warnings.pyR\s(
R�RmtTrueR�R.t_filtersRt_showwarningR�R(RzR((R�s/sys/lib/python2.7/warnings.pyt __enter__Ss cGs>|jstd|��n|j|j_|j|j_dS(Ns%Cannot exit %r without entering first(R�RmR�R�R.R�R(Rztexc_info((s/sys/lib/python2.7/warnings.pyt__exit__cs N( RR5R6R�RR}R�R�R�(((s/sys/lib/python2.7/warnings.pyR-s
(R.tdefault_actiont
once_registryRRdRRRRR/(0R6RRR't__all__RR
RRRR*RR3Rt ExceptionR4R;R7R@RBRRdtobjectRuRR�t_warnings_defaultst _warningsR.R�R�RjRlR�ROtwarnoptionst
ImportWarningtPendingDeprecationWarningtsilenceRtflagstdivision_warningR/R tclst
bytes_warningtbytes_actiontBytesWarning(((s/sys/lib/python2.7/warnings.pyt<module>s^
)AE(
|