U e5dd ã@sdddlZddlZddlZddlZddlZddlmZdd„Zdd„Zdd „Z dd d „Z dd d„Z dS)éNé)Ú constantscCsVt |¡}t |¡r&|j}|j|jfSt|tjƒr&sz*_format_args_and_kwargs..css&|]\}}|›dt |¡›�VqdS)ú=Nr)rÚkÚvrrrr(sz({})z, )ÚextendÚitemsÚformatÚjoin)rÚkwargsr"rrrÚ_format_args_and_kwargss r&ÚcCs„t|tjƒr.t||ƒ|}t|j|j|j|ƒSt|dƒrF|j rF|j }n t|dƒr^|j r^|j }nt |ƒ}|t||ƒ7}|r€||7}|S)NÚ __qualname__Ú__name__) r r r r&rr rÚkeywordsÚhasattrr(r)r)r rr%Úsuffixrrrrr,s rcCsD|dkrt ¡j}|dkr tj}tjjt |¡|dd�}|  ¡|S)zlReplacement for traceback.extract_stack() that only does the necessary work for asyncio debug mode. NF)ÚlimitÚ lookup_lines) ÚsysÚ _getframeÚf_backrZDEBUG_STACK_DEPTHÚ tracebackÚ StackSummaryÚextractÚ walk_stackÚreverse)Úfr-ÚstackrrrÚ extract_stack>s þr9)r')NN) r rrr/r2r'rr rr&rr9rrrrÚs