a
    IgD                     @   st   d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 zd dlZW n ey^   dZY n0 G dd de
ZdS )	    )perf_counter)render_to_string)static)gettext_lazy)PanelNc                       sp   e Zd ZdZdd ZeduZedZdZ	e
dd Ze
 fd	d
Z fddZdd Zdd Zdd Z  ZS )
TimerPanelzG
    Panel that displays the time a response took in milliseconds.
    c                 C   sp   |   }t| drP| jj| jj }| jj| jj }td|| d |d d S d|v rhtd|d  S dS d S )N_start_rusagez"CPU: %(cum)0.2fms (%(total)0.2fms)g     @@
total_time)ZcumtotalzTotal: %0.2fms )	get_statshasattr_end_rusageru_utimer   ru_stime_)selfstatsutimestime r   V/var/www/html/django/DPS/env/lib/python3.9/site-packages/debug_toolbar/panels/timer.pynav_subtitle   s    

zTimerPanel.nav_subtitleNZTimezdebug_toolbar/panels/timer.htmlc                 C   sv   |   }tdtd| ftdtd| ftdtd| ftdtd| ftd	td
| ff}t| jd|iS )NUser CPU timez%(utime)0.3f msecSystem CPU timez%(stime)0.3f msecTotal CPU timez%(total)0.3f msecElapsed timez%(total_time)0.3f mseczContext switchesz)%(vcsw)d voluntary, %(ivcsw)d involuntaryrows)r   r   r   template)r   r   r   r   r   r   content(   s    

zTimerPanel.contentc                    s   t  j}|td |S )Nzdebug_toolbar/js/timer.js)superscriptsappendr   )r   r!   	__class__r   r   r!   7   s    zTimerPanel.scriptsc                    s(   t  | _| jrttj| _t |S N)	r   _start_timehas_contentresource	getrusageRUSAGE_SELFr   r    process_request)r   requestr#   r   r   r+   =   s    zTimerPanel.process_requestc                 C   s   i }t | dr"t | j d |d< t | drttj| _d| d |d< d| d |d< |d |d  |d	< | d
|d< | d|d< | d|d< | d|d< | | d S )Nr&   i  r	   r   r   r   r   r   r
   Zru_nvcswZvcswZ	ru_nivcswZivcswZ	ru_minfltZminfltZ	ru_majfltZmajflt)	r   r   r&   r(   r)   r*   r   _elapsed_ruZrecord_statsr   r,   responser   r   r   r   generate_statsC   s    

zTimerPanel.generate_statsc                 C   sd   |   }| dd|dd | dd|dd | dd|dd | dd	|dd d S )
Nr   r   r   r   r   r
   r   r	   r   )r   Zrecord_server_timinggetr.   r   r   r   generate_server_timing_   s    z!TimerPanel.generate_server_timingc                 C   s   t | j|t | j| S r%   )getattrr   r   )r   namer   r   r   r-   i   s    zTimerPanel._elapsed_ru)__name__
__module____qualname____doc__r   r(   r'   r   titler   propertyr   r!   r+   r0   r2   r-   __classcell__r   r   r#   r   r      s   

r   )timer   Zdjango.template.loaderr   Zdjango.templatetags.staticr   Zdjango.utils.translationr   r   Zdebug_toolbar.panelsr   r(   ImportErrorr   r   r   r   r   <module>   s   
