o
    Bi	N                  	   @   s  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 d dlmZmZmZ d dlmZ d dlmZ d d	lm Z  d d
l!m"Z" erhd dlm#Z# edee$e
f deee$e
f  dee$e
f fddZ%ede&deee$e
f  de&fddZ%de&deee$e
f  de&fddZ%deee
  dee
 dee$e
f f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)_util)StripeResponseStripeStreamResponseStripeStreamResponseAsync)_encode_datetime)extract_options_from_dict)ApiMode)BaseAddress)_APIRequestorcurrentpreviousreturnc                 C      d S N r   r   r    r    U/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/_stripe_object.py_compute_diff&      r#   c                 C   r   r   r    r!   r    r    r"   r#   ,   r$   c                 C   sf   t | tr+ttttf | } |pi }|  }t| t|  D ]}d||< q"|S | d ur1| S dS )N )	
isinstancedictr   r   strr   copysetkeys)r   r   diffkeyr    r    r"   r#   2   s   

arrayc                 C   sr   | pg } |pg }i }t | D ](\}}t||kr|| nd }t|dr-|||t|< qt|||t|< q|S )N	serialize)	enumeratelenhasattrr/   r(   r#   )r.   r   paramsivprevious_itemr    r    r"   _serialize_list?   s   
r7   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< 					dsddde
e de
e d	e
e d
e
e de
e de
d def fddZedd Zedd Zedd Zede
e fddZdeeef ddf fddZes fddZdd  Z fd!d"Zd#ed$eddf fd%d&Zd#edef fd'd(Zd#eddf fd)d*Zd+eeef ddfd,d-Zdeed.f fd/d0Ze			dtd1d2d3eeef d4e
e d	e
e d
e
e de
e d5ede fd6d7Z!edd8d3eeef de
e d9dd5ede f
d:d;Z"		<			dud1d2d3eeef de
e d=e
e# d	e
e d
e
e de
e d5eddfd>d?Z$d<ddd@d3eeef d=e
e# de
e d9e
d d5eddf fdAdBZ%e&'dC	dvdDdEdFe(dG dHede
eeef  dIe)dd f
dJdKZ*		dwdFe(dG dHede
eeef  dLe
e+e  dIe)dd fdMdNZ,		dwdFe(dG dHede
eeef  dLe
e+e  dIe)dd fdOdPZ-	dvdDdEdFedHede
eeef  dIe)de.f
dQdRZ/	dvdDdEdFedHede
eeef  dIe)de0f
dSdTZ1defdUdVZ2defdWdXZ3e&'dYdeeef fdZd[Z4deeef fd\d]Z5e&'d^deeef fd_d`Z6ee&'d^de
e fdadbZ7dce
eeef  deeef fdddeZ8dx fdfdgZ9dhee:ef dd f fdidjZ;i Z<e=eeef  e	dk< i Z>e=eee?d  f  e	dl< g Z@e=e+e  e	dm< dnede
e?d   fdodpZAdnefdqdrZB  ZCS )yStripeObjectc                       s&   e Zd Zdedef 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   superr8   _ReprJSONEncoderdefault)selfr9   	__class__r    r"   r=   R   s   z%StripeObject._ReprJSONEncoder.default)__name__
__module____qualname__r   r=   __classcell__r    r    r?   r"   r<   Q   s    r<   _retrieve_params	_previousN)
_requestoridapi_keystripe_versionstripe_accountlast_responserG   r   r3   c                   sd   t t|   t | _t | _|| _|| _d | _|d u r%t	j
j|||dn|| _|r0|| d< d S d S )NrI   rJ   rK   rH   )r;   r8   __init__r*   _unsaved_values_transient_values_last_responserE   rF   striper   _global_with_optionsrG   )r>   rH   rI   rJ   rK   rL   rG   r3   r?   r    r"   rN   \   s"   
zStripeObject.__init__c                 C      | j jS r   )rG   rI   r>   r    r    r"   rI   ~      zStripeObject.api_keyc                 C   rT   r   )rG   rK   rU   r    r    r"   rK      rV   zStripeObject.stripe_accountc                 C   rT   r   )rG   rJ   rU   r    r    r"   rJ      rV   zStripeObject.stripe_versionr   c                 C   s   | j S r   )rQ   rU   r    r    r"   rL      s   zStripeObject.last_responseupdate_dictc                    s&   |D ]}| j | qtt| |S r   )rO   addr;   r8   update)r>   rW   kr?   r    r"   rY      s   zStripeObject.updatec                    sR   |dv r| j ||i| _ d S |d dks|| jv r#tt| ||S || |< d S )N>   rI   rK   rJ   r   _)rG   _replace_options__dict__r;   r8   __setattr__r>   rZ   r5   r?   r    r"   r^      s   zStripeObject.__setattr__c              
   C   sX   |d dkr
t |z|| jv r| j| }| | W S  ty+ } zt |j |d }~ww Nr   r[   )AttributeError_field_remappingsKeyErrorargsr>   rZ   errr    r    r"   __getattr__   s   


zStripeObject.__getattr__c                    s0   |d dks|| j v rtt| |S | |= d S r`   )r]   r;   r8   __delattr__r>   rZ   r?   r    r"   rh      s   
zStripeObject.__delattr__rZ   r5   c                    sT   |dkrt d|t| ||f t| dst | _| 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().rO   )	
ValueErrorr(   r2   r*   rO   rX   r;   r8   __setitem__r_   r?   r    r"   rk      s   
	zStripeObject.__setitem__c                    sZ   z	t t| |W S  ty, } z|| jv r&td||dt|  f |d }~ww )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, )r;   r8   __getitem__rc   rP   joinlistr+   re   r?   r    r"   rl      s   
	zStripeObject.__getitem__c                    s<   t t| | t| dr|| jv r| j| d S d S d S )NrO   )r;   r8   __delitem__r2   rO   removeri   r?   r    r"   ro      s   zStripeObject.__delitem__statec                 C   s   |  | d S r   )rY   )r>   rq   r    r    r"   __setstate__   s   zStripeObject.__setstate__.c                 C   s,   t | | dd | j| j| jft| f}|S NrH   )typegetrI   rJ   rK   r'   )r>   reduce_valuer    r    r"   
__reduce__   s   

zStripeObject.__reduce__V1)api_modevaluesr-   ry   c                C   s    | j |tjj|||d||dS )NrM   )rz   	requestorry   rL   )_construct_fromrR   r   rS   )clsrz   r-   rJ   rK   rL   ry   r    r    r"   construct_from   s   zStripeObject.construct_from)rL   r{   c                C   s*   | | d||d}|j||||d |S )NrH   )rL   rG   )rz   rL   r{   ry   )ru   _refresh_from)r}   rz   rL   r{   ry   instancer    r    r"   r|     s   	zStripeObject._construct_fromFpartialc             
   C   s(   | j |||| j|||d|d d S )NrM   )rz   r   rL   r{   ry   )r   rG   r\   )r>   rz   rI   r   rJ   rK   rL   ry   r    r    r"   refresh_from!  s   
zStripeObject.refresh_from)r   rL   r{   c             
      s   |pj _ |pt|dd _|rjt| _nt t| }j|B _t _  jt| _| D ];\}}	|
|}	|	r\ fdd| D }
nttttt f tj|d j  d}
tt||
 q>|_d S )NrQ   c                    s:   i | ]\}}||d u rd nt ttj|d j dqS )Nrespr3   klass_r{   ry   )r   r8   r   _convert_to_stripe_objectrG   ).0rZ   r5   ry   inner_classr>   r    r"   
<dictcomp>Y  s     z.StripeObject._refresh_from.<locals>.<dictcomp>r   )rG   getattrrQ   rO   r*   r+   rP   clearitems_get_inner_class_type _get_inner_class_is_beneath_dictr   r   r8   r	   r   r   r;   rk   rF   )r>   rz   r   rL   r{   ry   removedrZ   r5   is_dictobjr?   r   r"   r   :  s<   	



zStripeObject._refresh_fromz:This will be removed in a future version of stripe-python.api)base_addressmethod)ru   postdeleteurlr   c                C   s   t j| ||||dS )N)r3   r   )r8   _request)r>   r   r   r3   r   r    r    r"   requestw  s   zStripeObject.requestusagec                C   s2   |d u r| j }t|\}}| jj||||||dS N)r3   optionsr   r   )rE   r   rG   r   r>   r   r   r3   r   r   request_optionsrequest_paramsr    r    r"   r     s   	zStripeObject._requestc                   s:   |d u r| j }t|\}}| jj||||||dI d H S r   )rE   r   rG   request_asyncr   r    r    r"   _request_async  s   	zStripeObject._request_asyncc                C   s0   |d u r| j }t|\}}| jj|||||dS N)r3   r   r   )rE   r   rG   request_streamr>   r   r   r3   r   r   r   r    r    r"   _request_stream  s   zStripeObject._request_streamc                   s8   |d u r| j }t|\}}| jj|||||dI d H S r   )rE   r   rG   request_stream_asyncr   r    r    r"   _request_stream_async  s   z"StripeObject._request_stream_asyncc                 C   st   t | jg}| d}t|tr|| t| dtr(|d| df  dd|tt| t| f }|S )NobjectrH   zid=%sz<%s at %s> JSON: %s )	rt   rA   ru   r&   r(   appendrm   hexrH   )r>   ident_partsobj_strunicode_reprr    r    r"   __repr__  s   



zStripeObject.__repr__c                 C   s   t j|  dd| jdS )NT   )	sort_keysindentr}   )jsondumps_to_dict_recursiver<   rU   r    r    r"   __str__  s   zStripeObject.__str__zEDeprecated. The public interface will be removed in a future version.c                 C   s   t | S r   )r'   rU   r    r    r"   to_dict     zStripeObject.to_dictc                    sL   dt tttttf f  dt tttf  fdd  fddt|  D S )Nvaluer   c                 S   s"   | d u rd S t | tr|  S | S r   )r&   r8   r   )r   r    r    r"   maybe_to_dict_recursive   s
   
z@StripeObject._to_dict_recursive.<locals>.maybe_to_dict_recursivec              	      s<   i | ]\}}|t |trtt ttt |n |qS r    )r&   rn   mapr   r	   r   )r   r-   r   r   r    r"   r   
  s    z3StripeObject._to_dict_recursive.<locals>.<dictcomp>)r
   r   r8   r   r(   r   r'   r   rU   r    r   r"   r     s   



zStripeObject._to_dict_recursivez^For internal stripe-python use only. The public interface will be removed in a future version.c                 C   s   |   S r   )r   rU   r    r    r"   to_dict_recursive  r   zStripeObject.to_dict_recursivec                 C   s
   t | dS rs   )r   rU   r    r    r"   	stripe_id  s   
zStripeObject.stripe_idr   c                 C   s   i }| j pt }|p| jpi }|  D ]O\}}|dks |dr!qt|tjr(qt|dr?|	|
|d }|i kr>|||< q||v rOt||
|d ||< q|dkrb|d urbt||
|d ||< q|S )NrH   r[   r/   additional_owners)rO   r*   rF   r   
startswithr&   rR   APIResourcer2   r/   ru   r#   r7   )r>   r   r3   unsaved_keysrZ   r5   childr    r    r"   r/     s&   
zStripeObject.serializec                    sL   t | d| j| j| jd}| j|_|  D ]\}}tt ||| q|S )NrH   )rJ   rK   )	r8   ru   rI   rJ   rK   rE   r   r;   rk   )r>   copiedrZ   r5   r?   r    r"   __copy__:  s   zStripeObject.__copy__memoc                    sB   |   }||t| < |  D ]\}}tt||t|| q|S r   )r   rH   r   r;   r8   rk   r   )r>   r   r   rZ   r5   r?   r    r"   __deepcopy__P  s
   zStripeObject.__deepcopy__rb   _inner_class_types_inner_class_dicts
field_namec                 C   s   | j |S r   )r   ru   r>   r   r    r    r"   r   `  s   z"StripeObject._get_inner_class_typec                 C   s
   || j v S r   )r   r   r    r    r"   r   e  s   
z-StripeObject._get_inner_class_is_beneath_dict)NNNNN)NNN)NFNNNr   )NN)r   r8   )DrA   rB   rC   r   JSONEncoderr<   r   r(   r   __annotations__r
   r   rN   propertyrI   rK   rJ   rL   rY   r   r^   rg   rh   rk   rl   ro   r   rr   r   rw   classmethodr   r   r~   r|   boolr   r   r   
deprecatedr   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r/   r   intr   rb   r   r   r   r   r   r   rD   r    r    r?   r"   r8   P   s  
 
"





	
	
	


=









r8   ))r:   r   r)   r   typing_extensionsr   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   rR   r   stripe._stripe_responser   r   r   stripe._encoder   stripe._request_optionsr   stripe._api_moder   stripe._base_addressr   r   r(   r#   r   r7   r8   r    r    r    r"   <module>   sZ   4





