§
    kÍâh	*  ã                   ó¦   — d 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m	Z	 ddl
mZ ddlmZ d	ej        v Z G d
„ d¦  «        Z G d„ de¦  «        ZdS )zÜ
runprofileserver.py

    Starts a lightweight Web server with profiling enabled.

Credits for kcachegrind support taken from lsprofcalltree.py go to:
 David Allouche
 Jp Calderone & Itamar Shtull-Trauring
 Johan Dahlin
é    N)Údatetime)Úsettings)ÚStaticFilesHandler)ÚBaseCommandÚCommandError)Úget_internal_wsgi_application)Úsignalcommandzdjango.contrib.staticfilesc                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚKCacheGrindc                 óF   — |                      ¦   «         | _        d | _        d S ©N)ÚgetstatsÚdataÚout_file)ÚselfÚprofilers     úm/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/management/commands/runprofileserver.pyÚ__init__zKCacheGrind.__init__   s    € Ø×%Ò%Ñ'Ô'ˆŒ	ØˆŒˆˆó    c                 ó®   — || _         | j                              d¦  «         |                      ¦   «          | j        D ]}|                      |¦  «         Œd S )Nzevents: Ticks
)r   ÚwriteÚ_print_summaryr   Ú_entry)r   r   Úentrys      r   ÚoutputzKCacheGrind.output   sb   € Ø ˆŒØŒ×ÒÐ-Ñ.Ô.Ð.Ø×ÒÑÔÐØ”Yð 	ð 	ˆEØ�KŠK˜ÑÔÐÐð	ð 	r   c                 ó¨   — d}| j         D ])}t          |j        dz  ¦  «        }t          ||¦  «        }Œ*| j                             d|fz  ¦  «         d S )Nr   éè  zsummary: %d
)r   ÚintÚ	totaltimeÚmaxr   r   )r   Úmax_costr   r   s       r   r   zKCacheGrind._print_summary&   s`   € ØˆØ”Yð 	0ð 	0ˆEÝ˜EœO¨dÑ2Ñ3Ô3ˆIÝ˜8 YÑ/Ô/ˆHˆHØŒ×Ò˜O¨x¨kÑ9Ñ:Ô:Ð:Ð:Ð:r   c                 óz  — | j         }|j        }t          |t          ¦  «        r|                     d|z  ¦  «         n:|                     d|j        z  ¦  «         |                     d|j        z  ¦  «         t          |j        dz  ¦  «        }t          |t          ¦  «        r|                     d|z  ¦  «         n|                     d|j	        |fz  ¦  «         |j
        r|j
        }ng }t          |t          ¦  «        rd}n|j	        }|D ]}|                      ||¦  «         Œ|                     d¦  «         d S )Nzfn=%s
zfl=%s
r   z0  %s
ú%d %d
r   ú
)r   ÚcodeÚ
isinstanceÚstrr   Úco_filenameÚco_namer   Ú
inlinetimeÚco_firstlinenoÚcallsÚ	_subentry)r   r   r   r%   r*   r,   ÚlinenoÚsubentrys           r   r   zKCacheGrind._entry-   sI  € Ø”=ˆàŒzˆÝ�d�CÑ Ô ð 	5Ø�NŠN˜9 tÑ+Ñ,Ô,Ð,Ð,à�NŠN˜9 tÔ'7Ñ7Ñ8Ô8Ð8Ø�NŠN˜9 t¤|Ñ3Ñ4Ô4Ð4å˜Ô)¨DÑ0Ñ1Ô1ˆ
Ý�d�CÑ Ô ð 	JØ�NŠN˜9 zÑ1Ñ2Ô2Ð2Ð2à�NŠN˜9¨Ô(;¸ZÐ'HÑHÑIÔIÐIð Œ;ð 	Ø”KˆEˆEàˆEå�d�CÑ Ô ð 	)ØˆFˆFàÔ(ˆFàð 	-ð 	-ˆHØ�NŠN˜6 8Ñ,Ô,Ð,Ð,Ø�Š�tÑÔÐÐÐr   c                 óØ  — | j         }|j        }t          |t          ¦  «        r7|                     d|z  ¦  «         |                     d|j        fz  ¦  «         n^|                     d|j        z  ¦  «         |                     d|j        z  ¦  «         |                     d|j        |j        fz  ¦  «         t          |j
        dz  ¦  «        }|                     d||fz  ¦  «         d S )Nzcfn=%s
zcalls=%d 0
zcfl=%s
zcalls=%d %d
r   r#   )r   r%   r&   r'   r   Ú	callcountr(   r)   r+   r   r   )r   r.   r/   r   r%   r   s         r   r-   zKCacheGrind._subentryL   sæ   € Ø”=ˆØŒ}ˆÝ�d�CÑ Ô ð 	XØ�NŠN˜:¨Ñ,Ñ-Ô-Ð-Ø�NŠN˜>¨XÔ-?Ð,AÑAÑBÔBÐBÐBà�NŠN˜:¨Ô(8Ñ8Ñ9Ô9Ð9Ø�NŠN˜:¨¬Ñ4Ñ5Ô5Ð5Ø�NŠN˜?¨hÔ.@À$ÔBUÐ-VÑVÑWÔWÐWå˜Ô*¨TÑ1Ñ2Ô2ˆ	Ø�Š�y F¨IÐ#6Ñ6Ñ7Ô7Ð7Ð7Ð7r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r-   © r   r   r   r      s_   € € € € € ðð ð ðð ð ð;ð ;ð ;ðð ð ð>8ð 8ð 8ð 8ð 8r   r   c                   ó>   ‡ — e Zd ZdZdZˆ fd„Zedd„¦   «         Zˆ xZS )ÚCommandz7Starts a lightweight Web server with profiling enabled.z&[optional port number, or ipaddr:port]c                 ó(  •— t          ¦   «                              |¦  «         |                     ddd¬¦  «         |                     ddddd	¬
¦  «         |                     ddddd¬
¦  «         |                     dddd¬¦  «         |                     dddd¬¦  «         |                     ddddd¬
¦  «         |                     ddddd¬
¦  «         t          r6|                     ddd dd!¬
¦  «         |                     d"dd#dd$¬
¦  «         d S d S )%NÚaddrportú?z$Optional port number, or ipaddr:port)ÚnargsÚhelpz
--noreloadÚstore_falseÚuse_reloaderTz*Tells Django to NOT use the auto-reloader.)ÚactionÚdestÚdefaultr<   z--nothreadingÚuse_threadingz"Tells Django to NOT use threading.z--prof-pathÚ	prof_pathz/tmpz=Specifies the directory which to save profile information in.)r@   rA   r<   z--prof-fileÚ	prof_fileú{path}.{duration:06d}ms.{time}zASet filename format, default if "{path}.{duration:06d}ms.{time}".z	--nomediaÚ
store_trueÚno_mediaFzDo not profile MEDIA_URLz--kcachegrindÚ
use_lsprofz]Create kcachegrind compatible lsprof files, this requires and automatically enables cProfile.z
--nostaticÚuse_static_handlerzCTells Django to NOT automatically serve static files at STATIC_URL.z
--insecureÚinsecure_servingz3Allows serving static files even if DEBUG is False.)ÚsuperÚadd_argumentsÚadd_argumentÚUSE_STATICFILES)r   ÚparserÚ	__class__s     €r   rL   zCommand.add_arguments_   sÊ  ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ø×ÒØ˜cÐ(Nð 	ñ 	
ô 	
ð 	
ð 	×ÒØØ ØØØ=ð 	ñ 	
ô 	
ð 	
ð 	×ÒØØ Ø ØØ5ð 	ñ 	
ô 	
ð 	
ð 	×ÒØØØØPð	 	ñ 	
ô 	
ð 	
ð 	×ÒØØØ4ØTð	 	ñ 	
ô 	
ð 	
ð 	×ÒØØØØØ+ð 	ñ 	
ô 	
ð 	
ð 	×ÒØØØØð2ð 	ñ 	
ô 	
ð 	
õ ð 	Ø×ÒØØ$Ø)Øð!ð  ñ ô ð ð ×ÒØØ#Ø'ØØJð  ñ ô ð ð ð ð	ð 	r   Ú c                 ó*  ‡ ‡‡‡	‡
‡‡‡‡‡‡— dd l Š	dd lŠdd lŠ
ddlmŠ |sdŠdŠn/	 |                     d¦  «        \  ŠŠn# t          $ r d|cŠŠY nw xY w‰sdŠ‰                     ¦   «         st          d‰z  ¦  «        ‚‰d         }‰ 	                    d	d¦  «        Š‰d
         Št          j        dk    rdpdŠˆˆ	ˆ
ˆˆˆˆˆˆ ˆˆfd„}|r@	 ddlm}  ||¦  «         d S # t          $ r ddlm} |                     |¦  «         Y d S w xY w |¦   «          d S )Nr   )ÚrunrQ   Ú8000ú:z	127.0.0.1z%r is not a valid port number.r>   Úshutdown_messagerG   Úwin32z
CTRL-BREAKz	CONTROL-Cc                  ó|  •‡‡‡	‡
‡‡‡— dd l Š
dd lŠdd lŠ‰d         Š‰d         Š‰d         Š‰                     ddd¬¦  «        sd	Št	          d
¦  «         d„ Š	ˆˆˆ	ˆˆ
ˆˆˆfd„} t	          d¦  «         ‰                     d¬¦  «         t	          d‰                     ¦   «         ›dt          j        ›�¦  «         t	          d‰›d‰›d�¦  «         t	          d‰z  ¦  «         	 t          ¦   «         }t          r/‰d         }‰d         }|rt          j        s|rt          |¦  «        } | |¦  «        } ‰‰t          ‰¦  «        |‰d         ¬¦  «         d S # ‰j        $ r©}‰j        d‰j        d‰j        di}	 ||j                 }n&# t&          t(          f$ r t+          |¦  «        }Y nw xY wt,          j                             ‰j                             d|z  ¦  «        dz   ¦  «         ‰
                     d¦  «         Y d }~d S d }~wt8          $ r) ‰rt	          ‰¦  «         t-          j        d¦  «         Y d S w xY w) Nr   rH   rC   rD   Ú1é   é   ©ÚpathÚdurationÚtimerE   zPFilename format is wrong. Default format used: '{path}.{duration:06d}ms.{time}'.c                  ó¾   — g } t          t          dd ¦  «        }|r|                      |¦  «         t          t          dd ¦  «        }|r|                      |¦  «         | S )NÚ	MEDIA_URLÚ
STATIC_URL)Úgetattrr   Úappend)Úexclude_pathsÚ	media_urlÚ
static_urls      r   Úget_exclude_pathsz<Command.handle.<locals>.inner_run.<locals>.get_exclude_pathsË   sg   € Ø "�Ý#¥H¨k¸4Ñ@Ô@�	Øð 4Ø!×(Ò(¨Ñ3Ô3Ð3Ý$¥X¨|¸TÑBÔB�
Øð 5Ø!×(Ò(¨Ñ4Ô4Ð4Ø$Ð$r   c           	      ó$   •‡ — ˆˆˆˆ ˆˆˆˆˆ	f	d„}|S )Nc           
      óÚ  •	‡— | d         Š‰r/t          ˆfd„ ‰¦   «         D ¦   «         ¦  «        r ‰| |¦  «        S ‰                     d¦  «                             dd¦  «        pd}d|‰                     ¦   «         fz  }‰j                             ‰|¦  «        }‰                     ¦   «         }t          j        ¦   «         }	 | 	                    ‰| |¦  «        t          j        ¦   «         |z
  }|j
        dz  |j        dz  z   }‰rMt          |¦  «        }t          |d¦  «        5 }	|                     |	¦  «         d d d ¦  «         n# 1 swxY w Y   n|                     |¦  «         ‰                     |t#          |¦  «        t#          ‰                     ¦   «         ¦  «        ¬	¦  «        }
‰j                             ‰d
|
z  ¦  «        }
‰                     ||
¦  «         S # t          j        ¦   «         |z
  }|j
        dz  |j        dz  z   }‰rMt          |¦  «        }t          |d¦  «        5 }	|                     |	¦  «         d d d ¦  «         n# 1 swxY w Y   n|                     |¦  «         ‰                     |t#          |¦  «        t#          ‰                     ¦   «         ¦  «        ¬	¦  «        }
‰j                             ‰d
|
z  ¦  «        }
‰                     ||
¦  «         w xY w)NÚ	PATH_INFOc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r   )Ú
startswith)Ú.0ÚpÚ	path_infos     €r   ú	<genexpr>zdCommand.handle.<locals>.inner_run.<locals>.make_profiler_handler.<locals>.handler.<locals>.<genexpr>Û   sB   øè è € ð (ð (Ø45˜	×,Ò,¨QÑ/Ô/ð(ð (ð (ð (ð (ð (r   ú/ú.Úrootz
%s.%d.profg     @�@Úwr\   z%s.prof)ÚanyÚstripÚreplacer_   r]   ÚjoinÚProfiler   ÚnowÚruncallÚsecondsÚmicrosecondsr   Úopenr   Ú
dump_statsÚformatr   Úrename)ÚenvironÚstart_responseÚ	path_nameÚprofnameÚprofÚstartÚelapÚelapmsÚkgÚfÚ	profname2rp   Ú
USE_LSPROFÚcProfilerh   Úinner_handlerrG   ÚosrD   rC   r_   s              @€€€€€€€€€r   ÚhandlerzQCommand.handle.<locals>.inner_run.<locals>.make_profiler_handler.<locals>.handlerÖ   sX  øø€ Ø '¨Ô 4�Ið  ð F¥Cð (ð (ð (ð (Ø9JÐ9JÑ9LÔ9Lð(ñ (ô (ñ %ô %ð Fð  -˜}¨W°nÑEÔEÐEØ )§¢°Ñ 4Ô 4× <Ò <¸SÀ#Ñ FÔ FÐ PÈ&�IØ+¨y¸$¿)º)¹+¼+Ð.FÑF�HØ!œwŸ|š|¨I°xÑ@Ô@�HØ#×+Ò+Ñ-Ô-�DÝ$œL™NœN�Eð7Ø#Ÿ|š|¨M¸7ÀNÑSÔSõ  (œ|™~œ~°Ñ5˜Ø!%¤°Ñ!6¸Ô9JÈVÑ9SÑ!S˜Ø%ð 6Ý!,¨TÑ!2Ô!2˜BÝ!% h°Ñ!4Ô!4ð -¸Ø "§	¢	¨!¡¤ ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -øð !ŸOšO¨HÑ5Ô5Ð5Ø$-×$4Ò$4Ø!*µS¸±[´[ÅsÈ4Ï9Ê9É;Ì;ÑGWÔGWð %5ñ %ô %˜	ð %'¤G§L¢L°¸IÈ	Ñ<QÑ$RÔ$R˜	ØŸ	š	 (¨IÑ6Ô6Ð6Ð6øõ  (œ|™~œ~°Ñ5˜Ø!%¤°Ñ!6¸Ô9JÈVÑ9SÑ!S˜Ø%ð 6Ý!,¨TÑ!2Ô!2˜BÝ!% h°Ñ!4Ô!4ð -¸Ø "§	¢	¨!¡¤ ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -øð !ŸOšO¨HÑ5Ô5Ð5Ø$-×$4Ò$4Ø!*µS¸±[´[ÅsÈ4Ï9Ê9É;Ì;ÑGWÔGWð %5ñ %ô %˜	ð %'¤G§L¢L°¸IÈ	Ñ<QÑ$RÔ$R˜	ØŸ	š	 (¨IÑ6Ô6Ð6Ð6øøøsD   ÃG! Ä%EÅE	ÅE	Ç!AK*È.IÉK*ÉIÉK*ÉIÉBK*r5   )
r�   r’   rŽ   r�   rh   rG   r‘   rD   rC   r_   s
   ` €€€€€€€€r   Úmake_profiler_handlerz@Command.handle.<locals>.inner_run.<locals>.make_profiler_handlerÕ   sM   øø€ ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð@ �r   zPerforming system checks...T)Údisplay_num_errorsz
Django version z, using settings z(Development server is running at http://rU   rr   zQuit the server with %s.rI   rJ   rB   )Ú	threadingz.You don't have permission to access that port.zThat port is already in use.z%That IP address can't be assigned-to.z	Error: %sr$   é   )r‘   r_   r�   r�   ÚprintÚcheckÚget_versionr   ÚSETTINGS_MODULEr   rN   ÚDEBUGr   r   ÚerrorÚEACCESÚ
EADDRINUSEÚEADDRNOTAVAILÚerrnoÚAttributeErrorÚKeyErrorr'   ÚsysÚstderrr   ÚstyleÚERRORÚ_exitÚKeyboardInterruptÚexit)r“   r’   rI   rJ   ÚeÚERRORSÚ
error_textrŽ   r�   rh   r‘   rD   rC   r_   ÚaddrÚdjangor    rG   ÚoptionsÚportÚquit_commandrS   r   rV   Úsockets          @@@@@@@€€€€€€€€€€€r   Ú	inner_runz!Command.handle.<locals>.inner_run¹   sô  øøøøøøøø€ ØˆIˆIˆIØˆKˆKˆKàˆOˆOˆOà  Ô.ˆJà Ô,ˆIà Ô,ˆIØ×#Ò#¨°q¸qÐ#ÑAÔAð Ø<�	ÝðMñô ð ð
%ð %ð %ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !õF Ð/Ñ0Ô0Ð0Ø�JŠJ¨$ˆJÑ/Ô/Ð/åˆEà×%Ò%Ñ'Ô'Ð'Ð'­Ô)AÐ)AðCñô ð õ ˆEÀdÀdÀdÈDÈDÈDÐQÑRÔRÐRÝÐ,¨|Ñ;Ñ<Ô<Ð<ðÝ7Ñ9Ô9�Ý"ð >Ø)0Ð1EÔ)FÐ&Ø'.Ð/AÔ'BÐ$Ø)ð >­x¬~ð >ÐAQð >Ý"4°WÑ"=Ô"=˜Ø/Ð/°Ñ8Ô8�Ø��D�#˜d™)œ) W¸ÀÔ8PÐQÑQÔQÐQÐQÐQøØ”<ð ð ð ð ”LÐ"RØÔ$Ð&DØÔ'Ð)Pð�ð
(Ø!'¨¬¤�J�JøÝ&­Ð1ð (ð (ð (Ý!$ Q¡¤�J�J�Jð(øøøå”
× Ò  ¤×!1Ò!1°+À
Ñ2JÑ!KÔ!KÈdÑ!RÑSÔSÐSà—’˜‘”�������øøøøÝ$ð ð ð Ø#ð ,ÝÐ*Ñ+Ô+Ð+Ý”˜‘”����ðøøøsD   Ã$A1E Å
H;Å!HÅ9FÆHÆ F*Æ'HÆ)F*Æ*AHÈ2H;È:H;)Úrun_with_reloader)Ú
autoreload)r®   r²   r    Údjango.core.servers.basehttprS   ÚsplitÚ
ValueErrorÚisdigitr   Úgetr£   ÚplatformÚdjango.utils.autoreloadr´   ÚImportErrorÚdjango.utilsrµ   Úmain)r   r9   Úargsr¯   r>   r³   r´   rµ   r­   r®   r    rG   r°   r±   rS   rV   r²   s   `  `    @@@@@@@@@r   ÚhandlezCommand.handleŸ   sñ  øøøøøøøøøøø€ àˆˆˆØˆˆˆØˆˆˆØ4Ð4Ð4Ð4Ð4Ð4àð 	*ØˆDØˆDˆDð*Ø%Ÿ^š^¨CÑ0Ô0‘
��d�døÝð *ð *ð *Ø �
��d�d�dð*øøøàð 	ØˆDà�|Š|‰~Œ~ð 	HÝÐ?À$ÑFÑGÔGÐGà˜~Ô.ˆØ"Ÿ;š;Ð'9¸2Ñ>Ô>ÐØ˜:Ô&ˆÝœ¨Ò/ÐA°\ÐPÀ[ˆðb	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ð b	ðH ð 
	ð+ØEÐEÐEÐEÐEÐEà!Ð! )Ñ,Ô,Ð,Ð,Ð,øÝð +ð +ð +Ø3Ð3Ð3Ð3Ð3Ð3à—’ 	Ñ*Ô*Ð*Ð*Ð*Ð*ð+øøøð
 ˆI‰KŒKˆKˆKˆKs!   ¦? ¿AÁAÃ
C Ã%DÄD)rQ   )	r2   r3   r4   r<   rÀ   rL   r	   rÁ   Ú__classcell__)rP   s   @r   r7   r7   [   sk   ø€ € € € € ØD€DØ3€Dð>ð >ð >ð >ð >ð@ ðGð Gð Gñ „]ðGð Gð Gð Gð Gr   r7   )Ú__doc__r£   r   Údjango.confr   Ú#django.contrib.staticfiles.handlersr   Údjango.core.management.baser   r   r¶   r   Ú"django_extensions.management.utilsr	   ÚINSTALLED_APPSrN   r   r7   r5   r   r   ú<module>rÉ      s   ðð	ð 	ð €
€
€
Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ FÐ FÐ FÐ FÐ FÐ Fà <Ð <Ð <Ð <Ð <Ð <à.°(Ô2IÐI€ð>8ð >8ð >8ð >8ð >8ñ >8ô >8ð >8ðBLð Lð Lð Lð Lˆkñ Lô Lð Lð Lð Lr   