
    Ai-                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZmZ d dlmZmZmZ erd d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ  G d ded   ed   ed         Z y)    )CreateableAPIResource)DeletableAPIResource)
ListObject)ListableAPIResource)StripeObject)class_method_variantsanitize_id)ClassVarOptionalcastoverload)LiteralUnpackTYPE_CHECKING)TestClockAdvanceParams)TestClockCreateParams)TestClockDeleteParams)TestClockListParams)TestClockRetrieveParamsc                   *   e Zd ZU dZdZeed      ed<    G d de      Z	e
ed<   	 eed      ed<   	 e
ed	<   	 e
ed
<   	 eed<   	 eed<   	 ee   ed<   	 ed   ed<   	 ed   ed<   	 e	ed<   ededed   dd fd       Zeededed   dd fd              Zeded   dd fd       Z ed      ded   dd fd       Zededed   dd fd       Zeededed   dd fd              Zeded   dd fd       Z ed      ded   dd fd       Zeded    dd fd!       Zeded    dd fd"       Zed#eded$   dd fd%       Zeed#eded$   dd fd&              Zeded$   dd fd'       Z ed(      ded$   dd fd)       Zed#eded$   dd fd*       Zeed#eded$   dd fd+              Zeded$   dd fd,       Z ed-      ded$   dd fd.       Zeded/   ded    fd0       Zeded/   ded    fd1       Zededed2   dd fd3       Z ededed2   dd fd4       Z!de	iZ"y5)6	TestClocka  
    A test clock enables deterministic control over objects in testmode. With a test clock, you can create
    objects at a frozen time in the past or future, and advance to a specific future time to observe webhooks and state changes. After the clock advances,
    you can either validate the current state of your scenario (and test your assumptions), change the current state of your scenario (and test more complex scenarios), or keep advancing forward in time.
    ztest_helpers.test_clockOBJECT_NAMEc                   <    e Zd ZU  G d de      Zee   ed<   deiZy)TestClock.StatusDetailsc                       e Zd ZU eed<   y)!TestClock.StatusDetails.Advancingtarget_frozen_timeN)__name__
__module____qualname__int__annotations__     R/var/www/html/immo/lib/python3.12/site-packages/stripe/test_helpers/_test_clock.py	Advancingr   .   s     ##r$   r&   	advancingN)r   r   r    r   r&   r   r"   _inner_class_typesr#   r$   r%   StatusDetailsr   -   s&    	 	 I&&)95r$   r)   createdTdeleteddeletes_afterfrozen_timeidlivemodenameobject)r'   internal_failurereadystatusstatus_details
test_clockparamsr   returnc                 p    t        d| j                  ddj                  t        |            |            S )
        Starts advancing a test clock to a specified time in the future. Advancement is done when status changes to Ready.
        r   post1/v1/test_helpers/test_clocks/{test_clock}/advancer6   r7   )r   _static_requestformatr	   clsr6   r7   s      r%   _cls_advancezTestClock._cls_advance]   sK     CJJ*:6 K     	
 		
r$   c                      yr:   Nr#   r6   r7   s     r%   advancezTestClock.advanceo        	r$   c                      yrE   r#   selfr7   s     r%   rG   zTestClock.advancey   s     	r$   rC   c                     t        d| j                  ddj                  t        | j	                  d                  |            S )r:   r   r;   r<   r.   r=   r>   )r   _requestr@   r	   getrJ   s     r%   rG   zTestClock.advance   sQ     MMCJJ*488D>: K    	
 		
r$   c                    K   t        d| j                  ddj                  t        |            |       d{         S 7 w)r:   r   r;   r<   r=   r>   N)r   _static_request_asyncr@   r	   rA   s      r%   _cls_advance_asynczTestClock._cls_advance_async   sY      ++CJJ*:6 K   ,  	
 		
s   7AA
	Ac                    K   ywrE   r#   rF   s     r%   advance_asynczTestClock.advance_async         	   c                    K   ywrE   r#   rJ   s     r%   rS   zTestClock.advance_async         	rU   rQ   c                    K   t        d| j                  ddj                  t        | j	                  d                  |       d{         S 7 w)r:   r   r;   r<   r.   r=   r>   N)r   _request_asyncr@   r	   rN   rJ   s     r%   rS   zTestClock.advance_async   sa      %%CJJ*488D>: K   &  	
 		
s   AAA
		Ar   c                 Z    t        d| j                  d| j                         |            S )\
        Creates a new test clock that can be attached to new customers and quotes.
        r   r;   r>   )r   r?   	class_urlrB   r7   s     r%   createzTestClock.create   s6    
    
 	
r$   c                 v   K   t        d| j                  d| j                         |       d{         S 7 w)r[   r   r;   r>   N)r   rP   r\   r]   s     r%   create_asynczTestClock.create_async   sD      ++ ,  
 	
s   ,97
	9sidr   c                 z    | j                         dt        |      }t        d| j                  d||            S )'
        Deletes a test clock.
        /r   deleter>   )r\   r	   r   r?   rB   ra   r7   urls       r%   _cls_deletezTestClock._cls_delete   sE     +c*:;   
 	
r$   c                      yrc   Nr#   ra   r7   s     r%   re   zTestClock.delete   rH   r$   c                      yrj   r#   rJ   s     r%   re   zTestClock.delete  s    
 	r$   rh   c                 F    | j                  d| j                         |      S )rc   re   r>   )_request_and_refreshinstance_urlrJ   s     r%   re   zTestClock.delete  s.     (( ) 
 	
r$   c                    K   | j                         dt        |      }t        d| j                  d||       d{         S 7 w)rc   rd   r   re   r>   N)r\   r	   r   rP   rf   s       r%   _cls_delete_asynczTestClock._cls_delete_async  sS      +c*:;++ ,  
 	
s   <A	A
	A	c                    K   ywrj   r#   rk   s     r%   delete_asynczTestClock.delete_async)  rT   rU   c                    K   ywrj   r#   rJ   s     r%   rs   zTestClock.delete_async3  rW   rU   rq   c                 b   K   | j                  d| j                         |       d{   S 7 w)rc   re   r>   N)_request_and_refresh_asyncro   rJ   s     r%   rs   zTestClock.delete_async<  s<      44 5 
 
 	
 
s   &/-/r   c                     | j                  d| j                         |      }t        |t              s!t	        dt        |      j                  z        |S )5
        Returns a list of your test clocks.
        rN   r>   %Expected list object from API, got %s)r?   r\   
isinstancer   	TypeErrortyper   rB   r7   results      r%   listzTestClock.listI  s]     $$MMO % 

 &*-7<((* 
 r$   c                    K   | j                  d| j                         |       d{   }t        |t              s!t	        dt        |      j                  z        |S 7 7w)rx   rN   r>   Nry   )rP   r\   rz   r   r{   r|   r   r}   s      r%   
list_asynczTestClock.list_async]  sk      00MMO 1 
 

 &*-7<((* 
 
s   &A"A 8A"r   c                 8     | |fi |}|j                          |S ))
        Retrieves a test clock.
        )refreshrB   r.   r7   instances       r%   retrievezTestClock.retrieveq  s$     r$V$r$   c                 T   K    | |fi |}|j                          d{    |S 7 w)r   N)refresh_asyncr   s       r%   retrieve_asynczTestClock.retrieve_async|  s3      r$V$$$&&& 	's   (&(N)#r   r   r    __doc__r   r
   r   r"   r   r)   r!   r   strboolclassmethodr   rC   r   staticmethodrG   r   rQ   rS   r^   r`   rh   re   rq   rs   r   r   r   r   r   r(   r#   r$   r%   r   r      s   
 	" '";<= 6 6 L gdm$$   	G N 3- -.. <== "!

(./G(H
	
 
" #)*B#C	   78	  .)
78
	
 *
" 

(./G(H
	
 
" #)*B#C	   78	  ./
78
	
 0
" 
f%<= 
+ 
 
 
56
	
 
 

!'(?!@
	
 
  "#:;	   v&=> ;   -(

67

	

 )

 

!'(?!@
	
 
  "#:;	   67	  -.

67

	

 /

 34	K	  & 34	K	  &  &'@ A	   &'@ A	  +M:r$   r   N)!stripe._createable_api_resourcer   stripe._deletable_api_resourcer   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   stripe._utilr   r	   typingr
   r   r   r   typing_extensionsr   r   r   5stripe.params.test_helpers._test_clock_advance_paramsr   4stripe.params.test_helpers._test_clock_create_paramsr   4stripe.params.test_helpers._test_clock_delete_paramsr   2stripe.params.test_helpers._test_clock_list_paramsr   6stripe.params.test_helpers._test_clock_retrieve_paramsr   r   r#   r$   r%   <module>r      sf    B ? * = . : 5 5 < <
i;+&%$i;r$   