ó
áp7]c           @   sZ  d  Z  d d l Z d d l Z d d l Z d d l Z e j d d k Z e j d  d" k Z e rÓd d l Z d d l	 m
 Z
 d d l m Z m Z d d l Z e Z d d l Z e Z d d l Z d d l Z d d	 l m Z m Z e Z e Z e Z d
 „  Z d „  Z d „  Z d „  Z e Z e Z e  Z  e! Z! e j" Z" e# Z$ e% Z& e j' Z' d „  Z( d „  Z) d „  Z* d „  Z+ e j, j- Z- e j. j/ Z/ e j, j0 Z0 e j. j1 Z1 e Z2 e
 d d d d d g ƒ Z3 d „  Z4 n/d d l5 Z d d l m Z d d l m Z d d l m4 Z4 e Z d d l Z e Z d d l6 Z6 d d l7 Z7 e Z e Z e Z e Z e Z e Z d d „ Z e8 Z e j9 Z  e j: Z! e j; Z e" Z" e$ Z$ e& Z& e j< Z' e j Z( e j  Z) e j Z* e j! Z+ e6 j- Z- e7 j/ Z/ e j1 Z1 e6 j Z e6 j Z e= Z2 y
 e> Z> Wn e? k
 r(d „  Z> n Xd „  Z@ d „  ZA d „  ZB d  „  ZC d! „  ZD d S(#   s<   
Compatibility tools for differences between Python 2 and 3
iÿÿÿÿNi    i   i   i   (   t
   namedtuple(   t   StringIOt   BytesIO(   t	   HTTPErrort   URLErrorc         C   s
   t  |  ƒ S(   N(   t   str(   t   xt   _(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   <lambda>   t    c         C   s    t  |  t ƒ r |  S|  j d ƒ S(   Nt   latin1(   t
   isinstancet   bytest   encode(   t   s(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   asbytes   s    c         C   s    t  |  t ƒ r |  S|  j d ƒ S(   NR
   (   R   R   t   decode(   R   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   asstr"   s    c         C   s=   t  |  t ƒ r |  St  |  t ƒ r/ |  j d ƒ St |  ƒ Sd  S(   NR
   (   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   asstr2'   s
    c          O   s   t  t |  | Ž  ƒ S(   N(   t   listt   range(   t   argst   kwargs(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   lrange:   s    c          O   s   t  t |  | Ž  ƒ S(   N(   R   t   zip(   R   R   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   lzip=   s    c          O   s   t  t |  | Ž  ƒ S(   N(   R   t   map(   R   R   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   lmap@   s    c          O   s   t  t |  | Ž  ƒ S(   N(   R   t   filter(   R   R   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   lfilterC   s    t   ArgSpecR   t   varargst   keywordst   defaultsc   	      C   së   t  j |  ƒ } | j } g  g  } } d \ } } x† | D]~ } | | } | j t  j j k rf | } n+ | j t  j j k r„ | } n | j | ƒ | j	 | j
 k	 r8 | j | j	 ƒ q8 q8 Wt | ƒ d k rÒ d n | } t | | | | ƒ S(   sj   
        Simple workaroung for getargspec deprecation that returns
        an ArgSpec-like object
        i    N(   NN(   t   inspectt	   signaturet
   parameterst   Nonet   kindt	   Parametert   VAR_POSITIONALt   VAR_KEYWORDt   appendt   defaultt   emptyt   lenR   (	   t   funct   sigR$   R   R!   R   R    t   keyt	   parameter(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt
   getargspecO   s    	
		(   R   (   R2   t   asciic         C   s    t  |  t ƒ r |  S|  j | ƒ S(   N(   R   t   unicodeR   (   R   t   encoding(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt	   asunicode}   s    c         C   s
   |  j  ƒ  S(   N(   t   next(   t   it(    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyR7      s    c         K   s.   t  |  d d ƒ } | s$ |  j } n  | |   S(   s›   replacement for six's iteritems for Python2/3 compat
       uses 'iteritems' if available and otherwise uses 'items'.

       Passes kwargs to method.
    t	   iteritemsN(   t   getattrR%   t   items(   t   objR   R.   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyR9   ¡   s    c         K   s.   t  |  d d  ƒ } | s$ |  j } n  | |   S(   Nt   iterkeys(   R:   R%   t   keys(   R<   R   R.   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyR=   ­   s    c         K   s.   t  |  d d  ƒ } | s$ |  j } n  | |   S(   Nt
   itervalues(   R:   R%   t   values(   R<   R   R.   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyR?   ´   s    c         C   s*   y |  j  SWn t k
 r% |  j j SXd  S(   N(   t   im_classt   AttributeErrort   __self__t	   __class__(   R.   (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt	   get_class»   s    c            s5   d ˆ f ‡  ‡ f d †  ƒ  Y} t  j | d d i  ƒ S(   s%   Create a base class with a metaclass.t	   metaclassc              s   e  Z ‡  ‡ f d  †  Z RS(   c            s   ˆ | ˆ  | ƒ S(   N(    (   t   clst   namet
   this_basest   d(   t   basest   meta(    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   __new__É   s    (   t   __name__t
   __module__RM   (    (   RK   RL   (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyRF   È   s   t   temporary_class(    (   t   typeRM   (   RL   RK   RF   (    (   RK   RL   s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   with_metaclassÃ   s    (   i   i   (E   t   __doc__t	   functoolst	   itertoolst   syst   urllibt   version_infot   PY3t   PY37t   builtinst   collectionsR    t   ioR   R   R"   t	   cStringIOt   picklet   cPicklet   urllib.requestt   urllib.parset   urllib.errorR   R   R   R   R4   R6   R   R   R   R   R   R   R   t   reducet   intt   longt   chrt   unichrt   zip_longestR   R   R   R   t   requestt   urlopent   parset   urljoint   urlretrievet	   urlencodet   string_typesR   R2   t   __builtin__t   urllib2t   urlparset   xranget   izipt   ifiltert   imapt   izip_longestt
   basestringR7   t	   NameErrorR9   R=   R?   RE   RR   (    (    (    s8   lib/python2.7/site-packages/statsmodels/compat/python.pyt   <module>   s®   																								
				