
    z%i`                     l    	 d dl Z g dZ G d d      Zd Zd ZddZd Zd	 Zh d
j                  Z	d Z
y)    N)FileWrapperguess_schemeapplication_urirequest_urishift_path_infosetup_testing_defaultsc                   "    e Zd Z	 ddZd Zd Zy)r   c                 \    || _         || _        t        |d      r|j                  | _        y y )Nclose)filelikeblksizehasattrr   )selfr   r   s      @/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/wsgiref/util.py__init__zFileWrapper.__init__   s*     8G$!DJ %    c                     | S N )r   s    r   __iter__zFileWrapper.__iter__   s    r   c                 `    | j                   j                  | j                        }|r|S t        r   )r   readr   StopIteration)r   datas     r   __next__zFileWrapper.__next__   s(    }}!!$,,/Kr   N)i    )__name__
__module____qualname__r   r   r   r   r   r   r   r      s    ;(r   r   c                 .    	 | j                  d      dv ryy)NHTTPS)yeson1httpshttp)get)environs    r   r   r      s    {{7//r   c                    	 | d   dz   }ddl m} | j                  d      r	|| d   z  }n7|| d   z  }| d   dk(  r| d   d	k7  r|d
| d   z   z  }n| d   dk7  r|d
| d   z   z  }| || j                  d      xs dd      z  }|S )Nwsgi.url_schemez://r   quote	HTTP_HOSTSERVER_NAMEr$   SERVER_PORT443:80SCRIPT_NAME/latin1)encoding)urllib.parser+   r&   )r'   urlr+   s      r   r   r   %   s    J
#
$U
*C"{{;w{##w}%%$%0}%.sW]333}%-sW]3335]+2sXFFCJr   c                     	 t        |       }ddlm}  || j                  dd      dd      }| j                  d      s	||d	d  z  }n||z  }|r| j                  d
      r|d| d
   z   z  }|S )Nr   r*   	PATH_INFO z/;=,r4   )safer5   r2      QUERY_STRING?)r   r6   r+   r&   )r'   include_queryr7   r+   	path_infos        r   r   r   9   sx    L
'
"C"gkk+b1RI;;}%y}y^4sW^,,,Jr   c                    	 | j                  dd      }|sy |j                  d      }|dd D cg c]  }|s|dk7  s| c}|dd |d   }|d= | j                  dd      }t        j                  |dz   |z         }|j	                  d      r|d d }|s|j	                  d      s|dz  }|| d<   dj                  |      | d<   |dk(  rd }|S c c}w )Nr9   r:   r3   r<   .r2   )r&   split	posixpathnormpathendswithjoin)r'   r@   
path_partspnamescript_names         r   r   r   F   s     K+I%J#-a#3FaqQ#XFJqa=D1++mB/K$$[_T%9:KC !#2&,,S1s(GM XXj1GK SyK+ Gs   CCCc                    	 | j                  dd       | j                  dd       | j                  d| d          | j                  dd       d| vr(d	| vr$| j                  dd
       | j                  d	d       | j                  dd       | j                  dd       | j                  dd       | j                  dd       ddlm}m} | j                  d |              | j                  d |              | j                  dt	        |              | d   dk(  r| j                  dd       y | d   dk(  r| j                  dd       y y )Nr-   z	127.0.0.1SERVER_PROTOCOLzHTTP/1.0r,   REQUEST_METHODGETr2   r9   r:   r3   zwsgi.version)r<   r   zwsgi.run_oncer   zwsgi.multithreadzwsgi.multiprocess)StringIOBytesIOz
wsgi.inputzwsgi.errorsr)   r%   r.   r1   r$   r/   )
setdefaultiorQ   rR   r   )r'   rQ   rR   s      r   r   r   o   s?   
 }[1(4{7=#9:'.G#7(B=,;s+~u-*)1-*A.$|WY/}hj1(g)>? !6)=$/	"	#W	,=%0 
-r   >   
keep-alivetransfer-encodingproxy-authenticateproxy-authorizationteupgradetrailers
connectionc                 6    	 t        | j                               S r   )_hoppishlower)header_names    r   is_hop_by_hopra      s    IK%%'((r   )T)rE   __all__r   r   r   r   r   r   __contains__r^   ra   r   r   r   <module>rd      sM    *  $('R$1P ,	 	)r   