
    M/Ph                     N    d dl Z d dlZd dlmZ  G d d          Zd Zd Zd ZdS )    N)dedentc                   V    e Zd ZdZi Zi Zd Zd Zd Zd Z	d Z
ddZed	             Zd
S )ResultsWrapperz
    Class which wraps a statsmodels estimation Results class and steps in to
    reattach metadata to results (if available)
    c                 ,    || _         |j        | _        d S N)_results__doc__)selfresultss     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/base/wrapper.py__init__zResultsWrapper.__init__   s        c                 >    d t          | j                  D             S )Nc                     g | ]}|S  r   ).0xs     r   
<listcomp>z*ResultsWrapper.__dir__.<locals>.<listcomp>   s    ...a...r   )dirr   r
   s    r   __dir__zResultsWrapper.__dir__   s     ..3t}--....r   c                      fd}	  |d          }n# t           $ r Y nw xY w	  ||          S # t           $ r Y nw xY wt          ||          }|j        j        } j                            |          }|r3t          |t                    r |j        ||d         g|dd          R  }n|r|                    ||          }|S )Nc                 :    t                               |           S r   )object__getattribute__)namer
   s    r   <lambda>z1ResultsWrapper.__getattribute__.<locals>.<lambda>   s    6224>> r   r   r      )how)	AttributeErrorgetattrmodeldata_wrap_attrsget
isinstancetuplewrap_output)r
   attrr%   r   objr#   r   s   `      r   r   zResultsWrapper.__getattribute__   s   >>>>	c*ooGG 	 	 	D		3t99 	 	 	D	 gt$$}!""4(( 	1:c5)) 	1"$"3A9QRR999CC 	1""3C"00C
s    
!!
0 
==c                     | j         S r   )__dict__r   s    r   __getstate__zResultsWrapper.__getstate__,   s
    }r   c                 :    | j                             |           d S r   )r,   update)r
   dict_s     r   __setstate__zResultsWrapper.__setstate__0   s    U#####r   Fc                 V    ddl m} |r|                                   || |           dS )a  
        Save a pickle of this instance.

        Parameters
        ----------
        fname : {str, handle}
            Either a filename or a valid file handle.
        remove_data : bool
            If False (default), then the instance is pickled without changes.
            If True, then all arrays with length nobs are set to None before
            pickling. See the remove_data method.
            In some cases not all arrays will be set to None.
        r   )save_pickleN)statsmodels.iolib.smpickler3   remove_data)r
   fnamer5   r3   s       r   savezResultsWrapper.save4   sH     	;::::: 	D%     r   c                 $    ddl m}  ||          S )a  
        Load a pickled results instance

        .. warning::

           Loading pickled models is not secure against erroneous or
           maliciously constructed data. Never unpickle data received from
           an untrusted or unauthenticated source.

        Parameters
        ----------
        fname : {str, handle}
            A string filename or a file handle.

        Returns
        -------
        Results
            The unpickled results instance.
        r   )load_pickle)r4   r9   )clsr6   r9   s      r   loadzResultsWrapper.loadI   s&    * 	;:::::{5!!!r   N)F)__name__
__module____qualname__r	   r$   _wrap_methodsr   r   r   r-   r1   r7   classmethodr;   r   r   r   r   r      s          KM' ' '/ / /  .  $ $ $! ! ! !* " " [" " "r   r   c                  >    i }| D ]}|                     |           |S r   )r/   )dictsresultds      r   union_dictsrE   b   s0    F  aMr   c                      t          j                    fd            }t          j                   }t	          |          }|j        rt          |j                  nd}d j         | d| |_        |S )Nc                 (   t                               | d          }|j        j        }rEt	          t
                    r0|                     |g|R i |d         dd                    }n"r |                     |g|R i |          }|S )Nr   r   r   )r   r   r"   r#   r&   r'   r(   )r
   argskwargsr   r#   r*   funcr   s         r   wrapperzmake_wrapper.<locals>.wrapperj   s    ))$
;;}! 	H:c5)) 	H""44#A$#A#A#A&#A#A3q63qrr7SSCC 	H""44#A$#A#A#A&#A#A3GGC
r    
)	functoolswrapsinspect	signaturestrr	   r   r<   )rJ   r   rK   sig	formatteddocs   ``    r   make_wrapperrV   i   s    _T      
D
!
!CCI%,_
<&
!
!
!"C<4=<)<<s<<GONr   c                     | j                                         D ]G\  }}t          ||          st          ||          }t	          ||          }t          | ||           Hd S r   )r?   itemshasattrr!   rV   setattr)klasswrappingmethr   rJ   rK   s         r   populate_wrapperr^   }   sv    (..00 & &	cx&& 	x&&tS))tW%%%%& &r   )rN   rP   textwrapr   r   rE   rV   r^   r   r   r   <module>r`      s              Y" Y" Y" Y" Y" Y" Y" Y"x    (& & & & &r   