o 7]ht* @sddlZddlmZddlmZmZddlmZddlmZmZm Z m Z m Z ddl m Z ddlmZmZdd lmZmZdd lmZmZdd lmZdd lmZGd ddeZedkrddlmZdZej dededddgde!dZ"e"#de"#dede"#de"#de"#de"$dede"%ddd gd!d"gd#d$dddd#d%e"%d&e"&d'e"#d(e"#d)e"$d*d3d,d-Z'e'ede"(d.e"#d/e"j#d0e)dd1d2dSdS)4N)datetime)Handler LogRecord)Path)ClassVarListOptionalTypeUnion) get_console) LogRenderFormatTimeCallable)ConsoleConsoleRenderable) HighlighterReprHighlighter)Text) Tracebackc(sDeZdZUdZgdZeeeee d<e Z ee e e d<ejdfdddddddddddddd d d d d eeefdeededededededee dededeededeedededededeeefddf&fd d!Zd"edefd#d$Zd"eddfd%d&Zd"ed'edd(fd)d*Zd"ed+eed,d(dd(fd-d.ZZS)/ RichHandlera A logging handler that renders output with Rich. The time / level / message and file are displayed in columns. The level is color coded, and the message is syntax highlighted. Note: Be careful when enabling console markup in log messages if you have configured logging for libraries not under your control. If a dependency writes messages containing square brackets, it may not produce the intended output. Args: level (Union[int, str], optional): Log level. Defaults to logging.NOTSET. console (:class:`~rich.console.Console`, optional): Optional console instance to write logs. Default will use a global console instance writing to stdout. show_time (bool, optional): Show a column for the time. Defaults to True. omit_repeated_times (bool, optional): Omit repetition of the same time. Defaults to True. show_level (bool, optional): Show a column for the level. Defaults to True. show_path (bool, optional): Show the path to the original log call. Defaults to True. enable_link_path (bool, optional): Enable terminal link of path column to file. Defaults to True. highlighter (Highlighter, optional): Highlighter to style log messages, or None to use ReprHighlighter. Defaults to None. markup (bool, optional): Enable console markup in log messages. Defaults to False. rich_tracebacks (bool, optional): Enable rich tracebacks with syntax highlighting and formatting. Defaults to False. tracebacks_width (Optional[int], optional): Number of characters used to render tracebacks, or None for full width. Defaults to None. tracebacks_extra_lines (int, optional): Additional lines of code to render tracebacks, or None for full width. Defaults to None. tracebacks_theme (str, optional): Override pygments theme used in traceback. tracebacks_word_wrap (bool, optional): Enable word wrapping of long tracebacks lines. Defaults to True. tracebacks_show_locals (bool, optional): Enable display of locals in tracebacks. Defaults to False. locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation. Defaults to 10. locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80. log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` is enabled, either string for strftime or callable that formats the time. Defaults to "[%x %X] ". )GETPOSTHEADPUTDELETEOPTIONSTRACEPATCHKEYWORDSHIGHLIGHTER_CLASSNTF Pz[%x %X]) show_timeomit_repeated_times show_level show_pathenable_link_path highlightermarkuprich_tracebackstracebacks_widthtracebacks_extra_linestracebacks_themetracebacks_word_wraptracebacks_show_localslocals_max_lengthlocals_max_stringlog_time_formatlevelconsoler#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2returncs~tj|d|p t|_|p||_t|||||dd|_||_| |_ | |_ | |_ | |_ | |_ ||_||_||_||_dS)N)r3)r#r%r& time_formatr$ level_width)super__init__r r4rr(r _log_renderr'r)r*r+r,r-r.r/r0r1)selfr3r4r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2 __class__:/usr/lib/python3/dist-packages/pip/_vendor/rich/logging.pyr9:s*  zRichHandler.__init__recordcCs&|j}t|dd|}|S)zGet the level name from the record. Args: record (LogRecord): LogRecord instance. Returns: Text: A tuple of the style and level name. zlogging.level.) levelnamerstyledljustlower)r;r@ level_name level_textr>r>r?get_level_textfs  zRichHandler.get_level_textc Cs ||}d}|jr_|jr_|jdkr_|j\}}}|dusJ|dus$Jtj||||j|j|j|j|j |j |j d }| }|j r_| |_|j }t|drZ|rZ|||j|_||}|||}|j|||d} z |j| WdSty||YdSw)zInvoked by logging.N)NNN)width extra_linestheme word_wrap show_localsr0r1usesTime)r@ tracebackmessage_renderable)formatr*exc_inforfrom_exceptionr+r,r-r.r/r0r1 getMessage formattermessagehasattrrN formatTimedatefmtasctime formatMessagerender_messagerenderr4print Exception handleError) r;r@rVrOexc_type exc_value exc_tracebackrUrPlog_renderabler>r>r?emitusL          zRichHandler.emitrVrcCsVt|d|j}|rt|nt|}t|d|j}|r||}|jr)||jd|S)zRender message text in to Text. record (LogRecord): logging Record. message (str): String containing log message. Returns: ConsoleRenderable: Renderable to display log message. r)r(zlogging.keyword)getattrr)r from_markupr(rhighlight_words)r;r@rV use_markup message_textr(r>r>r?r\s zRichHandler.render_messagerOrPc Cstt|jj}||}|jdurdn|jj}t|j}|j |j |s%|gn||g|||||j |j r4|jndd}|S)avRender log for display. Args: record (LogRecord): logging Record. traceback (Optional[Traceback]): Traceback instance or None for no Traceback. message_renderable (ConsoleRenderable): Renderable (typically Text) containing log message contents. Returns: ConsoleRenderable: Renderable to display log. N)log_timer6r3pathline_no link_path) rpathnamenamerHrUrYr fromtimestampcreatedr:r4linenor') r;r@rOrPrlr3r6rkrdr>r>r?r]s    zRichHandler.render)__name__ __module__ __qualname____doc__rrrrstr__annotations__rrr rloggingNOTSETr intrboolrr9rrrHrer\rr] __classcell__r>r>r<r?rs         ,)r__main__)sleepz %(message)sr{z[%X]T)r*r/)r3rQrYhandlersrichzServer starting...z"Listening on http://127.0.0.1:8080zGET /index.html 200 1298z)GET /imgs/backgrounds/back1.jpg 200 54386zGET /css/styles.css 200 54386zGET /favicon.ico 404 242zJSONRPC request --> %r <-- %rz1.1confirmFruitPurchase)appleorangemangoespomelog+? 194521489)versionmethodparamsid)rresulterrorrzrLoading configuration file /adasd/asdasd/qeqwe/qwrqwrqwr/sdgsdgsdg/werwerwer/dfgerert/ertertert/ertetert/werwerwerz$Unable to find 'pomelo' in database!zPOST /jsonrpc/ 200 65532zPOST /admin/ 401 42234z%password was rejected for admin site.r5cCsBd}d}dgd}tdz||WdStdYdS)Nr rfoodz in dividezAn error of some kind occurred!)logdebug exception)numberdivisorfoosr>r>r?divides  rzOut of memory!zServer exited with code=-1z[bold]EXITING...[/bold])r))extra)r5N)*rzrrrpathlibrtypingrrrr r r r:r rr4rrr(rrtextrrOrrrttimerFORMAT basicConfig getLoggerrinfowarningrrrcriticaldictr>r>r>r?sl     G