ó
áp7]c           @   sc   d  d l  Z  d  d l Z d  d l m Z m Z d e f d „  ƒ  YZ d „  Z d „  Z d „  Z	 d S(   iÿÿÿÿN(   t	   iteritemst
   getargspect   ResultsWrapperc           B   sb   e  Z d  Z i  Z i  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 d „ Z e d „  ƒ Z RS(   s‚   
    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(   t   _resultst   __doc__(   t   selft   results(    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   __init__   s    	c         C   s    g  t  |  j ƒ D] } | ^ q S(   N(   t   dirR   (   R   t   x(    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   __dir__   s    c            sÙ   ‡  f d †  } y | d ƒ } Wn t  k
 r2 n Xy | | ƒ SWn t  k
 rT n Xt | | ƒ } | j j } ˆ  j j | ƒ } | r· t | t ƒ r· | j | | d | d Œ } n | rÕ | j | d | ƒ} n  | S(   Nc            s   t  j ˆ  |  ƒ S(   N(   t   objectt   __getattribute__(   t   name(   R   (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   <lambda>   t    R   i    i   t   how(	   t   AttributeErrort   getattrt   modelt   datat   _wrap_attrst   gett
   isinstancet   tuplet   wrap_output(   R   t   attrR   R   t   objR   R   (    (   R   s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyR      s"     c         C   s   |  j  S(   N(   t   __dict__(   R   (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   __getstate__-   s    c         C   s   |  j  j | ƒ d  S(   N(   R   t   update(   R   t   dict_(    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   __setstate__1   s    c         C   s4   d d l  m } | r# |  j ƒ  n  | |  | ƒ d S(   sé  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.

        iÿÿÿÿ(   t   save_pickleN(   t   statsmodels.iolib.smpickleR!   t   remove_data(   R   t   fnameR#   R!   (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   save5   s    c         C   s   d d l  m } | | ƒ S(   Niÿÿÿÿ(   t   load_pickle(   R"   R&   (   t   clsR$   R&   (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   loadJ   s    (   t   __name__t
   __module__R   R   t   _wrap_methodsR   R
   R   R   R    t   FalseR%   t   classmethodR(   (    (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyR      s   					c          G   s(   i  } x |  D] } | j  | ƒ q W| S(   N(   R   (   t   dictst   resultt   d(    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   union_dictsP   s    c            s§   t  j ˆ  ƒ ‡  ‡ f d †  ƒ } y t j ˆ  ƒ } t | ƒ } WnD t k
 r† t ˆ  ƒ } t j | d d | d d | d ƒ} n Xd ˆ  j | | j	 f | _	 | S(   Nc            sŠ   t  j |  d ƒ } | j j } ˆ r_ t ˆ t ƒ r_ | j ˆ  | | | Ž ˆ d ˆ d ƒ } n' ˆ r† | j ˆ  | | | Ž ˆ ƒ } n  | S(   NR   i    i   (   R   R   R   R   R   R   R   (   R   t   argst   kwargsR   R   R   (   t   funcR   (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   wrapperX   s    ,!i    t   varargsi   t   defaultsi   s   %s%s
%s(
   t	   functoolst   wrapst   inspectt	   signaturet   strR   R   t   formatargspecR)   R   (   R4   R   R5   t   sigt	   formattedt   argspec(    (   R4   R   s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   make_wrapperW   s    !

c         C   sg   x` t  |  j ƒ D]O \ } } t | | ƒ s1 q n  t | | ƒ } t | | ƒ } t |  | | ƒ q Wd  S(   N(   R    R+   t   hasattrR   RA   t   setattr(   t   klasst   wrappingt   methR   R4   R5   (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   populate_wrapperq   s    (
   R:   R8   t   statsmodels.compat.pythonR    R   R   R   R1   RA   RG   (    (    (    s7   lib/python2.7/site-packages/statsmodels/base/wrapper.pyt   <module>   s   I		