B
    Z                 @   s  d dl Z d dlZd dlZd dlmZmZmZ G dd deZ	dd Z
dd Zd	d
 Zedkrd dlmZ d dlmZ ejj ZeejejdZejZded< eee Zeee Z ejj! Ze"ejdddf Z#ejddddf Zej$j%ed ddZej$j%ed ddZej$j%ed ddZej&eddddddddddddg
f ddZe'ejZej(eeej)* d Z+dS )     N)get_function_name	iteritems
getargspecc               @   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
   7lib/python3.7/site-packages/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}y|d}W n t k
r,   Y nX y||S  t k
rJ   Y nX t||}|jj} j|}|rt|tr|j||d f|dd   }n|r|j||d}|S )Nc                s   t  | S )N)object__getattribute__)name)r   r
   r   <lambda>   s    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 )N)__dict__)r   r
   r
   r   __getstate__-   s    zResultsWrapper.__getstate__c             C   s   | j | d S )N)r#   update)r   Zdict_r
   r
   r   __setstate__1   s    zResultsWrapper.__setstate__Fc             C   s&   ddl m} |r|   || | dS )a  save a pickle of this instance

        Parameters
        ----------
        fname : string or filehandle
            fname can be a string to a file path or filename, or a filehandle.
        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   save5   s    zResultsWrapper.savec             C   s   ddl m} ||S )Nr   )load_pickle)r(   r,   )clsr*   r,   r
   r
   r   loadJ   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 }x| D ]}| | q
W |S )N)r%   )Zdictsresultdr
   r
   r   union_dictsP   s    
r6   c                sZ   t   fdd}t }tj|d |d |d d}t }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   wrapperX   s    (zmake_wrapper.<locals>.wrapperr   r      )Zvarargsdefaultsz%s%s
%s)	functoolswrapsr   inspectZformatargspecr   r   )r9   r   r:   ZargspecZ	formattedZ	func_namer
   )r9   r   r   make_wrapperW   s    
r@   c             C   sH   xBt | jD ]4\}}t||s qt||}t||}t| || qW d S )N)r   r2   hasattrr   r@   setattr)klassZwrappingmethr   r9   r:   r
   r
   r   populate_wrapperm   s    


rE   __main__)	DataFrame)columnsg      ?Z	interceptT)colZdropr      r;               
         F)Zprepend)Zfamily),r?   r=   ZnumpyZnpZstatsmodels.compat.pythonr   r   r   r   r   r6   r@   rE   r/   Zstatsmodels.apiZapiZsmZpandasrG   ZdatasetsZlongleyr.   r   ZexogZ	exog_nameZdfZendogyZOLSZfitZ	olsresultZRLMZ	rlmresultZwfslogoffsetZtoolsZcategoricalZadd_constantroundZGLMZfamiliesZPoissonmodr
   r
   r
   r   <module>   s2   I	
.