
    h                         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
ed
   ed
   e	d
         Zy)    )CreateableAPIResource)
ListObject)ListableAPIResource)RequestOptions)UpdateableAPIResource)sanitize_id)ClassVarDictListcast)LiteralNotRequiredUnpackc                      e Zd ZU dZdZeed      ed<    G d de      Z	 G d de      Z
 G d d	e      Z G 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       Zeded   dd fd       Zeded   ded    fd       Zeded   ded    fd       Zededed   dd fd       Zededed   dd fd       Zededed   dd fd       Zededed   dd fd        Zy!)"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                   X    e Zd ZU eee      ed<   	 eed<   	 eeeef      ed<   	 eed<   y)Feature.CreateParamsexpand
lookup_keymetadatanameN)__name__
__module____qualname__r   r   str__annotations__r
        \/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/stripe/entitlements/_feature.pyCreateParamsr      sH    DI&&	 	 d38n--	 		r   r!   c                   ~    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<   y)Feature.ListParamsarchivedending_beforer   limitr   starting_afterN)	r   r   r   r   boolr   r   r   intr   r   r    
ListParamsr#   -   sp    d##	 #3''	 DI&&	 3	  $$	 $C((	r   r*   c                   Z    e Zd ZU ee   ed<   	 eee      ed<   	 ed   ed<   	 ee   ed<   y)Feature.ModifyParamsactiver   zLiteral['']|Dict[str, str]r   r   N)r   r   r   r   r(   r   r   r   r   r   r    ModifyParamsr,   G   sM    D!!	 DI&&	 :;;	 #	r   r.   c                   $    e Zd ZU eee      ed<   y)Feature.RetrieveParamsr   N)r   r   r   r   r   r   r   r   r   r    RetrieveParamsr0   Y   s    DI&&	r   r1   r-   idlivemoder   r   r   objectparamsr   returnc                 Z    t        d| j                  d| j                         |            S )#
        Creates a feature
        r   postr5   )r   _static_request	class_urlclsr5   s     r    createzFeature.create|   s6    
    
 	
r   c                 v   K   t        d| j                  d| j                         |       d{         S 7 w)r8   r   r9   r:   N)r   _static_request_asyncr<   r=   s     r    create_asynczFeature.create_async   sD      ++ ,  
 	
s   ,97
	9r#   c                     | j                  d| j                         |      }t        |t              s!t	        dt        |      j                  z        |S )-
        Retrieve a list of features
        getr:   %Expected list object from API, got %s)r;   r<   
isinstancer   	TypeErrortyper   r>   r5   results      r    listzFeature.list   s]     $$MMO % 

 &*-7<((* 
 r   c                    K   | j                  d| j                         |       d{   }t        |t              s!t	        dt        |      j                  z        |S 7 7w)rD   rE   r:   NrF   )rA   r<   rG   r   rH   rI   r   rJ   s      r    
list_asynczFeature.list_async   sk      00MMO 1 
 

 &*-7<((* 
 
s   &A"A 8A"r,   c                 z    | j                         dt        |      }t        d| j                  d||            S )K
        Update a feature's metadata or permanently deactivate it.
        /r   r9   r:   )r<   r   r   r;   r>   r2   r5   urls       r    modifyzFeature.modify   sD     +b/:   
 	
r   c                    K   | j                         dt        |      }t        d| j                  d||       d{         S 7 w)rP   rQ   r   r9   r:   N)r<   r   r   rA   rR   s       r    modify_asynczFeature.modify_async   sR      +b/:++ ,  
 	
s   <A	A
	A	r0   c                 8     | |fi |}|j                          |S )%
        Retrieves a feature
        )refreshr>   r2   r5   instances       r    retrievezFeature.retrieve   s$     r$V$r   c                 T   K    | |fi |}|j                          d{    |S 7 w)rX   N)refresh_asyncrZ   s       r    retrieve_asynczFeature.retrieve_async   s3      r$V$$$&&& 	's   (&(N)r   r   r   __doc__r   r	   r   r   r   r!   r*   r.   r1   r(   r   r
   classmethodr   r?   rB   r   rL   rN   rT   rV   r\   r_   r   r   r    r   r      s/   
 	 '"89: ~ $^ 4~ $  L 	G N O 38n I *++ 
f%;< 
 
 
 
45
	
 
 23	I	 & 23	I	 & 

 &'= >
	
 
  

 &'= >
	
 
   &'? @	   &'? @	 r   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    <module>rj      sJ    B * = 2 A $ - - : :k)$	")$kr   