ó
Gq]c        
   @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d d d d d d	 d
 d d g
 Z e j d d k Z e r  e Z	 e
 Z e Z e Z d „  Z d „  Z n* e	 Z	 e Z e Z e Z d „  Z d „  Z y d d l m Z WnÅ e k
 r¥y d d l m Z Wn! e k
 r%d d l m Z n Xe j d d d d d g ƒ Z d e f d „  ƒ  YZ e ƒ  f e e e e e d ƒ f ƒ e e  e e! d „ Z" d e# d „ Z n Xy d d l$ m% Z% Wn* e k
 ræe j& e j' Bd d  „ Z% n Xy d d! l$ m( Z( Wn e k
 rd% d$ „ Z( n Xd S(&   s?   Module which provides compatibility with older Python versions.iÿÿÿÿNt   PY3t   longt   xranget   unicodet
   basestringt   ut   bt	   lru_cachet   whicht   get_terminal_sizei    i   c         C   s   |  S(   N(    (   t   s(    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR      s    c         C   s   |  j  d ƒ S(   Ns   latin-1(   t   encode(   R
   (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR      s    c         C   s   t  |  d ƒ S(   Nt   unicode_escape(   R   (   R
   (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR   "   s    c         C   s   |  S(   N(    (   R
   (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR   %   s    (   R   (   t   RLockt	   CacheInfot   hitst   missest   maxsizet   currsizet
   _HashedSeqc           B   s#   e  Z d  Z e d „ Z d „  Z RS(   t	   hashvaluec         C   s   | |  (| | ƒ |  _  d  S(   N(   R   (   t   selft   tupt   hash(    (    s-   lib/python2.7/site-packages/psutil/_compat.pyt   __init__=   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyt   __hash__A   s    (   t   __name__t
   __module__t	   __slots__R   R   R   (    (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR   :   s   c	            sÒ   |  }	 | rF | | j  ƒ  ƒ }
 |	 | 7}	 x |
 D] } |	 | 7}	 q/ Wn  | r˜ |	 | ‡  f d †  |  Dƒ ƒ 7}	 | rÈ |	 | ‡  f d †  |
 Dƒ ƒ 7}	 qÈ n0 | |	 ƒ d k rÈ ˆ  |	 d ƒ | k rÈ |	 d St |	 ƒ S(   Nc         3   s   |  ] } ˆ  | ƒ Vq d  S(   N(    (   t   .0t   v(   t   type(    s-   lib/python2.7/site-packages/psutil/_compat.pys	   <genexpr>O   s    c         3   s!   |  ] \ } } ˆ  | ƒ Vq d  S(   N(    (   R   t   kR   (   R   (    s-   lib/python2.7/site-packages/psutil/_compat.pys	   <genexpr>Q   s    i   i    (   t   itemsR   (   t   argst   kwdst   typedt   kwd_markt	   fasttypest   sortedt   tupleR   t   lent   keyt   sorted_itemst   item(    (   R   s-   lib/python2.7/site-packages/psutil/_compat.pyt	   _make_keyD   s    
 &(id   c            s   ‡  ‡ f d †  } | S(   s~   Least-recently-used cache decorator, see:
        http://docs.python.org/3/library/functools.html#functools.lru_cache
        c            sj  t  ƒ  ‰ d d g ‰ d
 \ ‰  ‰ t ‰
 ˆ j ‰ t ‰ t ƒ  ‰	 g  ‰ ˆ ˆ d  d  g ˆ (ˆ g ‰ d \ ‰ ‰ ‰ ‰ ˆ d k r— ‡ ‡ ‡ f d †  } nr ˆ d  k rÍ ‡  ‡ ‡ ‡ ‡
 ‡ ‡ ‡ ‡ f	 d †  } n< ‡  ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡	 ‡
 ‡ ‡ ‡ ‡ ‡ f d †  } ‡  ‡ ‡ ‡	 ‡ ‡ f d †  } ‡ ‡	 ‡ ‡ f d	 †  } ˆ | _ | | _ | | _ t	 j
 | ˆ ƒ S(   Ni    i   i   i   c             s#   ˆ |  | Ž  } ˆ ˆ  c d 7<| S(   Ni   (    (   R"   R#   t   result(   t   MISSESt   statst   user_function(    s-   lib/python2.7/site-packages/psutil/_compat.pyt   wrapperg   s    c             sn   ˆ |  | ˆ ƒ } ˆ | ˆ ƒ } | ˆ k	 rA ˆ ˆ  c d 7<| Sˆ |  | Ž  } | ˆ | <ˆ ˆ c d 7<| S(   Ni   (    (   R"   R#   R*   R.   (	   t   HITSR/   t   cachet	   cache_gett   make_keyt   rootR0   R$   R1   (    s-   lib/python2.7/site-packages/psutil/_compat.pyR2   l   s    
c             sÉ  | s ˆ r! ˆ
 |  | ˆ ƒ } n |  } ˆ	 j  ƒ  z ˆ | ƒ } | d  k	 r¿ ˆ \ } | \ } } } } | | ˆ <| | ˆ <| ˆ } | | ˆ <| ˆ <| | ˆ <| | ˆ <ˆ ˆ  c d 7<| SWd  ˆ	 j ƒ  Xˆ |  | Ž  } ˆ	 j  ƒ  zÐ ˆ \ } | ˆ k rn¤ ˆ ˆ ƒ ˆ k rp| }	 | |	 ˆ <| |	 ˆ <|	 ˆ } ˆ d <| ˆ }
 d  | ˆ <| ˆ <ˆ |
 =|	 ˆ | <n6 | ˆ } | | | | g } | | ˆ <| ˆ <ˆ | <ˆ ˆ c d 7<Wd  ˆ	 j ƒ  X| S(   Ni   i    (   t   acquiret   Nonet   release(   R"   R#   R*   t   linkR7   t	   link_prevt	   link_nextR.   t   lastt   oldroott   oldkey(   R3   t   KEYR/   t   NEXTt   PREVt   RESULTt   _lenR4   R5   t   lockR6   R   t   nonlocal_rootR0   R$   R1   (    s-   lib/python2.7/site-packages/psutil/_compat.pyR2   w   sN    
	





	



c              sA   ˆ j  ƒ  z% t ˆ ˆ  ˆ ˆ ˆ t ˆ ƒ ƒ SWd ˆ j ƒ  Xd S(   s   Report cache statisticsN(   R8   t
   _CacheInfoR)   R:   (    (   R3   R/   R4   RF   R   R0   (    s-   lib/python2.7/site-packages/psutil/_compat.pyt
   cache_info¤   s
    
c             sT   ˆ j  ƒ  z8 ˆ  j ƒ  ˆ d }  |  |  d d g |  (d d g ˆ (Wd ˆ j ƒ  Xd S(   s$   Clear the cache and cache statisticsi    N(   R8   t   clearR9   R:   (   R7   (   R4   RF   RG   R0   (    s-   lib/python2.7/site-packages/psutil/_compat.pyt   cache_clear­   s    


(   i    i   (   i    i   i   i   (   t   dictR-   t   getR)   R   R9   t   __wrapped__RI   RK   t	   functoolst   update_wrapper(   R1   R2   RI   RK   (   R   R$   (   R3   RA   R/   RB   RC   RD   RE   R4   R5   RF   R6   RG   R7   R0   R1   s-   lib/python2.7/site-packages/psutil/_compat.pyt   decorating_functionZ   s,    				*<-				(    (   R   R$   RQ   (    (   R   R$   s-   lib/python2.7/site-packages/psutil/_compat.pyR   V   s    c(   R   c            s   d „  } t  j j ˆ  ƒ r2 | ˆ  | ƒ r. ˆ  Sd S| d k rY t  j j d t  j ƒ } n  | sc d S| j t  j ƒ } t	 j
 d k rt  j | k r© | j d t  j ƒ n  t  j j d d ƒ j t  j ƒ } t ‡  f d †  | Dƒ ƒ rò ˆ  g } qg  | D] } ˆ  | ^ qù } n	 ˆ  g } t ƒ  } xu | D]m } t  j j | ƒ }	 |	 | k r+| j |	 ƒ x9 | D]. }
 t  j j | |
 ƒ } | | | ƒ rc| SqcWq+q+Wd S(	   sJ  Given a command, mode, and a PATH string, return the path which
        conforms to the given mode on the PATH, or None if there is no such
        file.

        `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
        of os.environ.get("PATH"), or can be overridden with a custom search
        path.
        c         S   s5   t  j j |  ƒ o4 t  j |  | ƒ o4 t  j j |  ƒ S(   N(   t   ost   patht   existst   accesst   isdir(   t   fnt   mode(    (    s-   lib/python2.7/site-packages/psutil/_compat.pyt   _access_checkÍ   s    $t   PATHt   win32i    t   PATHEXTt    c         3   s*   |  ]  } ˆ  j  ƒ  j | j  ƒ  ƒ Vq d  S(   N(   t   lowert   endswith(   R   t   ext(   t   cmd(    s-   lib/python2.7/site-packages/psutil/_compat.pys	   <genexpr>á   s    N(   RR   RS   t   dirnameR9   t   environRM   t   defpatht   splitt   pathsept   syst   platformt   curdirt   insertt   anyt   sett   normcaset   addt   join(   Ra   RX   RS   RY   t   pathextt   filesR`   t   seent   dirt   normdirt   thefilet   name(    (   Ra   s-   lib/python2.7/site-packages/psutil/_compat.pyR   Ä   s8    		! 		(   R	   iP   i   c         C   s   y( d d  l  } d d  l } d d  l } Wn t k
 r< |  SXy: | j d | j d | j d ƒ ƒ } | d | d f SWn t k
 r‹ |  SXd  S(   Niÿÿÿÿt   hhi   t   1234i    (   t   fcntlt   termiost   structt   ImportErrort   unpackt   ioctlt
   TIOCGWINSZt	   Exception(   t   fallbackRy   Rz   R{   t   res(    (    s-   lib/python2.7/site-packages/psutil/_compat.pyR	   ø   s    (   iP   i   ()   t   __doc__t   collectionsRO   RR   Rg   t   __all__t   version_infoR    t   intR   t   rangeR   t   strR   R   R   R   R   R|   t	   threadingR   t   dummy_threadingt
   namedtupleRH   t   listR   t   objectRl   t	   frozensetR   R9   R'   R(   R)   R-   t   Falset   shutilR   t   F_OKt   X_OKR	   (    (    (    s-   lib/python2.7/site-packages/psutil/_compat.pyt   <module>   sT   			
	k1