
    Yf                         d dl Z d dlZd dlZd dlZ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 d dlmZ 	 d dlmZ d	efd
Z G d de      Zy# e$ r eZY w xY w)    N)settings)HttpResponse)import_string)Profiler)Renderer)HTMLRenderer)MiddlewareMixinreturnc                     | r5	  t        |              }t        |t              st        dt               |S t               S # t        $ r}t        d| z         |d}~ww xY w)zReturn the renderer instance.zUnable to import the class: %sNzRenderer should subclass: )r   ImportErrorprint
isinstancer   
ValueErrorr   )pathrendererexcs      W/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pyinstrument/middleware.pyget_rendererr      sj    	*}T*,H
 (H-9(DEE~  	2T9:I	s   A 	A AA c                       e Zd Zd Zd Zy)ProfilerMiddlewarec                 4   t        t        dd       }t        t        dd       }t        |t              rt	        |      }nt        |      r|}nd } ||      rt        t        dd      |j                  v s|r"t               }|j                          ||_	        y y )NPYINSTRUMENT_PROFILE_DIRPYINSTRUMENT_SHOW_CALLBACKc                      y)NT )requests    r   <lambda>z4ProfilerMiddleware.process_request.<locals>.<lambda>/   s        PYINSTRUMENT_URL_ARGUMENTprofile)
getattrr   r   strr   callableGETr   startprofiler)selfr   profile_dirfunc_or_pathshow_pyinstrumentr&   s         r   process_requestz"ProfilerMiddleware.process_request&   s    h(BDIx)EtLlC( -l ;l# , 4 g&"=yIW[[XzHNN'G	 r   c                    t        |d      r|j                  j                         }t        t        dd       }t        |      }|j                  |      }t        t        dd       }|j                         j                  dd      d d }t        j                  dv r|j                  dd	      }|rd
j                  |j                  |t        j                         |j                        }	t        j                   j#                  ||	      }
t        j                   j%                  |      st        j&                  |       t)        |
dd      5 }|j+                  |       d d d        t        t        dd      |j,                  v rAt/        |t0              rt3        |      S t1               }|j                  |      }t3        |      S |S |S # 1 sw Y   kxY w)Nr&   !PYINSTRUMENT_PROFILE_DIR_RENDERERr   /_d   )win32cygwin?_qs_z.{total_time:.3f}s {path} {timestamp:.0f}.{ext})
total_timer   	timestampextwzutf-8)encodingr   r    )hasattrr&   stopr!   r   r   renderget_full_pathreplacesysplatformformatdurationtimeoutput_file_extensionosr   joinexistsmkdiropenwriter$   r   r   r   )r'   r   responseprofile_sessionconfigured_rendererr   outputr(   r   filename	file_pathfs               r   process_responsez#ProfilerMiddleware.process_response:   s   7J'%..335O")(4WY]"^#$78H___5F!(,FMK ((*223<TcBD ||22||C0KRR.77"iik 66	 S  GGLLh?	ww~~k2HH[))S7; $qGGFO$ x!<iHGKKWh5'//+~H%___=F'//O$ $s   GGN)__name__
__module____qualname__r+   rR   r   r   r   r   r   %   s    ((-r   r   )iorE   r?   rC   django.confr   django.httpr   django.utils.module_loadingr   pyinstrumentr   pyinstrument.renderersr   pyinstrument.renderers.htmlr   django.utils.deprecationr	   r   objectr   r   r   r   r   <module>r_      s[    	 	 
    $ 5 ! + 48
( "B B+  Os   A AA