
                         *    S r SSKJr   " S S\5      rg)zBValueMixin provides comparison and string methods based on fields.    )unicode_literalsc                   0    \ rS rSrSrS rS rS rS rSr	g)	
ValueMixin   zGProvides simplistic but often sufficient comparison and string methods.c                 6    [        USS 5      U R                  :H  $ )N__dict__)getattrr   selfothers     1lib/googlecloudsdk/appengine/tools/value_mixin.py__eq__ValueMixin.__eq__   s    5*d+t}}<<    c                     X:X  + $ N r
   s     r   __ne__ValueMixin.__ne__   s    r   c                 l    [        [        [        U R                  R	                  5       5      5      5      $ r   )hash	frozensetlistr   items)r   s    r   __hash__ValueMixin.__hash__   s$    	$t}}2245677r   c                     U R                   n[        U5       Vs/ s H  nSR                  X!U   5      PM     nnSR                  U R                  R                  SR                  U5      5      $ s  snf )zCReturns a string representation like `MyClass(foo=23, bar=skidoo)`.z{}={}z{}({})z, )r   sortedformat	__class____name__join)r   dkeyattrss       r   __repr__ValueMixin.__repr__   sY    A4:1I>ISW^^C3(IE>??4>>22DIIe4DEE ?s   A/r   N)
r!   
__module____qualname____firstlineno____doc__r   r   r   r&   __static_attributes__r   r   r   r   r      s    O=8Fr   r   N)r+   
__future__r   objectr   r   r   r   <module>r/      s    I 'F Fr   