o
    h{                     @   s   d d Z G dd deZdS )c                 C   s@   | j j}|d u r| j j}n|d| j j 7 }td| d| d)N.z
Property "z" of "z" is read-only.)	__class__
__module____qualname__
ValueError)selfnamefull_classname r	   ]/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/models/common/stanza_object.py_readonly_setter   s
   
r   c                   @   s   e Zd ZdZedddZdS )StanzaObjectzf
    Base class for all Stanza data objects that allows for some flexibility handling annotations
    Nc                    sp   t |  rtd  d|  dt| d  | |du r# fdd}|du r- fdd}t|  t|| dS )	z
        Add a property accessible through self.{name} with underlying variable self._{name}.
        Optionally setup a setter as well.
        zProperty by the name of z already exists in z&. Maybe you want to find another name?_Nc                    s   t | d  S )Nr   )getattr)r   r   r	   r
   <lambda>   s    z+StanzaObject.add_property.<locals>.<lambda>c                    s
   t |  S )N)r   )r   valuer   r	   r
   r      s   
 )hasattrr   setattrproperty)clsr   defaultgettersetterr	   r   r
   add_property   s   
zStanzaObject.add_property)NNN)__name__r   r   __doc__classmethodr   r	   r	   r	   r
   r   	   s    r   N)r   objectr   r	   r	   r	   r
   <module>   s    