
    PIi8                     z    d dl mZ d dlmZ 	 d dlmZ d dl	Z	 G d dej                        Zy# e$ r d dlZY %w xY w)    )FacebookBadObjectError)TypeCheckerNc                       e Zd ZdZg Zi Z G d d      Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zed        Zed        Zed        Zed        Zed        Zd Zd Zd Zd Zed        Zy)AbstractObjectz
    Represents an abstract object (may or may not have explicitly be a node of
    the Graph) as a MutableMapping of its data.
    c                       e Zd Zy)AbstractObject.FieldN)__name__
__module____qualname__     x/var/www/webhook.estador.de/web/meta/bot/venv/lib/python3.12/site-packages/facebook_business/adobjects/abstractobject.pyFieldr      s    r   r   c                 d    i | _         t        | j                  | j                               | _        y N)_datar   _field_types_get_field_enum_info_field_checkerselfs    r   __init__zAbstractObject.__init__"   s*    
)$*;*;%%')r   c                 2    | j                   t        |         S r   )r   strr   keys     r   __getitem__zAbstractObject.__getitem__'   s    zz#c(##r   c                     |j                  d      r| j                  ||       | S | j                  j                  ||      | j                  |<   | S )N_)
startswith__setattr__r   get_typed_valuer   )r   r   values      r   __setitem__zAbstractObject.__setitem__*   sL    >>#S%(  #11AA#uMDJJsOr   c                 l    |d uxr/ t        |d      xr! | j                         |j                         k(  S )Nexport_all_data)hasattrr&   )r   others     r   __eq__zAbstractObject.__eq__1   s=    D  >WU4E%F >  "e&;&;&==	>r   c                     | j                   |= y r   r   r   s     r   __delitem__zAbstractObject.__delitem__5   s    JJsOr   c                 ,    t        | j                        S r   )iterr   r   s    r   __iter__zAbstractObject.__iter__8   s    DJJr   c                 ,    t        | j                        S r   )lenr   r   s    r   __len__zAbstractObject.__len__;   s    4::r   c                     || j                   v S r   r+   r   s     r   __contains__zAbstractObject.__contains__>   s    djj  r   c                 ,    t        | j                        S r   )unicoder   r   s    r   __unicode__zAbstractObject.__unicode__A   s    tzz""r   c           	          d| j                   j                  dt        j                  | j	                  | j
                        ddd      S )N<z> T   ),z: )	sort_keysindent
separators)	__class__r	   jsondumpsexport_valuer   r   s    r   __repr__zAbstractObject.__repr__D   s@    NN##JJ!!$**-&	
 	
r   c                 z    t        |d      r%|j                         D ]
  \  }}|| |<    || _        y t        d      )NitemszBad data to set object data)r'   rE   r   _json)r   datar   r#   s       r   	_set_datazAbstractObject._set_dataP   sE    4!"jjl "
U!S	" 
 ))FGGr   c                     i S )zaReturns info for fields that use enum values
        Should be implemented in subclasses
        r   clss    r   r   z#AbstractObject._get_field_enum_infoX   s	    
 	r   c                 2    t        d| j                  z        )zReturns the endpoint name.
        Raises:
            NotImplementedError if the method is not implemented in a class
                that derives from this abstract class.
        z&%s must have implemented get_endpoint.)NotImplementedErrorr	   rJ   s    r   get_endpointzAbstractObject.get_endpoint`   s     "4s||C
 	
r   c                     | j                   S )z3Returns the class's list of default fields to read._default_read_fieldsrJ   s    r   get_default_read_fieldsz&AbstractObject.get_default_read_fieldsk   s     '''r   c                     || _         y)a  Sets the class's list of default fields to read.
        Args:
            fields: list of field names to read by default without specifying
                them explicitly during a read operation either via EdgeIterator
                or via AbstractCrudObject.read.
        NrP   )rK   fieldss     r   set_default_read_fieldsz&AbstractObject.set_default_read_fieldsp   s     $* r   c                 V    || j                         }|rdj                  |      |d<   yy)z0Applies fields to params in a consistent manner.Nr;   rT   )rR   join)rK   rT   paramss      r   _assign_fields_to_paramsz'AbstractObject._assign_fields_to_paramsz   s2     >002F"xx/F8 r   c                 &    | j                  |       y)zH
        For an AbstractObject, we do not need to keep history.
        NrH   )r   rG   s     r   set_datazAbstractObject.set_data   s     	tr   c                     t        |t              r|j                         }|S t        |t              r$t         fd|j	                         D              }|S t        |t
              r|D cg c]  } j                  |       }}|S c c}w )Nc              3   N   K   | ]  \  }}||j                  |      f  y wr   )rB   ).0kvr   s      r   	<genexpr>z.AbstractObject.export_value.<locals>.<genexpr>   s2      * Aq= D--a01 *s   "%)
isinstancer   r&   dictrE   listrB   )r   rG   ra   s   `  r   rB   zAbstractObject.export_value   s    dN+'')D  d# *$(JJL* *D
  d#267QD%%a(7D7 8s   ,Bc                 "    | j                         S )z<
        Deprecated. Use export_all_data() instead.
        )r&   r   s    r   export_datazAbstractObject.export_data   s     ##%%r   c                 8    | j                  | j                        S r   )rB   r   r   s    r   r&   zAbstractObject.export_all_data   s      ,,r   c                 :     ||      }|j                  |       |S )N)apir[   )rK   rj   rG   target_class
new_objects        r   create_objectzAbstractObject.create_object   s     !c*
T"r   N)r	   r
   r   __doc__rQ   r   r   r   r   r$   r)   r,   r/   r2   r4   r7   rC   rH   classmethodr   rN   rR   rU   rY   r\   rB   rg   r&   rm   r   r   r   r   r      s    
 L )
$> !#	
   
 
 ( ( * * 0 0	&-  r   r   )facebook_business.exceptionsr   facebook_business.typecheckerr   collections.abcabccollections_abcImportErrorcollectionsr@   MutableMappingr   r   r   r   <module>rx      sD    6(+
 K_33 K  ('(s   . 	::