
    	                     N    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d de      Zy)	zHProvides a LazyWrapper class to defer loading a value until it's needed.    )absolute_import)print_function)division)unicode_literalsc                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)LazyWrapperz(Wrapper for lazily instantiated objects.c                     || _         y)zqThe 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__zLazyWrapper.__init__   s     DJ    c                     	 t        | j                        S # t        $ r- | j                         | _        t        | j                        cY S w xY wN)int_valueAttributeErrorr
   r   s    r   __int__zLazyWrapper.__int__"   A     JJLdk    3AAc                     	 | j                   |k(  S # t        $ r' | j                         | _         | j                   |k(  cY S w xY wr   r   r   r
   )r   others     r   __eq__zLazyWrapper.__eq__)   sA    "[[E!! "JJLdk[[E!!"s    -A Ac                     	 t        | j                        S # t        $ r- | j                         | _        t        | j                        cY S w xY wr   strr   r   r
   r   s    r   __repr__zLazyWrapper.__repr__0   r   r   c                     	 t        | j                        S # t        $ r- | j                         | _        t        | j                        cY S w xY wr   r   r   s    r   __str__zLazyWrapper.__str__7   r   r   c                 |    	 | j                   S # t        $ r$ | j                         | _         | j                   cY S w xY w)z)The call method for a LazyWrapper object.r   r   s    r   __call__zLazyWrapper.__call__>   s7    [[ JJLdk[[s    *;;c                     	 t        | j                        S # t        $ r( | j                          t        | j                        cY S w xY w)z(The len method for a LazyWrapper object.)lenr   r   r$   r   s    r   __len__zLazyWrapper.__len__F   s=     
mmos    .AAc                     	 | j                   j                         S # t        $ r- | j                          | j                   j                         cY S w xY w)z)The iter method for a LazyWrapper object.)r   __iter__r   r$   r   s    r   r)   zLazyWrapper.__iter__N   sE    $[[!!## $
mmo[[!!##$s    3AAN)__name__
__module____qualname____doc__r   r   r   r    r"   r$   r'   r)    r   r   r   r      s-    0"$r   r   N)r-   
__future__r   r   r   r   objectr   r.   r   r   <module>r1      s#    O & %  '=$& =$r   