Ë
    òmxis  ã                   ó   — d dl Z d„ Zd„ ZdZy)é    Nc                  ó<   — 	 ddl m}  d}|S # t        $ r d}Y |S w xY w)Nr   )Ú_messageTF)Úgoogle._upbr   ÚImportError)r   Úhas_upbs     úB/home/htdocs/ttos/venv/lib/python3.12/site-packages/proto/utils.pyr   r      s1   € ðÝ(àˆð €Nøô ò Ø‰Ø€Nðús   ‚ Œšc                 óT   ‡ — 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        j                  | 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)   sf   ø€ ô �tÐ-Ô.Ü×Ñ˜tÐ%5°rÔ:ð �;‰;˜d×1Ñ1Ñ1Ù/1°$«xˆD×Ñ §¡Ñ,ð ×"Ñ" 2§;¡;Ñ/Ð/ó    )Ú	functoolsÚwrapsÚproperty)r   r   s   ` r   Úcached_propertyr      s,   ø€ ô ‡_�_�RÓó0ó ð0ô �E‹?Ðr   )r   )r   r   r   Ú__all__© r   r   ú<module>r      s   ðó òòð< �r   