
    \j=                     R    d dl mZ  G d de      Z G d de      Z G d de      Zy)	   )SchemaStrategyc                   6     e Zd ZdZdZed        Z fdZ xZS )	BaseArrayz(
    abstract array schema strategy
    )typeitemsc                 "    t        | t              S N)
isinstancelist)objs    H/root/env/lib/python3.12/site-packages/genson/schema/strategies/array.pymatch_objectzBaseArray.match_object
   s    #t$$    c                 l    t         |          }d|d<   | j                  r| j                         |d<   |S )Narrayr   r   )super	to_schema_itemsitems_to_schemaselfschema	__class__s     r   r   zBaseArray.to_schema   s7    "$ v;;"224F7Or   )	__name__
__module____qualname____doc__KEYWORDSstaticmethodr   r   __classcell__r   s   @r   r   r      s+     !H% % r   r   c                   H     e Zd ZdZed        Z fdZ fdZd Zd Z	 xZ
S )Listz]
    strategy for list-style array schemas. This is the default
    strategy for arrays.
    c                 n    | j                  d      dk(  xr  t        | j                  di       t              S Nr   r   r   )getr
   dictr   s    r   match_schemazList.match_schema   s2    zz&!W, :6::gr2D9	:r   c                 <    t         |   |        |       | _        y r	   r   __init__r   r   
node_classr   s     r   r,   zList.__init__    s    $ lr   c                 j    t         |   |       d|v r| j                  j                  |d          y y )Nr   )r   
add_schemar   r   s     r   r0   zList.add_schema$   s3    6"fKK""6'?3 r   c                 H    |D ]  }| j                   j                  |        y r	   )r   
add_object)r   r   items      r   r2   zList.add_object)   s#     	)DKK""4(	)r   c                 6    | j                   j                         S r	   r   r   )r   s    r   r   zList.items_to_schema-   s    {{$$&&r   )r   r   r   r   r   r)   r,   r0   r2   r   r    r!   s   @r   r#   r#      s0     : :#4
)'r   r#   c                   N     e Zd ZdZed        Z fdZ fdZd Zd Z	d Z
 xZS )Tuplez
    strategy for tuple-style array schemas. These will always have
    an items key to preserve the fact that it's a tuple.
    c                 l    | j                  d      dk(  xr t        | j                  d      t              S r%   )r&   r
   r   r(   s    r   r)   zTuple.match_schema6   s0    zz&!W, 66::g.5	6r   c                 >    t         |   |        |       g| _        y r	   r+   r-   s     r   r,   zTuple.__init__;   s    $!|nr   c                 X    t         |   |       d|v r| j                  |d   d       y y )Nr   r0   )r   r0   _addr   s     r   r0   zTuple.add_schema?   s/    6"fIIfWo|4 r   c                 (    | j                  |d       y )Nr2   )r;   )r   r   s     r   r2   zTuple.add_objectD   s    		#|$r   c                 <   t        | j                        t        |      k  rK| j                  j                  | j                                t        | j                        t        |      k  rKt	        | j                  |      D ]  \  }} t        ||      |        y r	   )lenr   appendr.   zipgetattr)r   r   func	subschemar3   s        r   r;   z
Tuple._addG   sx    $++U+KKt01 $++U+  #4;;6 	+OIt$GIt$T*	+r   c                 \    | j                   D cg c]  }|j                          c}S c c}w r	   r5   )r   r3   s     r   r   zTuple.items_to_schemaN   s!    -1[[9T 999s   ))r   r   r   r   r   r)   r,   r0   r2   r;   r   r    r!   s   @r   r7   r7   1   s5     6 6%5
%+:r   r7   N)baser   r   r#   r7    r   r   <module>rG      s,      $'9 '6:I :r   