o
    Bi                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	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 G d	d
 d
ed
 ed
 e	d
 ZdS )    )CreateableAPIResource)
ListObject)ListableAPIResource)RequestOptions)UpdateableAPIResource)sanitize_id)ClassVarDictListcast)LiteralNotRequiredUnpackc                   @   s  e Zd ZU dZdZeed  ed< G dd deZ	G dd deZ
G dd	 d	eZG d
d deZeed< 	 eed< 	 eed< 	 eed< 	 eeef ed< 	 eed< 	 ed ed< 	 eded dd fddZeded dd fddZeded ded  fddZeded ded  fddZededed dd fd d!Zededed dd fd"d#Zededed$ dd fd%d&Zededed$ dd fd'd(Zd)S )*Featurez
    A feature represents a monetizable ability or functionality in your system.
    Features can be assigned to products, and when those products are purchased, Stripe will create an entitlement to the feature for the purchasing customer.
    zentitlements.featureOBJECT_NAMEc                   @   sH   e Zd ZU eee  ed< 	 eed< 	 eeeef  ed< 	 eed< dS )Feature.CreateParamsexpand
lookup_keymetadatanameN)__name__
__module____qualname__r   r
   str__annotations__r	    r   r   \/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/entitlements/_feature.pyCreateParams   s   
 r   c                   @   sd   e Zd ZU ee ed< 	 ee ed< 	 eee  ed< 	 ee ed< 	 ee ed< 	 ee ed< dS )Feature.ListParamsarchivedending_beforer   limitr   starting_afterN)	r   r   r   r   boolr   r   r
   intr   r   r   r   
ListParams-   s   
 r%   c                   @   sH   e Zd ZU ee ed< 	 eee  ed< 	 ed ed< 	 ee ed< dS )Feature.ModifyParamsactiver   zLiteral['']|Dict[str, str]r   r   N)r   r   r   r   r#   r   r
   r   r   r   r   r   ModifyParamsG   s   
 r(   c                   @   s   e Zd ZU eee  ed< dS )Feature.RetrieveParamsr   N)r   r   r   r   r
   r   r   r   r   r   r   RetrieveParamsY   s   
 r*   r'   idlivemoder   r   r   objectparamsr   returnc                 K   s   t d| jd|  |dS )#
        Creates a feature
        r   postr.   )r   _static_request	class_urlclsr.   r   r   r   create|   s   zFeature.createc                    s"   t d| jd|  |dI dH S )r0   r   r1   r2   N)r   _static_request_asyncr4   r5   r   r   r   create_async   s   
zFeature.create_asyncr   c                 K   s4   | j d|  |d}t|tstdt|j |S )-
        Retrieve a list of features
        getr2   %Expected list object from API, got %s)r3   r4   
isinstancer   	TypeErrortyper   r6   r.   resultr   r   r   list   s   
zFeature.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r:   r;   r2   Nr<   )r8   r4   r=   r   r>   r?   r   r@   r   r   r   
list_async   s   
zFeature.list_asyncr&   c                 K   s*   d|   t|f }td| jd||dS )K
        Update a feature's metadata or permanently deactivate it.
        %s/%sr   r1   r2   )r4   r   r   r3   r6   r+   r.   urlr   r   r   modify   s   zFeature.modifyc                    s2   d|   t|f }td| jd||dI dH S )rD   rE   r   r1   r2   N)r4   r   r   r8   rF   r   r   r   modify_async   s   
zFeature.modify_asyncr)   c                 K   s   | |fi |}|   |S )%
        Retrieves a feature
        )refreshr6   r+   r.   instancer   r   r   retrieve   s   zFeature.retrievec                    s$   | |fi |}|  I dH  |S )rJ   N)refresh_asyncrL   r   r   r   retrieve_async   s   zFeature.retrieve_asyncN)r   r   r   __doc__r   r   r   r   r   r   r%   r(   r*   r#   r   r	   classmethodr   r7   r9   r   rB   rC   rH   rI   rN   rP   r   r   r   r   r      s   
 
r   N)stripe._createable_api_resourcer   stripe._list_objectr   stripe._listable_api_resourcer   stripe._request_optionsr   stripe._updateable_api_resourcer   stripe._utilr   typingr   r	   r
   r   typing_extensionsr   r   r   r   r   r   r   r   <module>   s   
