a
    !f<C                     @   sD  d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlZd dlmZmZ d dlmZmZ eeee
f eeee
f  eee
f ddd	Zeeeeee
f  edd
d	Zeeeee
f  eddd	Zeee
  ee
 eee
f dddZG dd deee
f ZdS )    N)deepcopy)TYPE_CHECKINGTypeLiteralSelf)AnyDictListOptionalMappingSetTupleClassVarUnioncastoverload)api_requestorutil)StripeResponseStripeStreamResponse)currentpreviousreturnc                 C   s   d S N r   r   r   r   U/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/stripe_object.py_compute_diff   s    r   c                 C   s   d S r   r   r   r   r   r   r   !   s    c                 C   sf   t | trVttttf | } |p"i }|  }t| t|  D ]}d||< qD|S | d urb| S dS )N )	
isinstancedictr   r   strr   copysetkeys)r   r   diffkeyr   r   r   r   (   s    

)arrayr   r   c                 C   sr   | pg } |pg }i }t | D ]P\}}t||kr8|| nd }t|drZ|||t|< qt|||t|< q|S )N	serialize)	enumeratelenhasattrr(   r!   r   )r'   r   paramsivZprevious_itemr   r   r   _serialize_list5   s    
r/   c                       s  e Zd ZU G dd dejZeeef e	d< e
eeef  e	d< e
e e	d< e
e e	d< e
e e	d< dRe
e e
e e
e e
e e
e ed	 fd
dZee
e dddZeeef dd fddZes fddZdd Z fddZeedd fddZeed fddZedd fddZeeef dd d!d"Zeed#f dd$d%ZedSeeef e
e e
e e
e e
e ed&d'd(ZdTeeef e
e e
e e
e e
e e
e dd* fd+d,Zee
e dd-d.Z dUe!d/ ee
eeef  e
eeef  d d0d1d2Z"dVe!d/ ee
e e
e e
e e
e e
eeef  e
eeef  d d3	d4d5Z#dWeee
eeef  e
eeef  e$d0d6d7Z%edd8d9Z&edd:d;Z'eeef dd<d=Z(eeef dd>d?Z)ee
e dd@dAZ*e
eeef  eeef dBdCdDZ+d d fdEdFZ,ee-ef d dG fdHdIZ.i Z/e0eee1d  f  e	dJ< g Z2e0e3e  e	dK< ee
e1d   dLdMdNZ4edOdPdQZ5  Z6S )XStripeObjectc                       s$   e Zd Zeed fddZ  ZS )zStripeObject.ReprJSONEncoder)or   c                    s(   t |tjrt|S ttj| |S r   )r   datetimer   Z_encode_datetimesuperr0   ReprJSONEncoderdefault)selfr1   	__class__r   r   r5   H   s    
z$StripeObject.ReprJSONEncoder.default)__name__
__module____qualname__r   r5   __classcell__r   r   r7   r   r4   G   s   r4   _retrieve_params	_previousapi_keystripe_versionstripe_accountN)idr?   r@   rA   last_responser,   c                    sj   t t|   t | _t | _|| _|| _d | _t	
| d| t	
| d| t	
| d| |rf|| d< d S )Nr?   r@   rA   rB   )r3   r0   __init__r#   _unsaved_values_transient_values_last_responser=   r>   object__setattr__)r6   rB   r?   r@   rA   rC   r,   r7   r   r   rD   V   s    
zStripeObject.__init__)r   c                 C   s   | j S r   )rG   r6   r   r   r   rC   p   s    zStripeObject.last_response)update_dictr   c                    s&   |D ]}| j | qtt| |S r   )rE   addr3   r0   update)r6   rK   kr7   r   r   rM   v   s    zStripeObject.updatec                    s4   |d dks|| j v r(tt| ||S || |< d S Nr   _)__dict__r3   r0   rI   r6   rN   r.   r7   r   r   rI      s    zStripeObject.__setattr__c              
   C   sR   |d dkrt |z
| | W S  tyL } zt |j W Y d }~n
d }~0 0 d S rO   )AttributeErrorKeyErrorargsr6   rN   errr   r   r   __getattr__   s    
zStripeObject.__getattr__c                    s0   |d dks|| j v r&tt| |S | |= d S rO   )rQ   r3   r0   __delattr__r6   rN   r7   r   r   rY      s    zStripeObject.__delattr__)rN   r.   r   c                    sT   |dkr t d|t| ||f t| ds2t | _| j| tt| || d S )Nr   a8  You cannot set %s to an empty string on this object. The empty string is treated specially in our requests. If you'd like to delete the property using the save() method on this object, you may set %s.%s=None. Alternatively, you can pass %s='' to delete the property when using a resource method such as modify().rE   )	
ValueErrorr!   r+   r#   rE   rL   r3   r0   __setitem__rR   r7   r   r   r\      s    	
zStripeObject.__setitem__)rN   r   c                    sl   zt t| |W S  tyf } z<|| jv rNtd||dt|  f n|W Y d }~n
d }~0 0 d S )Nz%r.  HINT: The %r attribute was set in the past.It was then wiped when refreshing the object with the result returned by Stripe's API, probably as a result of a save().  The attributes currently available on this object are: %sz, )r3   r0   __getitem__rT   rF   joinlistr$   rV   r7   r   r   r]      s    
	zStripeObject.__getitem__c                    s4   t t| | t| dr0|| jv r0| j| d S )NrE   )r3   r0   __delitem__r+   rE   removerZ   r7   r   r   r`      s    zStripeObject.__delitem__)stater   c                 C   s   |  | d S r   )rM   )r6   rb   r   r   r   __setstate__   s    zStripeObject.__setstate__.c                 C   s,   t | | dd | j| j| jft| f}|S NrB   )typegetr?   r@   rA   r    )r6   Zreduce_valuer   r   r   
__reduce__   s    

zStripeObject.__reduce__)valuesr&   r@   rA   rC   r   c                 C   s0   | | d||||d}|j|||||d |S )NrB   )r?   r@   rA   rC   )rf   refresh_from)clsrh   r&   r@   rA   rC   instancer   r   r   construct_from   s    	zStripeObject.construct_fromF)rh   r?   partialr@   rA   rC   r   c                    s(   pt |dd | _p t |dd | _p2t |dd | _|pDt |dd | _|r^| jt| | _n0t|  t| }| j|B | _t | _| 	  | jt| | _|
 D ]v\}}	| || |}
|
r fdd|	
 D }n&ttttt f t|	 d }tt| || q|| _d S )Nr?   r@   rA   rG   c                    s8   i | ]0\}}||d u rd nt tt| d qS r   )r   r0   r   convert_to_stripe_object).0rN   r.   r?   Zinner_classrA   r@   r   r   
<dictcomp>  s   z-StripeObject.refresh_from.<locals>.<dictcomp>)getattrr?   r@   rA   rG   rE   r#   r$   rF   clearitems_get_inner_class_type _get_inner_class_is_beneath_dictr   r   r0   r	   r   rn   r3   r\   r>   )r6   rh   r?   rm   r@   rA   rC   removedrN   r.   Zis_dictobjr7   rp   r   ri      sJ    	

zStripeObject.refresh_fromc                 C   s   d S r   r   )rj   r   r   r   api_base3  s    zStripeObject.api_base)rf   postdelete)methodurlr,   headersr   c                 C   s   t j| ||||dS )N)r~   r,   )r0   _request)r6   r|   r}   r,   r~   r   r   r   request7  s    
zStripeObject.request)	method_url_r?   idempotency_keyr@   rA   r~   r,   r   c	                 C   s   |d u rd nt |}t|d|}t|d|}t|d|}t|d|}t|d|}|pb| j}|pl| j}|pv| j}|p| j}tj|| 	 ||d}	|d ur|d u ri n|
 }|t| |	||||\}
}t|
||||S )Nr?   r   r@   rA   r~   r&   ry   api_versionaccount)r    r   Zread_special_variablerA   r@   r?   r=   r   APIRequestorry   r"   rM   Zpopulate_headersr   rn   )r6   r   r   r?   r   r@   rA   r~   r,   	requestorresponser   r   r   r   D  s:    




zStripeObject._requestc                 C   sB   |d u r| j }tj| j|  | j| jd}|||||\}}|S )Nr   )r=   r   r   r?   ry   r@   rA   request_stream)r6   r|   r}   r,   r~   r   r   rP   r   r   r   r   r  s    zStripeObject.request_streamc                 C   st   t | jg}| d}t|tr*|| t| dtrP|d| df  dd|tt| t| f }|S )NrH   rB   zid=%sz<%s at %s> JSON: %s )	re   r9   rf   r   r!   appendr^   hexrB   )r6   Zident_partsZobj_strZunicode_reprr   r   r   __repr__  s    



zStripeObject.__repr__c                 C   s   t j|  dd| jdS )NT   )	sort_keysindentrj   )jsondumpsto_dict_recursiver4   rJ   r   r   r   __str__  s    zStripeObject.__str__c                 C   s   t | S r   )r    rJ   r   r   r   to_dict  s    zStripeObject.to_dictc                    sJ   t tttttf f  t tttf  ddd  fddt|  D S )N)valuer   c                 S   s&   | d u rd S t | tr|  S | S d S r   )r   r0   r   )r   r   r   r   maybe_to_dict_recursive  s
    
z?StripeObject.to_dict_recursive.<locals>.maybe_to_dict_recursivec              	      s<   i | ]4\}}|t |tr0tt ttt |n |qS r   )r   r_   mapr   r	   r   )ro   r&   r   r   r   r   rq     s
   z2StripeObject.to_dict_recursive.<locals>.<dictcomp>)r
   r   r0   r   r!   r   r    rt   rJ   r   r   r   r     s    


zStripeObject.to_dict_recursivec                 C   s
   t | dS rd   )rr   rJ   r   r   r   	stripe_id  s    zStripeObject.stripe_id)r   r   c                 C   s   i }| j pt }|p| jpi }|  D ]\}}|dks&|drDq&q&t|tjjrVq&q&t	|dr|
||d }|i kr|||< q&||v rt|||d ||< q&|dkr&|d ur&t|||d ||< q&|S )NrB   rP   r(   Zadditional_owners)rE   r#   r>   rt   
startswithr   stripeZabstractZAPIResourcer+   r(   rf   r   r/   )r6   r   r,   Zunsaved_keysrN   r.   childr   r   r   r(     s"    

zStripeObject.serializec                    sL   t | d| j| j| jd}| j|_|  D ]\}}tt ||| q,|S )NrB   )r@   rA   )	r0   rf   r?   r@   rA   r=   rt   r3   r\   )r6   copiedrN   r.   r7   r   r   __copy__  s    zStripeObject.__copy__)memor   c                    sB   |   }||t| < |  D ] \}}tt||t|| q|S r   )r   rB   rt   r3   r0   r\   r   )r6   r   r   rN   r.   r7   r   r   __deepcopy__  s
    zStripeObject.__deepcopy___inner_class_types_inner_class_dicts)
field_namer   c                 C   s   | j |S r   )r   rf   r6   r   r   r   r   ru     s    z"StripeObject._get_inner_class_type)r   c                 C   s
   || j v S r   )r   r   r   r   r   rv     s    z-StripeObject._get_inner_class_is_beneath_dict)NNNNN)NNN)NFNNN)NN)NNNNNN)NN)7r9   r:   r;   r   JSONEncoderr4   r   r!   r   __annotations__r
   r   rD   propertyrC   r   rM   r   rI   rX   rY   r\   r]   r`   rc   r   rg   classmethodr   rl   boolri   ry   r   r   r   r   r   r   r   r   r   r   r(   r   intr   r   r   r   r   r	   ru   rv   r<   r   r   r7   r   r0   F   s   
     
	
   
     
E        2  $
r0   ) r2   r   r"   r   Ztyping_extensionsr   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Zstripe.stripe_responser   r   r!   r   rH   r/   r0   r   r   r   r   <module>   s,   4

