
    Li                     2   d dl Z d dlZd dlmZmZ d dlZddlmZ  ed       ed      d               Z ed       ed      ej                  j                   d	                      Z
 ed       ed      ej                  j                   d
                      Zy)    N)	MagicMockpatch   )BaseApiClientz-genai.api_client.BaseApiClient._build_requestz'genai.api_client.BaseApiClient._requestc                    t        d      }d}d}ddi}t               }||_        d }t               }||j                  _        || _        g }	t        j
                         }
|j                  |||      D ]#  }|	j                  |       t        |	      dk  r#J  t        j
                         }|j                  |||d        | j                  |d	
       |	g dk(  sJ ||
z
  dkD  sJ y )Ntest_api_keyapi_keyGET	test/pathkeyvaluec               3   T   K   g d} | D ]  }t        j                  d       |  y w)Nz{"chunk": 1}z{"chunk": 2}z{"chunk": 3}皙?)timesleep)chunkschunks     [/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/google/genai/_test_api_client.pydelayed_segmentsz<test_request_streamed_non_blocking.<locals>.delayed_segments"   s*     =F 
jjoks   &(   T)streamr   333333?)
r   r   return_valuesegmentsside_effectr   request_streamedappendlenassert_called_once_with)mock_requestmock_build_request
api_clienthttp_methodpathrequest_dictmock_http_requestr   mock_responser   
start_timer   end_times                r   "test_request_streamed_non_blockingr,      s     ^4*+	$!,k$5! +-'7-$+,&yy{***;lK e
MM%v;! YY[(,,4t &&'8&F	C	CC	C	J		$$	$    z-genai.api_client.BaseApiClient._async_requestc                 R  K   t        d      }d}d}ddi}t               }||_         G d d      fd	}|| _        |j	                  |||      }|j	                  |||      }	|j	                  |||      }
t        j
                         }t        j                  ||	|
       d {   }t        j
                         }|j                  |||d        |j                  d
k(  sJ | j                  |d       | j                  d
k(  sJ |g dk(  sJ d||z
  cxk  rdk  sJ  J y 7 ~w)Nr   r	   r   r   r   r   c                       e Zd Zd Zy)(test_async_request.<locals>.MockResponsec                     || _         y N)text)selfr3   s     r   __init__z1test_async_request.<locals>.MockResponse.__init__I   s	    dir-   N)__name__
__module____qualname__r5    r-   r   MockResponser0   G   s    r-   r:   c                 Z   K   t        j                  d       d {     d      S 7 w)Nr   r   )asyncior   http_requestr   r:   s     r   delayed_responsez,test_async_request.<locals>.delayed_responseL   s)     
--
   s   +)+r   Fr>   r   )r   r   r   r   g333333?)
	ApiClientr   r   r   async_requestr   r<   gatherassert_called_with
call_count)mock_async_requestr#   r$   r%   r&   r'   r(   r?   async_coroutine1async_coroutine2async_coroutine3r*   resultsr+   r:   s                 @r   test_async_requestrK   ;   sM     0*+	$!,k$5! 
! $4 --k4N--k4N--k4Nyy{*..(*: ' YY[(''T<N		&	&!	++	+''$U (  
	&	&!	++	+	/	//	/	:%	,	,,	,,	,s   B#D'&D%'A?D'c                   K   t        d      }d}d}ddi}t               }||_         G d d      fd	}|| _        g }t	        j                         }	|j                  |||       d {   2 3 d {   }
|j                  |
       t        |      d
k  r)J 7 /7 (6 t	        j                         }|j                  |||d        | j                  |d       |g dk(  sJ ||	z
  dkD  sJ y w)Nr   r	   r   r   r   r   c                       e Zd Zd Zd Zy)>test_async_request_streamed_non_blocking.<locals>.MockResponsec                     || _         y r2   )	_segments)r4   r   s     r   r5   zGtest_async_request_streamed_non_blocking.<locals>.MockResponse.__init__v   s	    dnr-   c              3   `   K   | j                   D ]  }t        j                  d       |  y w)Nr   )rP   r   r   )r4   segments     r   r   zGtest_async_request_streamed_non_blocking.<locals>.MockResponse.segments{   s)     ^^ '

3s   ,.N)r6   r7   r8   r5   r   r9   r-   r   r:   rN   t   s     
r-   r:   c                     K    g d      S w)Nr   r9   r=   s     r   r?   zBtest_async_request_streamed_non_blocking.<locals>.delayed_response   s     HIIs   r   Tr@   r   r   )	rA   r   r   r   r   async_request_streamedr   r    r!   )rF   r#   r$   r%   r&   r'   r(   r?   r   r*   r   r+   r:   s               @r   (test_async_request_streamed_non_blockingrU   f   s     0*+	$!,k$5!
 
J $4 &yy{*%<<4   E MM%v;!	  
 YY[(,,4t ,,$T -  
C	CC	C	J		$$	$s=   A(C/+B,C/0B4B5B8 C/C/BAC/)r<   r   unittest.mockr   r   pytestr$   r   r,   markrK   rU   r9   r-   r   <module>rY      s       *  % 6701% 2 8%D 6767%-  8 8%-P 6767,%  8 8,%r-   