
    !g                     F    d dl Z d dlZd dlmZ  G d d      Zd Zd Zd Zy)    N)dedentc                   N    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y	)ResultsWrapperz
    Class which wraps a statsmodels estimation Results class and steps in to
    reattach metadata to results (if available)
    c                 4    || _         |j                  | _        y N)_results__doc__)selfresultss     U/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/base/wrapper.py__init__zResultsWrapper.__init__   s        c                 R    t        | j                        D cg c]  }| c}S c c}w r   )dirr   )r
   xs     r   __dir__zResultsWrapper.__dir__   s    t}}-.a...s   	$c                 r     fd}	  |d      }	  ||      S # t         $ r Y w xY w# t         $ r Y nw xY wt        |      }|j                  j                  } j                  j                  |      }|r,t        |t              r |j                  ||d   g|dd   }|S |r|j                  ||      }|S )Nc                 0    t         j                  |       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    >	*oG	t9	  		
  		 gt$}}!!""4(:c5)"$""3A9QR9C 
 ""3C"0C
s    ( 	%%	44c                     | j                   S r   )__dict__)r
   s    r   __getstate__zResultsWrapper.__getstate__,   s    }}r   c                 :    | j                   j                  |       y r   )r'   update)r
   dict_s     r   __setstate__zResultsWrapper.__setstate__0   s    U#r   c                 F    ddl m} |r| j                           || |       y)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.smpickler.   remove_data)r
   fnamer0   r.   s       r   savezResultsWrapper.save4   s      	;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)r/   r4   )clsr1   r4   s      r   loadzResultsWrapper.loadI   s    * 	;5!!r   N)F)__name__
__module____qualname__r	   r   _wrap_methodsr   r   r   r(   r,   r2   classmethodr6    r   r   r   r      sE     KM'/.$!* " "r   r   c                  :    i }| D ]  }|j                  |        |S r   )r*   )dictsresultds      r   union_dictsrA   b   s'    F aMr   c                      t        j                          fd       }t        j                         }t	        |      }|j
                  rt        |j
                        nd}d j                   | d| |_        |S )Nc                 
   t         j                  | d      }|j                  j                  }r5t	        t
              r%|j                   |g|i |d   dd        }|S r|j                   |g|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    ))$
;}}!!:c5)""4#A$#A&#A3q63qr7SC 
 ""4#A$#A&#A3GC
r    
)	functoolswrapsinspect	signaturestrr	   r   r7   )rF   r   rG   sig	formatteddocs   ``    r   make_wrapperrR   i   sp    __T  

D
!CCI%,__&
!"C4==/)Bse<GONr   c                     | j                   j                         D ]7  \  }}t        ||      st        ||      }t	        ||      }t        | ||       9 y r   )r:   itemshasattrr   rR   setattr)klasswrappingmethr   rF   rG   s         r   populate_wrapperrZ   }   sU    ((..0 &	cx&x&tS)tW%&r   )rJ   rL   textwrapr   r   rA   rR   rZ   r<   r   r   <module>r\      s*      Y" Y"x(&r   