Ë
    :vžjí  ã                   óf   — d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 h d£Zdd	ed
efd„Zdd„Zy)zLog utilities.é    N)ÚurlparseÚ
urlunparse)Ú
access_logé   )ÚUser)Úprometheus_log_method>   ÚkeyÚauthÚcodeÚxsrfÚstateÚtokenÚuriÚreturnc                 óŽ  — t         j                  t        |xs g «      «      }t        | «      }|j                  r‹|j                  j                  d«      }d}t        |«      D ]2  \  }}|j                  d«      \  }}	}
|D ]  }||v sŒ|› |	› d�||<   d}Œ Œ4 |r,|j                  dj                  |«      ¬«      }t        |«      S | S )zscrub auth info from uriÚ&FÚ=z[secret]T)Úquery)Ú_DEFAULT_SCRUB_PARAM_KEYSÚunionÚsetr   r   ÚsplitÚ	enumerateÚ	partitionÚ_replaceÚjoinr   )r   Úextra_param_keysÚscrub_param_keysÚparsedÚpartsÚchangedÚiÚsr	   ÚsepÚ_valueÚ	substrings               úc/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_server/log.pyÚ
_scrub_urir(      sË   € ô 1×6Ñ6´sÐ;KÒ;QÈrÓ7RÓSÐä�c‹]€FØ‡|‚|ð —‘×"Ñ" 3Ó'ˆØˆÜ˜eÖ$‰DˆAˆqØ Ÿ{™{¨3Ó/ÑˆC��fÛ-�	Ø Ò#Ø"%  s e¨8Ð4�E˜!‘HØ"‘Gñ .ð %ñ Ø—_‘_¨3¯8©8°E«?�_Ó;ˆFÜ˜fÓ%Ð%Ø€Jó    c                 óì  — | j                  «       }| j                  }	 | j                  }| j
                  j                  dg «      }|dk  s|dk(  r|j                  }n0|dk  r|j                  }n|dk  r|j                  }n|j                  }d| j                  j                  «       z  }||j                  |j                  t        |j                  |«      |dœ}	 | j                   }	|	rt%        |	t&        «      r|	j(                  nd	nd
}
|
|d<   d}|dk\  r.t        |j*                  j                  dd«      |«      |d<   |dz   }|dk\  r_|dk7  rZi }dD ]6  }||j*                  v sŒ|j*                  |   }|dk(  rt        ||«      }|||<   Œ8  |t-        j.                  |d¬«      «        | |j0                  di |¤Ž«       |rt3        | «       yy# t        $ r
 t        }Y �Œ¶w xY w# t"        $ r d}	Y �Œw xY w)a£  log a bit more information about each request than tornado's default

    - move static file get success to debug-level (reduces noise)
    - get proxied IP instead of proxy IP
    - log referer for redirect and failed requests
    - log user-agent for failed requests

    if record_prometheus_metrics is true, will record a histogram prometheus
    metric (http_request_duration_seconds) for each request handler
    Úextra_log_scrub_param_keysi,  i0  i�  iô  g     @�@)ÚstatusÚmethodÚipr   Úrequest_timeNÚunknownÚ Úusernamez>{status} {method} {uri} ({username}@{ip}) {request_time:.2f}msÚRefererÚNoneÚrefererz referer={referer}iö  )ÚHostÚAcceptr3   z
User-Agenté   )Úindent© )Ú
get_statusÚrequestÚlogÚAttributeErrorr   ÚsettingsÚgetÚdebugÚinfoÚwarningÚerrorr/   r-   Ú	remote_ipr(   r   Úcurrent_userÚ	ExceptionÚ
isinstancer   r2   ÚheadersÚjsonÚdumpsÚformatr   )ÚhandlerÚrecord_prometheus_metricsr,   r<   Úloggerr   Ú
log_methodr/   ÚnsÚuserr2   ÚmsgrI   ÚheaderÚvalues                  r'   Úlog_requestrV   /   sò  € ð ×ÑÓ!€FØ�o‰o€GðØ—‘ˆð ×'Ñ'×+Ñ+Ð,HÈ"ÓMÐà�‚|�v ’}à—\‘\‰
Ø	�#ŠØ—[‘[‰
Ø	�#ŠØ—^‘^‰
à—\‘\ˆ
à˜GŸO™O×8Ñ8Ó:Ñ:€LàØ—.‘.Ø×ÑÜ˜'Ÿ+™+Ð'7Ó8Ø$ñ
€BðØ×#Ñ#ˆñ LP¤¨D´$Ô!7�—’¹YÐUW€HØ€B€z�Nà
J€CØ�‚}ä" 7§?¡?×#6Ñ#6°yÀ&Ó#IÐK[Ó\ˆˆ9‰ØÐ(Ñ(ˆØ�‚}˜ 3šàˆÛAˆFØ˜Ÿ™Ò(ØŸ™¨Ñ/�Ø˜YÒ&ä& uÐ.>Ó?�EØ"'�˜’ð Bñ 	”4—:‘:˜g¨aÔ0Ô1Ùˆzˆs�z‰zÑ˜BÑÔ Ù Ü˜gÕ&ð !øôe ò Ü‹ðûô8 ò Ø‹ðús#   žG ÃG$ ÇG!Ç G!Ç$G3Ç2G3)N)T)Ú__doc__rJ   Úurllib.parser   r   Útornado.logr   r
   r   Úprometheus.log_functionsr   r   Ústrr(   rV   r:   r)   r'   Ú<module>r\      s;   ðÙ ó ß -å "å Ý ;ò
 NÐ ñ�Cð °3ó ô0B'r)   