ó
øÐLac        "   @   sæ  d  Z  d d l Z e j df k  Z e j dg k Z e j dh k  s^ di e j k oY dj k  n rm e d ƒ ‚ n  e j dk k  Z e j j d	 ƒ Z	 e
 e d
 ƒ Z e rÁ e j dl k  rÁ e d ƒ ‚ n  d e j k Z d d l Z e j e ƒ Z e r d d l Z n d d l Z d „  Z d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ g" Z e ƒ  Z e r·e Z d0 „  Z e e f Z e f Z n$ e j Z d1 „  Z e f Z e f Z e Z  e Z! e d2 ƒ j" Z# d2 j" Z$ e rQd3 „  Z% d4 „  Z& d5 „  Z' d6 „  Z( e Z) Z* d7 „  Z+ d8 „  Z, d9 „  Z- nK d: „  Z% d; „  Z& d< „  Z' d= „  Z( d> „  Z) e$ Z* e. Z+ d? „  Z, d@ „  Z- e e% dA ƒ e e& dB ƒ e e' dC ƒ e e( dD ƒ e e, dE ƒ e e- dF ƒ e re/ f Z0 e/ e1 f Z2 n e/ e3 f Z0 e/ e3 e1 f Z2 e rbe4 Z5 dG „  Z6 e7 Z8 dH „  Z9 dI „  Z: dJ „  Z; e< Z= n= e> Z5 e7 Z6 d dK l? m8 Z8 m= Z= dL „  Z9 dM „  Z: dN „  Z; e e; dO ƒ e r»dP Z@ n dQ Z@ dR „  ZA dS „  ZB d dT „ ZD eD ZE e re d dU dV dW d dW d dX ƒ Z eF e dY ƒ ZG n* e d dZ dV d[ d dZ d d\ ƒ Z d] „  ZG e r[d^ e d, <n
 d_ e d, <y d d` lH mI ZI Wn' eJ k
 r¢d- eK f da „  ƒ  YZI n Xd db lL mM ZM dc „  ZN dd eM f de „  ƒ  YZO eO jP e e ƒ d S(m   s7   passlib.utils.compat - python 2/3 compatibility helpersiÿÿÿÿNi   i    i   i   s?   Passlib requires Python 2.6, 2.7, or >= 3.2 (as of passlib 1.7)i   t   javat   pypy_version_infos0   passlib requires pypy >= 2.0 (as of passlib 1.7)t   Pystonc         C   s   | |  _  d S(   s   add docstring to an objectN(   t   __doc__(   t   objt   doc(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   add_doc*   s    t   PY2t   PY3t   PY26t   BytesIOt   StringIOt   NativeStringIOt   SafeConfigParsert   print_t	   int_typest	   num_typest   unicode_or_bytes_typest   native_string_typest   ut   unicodet   uascii_to_strt   bascii_to_strt   str_to_uasciit   str_to_basciit   join_unicodet
   join_bytest   join_byte_valuest   join_byte_elemst   byte_elem_valuet   iter_byte_valuest   iranget   imapt   lmapt	   iteritemst
   itervaluest   nextt   OrderedDictt   nullcontextt   get_method_functionR   c         C   s   t  |  t ƒ s t ‚ |  S(   N(   t
   isinstancet   strt   AssertionError(   t   s(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   e   s    c         C   s"   t  |  t ƒ s t ‚ |  j d ƒ S(   Nt   unicode_escape(   R(   R)   R*   t   decode(   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   o   s    t    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ‰   s    c         C   s"   t  |  t ƒ s t ‚ |  j d ƒ S(   Nt   ascii(   R(   t   bytesR*   R-   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR      s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R)   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ‘   s    c         C   s"   t  |  t ƒ s t ‚ |  j d ƒ S(   NR/   (   R(   R)   R*   t   encode(   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   •   s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   t   intR*   (   t   elem(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ›   s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R0   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   Ÿ   s    c         C   s#   t  |  t ƒ s t ‚ d „  |  Dƒ S(   Nc         s   s   |  ] } t  | g ƒ Vq d  S(   N(   R0   (   t   .0t   c(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pys	   <genexpr>¦   s    (   R(   R0   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   iter_byte_chars£   s    c         C   s"   t  |  t ƒ s t ‚ |  j d ƒ S(   NR/   (   R(   R   R*   R1   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ©   s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R0   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ­   s    c         C   s"   t  |  t ƒ s t ‚ |  j d ƒ S(   NR/   (   R(   R)   R*   R-   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ±   s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R)   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   µ   s    c         C   s   t  d „  |  Dƒ ƒ S(   Nc         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   chr(   R4   t   v(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pys	   <genexpr>º   s    (   R   (   t   values(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   ¹   s    c         C   s#   t  |  t ƒ s t ‚ d „  |  Dƒ S(   Nc         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   ord(   R4   R5   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pys	   <genexpr>Â   s    (   R(   R0   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   À   s    c         C   s   t  |  t ƒ s t ‚ |  S(   N(   R(   R0   R*   (   R+   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR6   Ä   s    s-   helper to convert ascii unicode -> native strs+   helper to convert ascii bytes -> native strs-   helper to convert ascii native str -> unicodes+   helper to convert ascii native str -> bytess2   iterate over byte string as sequence of ints 0-255s6   iterate over byte string as sequence of 1-byte stringsc          O   s   t  t |  | Ž  ƒ S(   N(   t   listt   map(   t   at   k(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR!   ð   s    c         C   s
   |  j  ƒ  S(   N(   t   items(   t   d(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR"   ô   s    c         C   s
   |  j  ƒ  S(   N(   R9   (   R@   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR#   ö   s    c         C   s   |  j  S(   N(   t   __next__(   R   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt
   nextgetterù   s    (   R    t   izipc         C   s
   |  j  ƒ  S(   N(   R"   (   R@   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR"     s    c         C   s
   |  j  ƒ  S(   N(   R#   (   R@   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR#     s    c         C   s   |  j  S(   N(   R$   (   R   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyRB   
  s    s;   return function that yields successive values from iterablet   __func__t   im_funcc         C   s   t  |  t |  ƒ S(   s4   given (potential) method, return underlying function(   t   getattrt   method_function_attr(   t   func(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR'     s    c         C   s   t  r
 |  S|  j S(   s0   given unbound method, return underlying function(   R   RD   (   RH   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   get_unbound_method_function"  s    c         C   s   | |  _  t |  _ |  S(   s¢   
    backward compat hack to suppress exception cause in python3.3+

    one python < 3.3 support is dropped, can replace all uses with "raise exc from None"
    (   t	   __cause__t   Truet   __suppress_context__(   t   exct   cause(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt
   error_from&  s    		s
   io.BytesIOt	   UnicodeIOs   io.StringIOs   configparser.ConfigParsert   prints   cStringIO.StringIOs   StringIO.StringIOs   ConfigParser.SafeConfigParserc    	      O   s‹  | j  d t j ƒ } | j  d d ƒ } | j  d d ƒ } | rN t d ƒ ‚ n  | d k r^ d St | t ƒ p t | t ƒ p t d „  |  Dƒ ƒ } | d k r¹ | r° t d ƒ n d } n t | t	 ƒ s× t d ƒ ‚ n  | d k rþ | rõ t d	 ƒ n d	 } n t | t	 ƒ st d
 ƒ ‚ n  t
 } | j } xO |  D]G } | rGt } n
 | | ƒ t | t ƒ sot | ƒ } n  | | ƒ q2W| | ƒ d S(   s   The new-style print function.t   filet   sept   ends   invalid keyword argumentsNc         s   s   |  ] } t  | t ƒ Vq d  S(   N(   R(   R   (   R4   t   arg(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pys	   <genexpr>X  s    s   
s   end must be None or a stringt    s   sep must be None or a string(   t   popt   syst   stdoutt   Nonet	   TypeErrorR(   R   t   anyR   R   RK   t   writet   Falset
   basestringR)   (	   t   argst   kwdst   fpRS   RT   t   want_unicodet   firstR]   RU   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR   I  s6    		
s.   passlib.utils.compat._ordered_dict.OrderedDicts   collections.OrderedDict(   R&   c           B   s,   e  Z d  Z d d „ Z d „  Z d „  Z RS(   sE   
        Context manager that does no additional processing.
        c         C   s   | |  _  d  S(   N(   t   enter_result(   t   selfRe   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   __init__ˆ  s    c         C   s   |  j  S(   N(   Re   (   Rf   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt	   __enter__‹  s    c         G   s   d  S(   N(    (   Rf   t   exc_info(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   __exit__Ž  s    N(   t   __name__t
   __module__R   RZ   Rg   Rh   Rj   (    (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyR&   „  s   	(   t
   ModuleTypec         C   s@   |  j  d d ƒ \ } } t | d | g d d ƒ} t | | ƒ S(   sC   helper to import object from module; accept format `path.to.object`t   .i   t   fromlistt   leveli    (   t   rsplitt
   __import__RF   (   t   sourcet   modnamet   modattrt   mod(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   _import_object–  s    t   _LazyOverlayModulec           B   sD   e  Z d  Z e d „  ƒ Z d d „ Z d „  Z d „  Z d „  Z	 RS(   sg  proxy module which overlays original module,
    and lazily imports specified attributes.

    this is mainly used to prevent importing of resources
    that are only needed by certain password hashes,
    yet allow them to be imported from a single location.

    used by :mod:`passlib.utils`, :mod:`passlib.crypto`,
    and :mod:`passlib.utils.compat`.
    c         C   s0   t  j | } |  | | | ƒ } | t  j | <| S(   N(   RX   t   modules(   t   clst   namet   attrmapt   origRf   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   replace_module¨  s    c         C   s8   t  j |  | ƒ | |  _ | |  _ t j | ƒ |  _ d  S(   N(   Rm   Rg   t   _LazyOverlayModule__attrmapt   _LazyOverlayModule__proxyt   loggingt	   getLoggert   _LazyOverlayModule__log(   Rf   R{   R|   t   proxy(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyRg   ¯  s    		c         C   s¯   |  j  } | r+ t | | ƒ r+ t | | ƒ S|  j } | | k r˜ | | } t | ƒ rb | ƒ  } n t | ƒ } t |  | | ƒ |  j j d | | ƒ | St	 d | f ƒ ‚ d  S(   Ns   loaded lazy attr %r: %rs%   'module' object has no attribute '%s'(
   R€   t   hasattrRF   R   t   callableRw   t   setattrRƒ   t   debugt   AttributeError(   Rf   t   attrR„   R|   Rs   t   value(    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   __getattr__µ  s    		
c         C   s*   |  j  } | r t | ƒ St j |  ƒ Sd  S(   N(   R€   t   reprRm   t   __repr__(   Rf   R„   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyRŽ   Å  s    	
c         C   sj   t  t |  j ƒ ƒ } | j |  j ƒ | j |  j ƒ |  j } | d  k	 r` | j t | ƒ ƒ n  t | ƒ S(   N(	   t   sett   dirt	   __class__t   updatet   __dict__R   R€   RZ   R;   (   Rf   t   attrsR„   (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   __dir__Ì  s    	N(
   Rk   Rl   R   t   classmethodR~   RZ   Rg   RŒ   RŽ   R•   (    (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyRx   œ  s   
		(   i   i    (   i   i    (   i   i   (   i   i    (   i   i   (   i   i   (   i   i    (Q   R   RX   t   version_infoR   R   t   RuntimeErrorR	   t   platformt
   startswitht   JYTHONR…   t   PYPYR   t   versiont   PYSTONR   R‚   Rk   t   logt   builtinst   __builtin__R   t   __all__t   dictt   _lazy_attrsR)   R   R   R0   R   R   R_   t   unicode_or_bytest   unicode_or_strt   joinR   R   R   R   R   R   R   R   R   R   R6   R:   R2   R   t   floatR   t   longt   rangeR   R!   R<   R    R"   R#   RB   t   zipRC   t   xranget	   itertoolsRG   R'   RI   RZ   RO   t   suppress_causeRF   R   t
   contextlibR&   t   ImportErrort   objectt   typesRm   Rw   Rx   R~   (    (    (    sX   /var/www/html/packages/venv/lib/python3.8/site-packages/passlib/utils/compat/__init__.pyt   <module>   s   . 														
									
															-
	: