
    %j                         d dl Z d dlZd dlZddlmZ d Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Z e j                    Z e            ZefdZ G d de          Zd Z e            Zd ZddZd Zd Zd Zd Zd ZdS )    N   )
underscorec                    t          t          d t          t          j        t
          |           t          |                               d           }t          | t          | |                     t          |            || _
        | S )Nc                     | d         j         S )Nr   )sort_key)fields    W/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/cobble/__init__.py<lambda>zdata.<locals>.<lambda>   s    %(+     )key)sortedfiltermap	functoolspartial_read_fielddir_add_methods_methods	visitable_cobble_fields)clsfieldss     r	   datar      s    	!+s33SXX>>	
 	
 ,+  F hsF++,,,cNNNCJr   c                     t          || j        | i          }|                                D ]\  }}t          | ||           d S N)_compile_definitions__name__itemssetattr)r   methodsdefinitionsr   values        r	   r   r      sV    &ws0CDDK!'')) ! !
US%    ! !r   c                     d |D             }t          | |          t          | |          t          | |          t                      t	          | |          gS )Nc                     g | ]\  }}|S  r&   .0namer   s      r	   
<listcomp>z_methods.<locals>.<listcomp>   s    ,,,kdET,,,r   )
_make_init
_make_repr_make_eq	_make_neq
_make_hash)r   r   namess      r	   r   r      sZ    ,,V,,,E33e3 r   c                     d d                     fd|D                       }d                     d |D                       }d                    ||| j                  S )Nc                 \    |j         t          k    r| S d                    | |j                   S )Nz{0}={1})default
_undefinedformat)r)   r   s     r	   make_argz_make_init.<locals>.make_arg'   s,    =J&&K##D%-888r   , c              3   6   K   | ]\  }} ||          V  d S r   r&   )r(   r)   r   r6   s      r	   	<genexpr>z_make_init.<locals>.<genexpr>-   s3      LLkdEHHT511LLLLLLr    c              3   F   K   | ]\  }}d                      |          V  dS )z
    self.{0} = {0}Nr5   r'   s      r	   r9   z_make_init.<locals>.<genexpr>.   sH       ! !D% 	%%d++! ! ! ! ! !r   z<def __init__(self, {0}):{1}
    super({2}, self).__init__()
)joinr5   r   )r   r   args_sourceassignments_sourcer6   s       @r	   r+   r+   &   s    9 9 9 ))LLLLVLLLLLK ! !!! ! !   LRRS^`rtw  uA  B  B  Br   c           	          d                     | j        d                    d t          |          D                       d                    d |D                                 S )Nz7def __repr__(self):
     return '{0}({1})'.format({2})
r7   c              3   H   K   | ]\  }}d                      ||          V  dS )z{0}={{{1}}}Nr<   )r(   indexr)   s      r	   r9   z_make_repr.<locals>.<genexpr>8   s6      XXt-&&tU33XXXXXXr   c              3   @   K   | ]}d                      |          V  dS )zrepr(self.{0})Nr<   r(   r)   s     r	   r9   z_make_repr.<locals>.<genexpr>9   s1      BBD"))$//BBBBBBr   )r5   r   r=   	enumerate)r   r0   s     r	   r,   r,   5   sd    FMM		XXyQVGWGWXXXXX		BBEBBBBB  r   c                     d                     | j                  gd |D             z   }d                     d                    |                    S )Nzisinstance(other, {0})c                 8    g | ]}d                      |          S )zself.{0} == other.{0}r<   rD   s     r	   r*   z_make_eq.<locals>.<listcomp>?   s'    @@@$	 	'	'	-	-@@@r   z'def __eq__(self, other):
    return {0}z and )r5   r   r=   )r   r0   
conditionss      r	   r-   r-   =   sQ    *11#,??@@@%@@@AJ5<<W\\*=U=UVVVr   c                      dS )Nz3def __ne__(self, other): return not (self == other)r&   r&   r   r	   r.   r.   C   s    @@r   c                 |    | j         gd |D             z   }d                    d                    |                    S )Nc                 8    g | ]}d                      |          S )zself.{0}r<   rD   s     r	   r*   z_make_hash.<locals>.<listcomp>H   s&     K K KT!2!24!8!8 K K Kr   z&def __hash__(self): return hash(({0}))r7   )r   r5   r=   )r   r0   elementss      r	   r/   r/   G   s?    ~ K KU K K KKH3::499X;N;NOOOr   c                 f    d                     |t          |          t          |                     S )Nzddef _accept{args}(self, visitor{args_signature}): return visitor.{method_name}(self{args_signature}))argsargs_signaturemethod_name)r5   _args_signature_visit_method_name)r   rN   s     r	   _make_acceptrS   L   s9    qxx&t,,&s++ y   r   c                 |    | t           d fvrt          d          t          t          t                    |           S )Nzdefault value must be Noner3   )r4   	TypeError_Fieldnext_sort_key_countrU   s    r	   r   r   X   s<    z4(((4555$''9999r   c                       e Zd Zd ZdS )rW   c                 "    || _         || _        d S r   )r   r3   )selfr   r3   s      r	   __init__z_Field.__init___   s     r   N)r   
__module____qualname__r]   r&   r   r	   rW   rW   ^   s#            r   rW   c                 X    t          | |          }t          |t                    r||fS d S r   )getattr
isinstancerW   )r   r)   members      r	   r   r   d   s2    S$F&&!! V|tr   c                 :    t                               |            | S r   )_visitablesaddr   s    r	   r   r   m   s    OOCJr   c                    |d}t          t          d t          |                               }|D ]"}t          |t	          ||          g           #dfd|D             }d                    | j        t          |          |d                    |                    }t          |gt          t          i          }t          t          |                                                    S )	Nr   c                     | t           v S r   )re   )subclasss    r	   r
   zvisitor.<locals>.<lambda>w   s    [0 r   rN   z@
    @abc.abstractmethod
    def {0}(self, value):
        pass
c              3   \   K   | ]&}                     t          |                    V  'd S r   )r5   rR   )r(   rj   abstract_method_templates     r	   r9   zvisitor.<locals>.<genexpr>   sN         	!''(:8(D(DEE     r   z
class {name}Visitor(metaclass=abc.ABCMeta):

    def visit(self, value{args_signature}):
        return value._accept{args}(self{args_signature})

{abstract_methods}

)r)   rO   rN   abstract_methods)setr   _subclassesr   rS   r5   r   rQ   r=   r   abcrX   itervalues)r   rN   
subclassesrj   ro   source
definitionrm   s          @r	   visitorrx   r   s   |V00C   J  D DXXD A A ABCCCC 
   "  
 F	"4((	YY/00	     &vhc
;;JZ&&(())***r   c                 \    d                     d t          d|           D                       S )Nr:   c              3   @   K   | ]}d                      |          V  dS )z, arg{0}Nr<   )r(   	arg_indexs     r	   r9   z"_args_signature.<locals>.<genexpr>   s0      PPI:$$Y//PPPPPPr   r   )r=   rangerk   s    r	   rQ   rQ      s+    77PPq$PPPPPPr   c                     dt           i}|                    |           i }t          d                    |           ||           |S )Nrr   rn   )rr   updateexecr=   )r"   bindingsdefinition_globalsstashs       r	   r   r      sI    h'''E;		!3U;;;Lr   c                 0    dt          | j                  z   S )Nvisit_)r   r   rg   s    r	   rR   rR      s    j....r   c                     |                                  }d}|t          |          k     r0|t          ||                   z  }|dz  }|t          |          k     0|S )Nr   r   )__subclasses__lenrq   )r   ru   rB   s      r	   rq   rq      sd    ##%%JE
#j//
!
!k*U"3444

 #j//
!
! r   c                      t                     }t           fd|j        D                       }|                    |            t                     di |S )Nc              3   B   K   | ]\  }}|t          |          fV  d S r   )ra   )r(   r)   r   objs      r	   r9   zcopy.<locals>.<genexpr>   sJ        D% 
wsD!!"     r   r&   )typedictr   r~   )r   kwargsobj_typeattrss   `   r	   copyr      sv    CyyH    #2    E 
LL499ur   r   )	itertoolsr   rr   
inflectionr   r   r   r   r+   r,   r-   r.   r/   rS   countrY   objectr4   r   rW   r   rp   re   r   rx   rQ   r   rR   rq   r   r&   r   r	   <module>r      s           



 " " " " " "  ! ! !  B B B  W W WA A AP P P
   ")/##VXX
  : : : :    V      cee  
#+ #+ #+ #+LQ Q Q  / / /      r   