§
    Bf  ã                   ól   — d Z ddlmZ ddlZddlmZmZ ddlZddlZddl	Z
ddlmZ  G d„ d¦  «        ZdS )z*Helpers for server-side streaming in REST.é    )ÚdequeN)ÚDequeÚUnion)ÚParsec                   óˆ   — e Zd ZdZdej        deej        e	j
        j        j        f         fd„Zd„ Zdefd„Zd„ Zd	„ Zd
„ ZdS )ÚResponseIteratora‰  Iterator over REST API responses.

    Args:
        response (requests.Response): An API response object.
        response_message_cls (Union[proto.Message, google.protobuf.message.Message]): A response
        class expected to be returned from an API.

    Raises:
        ValueError: If `response_message_cls` is not a subclass of `proto.Message` or `google.protobuf.message.Message`.
    ÚresponseÚresponse_message_clsc                 óÀ   — || _         || _        | j                              d¬¦  «        | _        t	          ¦   «         | _        d| _        d| _        d| _        d| _	        d S )NT)Údecode_unicodeÚ r   F)
Ú	_responseÚ_response_message_clsÚiter_contentÚ_response_itrr   Ú_ready_objsÚ_objÚ_levelÚ
_in_stringÚ_escape_next)Úselfr	   r
   s      úm/home/panchajanya/Development/work/volatility3/lib/python3.11/site-packages/google/api_core/rest_streaming.pyÚ__init__zResponseIterator.__init__'   s_   € ð
 "ˆŒØ%9ˆÔ"à!œ^×8Ò8ÈÐ8ÑMÔMˆÔå',¡w¤wˆÔàˆŒ	àˆŒð  ˆŒà!ˆÔÐÐó    c                 ó8   — | j                              ¦   «          dS )z$Cancel existing streaming operation.N)r   Úclose©r   s    r   ÚcancelzResponseIterator.cancel<   s   € àŒ×ÒÑÔÐÐÐr   Úchunkc                 ó^  — | j         dk    r|d         dk    rt          d|z  ¦  «        ‚|D ]}|dk    r;| j         dk    rd| _        | j        s| xj         dz  c_         | xj        |z  c_        n&|dk    rY| xj        |z  c_        | j        s| xj         dz  c_         | j        s*| j         dk    r| j                             | j        ¦  «         nÇ|dk    r%| j        s| j         | _        | xj        |z  c_        nœ|t          j        v r| j        r| xj        |z  c_        nv|dk    r-| j         dk    r| xj         dz  c_         nT| xj        |z  c_        nC|d	k    r-| j         dk    r| xj         dz  c_         n!| xj        |z  c_        n| xj        |z  c_        |d
k    r| j         nd| _        Œd S )Nr   ú[z4Can only parse array of JSON objects, instead got %sÚ{é   r   Ú}ú"ú]ú\F)	r   Ú
ValueErrorr   r   r   Úappendr   ÚstringÚ
whitespace)r   r   Úchars      r   Ú_process_chunkzResponseIterator._process_chunk@   s  € ØŒ;˜!ÒÐØQŒx˜3ŠˆÝ ØJÈUÑRñô ð ð ð #	Qñ #	QˆDØsŠ{ˆ{Ø”; !Ò#Ð#ð !#D”IØ”ð %ØK”K 1Ñ$K”KØ	”	˜TÑ!	”	‘	Ø˜’Ø	”	˜TÑ!	”	Ø”ð %ØK”K 1Ñ$K”KØ”ð 7¨4¬;¸!Ò+;Ð+;ØÔ$×+Ò+¨D¬IÑ6Ô6Ð6øØ˜’àÔ(ð :Ø*.¬/Ð&9D”OØ	”	˜TÑ!	”		ØÔ*Ð*Ð*Ø”?ð &ØI”I Ñ%I”IøØ˜’Ø”; !Ò#Ð#ØK”K 1Ñ$K”KKàI”I Ñ%I”IIØ˜’Ø”; !Ò#Ð#ØK”K 1Ñ$K”KKàI”I Ñ%I”IIà	”	˜TÑ!	”	Ø9=Àº¸ DÔ$5Ð 5Ð 5È5ˆDÔÑðG#	Qð #	Qr   c                 ó  — | j         sh	 t          | j        ¦  «        }|                      |¦  «         n6# t          $ r)}| j        dk    rt          d| j        z  ¦  «        ‚|‚d }~ww xY w| j         ¯h|                      ¦   «         S )Nr   zUnfinished stream: %s)	r   Únextr   r-   ÚStopIterationr   r(   r   Ú_grab)r   r   Úes      r   Ú__next__zResponseIterator.__next__k   s›   € ØÔ"ð 	ðÝ˜TÔ/Ñ0Ô0Ø×#Ò# EÑ*Ô*Ð*Ð*øÝ ð ð ð Ø”; ’??Ý$Ð%<¸t¼yÑ%HÑIÔIÐIØøøøøðøøøð	 Ô"ð 	ð zŠz‰|Œ|Ðs   ‰)3 ³
A&½$A!Á!A&c                 ó„  — t          | j        t          j        ¦  «        r1| j                             | j                             ¦   «         ¦  «        S t          | j        t          j        j	        j        ¦  «        r9t          | j                             ¦   «         |                      ¦   «         ¦  «        S t          d¦  «        ‚)Nz^Response message class must be a subclass of proto.Message or google.protobuf.message.Message.)Ú
issubclassr   ÚprotoÚMessageÚ	from_jsonr   ÚpopleftÚgoogleÚprotobufÚmessager   r(   r   s    r   r1   zResponseIterator._grabv   sœ   € ådÔ0µ%´-Ñ@Ô@ð 	ØÔ-×7Ò7¸Ô8H×8PÒ8PÑ8RÔ8RÑSÔSÐSÝ˜Ô2µF´OÔ4KÔ4SÑTÔTð 	Ý˜Ô)×1Ò1Ñ3Ô3°T×5OÒ5OÑ5QÔ5QÑRÔRÐRåØpñô ð r   c                 ó   — | S )N© r   s    r   Ú__iter__zResponseIterator.__iter__   s   € Øˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚrequestsÚResponser   r6   r7   r:   r;   r<   r   r   Ústrr-   r3   r1   r?   r>   r   r   r   r      s¸   € € € € € ð	ð 	ð"àÔ#ð"ð $ E¤M°6´?Ô3JÔ3RÐ$RÔSð"ð "ð "ð "ð*ð ð ð)Q Cð )Qð )Qð )Qð )QðV	ð 	ð 	ð	ð 	ð 	ðð ð ð ð r   r   )rC   Úcollectionsr   r*   Útypingr   r   r6   rD   Úgoogle.protobuf.messager:   Úgoogle.protobuf.json_formatr   r   r>   r   r   ú<module>rK      s¬   ðð 1Ð 0à Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à €€€Ø €€€Ø Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -ðgð gð gð gð gñ gô gð gð gð gr   