
    <@gh4                         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 d dlmZmZ d dlmZmZmZmZmZ d d	lmZmZmZ  G d
 ded   ed   ed         Zy)    )CreateableAPIResource)DeletableAPIResource)
ListObject)ListableAPIResource)RequestOptions)StripeObject)class_method_variantsanitize_id)ClassVarListOptionalcastoverload)LiteralNotRequiredUnpackc                      e Zd ZU dZdZeed      ed<    G d de      Z	 G d de
      Z G d d	e
      Z G d
 de
      Z G d de
      Z G d de
      Ze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ed      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d0              Z eded.   dd fd1       Z  ed2      ded.   dd fd3       Z ed-eded.   dd fd4       Z!eed-eded.   dd fd5              Z"eded.   dd fd6       Z" ed7      ded.   dd fd8       Z"eded9   de#d    fd:       Z$eded9   de#d    fd;       Z%ededed<   dd fd=       Z&ededed<   dd fd>       Z'de	iZ(y?)@	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__     ^/var/www/html/AdoubleTech/venv/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&   c                   0    e Zd ZU eee      ed<   	 eed<   y)TestClock.AdvanceParamsexpandfrozen_timeNr   r   r   r   r   strr   r   r    r!   r"   AdvanceParamsr(   '   s#    DI&&	 	r!   r-   c                   B    e Zd ZU eee      ed<   	 eed<   	 ee   ed<   y)TestClock.CreateParamsr)   r*   nameNr+   r    r!   r"   CreateParamsr/   1   s5    DI&&	 	 #	r!   r1   c                       e Zd Zy)TestClock.DeleteParamsN)r   r   r   r    r!   r"   DeleteParamsr3   ?   s    r!   r4   c                   Z    e Zd ZU ee   ed<   	 eee      ed<   	 ee   ed<   	 ee   ed<   y)TestClock.ListParamsending_beforer)   limitstarting_afterN)r   r   r   r   r,   r   r   r   r    r!   r"   
ListParamsr6   B   sL    "3''	 DI&&	 3	 $C((	r!   r:   c                   $    e Zd ZU eee      ed<   y)TestClock.RetrieveParamsr)   N)r   r   r   r   r   r,   r   r    r!   r"   RetrieveParamsr<   T   s    DI&&	r!   r=   createddeletes_afterr*   idlivemoder0   object)r$   internal_failurereadystatusstatus_detailsTdeleted
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rH   rI   )r   _static_requestformatr
   clsrH   rI   s      r"   _cls_advancezTestClock._cls_advance   sK     CJJ*:6 K     	
 		
r!   c                      yrL   Nr    rH   rI   s     r"   advancezTestClock.advance        	r!   c                      yrW   r    selfrI   s     r"   rY   zTestClock.advance        	r!   rU   c                     t        d| j                  ddj                  t        | j	                  d                  |            S )rL   r   rM   rN   r@   rO   rP   )r   _requestrR   r
   getr\   s     r"   rY   zTestClock.advance   sQ     MMCJJ*488D>: K    	
 		
r!   c                    K   t        d| j                  ddj                  t        |            |       d{         S 7 w)rL   r   rM   rN   rO   rP   N)r   _static_request_asyncrR   r
   rS   s      r"   _cls_advance_asynczTestClock._cls_advance_async   sY      ++CJJ*:6 K   ,  	
 		
s   7AA
	Ac                    K   ywrW   r    rX   s     r"   advance_asynczTestClock.advance_async         	   c                    K   ywrW   r    r\   s     r"   rf   zTestClock.advance_async         	rh   rd   c                    K   t        d| j                  ddj                  t        | j	                  d                  |       d{         S 7 w)rL   r   rM   rN   r@   rO   rP   N)r   _request_asyncrR   r
   ra   r\   s     r"   rf   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   rM   rP   )r   rQ   	class_urlrT   rI   s     r"   createzTestClock.create   s6    
    
 	
r!   c                 v   K   t        d| j                  d| j                         |       d{         S 7 w)rn   r   rM   rP   N)r   rc   ro   rp   s     r"   create_asynczTestClock.create_async   sD      ++ ,  
 	
s   ,97
	9sidr3   c                 z    | j                         dt        |      }t        d| j                  d||            S )'
        Deletes a test clock.
        /r   deleterP   )ro   r
   r   rQ   rT   rt   rI   urls       r"   _cls_deletezTestClock._cls_delete  sE     +c*:;   
 	
r!   c                      yrv   Nr    rt   rI   s     r"   rx   zTestClock.delete  rZ   r!   c                      yr}   r    r\   s     r"   rx   zTestClock.delete'  r^   r!   r{   c                 F    | j                  d| j                         |      S )rv   rx   rP   )_request_and_refreshinstance_urlr\   s     r"   rx   zTestClock.delete0  s.     (( ) 
 	
r!   c                    K   | j                         dt        |      }t        d| j                  d||       d{         S 7 w)rv   rw   r   rx   rP   N)ro   r
   r   rc   ry   s       r"   _cls_delete_asynczTestClock._cls_delete_async=  sS      +c*:;++ ,  
 	
s   <A	A
	A	c                    K   ywr}   r    r~   s     r"   delete_asynczTestClock.delete_asyncN  rg   rh   c                    K   ywr}   r    r\   s     r"   r   zTestClock.delete_asyncX  rj   rh   r   c                 b   K   | j                  d| j                         |       d{   S 7 w)rv   rx   rP   N)_request_and_refresh_asyncr   r\   s     r"   r   zTestClock.delete_asynca  s<      44 5 
 
 	
 
s   &/-/r6   c                     | j                  d| j                         |      }t        |t              s!t	        dt        |      j                  z        |S )5
        Returns a list of your test clocks.
        ra   rP   %Expected list object from API, got %s)rQ   ro   
isinstancer   	TypeErrortyper   rT   rI   results      r"   listzTestClock.listn  s]     $$MMO % 

 &*-7<((* 
 r!   c                    K   | j                  d| j                         |       d{   }t        |t              s!t	        dt        |      j                  z        |S 7 7w)r   ra   rP   Nr   )rc   ro   r   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rT   r@   rI   instances       r"   retrievezTestClock.retrieve  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-   r1   r4   r:   r=   r   r,   boolr   classmethodr   rU   r   staticmethodrY   r	   rd   rf   rq   rs   r{   rx   r   r   r   r   r   r   r   r%   r    r!   r"   r   r      s3   
 	" '";<= 6 6 ~ ~ ^ $  L   	G N 3- -.. <== "!gdm$$ 

(./H(I
	
 
" #)*C#D	   89	  .)
89
	
 *
" 

(./H(I
	
 
" #)*C#D	   89	  ./
89
	
 0
" 
f%=> 
; 
 
 
67
	
 
 

!'(@!A
	
 
  "#;<	   78	  -(

78

	

 )

 

!'(@!A
	
 
  "#;<	   78	  -.

78

	

 /

 45	K	  & 45	K	  &  &'A B	   &'A B	  +M:r!   r   N)stripe._createable_api_resourcer   stripe._deletable_api_resourcer   stripe._list_objectr   stripe._listable_api_resourcer   stripe._request_optionsr   stripe._stripe_objectr   stripe._utilr	   r
   typingr   r   r   r   r   typing_extensionsr   r   r   r   r    r!   r"   <module>r      sM    B ? * = 2 . : ; ; : :^;+&%$^;r!   