U
    Kvf                     @   sF   d dl Z d dlZd dlmZ G dd dZdd Zdd Zd	d
 ZdS )    N)dedentc                   @   sV   e Zd ZdZi Zi Zdd Zdd Zdd Zdd	 Z	d
d Z
dddZedd ZdS )ResultsWrapperz
    Class which wraps a statsmodels estimation Results class and steps in to
    reattach metadata to results (if available)
    c                 C   s   || _ |j| _d S N)_results__doc__)selfresults r	   </tmp/pip-unpacked-wheel-2v6byqio/statsmodels/base/wrapper.py__init__   s    zResultsWrapper.__init__c                 C   s   dd t | jD S )Nc                 S   s   g | ]}|qS r	   r	   ).0xr	   r	   r
   
<listcomp>   s     z*ResultsWrapper.__dir__.<locals>.<listcomp>)dirr   r   r	   r	   r
   __dir__   s    zResultsWrapper.__dir__c                    s    fdd}z|d}W n t k
r,   Y nX z
||W S  t k
rL   Y nX t||}|jj} j|}|rt|tr|j||d f|dd   }n|r|j||d}|S )Nc                    s   t  | S r   )object__getattribute__)namer   r	   r
   <lambda>       z1ResultsWrapper.__getattribute__.<locals>.<lambda>r   r      )how)	AttributeErrorgetattrmodeldata_wrap_attrsget
isinstancetuplewrap_output)r   attrr   r   objr   r   r	   r   r
   r      s"    

 zResultsWrapper.__getattribute__c                 C   s   | j S r   )__dict__r   r	   r	   r
   __getstate__,   s    zResultsWrapper.__getstate__c                 C   s   | j | d S r   )r$   update)r   Zdict_r	   r	   r
   __setstate__0   s    zResultsWrapper.__setstate__Fc                 C   s&   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.smpickler(   remove_data)r   fnamer*   r(   r	   r	   r
   save4   s    zResultsWrapper.savec                 C   s   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)   r-   )clsr+   r-   r	   r	   r
   loadI   s    zResultsWrapper.loadN)F)__name__
__module____qualname__r   r   _wrap_methodsr   r   r   r%   r'   r,   classmethodr/   r	   r	   r	   r
   r      s   
r   c                  G   s   i }| D ]}| | q|S r   )r&   )Zdictsresultdr	   r	   r
   union_dictsb   s    r7   c                    sT   t   fdd}t }t|}|jr:t|jnd}d j||f |_|S )Nc                    sj   t | d}|jj}rJttrJ| |f||d dd  }nrf| |f||}|S )Nr   r   r   )r   r   r   r   r   r    r!   )r   argskwargsr   r   r#   funcr   r	   r
   wrapperj   s    (zmake_wrapper.<locals>.wrapper z
%s%s
%s)	functoolswrapsinspect	signaturestrr   r   r0   )r;   r   r<   sig	formatteddocr	   r:   r
   make_wrapperi   s    	
rF   c                 C   sD   | j  D ]4\}}t||sq
t||}t||}t| || q
d S r   )r3   itemshasattrr   rF   setattr)klassZwrappingmethr   r;   r<   r	   r	   r
   populate_wrapper}   s    


rL   )r>   r@   textwrapr   r   r7   rF   rL   r	   r	   r	   r
   <module>   s   \