a XC?h��@s^ddlZgd�ZGdd�d�Zdd�Zdd�Zdd d �Zd d �Zdd�Zhd�jZ dd�Z dS)�N)� FileWrapper� guess_scheme�application_uri� request_uri�shift_path_info�setup_testing_defaultsc@s.eZdZd dd�Zdd�Zdd�Zdd �Zd S) r� cCs"||_||_t|d�r|j|_dS)N�close)�filelike�blksize�hasattrr )�selfr r �r�1/opt/alt/python39/lib64/python3.9/wsgiref/util.py�__init__s zFileWrapper.__init__cCs6ddl}|jdtdd�|j�|j�}|r.|St�dS)NrzXFileWrapper's __getitem__ method ignores 'key' parameter. Use iterator protocol instead.�)� stacklevel)�warnings�warn�DeprecationWarningr �readr � IndexError)r �keyr�datarrr� __getitem__s�zFileWrapper.__getitem__cCs|S�Nr)r rrr�__iter__!szFileWrapper.__iter__cCs|j�|j�}|r|St�dSr)r rr � StopIteration)r rrrr�__next__$szFileWrapper.__next__N)r)�__name__� __module__� __qualname__rrrrrrrrr s  rcCs|�d�dvrdSdSdS)NZHTTPS)ZyesZon�1�https�http)�get)�environrrrr*srcCs�|dd}ddlm}|�d�r0||d7}nR||d7}|ddkrf|dd kr�|d |d7}n|dd kr�|d |d7}|||�d �p�d dd�7}|S)N�wsgi.url_schemez://r��quote� HTTP_HOST� SERVER_NAMEr#� SERVER_PORT�443�:�80� SCRIPT_NAME�/�latin1)�encoding)� urllib.parser)r%)r&�urlr)rrrr2s       rTcCspt|�}ddlm}||�dd�ddd�}|�d�sF||d d�7}n||7}|rl|�d �rl|d |d 7}|S) Nrr(� PATH_INFO�z/;=,r2)Zsafer3r0�Z QUERY_STRING�?)rr4r)r%)r&Z include_queryr5r)� path_inforrrrFs  rcCs�|�dd�}|sdS|�d�}dd�|dd�D�|dd�<|d}|d=|�dd�}t�|d|�}|�d�r~|dd�}|s�|�d�s�|d7}||d<d�|�|d<|d kr�d}|S) Nr6r7r1cSsg|]}|r|dkr|�qS)�.r)�.0�prrr� e�z#shift_path_info..r8�����r0r;)r%�split� posixpath�normpath�endswith�join)r&r:� path_parts�nameZ script_namerrrrSs$     rcCs�|�dd�|�dd�|�d|d�|�dd�d|vr\d |vr\|�dd �|�d d �|�d d �|�dd�|�dd�|�dd�ddlm}m}|�d|��|�d|��|�dt|��|ddkr�|�dd�n|ddkr�|�dd�dS)Nr+z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r*ZREQUEST_METHODZGETr0r6r7r1z wsgi.version)r8rz wsgi.run_oncerzwsgi.multithreadzwsgi.multiprocess)�StringIO�BytesIOz wsgi.inputz wsgi.errorsr'r$r,r/r#r-)� setdefault�iorHrIr)r&rHrIrrrr|s&           r>Ztezproxy-authorizationZ connectionZtrailersztransfer-encodingZupgradezproxy-authenticatez keep-alivecCs t|���Sr)�_hoppish�lower)Z header_namerrr� is_hop_by_hop�srN)T) rB�__all__rrrrrr� __contains__rLrNrrrr�s )(