
    Zi$                         d dl Z d dlZd dlZd dlmZ dZdZdZej        d          dk    Z	e	rd dl
Z
e
j        Znd dlZej        j        Z G d d          Zd	 Zd
 Z G d de          ZdS )    N)clientz:return:z:param bool follow:List   c                       e Zd Zd ZdS )SimpleNamespacec                 :    | j                             |           d S N)__dict__update)selfkwargss     Q/root/projects/butler/venv/lib/python3.11/site-packages/kubernetes/watch/watch.py__init__zSimpleNamespace.__init__+   s    V$$$$$    N)__name__
__module____qualname__r    r   r   r   r   )   s#        % % % % %r   r   c                     t          j        |                                           D ]L}|                    t                    r0|t          t                    d                                          c S MdS )N )pydocgetdoc
splitlines
startswithPYDOC_RETURN_LABELlenstrip)funclines     r   _find_return_typer    /   sr    T""--// : :??-.. 	:.//0017799999	:2r   c              #   F  K   t                      }|                     d d          D ]}t          |t                    r|                    |           n^t          |t
                    r)|                    |                    d                     n t          dt          |           d          |	                    d          }|dk    rR|d |         
                    dd	          }||d
z   d          }|r|V  ndV  |	                    d          }|dk    Rd S )NF)amtdecode_contentzutf-8zReceived invalid segment type, z-, from stream. Accepts only 'str' or 'bytes'.   
replace)errors   r   )	bytearraystream
isinstancebytesextendstrencode	TypeErrortypefinddecode)respbuffersegmentnext_newliner   s        r   iter_resp_linesr8   6   sR     [[F;;4;>> . . gu%% 	pMM'""""%% 	pMM'..112222n$w--nnnp p p {{5))b  -<-(//	 0 + +DLNOO,F 



!;;u--L b  %. .r   c                   4    e Zd ZddZd Zd Zd Zd Zd ZdS )	WatchNc                 `    || _         d| _        t          j                    | _        d | _        d S )NF)_raw_return_type_stopr   	ApiClient_api_clientresource_version)r   return_types     r   r   zWatch.__init__X   s0     +
!+-- $r   c                     d| _         d S )NT)r=   )r   s    r   stopz
Watch.stop^   s    


r   c                     | j         r| j         S t          |          }|                    t                    r|d t	          t                              S |S r	   )r<   r    endswithTYPE_LIST_SUFFIXr   )r   r   rA   s      r   get_return_typezWatch.get_return_typea   s]      	)(('-- 011 	86%5!6!6 6677r   c                 @    t           t          j        |          v rdS dS )Nfollowwatch)PYDOC_FOLLOW_PARAMr   r   )r   r   s     r   get_watch_argument_namezWatch.get_watch_argument_namei   s!    d!3!33387r   c                 Z   |r|                                 rd S 	 t          j        |          }|d         |d<   |r|d         dk    r|d         dk    rt          t          j        |d                             }| j                            ||          |d<   t          |d         d          r|d         j        j	        | _	        nNt          |d         t                    r3d|d         v r)d|d         d         v r|d         d         d         | _	        |S # t          j        $ r Y d S w xY w)	Nobject
raw_objectr1   ERRORBOOKMARK)datametadataresourceVersion)isspacejsonloadsr   dumpsr?   deserializehasattrrS   r@   r+   dictJSONDecodeError)r   rR   rA   jsobjs        r   unmarshal_eventzWatch.unmarshal_evento   sI    	t||~~ 	4	D!!B!(|B|
  
+r&zW44Fz9Q9Q%4:b6F+G+GHHH#/;;CMM82h<44 +,.xL,A,RD)) !Ht44 +r(|9S9S+r(|J/GGG,.xL,D)-+D)I# 	 	 	44	s   C<D D*)D*c              /     K   d| _         |                     |          }|                     |          }d||<   d|d<   d|v r|d         | _        d|v }d}|                    dd          }	  ||i |}		 t          |	          D ]}
|dk    r|r|                     |
|          }nt          j        |
          }t          |t                    rg|d         d	k    r[|d
         }|s|s|d         t          k    rd} nV|d         d|d         }t          j                            |d         |          d}|V  n|
r|
V  ndV  | j         r n|	                                 |	                                 | j        | j        |d<   nNd| _         nF# |	                                 |	                                 | j        | j        |d<   nd| _         w xY w| j         s|rdS z)aj  Watch an API resource and stream the result back via a generator.

        Note that watching an API resource can expire. The method tries to
        resume automatically once from the last result, but if that last result
        is too old as well, an `ApiException` exception will be thrown with
        ``code`` 410. In that case you have to recover yourself, probably
        by listing the API resource to obtain the latest state and then
        watching from that state on by setting ``resource_version`` to
        one returned from listing.

        :param func: The API function pointer. Any parameter to the function
                     can be passed after this parameter.

        :return: Event object with these keys:
                   'type': The type of event such as "ADDED", "DELETED", etc.
                   'raw_object': a dict representing the watched object.
                   'object': A model representation of raw_object. The name of
                             model will be determined based on
                             the func's doc string. If it cannot be determined,
                             'object' value will be the same as 'raw_object'.

        Example:
            v1 = kubernetes.client.CoreV1Api()
            watch = kubernetes.watch.Watch()
            for e in watch.stream(v1.list_namespace, resource_version=1127):
                type_ = e['type']
                object_ = e['object']  # object is one of type return_type
                raw_object = e['raw_object']  # raw_object is a dict
                ...
                if should_stop:
                    watch.stop()
        FT_preload_contentr@   timeout_secondsrY   rJ   r1   rP   rO   codereasonz: message)statusrd   r   N)r=   rG   rL   r@   popr8   r_   rV   rW   r+   r[   HTTP_STATUS_GONEr   restApiExceptioncloserelease_conn)r   r   argsr   rA   	watch_argdisable_retriesretry_after_410rY   r4   r   eventr^   rd   s                 r   r*   zWatch.stream   s     D 
**4000066	 y%*!"''$*+=$>D! -6jj55-	4(((D(&+D11    D !G++& 5$($8$8{$K$KEE %)Jt$4$4E%eT22 ($)&MW$<$<"'"5C $3 G? G$'K3C$C$C26 % %(MMM3y>>*C&,k&>&>+.v;v '? 'G 'G !G /4O"'KKKK %"&JJJJ"$HHHz  

!!###(4151FF-..!%DJJ 

!!###(4151FF-..!%DJ%%%%z _ [-	s   5CF AGr	   )	r   r   r   r   rC   rG   rL   r_   r*   r   r   r   r:   r:   V   sx        % % % %        2\ \ \ \ \r   r:   )rV   r   sys
kubernetesr   r   rK   rF   version_infoPY2httplibGONErh   http
HTTPStatusr   r    r8   rN   r:   r   r   r   <module>rz      s     



       *    
qQ ,NNN|KKK+% % % % % % % %  . . .@N N N N NF N N N N Nr   