o
    i                     @   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mZ d dl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)	GenericListTypeVarcastAnyMappingIteratorAsyncIteratorOptional)_APIRequestor)StripeObject)_utilN)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/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/_search_result_object.py_search!   s   
$zSearchResultObject._searchc                 C   s    |  d}t|tstd|S )NurlzBCannot call .list on a list object without a string "url" property)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"   0   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                    s2   t |trt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*   superr   __getitem__KeyErrorrepr)r$   r3   	__class__r   r%   r5   I   s   
zSearchResultObject.__getitem__c                 C      t | dg  S Nr   )getattr__iter__r$   r   r   r%   r=   W      zSearchResultObject.__iter__c                 C   r:   r;   )r<   __len__r>   r   r   r%   r@   Z   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_iter]   s   z$SearchResultObject._auto_paging_iterc                 C   s   t |  |  S rA   )r   rG   _auto_paging_iter_asyncr>   r   r   r%   auto_paging_iterh   s   z#SearchResultObject.auto_paging_iterc                 C  s2   | }	 |D ]}|V  q|  I d H }|jrd S qrA   )next_search_result_page_asyncrC   rD   r   r   r%   rH   m   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_resultx   s   
z'SearchResultObject._empty_search_resultc                 C   s   | j  S rA   )r   r>   r   r   r%   rC      s   zSearchResultObject.is_emptyc                 C   s(   t | j}|d| ji || |S )NrE   )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)rY   rZ   r[   )r   r   rS   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&   rX   r$   r   emptyr   r   r%   rB      s   
z*SearchResultObject.next_search_result_pagec                    s4   |  |}|d ur|S | jdi | |I d H S r_   )r^   r2   rX   r`   r   r   r%   rJ      s   

z0SearchResultObject.next_search_result_page_async)(__name__
__module____qualname__OBJECT_NAMEr   r   __annotations__boolr*   r	   r   r   r&   r,   r   
deprecatedr"   r2   r5   r
   r=   intr@   rG   r   rI   r   rH   classmethodr   r   rS   propertyrC   rX   r   r^   rB   rJ   __classcell__r   r   r8   r%   r      sT   
 



r   )typing_extensionsr   r   typingr   r   r   r   r   r	   r
   r   r   stripe._api_requestorr   stripe._stripe_objectr   striper   r   stripe._request_optionsr   r   stripe._any_iteratorr   r   r   r   r   r   r%   <module>   s   ,