
    	                     N    S r SSKJr  SSKJr  SSKJr  SSKJr   " S S\5      rg)	zHProvides a LazyWrapper class to defer loading a value until it's needed.    )absolute_import)print_function)division)unicode_literalsc                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)LazyWrapper   z(Wrapper for lazily instantiated objects.c                     Xl         g)zeThe init method for LazyWrapper.

Args:
  func: A function (lambda or otherwise) to lazily evaluate.
N)_func)selffuncs     %platform/gsutil/gslib/lazy_wrapper.py__init__LazyWrapper.__init__   s	     J    c                      [        U R                  5      $ ! [         a-    U R                  5       U l        [        U R                  5      s $ f = fN)int_valueAttributeErrorr   r   s    r   __int__LazyWrapper.__int__"   A     JJLdk    4AAc                      U R                   U:H  $ ! [         a'    U R                  5       U l         U R                   U:H  s $ f = fr   r   r   r   )r   others     r   __eq__LazyWrapper.__eq__)   sA    "[[E!! "JJLdk[[E!!"s    .AAc                      [        U R                  5      $ ! [         a-    U R                  5       U l        [        U R                  5      s $ f = fr   strr   r   r   r   s    r   __repr__LazyWrapper.__repr__0   r   r   c                      [        U R                  5      $ ! [         a-    U R                  5       U l        [        U R                  5      s $ f = fr   r"   r   s    r   __str__LazyWrapper.__str__7   r   r   c                 ~     U R                   $ ! [         a$    U R                  5       U l         U R                   s $ f = f)z)The call method for a LazyWrapper object.r   r   s    r   __call__LazyWrapper.__call__>   s7    [[ JJLdk[[s    +<<c                      [        U R                  5      $ ! [         a(    U R                  5         [        U R                  5      s $ f = f)z(The len method for a LazyWrapper object.)lenr   r   r*   r   s    r   __len__LazyWrapper.__len__F   s=     
mmos    /A	A	c                      U R                   R                  5       $ ! [         a-    U R                  5         U R                   R                  5       s $ f = f)z)The iter method for a LazyWrapper object.)r   __iter__r   r*   r   s    r   r1   LazyWrapper.__iter__N   sE    $[[!!## $
mmo[[!!##$s    4AA)r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r$   r'   r*   r.   r1   __static_attributes__ r   r   r   r      s-    0"$r   r   N)r7   
__future__r   r   r   r   objectr   r9   r   r   <module>r<      s#    O & %  '=$& =$r   