o
    L)j                     @   s   d dl 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 d dlmZ d dlmZ d dl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
deprecated)	GenericListTypeVarcastAnyMappingIteratorAsyncIteratorOptional)_APIRequestor)StripeObjectN)RequestOptionsextract_options_from_dict)AnyIteratorT)boundc                       s  e Zd ZU dZee ed< eed< eed< de	ee
f defddZdefd	d
Zed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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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de"e fd#d$Z#dee defd%d&Z$dee defd'd(Z%  Z&S ))SearchResultObjectsearch_resultdatahas_more	next_pageparamsreturnc                 K   sH   t   t dt | jdi |W  d    S 1 sw   Y  d S )Nignore )warningscatch_warningssimplefilterDeprecationWarningsearchselfr   r   r   /var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/stripe/_search_result_object.py_search    s   
$zSearchResultObject._searchc                 C   s"   | j d}t|tstd|S )NurlzBCannot call .list on a list object without a string "url" property)_dataget
isinstancestr
ValueError)r$   r'   r   r   r%   _get_url_for_search'   s   
z&SearchResultObject._get_url_for_searchzThis will be removed in a future version of stripe-python. Please call the `search` method on the corresponding resource directly, instead of the generic search on SearchResultObject.c                 K   s   t t| jd|  |ddS Nr)   api)r   base_address)r   r   _requestr-   r#   r   r   r%   r"   /   s   zSearchResultObject.searchc                    s$   t t| jd|  |ddI d H S r.   )r   r   _request_asyncr-   r#   r   r   r%   _search_async=   s   
z SearchResultObject._search_asynckc                    s.   t |trt |S tdt|t|f )NzYou tried to access the %s index, but SearchResultObject types only support string keys. (HINT: Search calls return an object with  a 'data' (which is the data array). You likely want to call .data[%s]))r*   r+   super__getitem__KeyErrorrepr)r$   r4   	__class__r   r%   r6   H   s   
zSearchResultObject.__getitem__c                 C      t | dg  S Nr   )getattr__iter__r$   r   r   r%   r>   S      zSearchResultObject.__iter__c                 C   r;   r<   )r=   __len__r?   r   r   r%   rA   V   r@   zSearchResultObject.__len__c                 c   s,    | }	 |D ]}|V  q|  }|jrd S qN)next_search_result_pageis_emptyr$   pageitemr   r   r%   _auto_paging_iterY   s   z$SearchResultObject._auto_paging_iterc                 C   s   t |  |  S rB   )r   rH   _auto_paging_iter_asyncr?   r   r   r%   auto_paging_iterd   s   z#SearchResultObject.auto_paging_iterc                 C  s2   | }	 |D ]}|V  q|  I d H }|jrd S qrB   )next_search_result_page_asyncrD   rE   r   r   r%   rI   i   s   z*SearchResultObject._auto_paging_iter_asyncc                 K   s&   | j g dd dd tjdi |ddS )NF)r   r   r   V1)valueslast_response	requestorapi_moder   )_construct_fromr   _global_with_options)clsr   r   r   r%   _empty_search_resultt   s   
z'SearchResultObject._empty_search_resultc                 C   s   | j  S rB   )r   r?   r   r   r%   rD      s   zSearchResultObject.is_emptyc                 C   s(   t | j}|d| ji || |S )NrF   )dict_retrieve_paramsupdater   )r$   r   params_with_filtersr   r   r%   _get_filters_for_next_page   s   

z-SearchResultObject._get_filters_for_next_pagec                 C   s8   | j st|\}}| j|d|d|ddS d S )Napi_keystripe_versionstripe_account)rZ   r[   r\   )r   r   rT   r)   )r$   r   options_r   r   r%   _maybe_empty_result   s   z&SearchResultObject._maybe_empty_resultc                 K   s,   |  |}|d ur|S | jdi | |S Nr   )r_   r&   rY   r$   r   emptyr   r   r%   rC      s   
z*SearchResultObject.next_search_result_pagec                    s4   |  |}|d ur|S | jdi | |I d H S r`   )r_   r3   rY   ra   r   r   r%   rK      s   

z0SearchResultObject.next_search_result_page_async)'__name__
__module____qualname__OBJECT_NAMEr   r   __annotations__boolr+   r
   r	   r   r&   r-   r   r"   r3   r6   r   r>   intrA   rH   r   rJ   r   rI   classmethodr   r   rT   propertyrD   rY   r   r_   rC   rK   __classcell__r   r   r9   r%   r      sT   
 



r   )typing_extensionsr   r   r   typingr   r   r   r   r	   r
   r   r   r   stripe._api_requestorr   stripe._stripe_objectr   r   stripe._request_optionsr   r   stripe._any_iteratorr   r   r   r   r   r   r%   <module>   s   ,