� K�g�-���ddlmZddlZddlZddlmZddlZddlm Z m Z ddl m Z m Z mZmZmZmZddlmZddlmZmZmZddlmZmZmZmZejrdd lmZdd l m!Z!dd l"m#Z#n( dd lmZn#e$$r dd l%mZYnwxYwn #e$$rdZYnwxYwhd �Z&dd�Z'Gd�de(��Z)Gd�dej*e+ej,f��Z-dd�Z.dd�Z/Gd�de-��Z0dS) �)� annotationsN)�cookies)�AwaitableOrContextManager� AwaitableOrContextManagerWrapper)�URL�Address�FormData�Headers� QueryParams�State)� HTTPException)� FormParser�MultiPartException�MultiPartParser)�Message�Receive�Scope�Send)�parse_options_header)� Starlette)�Router>� user-agent� cache-control�accept-encoding�accept-language�accept� cookie_string�str�return�dict[str, str]c��i}|�d��D]g}d|vr|�dd��\}}nd|}}|���|���}}|s|rtj|��||<�h|S)a This function parses a ``Cookie`` HTTP header into a dict of key/value pairs. It attempts to mimic browser cookie parsing behavior: browsers and web servers frequently disregard the spec (RFC 6265) when setting and reading cookies, so we attempt to suit the common scenarios here. This function has been adapted from Django 3.1.0. Note: we are explicitly _NOT_ using `SimpleCookie.load` because it is based on an outdated spec and will fail on lots of input we want to support �;�=��)�split�strip� http_cookies�_unquote)r� cookie_dict�chunk�key�vals �b/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/starlette/requests.py� cookie_parserr/'s���#%�K��$�$�S�)�)� :� :�� �%�<�<��{�{�3��*�*�H�C����5��C��9�9�;�;�� � � � �S�� � :�#� :�+�4�S�9�9�K�� �� ��c��eZdZdS)�ClientDisconnectN)�__name__� __module__� __qualname__�r0r.r2r2Bs�������Dr0r2c�x�eZdZdZd(d)d �Zd*d �Zd+d�Zd,d�Zej Z ej Z e d-d���Z e d.d���Z e d.d���Ze d/d���Ze d0d���Ze d1d���Ze d2d���Ze d3d���Ze d1d ���Ze d-d!���Ze d-d"���Ze d4d$���Zd5d'�ZdS)6�HTTPConnectionz� A base class for incoming HTTP connections, that is used to provide any functionality that is common to both `Request` and `WebSocket`. N�scoper�receive�Receive | Noner�Nonec�,�|ddvsJ�||_dS)N�type)�http� websocket�r9)�selfr9r:s r.�__init__zHTTPConnection.__init__Ls#���V�}� 5�5�5�5�5��� � � r0r,r� typing.Anyc��|j|S�NrA)rBr,s r.� __getitem__zHTTPConnection.__getitem__Ps���z�#��r0�typing.Iterator[str]c�*�t|j��SrF)�iterr9�rBs r.�__iter__zHTTPConnection.__iter__Ss���D�J���r0�intc�*�t|j��SrF)�lenr9rKs r.�__len__zHTTPConnection.__len__Vs���4�:���r0c��|jdS)N�apprArKs r.rRzHTTPConnection.app_s���z�%� � r0rc�d�t|d��st|j���|_|jS)N�_urlrA)�hasattrrr9rTrKs r.�urlzHTTPConnection.urlcs0���t�V�$�$� .��$�*�-�-�-�D�I��y�r0c�,�t|d��s~t|j��}|�d|�dd����}|}|�d��s|dz }||d<d|d<||d<t |� ��|_|jS) N� _base_url� app_root_path� root_pathr%�/�pathr0� query_stringrA)rU�dictr9�get�endswithrrX)rB�base_url_scoperYr\s r.�base_urlzHTTPConnection.base_urlis����t�[�)�)� 7�!�$�*�-�-�N�+�.�.���@R�@R�S^�`b�@c�@c�d�d�M� �D��=�=��%�%� ��� ��%)�N�6� "�-0�N�>� *�*7�N�;� '� �~�6�6�6�D�N��~�r0r c�d�t|d��st|j���|_|jS)N�_headersrA)rUr r9rdrKs r.�headerszHTTPConnection.headerszs0���t�Z�(�(� 6�#�$�*�5�5�5�D�M��}�r0r c�n�t|d��st|jd��|_|jS)N� _query_paramsr])rUr r9rgrKs r.� query_paramszHTTPConnection.query_params�s5���t�_�-�-� I�!,�T�Z��-G�!H�!H�D� ��!�!r0�dict[str, typing.Any]c�8�|j�di��S)N� path_params)r9r_rKs r.rkzHTTPConnection.path_params�s���z�~�~�m�R�0�0�0r0r c��t|d��s4i}|j�d��}|rt|��}||_|jS)N�_cookies�cookie)rUrer_r/rm)rBr� cookie_headers r.rzHTTPConnection.cookies�sR���t�Z�(�(� $�&(�G� �L�,�,�X�6�6�M�� 7�'� �6�6��#�D�M��}�r0�Address | Nonec�P�|j�d��}|� t|�SdS)N�client)r9r_r)rB� host_ports r.rrzHTTPConnection.client�s-���J�N�N�8�,�,� � � ��I�&� &��tr0c�B�d|jvs Jd���|jdS)N�sessionz=SessionMiddleware must be installed to access request.sessionrArKs r.ruzHTTPConnection.session�s+���D�J�&�&�&�(g�&�&�&��z�)�$�$r0c�B�d|jvs Jd���|jdS)N�authzAAuthenticationMiddleware must be installed to access request.authrArKs r.rwzHTTPConnection.auth��+�����#�#�#�%h�#�#�#��z�&�!�!r0c�B�d|jvs Jd���|jdS)N�userzAAuthenticationMiddleware must be installed to access request.userrArKs r.rzzHTTPConnection.user�rxr0r c��t|d��s:|j�di��t|jd��|_|jS)N�_state�state)rUr9� setdefaultr r|rKs r.r}zHTTPConnection.state�sL���t�X�&�&� 5� �J� !� !�'�2� .� .� .� �� �7� 3�4�4�D�K��{�r0�namerkc ���|j�d��p|j�d��}|�td���|j|fi|��}|�|j���S)N�routerrRzVThe `url_for` method can only be used inside a Starlette application or with a router.)rb)r9r_� RuntimeError� url_path_for�make_absolute_urlrb)rBrrk�url_path_provider�url_paths r.�url_forzHTTPConnection.url_for�sw��7;�z�~�~�h�7O�7O�7h�SW�S]�Sa�Sa�bg�Sh�Sh�� � $��w�x�x� x�1�$�1�$�F�F�+�F�F���)�)�4�=�)�A�A�Ar0rF)r9rr:r;rr<)r,rrrD)rrH)rrM�rrD)rr)rr )rr )rri)rr )rrp)rr )rrrkrDrr)r3r4r5�__doc__rCrGrLrP�object�__eq__�__hash__�propertyrRrVrbrerhrkrrrrurwrzr}r�r6r0r.r8r8Fs�������� ��������� � � � ����� �]�F���H� �!�!�!��X�!������X�� �����X�� �����X�� �"�"�"��X�"� �1�1�1��X�1������X�������X���%�%�%��X�%��"�"�"��X�"��"�"�"��X�"������X��B�B�B�B�B�Br0r8�typing.NoReturnc��$K�td���)Nz+Receive channel has not been made available�r�r6r0r.� empty_receiver��s���� �D� E� E�Er0�messagerc��$K�td���)Nz(Send channel has not been made availabler�)r�s r.� empty_sendr��s���� �A� B� B�Br0c���eZdZUded<eefd&�fd � Zed'd ���Zed(d ���Z d)d�Z d*d�Z d+d�Z dddd�d,d�Z dddd�d-d�Zd.d!�Zd/d#�Zd0d%�Z�xZS)1�RequestzFormData | None�_formr9rr:r�sendrc���t���|��|ddksJ�||_||_d|_d|_d|_dS)Nr>r?F)�superrC�_receive�_send�_stream_consumed�_is_disconnectedr�)rBr9r:r�� __class__s �r.rCzRequest.__init__�sY��� ����������V�}��&�&�&�&��� ��� � %��� %����� � � r0rrc�L�tjt|jd��S)N�method)�typing�castrr9rKs r.r�zRequest.method�s���{�3�� �8� 4�5�5�5r0c��|jSrF)r�rKs r.r:zRequest.receive�s ���}�r0�"typing.AsyncGenerator[bytes, None]c�K�t|d��r|jWV�dWV�dS|jrtd���|js�|����d{V��}|ddkr;|�dd��}|�dd��sd |_|r|WV�n!|dd krd |_t���|j��dWV�dS) N�_bodyr0zStream consumedr>z http.request�body� more_bodyFT�http.disconnect)rUr�r�r�r�r_r�r2)rBr�r�s r.�streamzRequest.stream�s���� �4�� !� !� ��*� � � � ��I�I�I�I� �F� � � 2��0�1�1� 1��'� )� �M�M�O�O�+�+�+�+�+�+�G��v��.�0�0��{�{�6�3�/�/���{�{�;��6�6�1�,0�D�)����J�J�J�J�����$5�5�5�(,��%�&�(�(�(��'� )�� � � � � � r0�bytesc���K�t|d��sNg}|���23d{V��}|�|���6d�|��|_|jS)Nr�r0)rUr��append�joinr�)rB�chunksr+s r.r�z Request.body�s������t�W�%�%� *�"$�F�#�{�{�}�}� %� %� %� %� %� %� %�e�� � �e�$�$�$�$� -����&�)�)�D�J��z�s�ArDc��K�t|d��s3|����d{V��}tj|��|_|jS)N�_json)rUr��json�loadsr�)rBr�s r.r�z Request.json�sP�����t�W�%�%� *������$�$�$�$�$�$�D���D�)�)�D�J��z�r0i�i�� max_files� max_fields� max_part_sizer�� int | floatr�r�rMr c��hK�|j��"t� Jd���|j�d��}t|��\}}|dkr t |j|���|||���}|����d{V��|_n�#t$r&}d|jvrtd|j ����|�d}~wwxYw|dkrGt|j|�����} | ����d{V��|_nt��|_|jS) NzEThe `python-multipart` library must be installed to use form parsing.z Content-Typesmultipart/form-datar�rRi�)� status_code�details!application/x-www-form-urlencoded) r�rrer_rr��parserr9r r�rr ) rBr�r�r��content_type_header� content_type�_�multipart_parser�exc� form_parsers r.� _get_formzRequest._get_form�s^���� �:� �$�0�0�V�1�0�0�"&�,�"2�"2�>�"B�"B� �2�3F�G�G�O�L�!��5�5�5� �'6�� �� � � � �"+�#-�&3� (�(�(�$�(8�'=�'=�'?�'?�!?�!?�!?�!?�!?�!?�D�J�J��)������ �*�*�+��C�K�P�P�P�P��I����������!E�E�E�(���t�{�{�}�}�E�E� �#.�#4�#4�#6�#6�6�6�6�6�6�6�� � �%�Z�Z�� ��z�s�A B� C �$!C�C �#AwaitableOrContextManager[FormData]c�L�t|�|||�����S)Nr�)rr�)rBr�r�r�s r.�formz Request.forms,��0� �N�N�Y�:�Ub�N� c� c� � � r0r<c��ZK�|j�!|j����d{V��dSdSrF)r��closerKs r.r�z Request.close*sB���� �:� !��*�"�"�$�$� $� $� $� $� $� $� $� $� $� "� !r0�boolc��K�|js{i}tj��5}|���|����d{V��}ddd��n #1swxYwY|�d��dkrd|_|jS)Nr>r�T)r��anyio� CancelScope�cancelr�r_)rBr��css r.�is_disconnectedzRequest.is_disconnected.s������$� -�!�G��"�$�$� 0��� � � � � � $� � ���/�/�/�/�/�/�� 0� 0� 0� 0� 0� 0� 0� 0� 0� 0� 0���� 0� 0� 0� 0��{�{�6�"�"�&7�7�7�(,��%��$�$s�/A�A�!Ar\c��RK�d|j�di��vr�g}tD]\}|j�|��D]?}|�|�d��|�d��f���@�]|�d||d����d{V��dSdS)Nzhttp.response.push� extensionszlatin-1)r>r\re)r9r_�SERVER_PUSH_HEADERS_TO_COPYre�getlistr��encoder�)rBr\� raw_headersr�values r.�send_push_promisezRequest.send_push_promise<s����� �4�:�>�>�,��#C�#C� C� C�57�K�3� Z� Z��!�\�1�1�$�7�7�Z�Z�E��&�&�� � �I�(>�(>�� � �Y�@W�@W�'X�Y�Y�Y�Y�Z��*�*�&:�D�U`�a�a�b�b� b� b� b� b� b� b� b� b� b� D� Cr0)r9rr:rr�r)rr)rr)rr�)rr�r�)r�r�r�r�r�rMrr )r�r�r�r�r�rMrr�)rr<)rr�)r\rrr<)r3r4r5�__annotations__r�r�rCr�r�r:r�r�r�r�r�r�r�r�� __classcell__)r�s@r.r�r��si������������8E�T^���������6�6�6��X�6������X������(��������"&�"&�(� !�!�!�!�!�!�L"&�"&�(�  �  �  �  �  �  �%�%�%�%� %� %� %� %�c�c�c�c�c�c�c�cr0r�)rrrr )rr�)r�rrr�)1� __future__rr�r�r?rr(r��starlette._utilsrr�starlette.datastructuresrrr r r r �starlette.exceptionsr �starlette.formparsersrrr�starlette.typesrrrr� TYPE_CHECKING�python_multipart.multipartr�starlette.applicationsr�starlette.routingr�ModuleNotFoundError�multipart.multipartr�r/� Exceptionr2�Mappingr�Anyr8r�r�r�r6r0r.�<module>r�s���"�"�"�"�"�"� � � � � � � � �(�(�(�(�(�(� � � � �X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�.�.�.�.�.�.�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�9�9�9�9�9�9�9�9�9�9�9�9� �� $�?�?�?�?�?�?�0�0�0�0�0�0�(�(�(�(�(�(�(�$� A� G� G� G� G� G� G� G��"� A� A� A� @� @� @� @� @� @� @� @� A������ �$�$�$�#����$������������6 � � � � �y� � � �uB�uB�uB�uB�uB�V�^�C���O�4�uB�uB�uB�pF�F�F�F�C�C�C�C�|c�|c�|c�|c�|c�n�|c�|c�|c�|c�|cs0�)A0�/B�0 A>�;B�=A>�>B�B � B 
Memory