a XC?h� � @ sb d Z ddlZg d�ZG dd� d�Zdd� Zdd � Zddd�Zd d� Zdd� Zh d�j Z dd� ZdS )z$Miscellaneous WSGI-related Utilities� N)�FileWrapper�guess_scheme�application_uri�request_uri�shift_path_info�setup_testing_defaultsc @ s2 e Zd ZdZddd�Zdd� Zdd� Zd d � ZdS ) r z1Wrapper to convert file-like objects to iterables� c C s" || _ || _t|d�r|j| _d S )N�close)�filelike�blksize�hasattrr )�selfr r � r �1/opt/alt/python39/lib64/python3.9/wsgiref/util.py�__init__ s zFileWrapper.__init__c C s6 dd l }|jdtdd� | j�| j�}|r.|S t�d S )Nr zXFileWrapper's __getitem__ method ignores 'key' parameter. Use iterator protocol instead.� )� stacklevel)�warnings�warn�DeprecationWarningr �readr � IndexError)r �keyr �datar r r �__getitem__ s �zFileWrapper.__getitem__c C s | S �Nr )r r r r �__iter__! s zFileWrapper.__iter__c C s | j �| j�}|r|S t�d S r )r r r � StopIteration)r r r r r �__next__$ s zFileWrapper.__next__N)r )�__name__� __module__�__qualname__�__doc__r r r r r r r r r s r c C s | � d�dv rdS dS dS )zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' ZHTTPS)ZyesZon�1�https�httpN)�get)�environr r r r * s r c C s� | d d }ddl m} | �d�r0|| d 7 }nR|| d 7 }| d dkrf| d d kr�|d | d 7 }n| d dkr�|d | d 7 }||| �d�p�d dd�7 }|S )z@Return the application's base URI (no PATH_INFO or QUERY_STRING)�wsgi.url_schemez://r ��quote� HTTP_HOST�SERVER_NAMEr$ �SERVER_PORT�443�:�80�SCRIPT_NAME�/�latin1)�encoding)�urllib.parser* r&