o
    iN                  	   @   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mZ d d	l m!Z! d d
l"m#Z# erjd 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)PERSISTENT_OPTIONS_KEYSextract_options_from_dict)ApiMode)BaseAddress_APIRequestorcurrentpreviousreturnc                 C      d S N r   r   r"   r"   u/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/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%   5   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hasattrr1   r*   r%   )r0   r   paramsivprevious_itemr"   r"   r$   _serialize_listB   s   
r9   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   superr:   _ReprJSONEncoderdefault)selfr;   	__class__r"   r$   r?   U   s   z%StripeObject._ReprJSONEncoder.default)__name__
__module____qualname__r   r?   __classcell__r"   r"   rA   r$   r>   T   s    r>   _retrieve_params	_previousN)
_requestoridapi_keystripe_versionstripe_accountlast_responserI   r   r5   c          	         sn   t t|   t | _t | _|| _|| _d | _ddl	m
} |d u r*|j|||dn|| _|r5|| d< d S d S )Nr   r   rK   rL   rM   rJ   )r=   r:   __init__r,   _unsaved_values_transient_values_last_responserG   rH   stripe._api_requestorr   _global_with_optionsrI   )	r@   rJ   rK   rL   rM   rN   rI   r5   r   rA   r"   r$   rP   ]   s$   
zStripeObject.__init__c                 C      | j jS r!   )rI   rK   r@   r"   r"   r$   rK         zStripeObject.api_keyc                 C   rV   r!   )rI   rM   rW   r"   r"   r$   rM      rX   zStripeObject.stripe_accountc                 C   rV   r!   )rI   rL   rW   r"   r"   r$   rL      rX   zStripeObject.stripe_versionr   c                 C   s   | j S r!   )rS   rW   r"   r"   r$   rN      s   zStripeObject.last_responseupdate_dictc                    s&   |D ]}| j | qtt| |S r!   )rQ   addr=   r:   update)r@   rY   krA   r"   r$   r[      s   zStripeObject.updatec                    sR   |t v r| j||i| _d S |d dks|| jv r#tt| ||S || |< d S Nr   _)r   rI   _new_requestor_with_options__dict__r=   r:   __setattr__r@   r\   r7   rA   r"   r$   ra      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 r]   )AttributeError_field_remappingsKeyErrorargsr@   r\   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=   r:   __delattr__r@   r\   rA   r"   r$   rj      s   
zStripeObject.__delattr__r\   r7   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().rQ   )	
ValueErrorr*   r4   r,   rQ   rZ   r=   r:   __setitem__rb   rA   r"   r$   rm      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=   r:   __getitem__re   rR   joinlistr-   rg   rA   r"   r$   rn      s   
	zStripeObject.__getitem__c                    s<   t t| | t| dr|| jv r| j| d S d S d S )NrQ   )r=   r:   __delitem__r4   rQ   removerk   rA   r"   r$   rq      s   zStripeObject.__delitem__statec                 C   s   |  | d S r!   )r[   )r@   rs   r"   r"   r$   __setstate__   s   zStripeObject.__setstate__.c                 C   s,   t | | dd | j| j| jft| f}|S NrJ   )typegetrK   rL   rM   r)   )r@   reduce_valuer"   r"   r$   
__reduce__   s   

zStripeObject.__reduce__V1)api_modevaluesr/   r{   c                C   s*   ddl m} | j||j|||d||dS )Nr   r   rO   )r|   	requestorr{   rN   )rT   r   _construct_fromrU   )clsr|   r/   rL   rM   rN   r{   r   r"   r"   r$   construct_from   s   zStripeObject.construct_from)rN   r}   c                C   s*   | | d||d}|j||||d |S )NrJ   )rN   rI   )r|   rN   r}   r{   )rw   _refresh_from)r   r|   rN   r}   r{   instancer"   r"   r$   r~     s   	zStripeObject._construct_fromFpartialc             
   C   s(   | j |||| j|||d|d d S )NrO   )r|   r   rN   r}   r{   )r   rI   r_   )r@   r|   rK   r   rL   rM   rN   r{   r"   r"   r$   refresh_from(  s   
zStripeObject.refresh_from)r   rN   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 )NrS   c                    s:   i | ]\}}||d u rd nt ttj|d j dqS )Nrespr5   klass_r}   r{   )r   r:   r   _convert_to_stripe_objectrI   ).0r\   r7   r{   inner_classr@   r"   r$   
<dictcomp>`  s     z.StripeObject._refresh_from.<locals>.<dictcomp>r   )rI   getattrrS   rQ   r,   r-   rR   clearitems_get_inner_class_type _get_inner_class_is_beneath_dictr   r   r:   r	   r   r   r=   rm   rH   )r@   r|   r   rN   r}   r{   removedr\   r7   is_dictobjrA   r   r$   r   A  s<   	



zStripeObject._refresh_fromz:This will be removed in a future version of stripe-python.api)base_addressmethod)rw   postdeleteurlr   c                C   s   t j| ||||dS )N)r5   r   )r:   _request)r@   r   r   r5   r   r"   r"   r$   request~  s   zStripeObject.requestusagec                C   s2   |d u r| j }t|\}}| jj||||||dS N)r5   optionsr   r   )rG   r   rI   r   r@   r   r   r5   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   )rG   r   rI   request_asyncr   r"   r"   r$   _request_async  s   	zStripeObject._request_asyncc                C   s0   |d u r| j }t|\}}| jj|||||dS N)r5   r   r   )rG   r   rI   request_streamr@   r   r   r5   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   )rG   r   rI   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objectrJ   zid=%sz<%s at %s> JSON: %s )	rv   rC   rw   r(   r*   appendro   hexrJ   )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>   rW   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)   rW   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(   r:   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(   rp   mapr   r	   r   )r   r/   r   r   r"   r$   r     s    z3StripeObject._to_dict_recursive.<locals>.<dictcomp>)r
   r   r:   r   r*   r   r)   r   rW   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   rW   r"   r"   r$   to_dict_recursive  r   zStripeObject.to_dict_recursivec                 C   s
   t | dS ru   )r   rW   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 )NrJ   r^   r1   additional_owners)rQ   r,   rH   r   
startswithr(   stripeAPIResourcer4   r1   rw   r%   r9   )r@   r   r5   unsaved_keysr\   r7   childr"   r"   r$   r1   %  s&   
zStripeObject.serializec                    sL   t | d| j| j| jd}| j|_|  D ]\}}tt ||| q|S )NrJ   )rL   rM   )	r:   rw   rK   rL   rM   rG   r   r=   rm   )r@   copiedr\   r7   rA   r"   r$   __copy__A  s   zStripeObject.__copy__memoc                    sB   |   }||t| < |  D ]\}}tt||t|| q|S r!   )r   rJ   r   r=   r:   rm   r   )r@   r   r   r\   r7   rA   r"   r$   __deepcopy__W  s
   zStripeObject.__deepcopy__rd   _inner_class_types_inner_class_dicts
field_namec                 C   s   | j |S r!   )r   rw   r@   r   r"   r"   r$   r   g  s   z"StripeObject._get_inner_class_typec                 C   s
   || j v S r!   )r   r   r"   r"   r$   r   l  s   
z-StripeObject._get_inner_class_is_beneath_dict)NNNNN)NNN)NFNNNr!   )NN)r   r:   )DrC   rD   rE   r   JSONEncoderr>   r   r*   r   __annotations__r
   r   rP   propertyrK   rM   rL   rN   r[   r   ra   ri   rj   rm   rn   rq   r   rt   r   ry   classmethodr   r   r   r~   boolr   r   r   
deprecatedr   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   intr   rd   r   r   r   r   r   r   rF   r"   r"   rA   r$   r:   S   s  
 
$





	
	
	


=









r:   )+r<   r   r+   r   typing_extensionsr   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   stripe._stripe_responser   r   r   stripe._encoder   stripe._request_optionsr   r   stripe._api_moder   stripe._base_addressr   rT   r   r*   r%   r   r9   r:   r"   r"   r"   r$   <module>   sZ   4





