
    T	                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZ G d de      Z G d	 d
 ej                  ee
            Zy)zSimple immutable data object.    )absolute_import)division)print_function)unicode_literalsNc                   2     e Zd ZdZ fdZed        Z xZS )	_DataTypezDumb immutable data type.c                      |j                         }|j                  dt                     }|j                   fdt	        |      D               t
        t            |||      S )NNAMESc              3   J   K   | ]  \  }}|j                  |      f  y wN)_CreateAccessor).0inameclss      1lib/googlecloudsdk/command_lib/code/dataobject.py	<genexpr>z$_DataType.__new__.<locals>.<genexpr>$   s+      H6F71ds""1%&6Fs    #)copygettupleupdate	enumeratesuperr   __new__)r   	classnamebases
class_dictnames	__class__s   `    r   r   z_DataType.__new__!   s^    "JNN7EG,E H6?6FH H C(i
KK    c                       t         fd      S )z"Create an tuple accessor property.c                     |    S r    )tplr   s    r   <lambda>z+_DataType._CreateAccessor.<locals>.<lambda>,   s	    Ar    )property)r   s   `r   r   z_DataType._CreateAccessor)   s     &''r    )__name__
__module____qualname____doc__r   staticmethodr   __classcell__r   s   @r   r   r      s     !L ( (r    r   c                   (     e Zd ZdZ fdZd Z xZS )
DataObjectz!Parent class of dumb data object.c                     t        | dt                     }t              t        |      z
  }|rt        dt	        |      z         t        fd|D              }t
        t        |   | |      S )Nr
   zInvalid names: c              3   4   K   | ]  }|v r|   nd   y wr   r#   )r   r   kwargss     r   r   z%DataObject.__new__.<locals>.<genexpr>8   s!     KUTtD8Us   )getattrr   set
ValueErrorreprr   r/   r   )r   r2   r   invalid_namesr$   r   s    `   r   r   zDataObject.__new__2   sb    C%'*EK#e*,M(4+>>??
KUK
KCS)#s33r    c                 h     t         fd j                  D              }  j                  di |S )Nc           
   3   \   K   | ]#  }|j                  |t        |d             f % y wr   )r   r3   )r   nchangesselfs     r   r   z%DataObject.replace.<locals>.<genexpr>=   s+     OJq7;;q'$4"89:Js   ),r#   )dictr
   r   )r<   r;   outs   `` r   replacezDataObject.replace;   s+    
ODJJO
OC4>> C  r    )r'   r(   r)   r*   r   r?   r,   r-   s   @r   r/   r/   /   s    )4!r    r/   )r*   
__future__r   r   r   r   sixtyper   with_metaclassr   r/   r#   r    r   <module>rD      sA    $ &  % ' 
( (.!###Iu5 !r    