
    !g                         d dl mZ d dlmZ d dlZg dZ G d de      Zdde	fdZ
 G d d	      Z G d
 de      Z G d de      Z G d de      ZeZeZeZy)    )CacheWriteWarning)cache_readonlyN)r   cache_writabledeprecated_aliasResettableCachec                   "     e Zd ZdZ fdZ xZS )r   z DO NOT USE. BACKWARD COMPAT ONLYc                 2    t        |   |i | | | _        y N)super__init____dict__)selfargskwargs	__class__s      Y/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tools/decorators.pyr   zResettableCache.__init__   s    $)&)    )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r   
   s    * r   r   c                 h    |  d |d|z  z  fd}fd}t        ||      }|S )a  
    Deprecate attribute in favor of alternative name.

    Parameters
    ----------
    old_name : str
        Old, deprecated name
    new_name : str
        New name
    remove_version : str, optional
        Version that the alias will be removed
    msg : str, optional
        Message to show.  Default is
        `old_name` is a deprecated alias for `new_name`
    warning : Warning, optional
        Warning class to give.  Default is FutureWarning.

    Notes
    -----
    Older or less-used classes may not conform to statsmodels naming
    conventions.  `deprecated_alias` lets us bring them into conformance
    without breaking backward-compatibility.

    Example
    -------
    Instances of the `Foo` class have a `nvars` attribute, but it _should_
    be called `neqs`:

    class Foo:
        nvars = deprecated_alias('nvars', 'neqs')
        def __init__(self, neqs):
            self.neqs = neqs

    >>> foo = Foo(3)
    >>> foo.nvars
    __main__:1: FutureWarning: nvars is a deprecated alias for neqs
    3
    z is a deprecated alias for z, will be removed in version %sc                 L    t        j                  d       t        |       S N   )
stacklevel)warningswarngetattr)r   msgnew_namewarnings    r   fgetzdeprecated_alias.<locals>.fget?   s     c7q1tX&&r   c                 P    t        j                  d       t        | |       y r   )r   r   setattr)r   valuer!   r"   r#   s     r   fsetzdeprecated_alias.<locals>.fsetC   s    c7q1h&r   )r$   r(   )property)old_namer"   remove_versionr!   r#   r$   r(   ress    ` ``   r   r   r      sO    R {
5hZ@%4~EEC'' 4
(CJr   c                   "    e Zd ZddZddZd Zy)CachedAttributeNc                 J    || _         |j                  | _        |xs d| _        y )N_cache)r$   r   name	cachename)r   funcr2   s      r   r   zCachedAttribute.__init__M   s     	MM	".hr   c                     || j                   S | j                  }t        ||d       }|t        ||i        t        ||      }| j                  }|j                  |d       }|| j                  |      }|||<   |S r
   )r$   r2   r    r&   r1   get)r   objtype
_cachenamer0   r1   
_cachedvals          r   __get__zCachedAttribute.__get__R   s    ;99^^
j$/>CR(S*-FyyZZd+
3J%F4Lr   c                 V    d| j                   z  }t        j                  |t               y )Nz(The attribute '%s' cannot be overwritten)r1   r   r   r   )r   r6   r'   errmsgs       r   __set__zCachedAttribute.__set__d   s    ;diiGf/0r   r
   )r   r   r   r   r:   r=    r   r   r.   r.   K   s    /
$1r   r.   c                       e Zd Zd Zy)CachedWritableAttributec                 R    t        || j                        }| j                  }|||<   y r
   )r    r2   r1   )r   r6   r'   r0   r1   s        r   r=   zCachedWritableAttribute.__set__j   s$    dnn-yytr   N)r   r   r   r=   r>   r   r   r@   r@   i   s    r   r@   c                       e Zd ZdZddZd Zy)_cache_readonlyz'
    Decorator for CachedAttribute
    Nc                      d | _         || _        y r
   )r3   r2   )r   r2   s     r   r   z_cache_readonly.__init__u   s    	"r   c                 0    t        || j                        S N)r2   )r.   r2   r   r3   s     r   __call__z_cache_readonly.__call__y   s    t)-9 	9r   r
   )r   r   r   r   r   rH   r>   r   r   rC   rC   p   s    #9r   rC   c                       e Zd ZdZd Zy)r   z/
    Decorator for CachedWritableAttribute
    c                 0    t        || j                        S rF   )r@   r2   rG   s     r   rH   zcache_writable.__call__   s    &t15A 	Ar   N)r   r   r   r   rH   r>   r   r   r   r   ~   s    Ar   r   )statsmodels.tools.sm_exceptionsr   statsmodels.compat.pandasr   PandasCacheReadonlyr   __all__dictr   FutureWarningr   r.   r@   r)   rC   r   cached_datacached_valuer>   r   r   <module>rS      sv    = K d  9=$*7t1 1<o 9h 9A_ A % "
 #r   