U
    Ãmœd  ã                   @   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	   úQ/home/sam/Atlas/atlas_env/lib/python3.8/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„}z|dƒ}W n t k
r,   Y nX z
||ƒW S  t k
rL   Y nX t||ƒ}|jj}ˆ j |¡}|ršt|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   \