ó
â„^c           @   sH  d  d l  Z  d  d l Z e j d d k Z e r@ e Z e Z n e Z e Z d d d „  ƒ  YZ	 d „  Z
 e d „ Z d „  Z d	 „  Z d
 d d „  ƒ  YZ e j d k  r´ d „  Z n d  d l m Z d „  Z e d k rDd  d l Z d  d l Z e	 e j d d ƒZ e j d ƒ x. e d ƒ D] Z e j ƒ  e j d ƒ q Wn  d S(   iÿÿÿÿNi    i   t   ConsoleProgressBarc           B   s/   e  Z d  d d „ Z d d „ Z d d „ Z RS(   id   t   #c         C   s:   d |  _  d |  _ | |  _ | |  _ | |  _ t |  _ d  S(   Ni    (   t   blockst   currentt   stepst	   indicatort   outt   Falset   done(   t   selfR   R   R   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __init__"   s    					c         C   s:   t  |  _ | r& |  j j d | ƒ n  |  j j d ƒ d  S(   Ns   
%s:
s3   %--10---20---30---40---50---60---70---80---90--100
(   R   R   R   t   write(   R	   t   message(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   start*   s    	i   c         C   sÊ   |  j  | 7_  |  j } t t |  j  t |  j ƒ d ƒ d ƒ |  _ |  j d k r` d |  _ n  |  j | } |  j j |  j | ƒ |  j j	 ƒ  |  j d k rÆ |  j
 rÆ t |  _
 |  j j d ƒ n  d  S(   Nid   i   i2   s   
(   R   R   t   intt   roundt   floatR   R   R   R   t   flushR   t   True(   R	   t   nt   oldt   new(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   step0   s    	-	N(   t   __name__t
   __module__R
   t   NoneR   R   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR    !   s   c         C   s   g  } | j  |  ƒ | S(   N(   t   extend(   t   st   l(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   set_to_listB   s    c         C   sU   t  |  ƒ s t d ƒ ‚ n  | r? t |  ƒ } | j ƒ  | d Sx |  D] } | SWd S(   s  
    Return the first element of a set.

    It sometimes useful to return the first element from a set but,
    because sets are not indexable, this is rather hard. This function
    will return the first element from a set. If sorted is True, then
    the set will first be sorted (making this an expensive operation).
    Otherwise a random element will be returned (as sets are not ordered).
    s   empty containteri    N(   t   lent
   IndexErrorR   t   sort(   R   t   sortedR   t   x(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   firstG   s    

c         C   sR   d d  l  } | j ƒ  } y |  j | ƒ } Wn  t k
 rM |  j d ƒ } n X| S(   Niÿÿÿÿs   utf-8(   t   localet   getpreferredencodingt   encodet   UnicodeError(   t   textR$   t   encodingt   encoded_text(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   encode_input\   s    c         C   sR   d d  l  } | j ƒ  } y |  j | ƒ } Wn  t k
 rM |  j d ƒ } n X| S(   Niÿÿÿÿs   utf-8(   R$   R%   t   decodeR'   (   R(   R$   R)   t   decoded_text(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   decode_inputj   s    t
   Comparisonc           B   sM   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   sÅ   Class used when implementing rich comparison.

    Inherit from this class if you want to have a rich
    comparison withing the class, afterwards implement
    _compare function within your class.c         C   s
   t  ‚ d  S(   N(   t   NotImplemented(   R	   t   othert   method(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   _compare   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k S(   N(    (   t   at   b(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   <lambda>ƒ   s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __eq__‚   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k  S(   N(    (   R4   R5   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR6   †   s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __lt__…   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k S(   N(    (   R4   R5   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR6   ‰   s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __le__ˆ   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k S(   N(    (   R4   R5   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR6   Œ   s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __ge__‹   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k S(   N(    (   R4   R5   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR6      s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __gt__Ž   s    c         C   s   |  j  | d „  ƒ S(   Nc         S   s
   |  | k S(   N(    (   R4   R5   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR6   ’   s    (   R3   (   R	   R1   (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   __ne__‘   s    (
   R   R   t   __doc__R3   R7   R8   R9   R:   R;   R<   (    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR/   x   s   						i   i   c            s   d d ‡  f d †  ƒ  Y} | S(   s,   Convert a cmp= function into a key= functiont   Kc              sk   e  Z d  „  Z ‡  f d †  Z ‡  f d †  Z ‡  f d †  Z ‡  f d †  Z ‡  f d †  Z ‡  f d †  Z RS(   c         W   s   | |  _  d  S(   N(   t   obj(   R	   R?   t   args(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR
   ™   s    c            s   ˆ  |  j  | j  ƒ d k  S(   Ni    (   R?   (   R	   R1   (   t   mycmp(    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR8   ›   s    c            s   ˆ  |  j  | j  ƒ d k S(   Ni    (   R?   (   R	   R1   (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR;      s    c            s   ˆ  |  j  | j  ƒ d k S(   Ni    (   R?   (   R	   R1   (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR7   Ÿ   s    c            s   ˆ  |  j  | j  ƒ d k S(   Ni    (   R?   (   R	   R1   (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR9   ¡   s    c            s   ˆ  |  j  | j  ƒ d k S(   Ni    (   R?   (   R	   R1   (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR:   £   s    c            s   ˆ  |  j  | j  ƒ d k S(   Ni    (   R?   (   R	   R1   (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR<   ¥   s    (	   R   R   R
   R8   R;   R7   R9   R:   R<   (    (   RA   (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyR>   ˜   s   	(    (    (   RA   R>   (    (   RA   s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt
   cmp_to_key–   s    (   RB   c         C   s   |  | k | |  k S(   N(    (   R#   t   second(    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   cmp«   s    t   __main__R   iç  s   computing pigü©ñÒMbP?(    (    (   i   i   (   R$   t   syst   version_infot   PY3t   bytest
   bytes_typet   strt   string_typet   unicodeR    R   R   R#   R+   R.   R/   RB   t	   functoolsRD   R   t   timet   stdoutt   pR   t   ranget   iR   t   sleep(    (    (    s3   /usr/lib64/python2.7/site-packages/sepolgen/util.pyt   <module>   s2   	!				
