HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/gunicorn/__pycache__/util.cpython-310.pyc
o

%we�J�	@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZzddlmZWneefycddlZYnwddlmZddlmZddlZee
dd�Z e!d�"��Z#zddl$m$Z$dd	�Z%Wn
ey�d
d	�Z%Ynwdd�Z&	
	dXdd�Z'ej(j)ej(j*fZ+dd�Z,dd�Z-dYdd�Z.dd�Z/ej0�1d�r�dYdd�Z2dd�Z3ne
j4Z3dd �Z4d!d"�Z5dZd$d%�Z6d&d'�Z7d(d)�Z8d*d+�Z9zdd,l
m:Z:Wn
ey�d-d.�Z:Ynwd/d0�Z;dYd1d2�Z<dYd3d4�Z=d5d6�Z>d7d8�Z?d9d:�Z@d;d<�ZAd[d=d>�ZBd?d@�ZCdYdAdB�ZDdCdD�ZEdEdF�ZFd\dHdI�ZGdJdK�ZHdLdM�ZIdNdO�ZJdPdQ�ZKd[dRdS�ZLdTdU�ZMdVdW�ZNdS)]�N)�AppImportError)�SUPPORTED_WORKERS�devnullz	/dev/nullz�
    connection keep-alive proxy-authenticate proxy-authorization
    te trailers transfer-encoding upgrade
    server date
    ��setproctitlecCstd|�dS)Nzgunicorn: %sr��title�r	�F/home/arjun/projects/env/lib/python3.10/site-packages/gunicorn/util.py�
_setproctitle5�rcCsdS�Nr	rr	r	r
r8scsBt�|�}��fdd�|jD�}|std��ff��|d��S)Ncs$g|]}|j�kr|j�kr|�qSr	��group�name)�.0�eprr	r
�
<listcomp>>s�z$load_entry_point.<locals>.<listcomp>zEntry point %r not foundr)�importlib_metadata�distribution�entry_points�ImportError�load)rrr�dist_obj�epsr	rr
�load_entry_point<s

r� gunicorn.workers.sync.SyncWorker�gunicorn.workerscCsdt�|�r|S|�d�rH|�d�d}z
|�dd�\}}Wn
ty*|}|}Ynwzt|||�WStyGt�	�}d}t
|||f��w|�d�}t|�dkr�	|�d�r_|dd�}|tvrkt|�d�}nztd||�WSty�t�	�}d}t
|||f��w|�
d�}	z
t�d�|��}
Wnty�t�	�}d}t
|||f��wt|
|	�S)	Nzegg:��#z)class uri %r invalid or not found: 

[%s]�.T�gunicorn���)�inspect�isclass�
startswith�split�rsplit�
ValueErrorr�	Exception�	traceback�
format_exc�RuntimeError�lenr�pop�	importlib�
import_module�join�getattr)�uri�default�section�	entry_str�distr�exc�msg�
components�klass�modr	r	r
�
load_classEsV

��

��
�
r=cCs4t�|�}d}|j��D]}|jtvr|d7}q|S)Nrr)r#�	signature�
parameters�values�kind�positionals)�f�sig�arity�paramr	r	r
�	get_arity}s

�rGcCst�|�jS)z get the username for a user id)�pwd�getpwuid�pw_name)�uidr	r	r
�get_username�srLFcCs�|r0|rzt|�}Wntyd}Ynwt|�d@}|r%t�||�n|t��kr0t�|�|r?|t��krAt�|�dSdSdS)z) set user and group of workers processes Fi���N)	rL�KeyError�abs�os�
initgroups�getgid�setgid�getuid�setuid)rK�gidrP�usernamer	r	r
�set_owner_process�s�
�rWcCst�|||�dSr
)rO�chown)�pathrKrUr	r	r
rX��rX�wincCs�||�|r	|}ntj�|�\}}|pd}d}|dkr9t�|�}|r&|s,dS||vr,dSt�|�|d9}|dkstjd|tdd�dS)Nr g����MbP?g�?�z)tests may fail, delete still pending for �)�
stacklevel)	rOrYr&�listdir�time�sleep�warnings�warn�RuntimeWarning)�func�pathname�waitall�dirnamer�timeout�Lr	r	r
�_waitfor�s$
�
�

�rkcCsttj|�dSr
)rkrO�unlink)�filenamer	r	r
�_unlink�rrnc
CsJzt|�WdSty$}z|jtjtjfvr�WYd}~dSd}~wwr
)rn�OSError�errno�ENOENT�ENOTDIR)rm�errorr	r	r
rl�s���rlcCs>z
t�tj|�WdStjyYdStyYdSw)NFT)�socket�	inet_pton�AF_INET6rsr()�addrr	r	r
�is_ipv6�s��rx�8000cCs$t�d|�rt�d|�dS|�d�r-|dd�}zt|�WSty,td|�d�w|�d�r9|�d�d}||}}d|vr\d	|vr\|�d	�d
dd�}|�d�|gd}nd|vro|�d�|gdd
�\}}n	|dkrxd|}}zt|�}Wn
ty�td|��w|��|fS)Nz
unix:(//)?r"zfd://�z"%r is not a valid file descriptor.ztcp://r�[�]rz]:�:r\�z0.0.0.0z%r is not a valid port number.)�re�matchr&r%�intr(r,�lower)�netloc�default_port�fd�host�portr	r	r
�
parse_address�s2

�


�r�cCs,t�|tj�}|tjO}t�|tj|�dSr
)�fcntl�F_GETFD�
FD_CLOEXEC�F_SETFD�r��flagsr	r	r
�
close_on_execs
r�cCs(t�|tj�tjB}t�|tj|�dSr
)r��F_GETFLrO�
O_NONBLOCK�F_SETFLr�r	r	r
�set_non_blockingsr�cCs&z|��WdStjyYdSwr
)�closertrs)�sockr	r	r
r�
s
�r�)�
closerangec	Cs4t||�D]}zt�|�WqtyYqwdSr
)�rangerOr�ro)�fd_low�fd_highr�r	r	r
r�s��r�cCsDt|t�r
|�d�}dt|�}d�|�d�|dg�}|�|�dS)Nzutf-8z%X
�s
)�
isinstance�str�encoder-r1�sendall)r��data�
chunk_size�chunkr	r	r
�write_chunk s


r�cCs|rt||�S|�|�dSr
)r�r�)r�r��chunkedr	r	r
�write(s
r�c	CsL|��}|dkr z|�d�t|||�W|�d�S|�d�wt|||�S)Ngrr)�
gettimeout�setblockingr�)r�r�r�rir	r	r
�write_nonblock.s
r�cCsLt�d�|t�|�d�}t�d�t|�|t|�|f}t||�d��dS)Nz�    <html>
      <head>
        <title>%(reason)s</title>
      </head>
      <body>
        <h1><p>%(reason)s</p></h1>
        %(mesg)s
      </body>
    </html>
    )�reason�mesgzl    HTTP/1.1 %s %s
    Connection: close
    Content-Type: text/html
    Content-Length: %d
    
    %s�latin1)�textwrap�dedent�html�escaper�r-r�r�)r��
status_intr�r��
html_error�httpr	r	r
�write_error:s
��r�cCsFt��d}z|dur|jj|jurW~dS|j}|dusW~dS~w)z�Check whether calling a function raised a ``TypeError`` because
    the call failed or because something in the function raised the
    error.

    :param f: The function that was called.
    :return: ``True`` if the call failed.
    r\NFT)�sys�exc_info�tb_frame�f_code�__code__�tb_next)rC�tbr	r	r
�_called_with_wrong_argsQs	��
r�c
Cs|�dd�}t|�dkrd}n	|d|d}}zt�|�}Wn#tyB|�d�rAtj�|�rAd}t||�	dd�d|f���wz
t
j|dd	�j}Wn
t
yZtd
|��wt|t
j�ri|j}d}}n=t|t
j�r�t|jt
j�s|td|��|jj}zdd
�|jD�}dd�|jD�}Wnty�td|��wtd
|��tjjtjk}	zt||�}
Wnty�|	r�tjt� ��td||f��w|dur�z	|
|i|��}
Wnt!y�}zt"|
�r�td�#t�$t!|���%����d}~ww|
du�rtd|��t&|
��s
td��|
S)Nr}r�applicationrz.pyz1Failed to find application, did you mean '%s:%s'?r �eval)�modez9Failed to parse %r as an attribute name or function call.z,Function reference must be a simple name: %rcSsg|]}t�|��qSr	)�ast�literal_eval)r�argr	r	r
r�szimport_app.<locals>.<listcomp>cSsi|]
}|jt�|j��qSr	)r�r�r��value)r�kwr	r	r
�
<dictcomp>�szimport_app.<locals>.<dictcomp>z/Failed to parse arguments as literal values: %rz"Failed to find attribute %r in %r.r~z%Failed to find application object: %rz$Application object must be callable.)'r&r-r/r0r�endswithrOrY�existsr'r��parse�body�SyntaxErrorrr��Name�id�Callre�args�keywordsr(�logging�root�level�DEBUGr2�AttributeErrorr*�print_exceptionr�r��	TypeErrorr�r1�format_exception_only�strip�callable)�module�parts�objr<r9�
expressionrr��kwargs�is_debug�app�er	r	r
�
import_appksz���
�������


r�cCsrz*t�tjd�}t�t���}|j|jkr$|j|jkr$tjd}W|St��}W|Sty8t��}Y|Sw)N�PWD)rO�stat�environ�getcwd�st_ino�st_devr))�a�b�cwdr	r	r
r��s
��
�r�cCs&|durt��}tjj|ddd�}|S)z@Return the current date and time formatted for a message header.NFT)�	localtime�usegmt)r`�email�utils�
formatdate)�	timestamp�sr	r	r
�	http_date�sr�cCs|����tvSr
)r�r��hop_headers)�headerr	r	r
�
is_hoppish�rr�cs�dtjvrvt��rt�d�t��t��rt�d�t�d�|sLtdd�t�ttj	��t�
�d��dkr>t��d�t��d�t��d�d
St�ttj	���dkrbt�d�t��d��fdd	�}|t
jd�|t
jd�d
Sd
S)zo    Standard daemonization of a process.
    http://www.faqs.org/faqs/unix-faq/programmer/faq/ section 1.7
    �GUNICORN_FDr��Trr\csVz |��}||kr|��rt�|�t��|�WdSWdSWdSty*YdSwr
)�fileno�isattyrOr��dup2r�)�stream�	fd_expectr���fd_nullr	r
�redirect!s
��zdaemonize.<locals>.redirectN)rOr��fork�_exit�setsid�umaskr��open�REDIRECT_TO�O_RDWR�set_inheritabler�r�r��stdout�stderr)�enable_stdio_inheritancer�r	r�r
�	daemonize�s.





	�rc	CsFzt�t�d��WdSty"t�dt��t��f�YdSw)N�@z%s.%s)�random�seedrO�urandom�NotImplementedErrorr`�getpidr	r	r	r
r.s
 �rc
Csfzt|d��}|��Wd�WdS1swYWdSty2}ztd||f��d}~ww)Nr�zError: '%s' isn't writable [%r])rr��IOErrorr,)rYrCr�r	r	r
�check_is_writable5s
&���r�utf8cCs.t|t�r|St|t�std|��|�|�S)z+Converts a string argument to a byte stringz%r is not a string)r��bytesr�r�r�)r��encodingr	r	r
�
to_bytestring=s



rc
Cs:t|d�sdSz|��WdStttjfyYdSw)Nr�FT)�hasattrr�r�r�io�UnsupportedOperation)r�r	r	r
�
has_filenoGs

��rcCsftdtjd�|��}t|�D]\}}|dkrd|}td|tjd�qtdtjd�tj��dS)Nz!!!)�filerzWARNING: %sz!!! %sz!!!
)�printr�r	�
splitlines�	enumerate�flush)r9�lines�i�liner	r	r
rcTsrccst����fdd�}|S)Ncs |dddtt���fg��gS)Nz500 Internal Server Error)zContent-Typez
text/plainzContent-Length)r�r-)r��start_response�r9r	r
r�ds
�zmake_fail_app.<locals>.app)r)r9r�r	r%r
�
make_fail_appasr&cCs<|�d�rtj�d|�}|j|jdd�d�Stj�|�S)Nz//r r)rY)r%�urllibr��urlsplit�_replacerY)r3r�r	r	r
�split_request_urins
r*cCs2z|dur|�}|j|ur|�|��|�d}d}wr
)�
__traceback__�with_traceback)�tpr�r�r	r	r
�reraise{s

r.cCst|t�r|St|d�S)Nr�)r�r�)r�r	r	r
�bytes_to_str�s

r/cCstj�|��d�S)Nzlatin-1)r'r��unquote_to_bytes�decode)�stringr	r	r
�unquote_to_wsgi_str�rZr3)rr)F)ryr
)r)Or��email.utilsr�rpr�r�r/r#rr�rOrHr
rrtr�r�r`r*rb�importlib.metadata�metadatar�ModuleNotFoundErrorr�gunicorn.errorsr�gunicorn.workersr�urllib.parser'r2r�setr&r�rrrr=�	Parameter�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDrBrGrLrWrX�platformr%rkrnrlrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrcr&r*r.r/r3r	r	r	r
�<module>s��
��	
�3�


!	

�


S

V