§
    Âis  ã                   ó   — d dl Z d„ Zd„ ZdZdS )é    Nc                  ó>   — 	 ddl m}  d}n# t          $ r d}Y nw xY w|S )Nr   )Ú_messageTF)Úgoogle._upbr   ÚImportError)r   Úhas_upbs     úU/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/proto/utils.pyr   r      sI   € ðØ(Ð(Ð(Ð(Ð(Ð(àˆˆøÝð ð ð Øˆˆˆðøøøà€Ns   ‚ ‹™c                 ó`   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }t          |¦  «        S )zöMake the callable into a cached property.

    Similar to @property, but the function will only be called once per
    object.

    Args:
        fx (Callable[]): The property function.

    Returns:
        Callable[]: The wrapped function.
    c                 óÌ   •— t          | d¦  «        st                               | di ¦  «         ‰j        | j        vr ‰| ¦  «        | j        ‰j        <   | j        ‰j                 S )NÚ_cached_values)ÚhasattrÚobjectÚ__setattr__Ú__name__r   )ÚselfÚfxs    €r   Úinnerzcached_property.<locals>.inner)   sl   ø€ õ �tÐ-Ñ.Ô.ð 	;Ý×Ò˜tÐ%5°rÑ:Ô:Ð:ð Œ;˜dÔ1Ð1Ð1Ø/1¨r°$©x¬xˆDÔ ¤Ñ,ð Ô" 2¤;Ô/Ð/ó    )Ú	functoolsÚwrapsÚproperty)r   r   s   ` r   Úcached_propertyr      sA   ø€ õ „_�RÑÔð0ð 0ð 0ð 0ñ Ôð0õ �E‰?Œ?Ðr   )r   )r   r   r   Ú__all__© r   r   ú<module>r      s<   ðð Ð Ð Ð ðð ð ðð ð ð< €€€r   