o
    it                     @   s   d dl mZmZ d dlmZmZmZmZmZ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mZ d dlmZ e	ded	ZG d
d deee ZdS )    )SelfUnpack)AnyAsyncIteratorIteratorListGenericTypeVarcastMapping)_APIRequestor)AnyIterator)StripeObject)RequestOptionsextract_options_from_dict)
quote_plusT)boundc                       s  e Zd ZU dZee ed< eed< eed< defddZ	de
eef defd	d
Zde
eef defddZde
eef defddZdede
eef fddZdedef fddZdee fddZdefddZdee fddZdee fddZdee fddZdee fdd Zedee defd!d"Ze defd#d$Z!dede
eef fd%d&Z"dee defd'd(Z#dee defd)d*Z$dede
eef fd+d,Z%dee defd-d.Z&dee defd/d0Z'  Z(S )1
ListObjectlistdatahas_moreurlreturnc                 C   s    |  d}t|tstd|S )Nr   zBCannot call .list on a list object without a string "url" property)get
isinstancestr
ValueError)selfr    r   s/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/_list_object.py_get_url_for_list#   s   

zListObject._get_url_for_listparamsc                 K   s   t t| jd|  |ddS Nr   apir"   base_address)r
   r   _requestr!   r   r"   r   r   r    r   +   s   zListObject.listc                    s$   t t| jd|  |ddI d H S r#   )r
   r   _request_asyncr!   r(   r   r   r    
list_async6   s   
zListObject.list_asyncc                 K   s4   |  d}t|tstdtt| jd||ddS )Nr   zdCannot call .create on a list object for the collection of an object without a string "url" propertypostr$   r%   )r   r   r   r   r
   r   r'   )r   r"   r   r   r   r    createA   s   

zListObject.createidc                 K   sJ   |  d}t|tstdd|  dt|f }tt| jd||ddS )Nr   zfCannot call .retrieve on a list object for the collection of an object without a string "url" propertyz%s/%sr   r$   r%   )r   r   r   r   r   r
   r   r'   )r   r-   r"   r   r   r   r    retrieveQ   s   

zListObject.retrievekc                    s2   t |trtt| |S tdt|t|f )NzYou tried to access the %s index, but ListObject types only support string keys. (HINT: List calls return an object with a 'data' (which is the data array). You likely want to call .data[%s]))r   r   superr   __getitem__KeyErrorrepr)r   r/   	__class__r   r    r1   c   s   
zListObject.__getitem__c                 C      t | dg  S Nr   )getattr__iter__r   r   r   r    r9   q   s   zListObject.__iter__c                 C   r6   r7   )r8   __len__r:   r   r   r    r;   v      zListObject.__len__c                 C   r6   r7   )r8   __reversed__r:   r   r   r    r=   y   r<   zListObject.__reversed__c                 C   s   t |  |  S N)r   _auto_paging_iter_auto_paging_iter_asyncr:   r   r   r    auto_paging_iter|   s   zListObject.auto_paging_iterc                 c   sj    | }	 | j dd ur#| j dd u r#t|D ]}|V  q| }n|D ]}|V  q%| }|jr4d S qNTending_beforestarting_after)_retrieve_paramsr   reversedprevious_page	next_pageis_emptyr   pageitemr   r   r    r?      s   
zListObject._auto_paging_iterc                 C  sv   | }	 | j dd ur&| j dd u r&t|D ]}|V  q| I d H }n|D ]}|V  q(| I d H }|jr:d S qrB   )rE   r   rF   previous_page_asyncnext_page_asyncrI   rJ   r   r   r    r@      s   z"ListObject._auto_paging_iter_asyncc                 K   s"   | j dg id tjdi |ddS )Nr   V1)valueslast_response	requestorapi_moder   )_construct_fromr   _global_with_options)clsr"   r   r   r    _empty_list   s   zListObject._empty_listc                 C   s   | j  S r>   )r   r:   r   r   r    rI      s   zListObject.is_emptyc                 C   B   t | jd d}|stdt| j}|d|i || |S )Nr-   5Unexpected: element in .data of list object had no idrD   r8   r   r   dictrE   update)r   r"   last_idparams_with_filtersr   r   r    _get_filters_for_next_page      

z%ListObject._get_filters_for_next_pagec                 K   s8   | j st|\}}| jdi |S | jdi | |S Nr   )r   r   rW   r   r`   r   r"   request_options_r   r   r    rH      s   zListObject.next_pagec                    s@   | j st|\}}| jdi |S | jdi | |I d H S rb   )r   r   rW   r*   r`   rc   r   r   r    rN      s   zListObject.next_page_asyncc                 C   rX   )Nr   r-   rZ   rC   r[   )r   r"   first_idr_   r   r   r    _get_filters_for_previous_page   ra   z)ListObject._get_filters_for_previous_pagec                 K   s<   | j st|\}}| jdi |S | jdi | |}|S rb   )r   r   rW   r   rg   r   r"   rd   re   resultr   r   r    rG      s   zListObject.previous_pagec                    sD   | j st|\}}| jdi |S | jdi | |I d H }|S rb   )r   r   rW   r*   rg   rh   r   r   r    rM      s   zListObject.previous_page_async))__name__
__module____qualname__OBJECT_NAMEr   r   __annotations__boolr   r!   r   r   r   r   r*   r,   r.   r1   r   r9   intr;   r=   r   rA   r?   r   r@   classmethodr   r   rW   propertyrI   r`   rH   rN   rg   rG   rM   __classcell__r   r   r4   r    r      sZ   
 



	

r   N)typing_extensionsr   r   typingr   r   r   r   r   r	   r
   r   stripe._api_requestorr   stripe._any_iteratorr   stripe._stripe_objectr   stripe._request_optionsr   r   urllib.parser   r   r   r   r   r   r    <module>   s   (
