o
    Y۷i                     @  s  d Z ddlmZ ddlmZ er(ddlmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lm
Z
 ddlmZmZ ddlmZmZ edG dd de
ZedG dd de
ZedG dd deZedG dd de
ZedG dd dZd<d"d#Zd=d$d%Zd>d(d)Zed*G d+d, d,Zed-G d.d/ d/eZ ed0G d1d2 d2e Z!ed3G d4d5 d5Z"ed6d7d8G d9d: d:Z#d;S )?zTesting utilities.    )annotations)TYPE_CHECKING)MappingSequence)DeviceObjectdtype)Any)ClassVar   )_ffi_api)r   )c_classfield)get_global_funcregister_objectztesting.TestObjectBasec                   @  sF   e Zd ZU dZded< ded< ded< er!dd
dZdddZdS dS )TestObjectBasezTest object base class.intv_i64floatv_f64strv_strreturnr   c                C     d S N selfr   r   M/home/ubuntu/vllm_env/lib/python3.10/site-packages/tvm_ffi/testing/testing.py__ffi_shallow_copy__3       z#TestObjectBase.__ffi_shallow_copy___1c                C  r   r   r   r   r!   r   r   r   add_i644   r    zTestObjectBase.add_i64Nr   r   r!   r   r   r   )__name__
__module____qualname____doc____annotations__r   r   r#   r   r   r   r   r   )   s   
 
r   ztesting.TestIntPairc                   @  sL   e Zd ZU dZded< ded< er$dddZedddZdddZ	dS dS )TestIntPairzTest Int Pair.r   abr   r   c                C  r   r   r   r   r   r   r   r   B   r    z TestIntPair.__ffi_shallow_copy___0r!   c                C  r   r   r   )r.   r!   r   r   r   __c_ffi_init__C      zTestIntPair.__c_ffi_init__c                C  r   r   r   r   r   r   r   sumE   r    zTestIntPair.sumNr$   )r.   r   r!   r   r   r   )r   r   )
r&   r'   r(   r)   r*   r   r   staticmethodr/   r1   r   r   r   r   r+   9   s   
 
r+   ztesting.TestObjectDerivedc                   @  s4   e Zd ZU dZded< ded< erddd	Zd
S d
S )TestObjectDerivedzTest object derived class.zMapping[Any, Any]v_mapzSequence[Any]v_arrayr   r   c                C  r   r   r   r   r   r   r   r   S   r    z&TestObjectDerived.__ffi_shallow_copy__Nr$   )r&   r'   r(   r)   r*   r   r   r   r   r   r   r3   J   s   
 r3   ztesting.TestNonCopyablec                   @  s   e Zd ZU dZded< dS )TestNonCopyablez*Test object with deleted copy constructor.r   valueN)r&   r'   r(   r)   r*   r   r   r   r   r6   X   s   
 r6   ztesting.SchemaAllTypesc                   @  s   e Zd ZU ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ered1d!d"Zd2d$d%Zd3d'd(Zd4d)d*Zd5d+d,Z	e
d6d.d/Zd0S d0S )7_SchemaAllTypesboolv_boolr   v_intr   v_floatr   v_devicer   v_dtyper   v_stringbytesv_bytesz
int | None	v_opt_int
str | None	v_opt_strSequence[int]	v_arr_intzSequence[str]	v_arr_strzMapping[str, int]v_map_str_intMapping[str, Sequence[int]]v_map_str_arr_intz'str | Sequence[int] | Mapping[str, int]	v_variantzSequence[int | str] | Nonev_opt_arr_variantr   r   c                C  r   r   r   r   r   r   r   r   t   r    z$_SchemaAllTypes.__ffi_shallow_copy__r!   c                C  r   r   r   r"   r   r   r   add_intu   r    z_SchemaAllTypes.add_int_2c                C  r   r   r   r   r!   rN   r   r   r   
append_intv   r    z_SchemaAllTypes.append_intc                C  r   r   r   rO   r   r   r   maybe_concatw   r    z_SchemaAllTypes.maybe_concatc                C  r   r   r   rO   r   r   r   	merge_mapx   r    z_SchemaAllTypes.merge_mapr.   c                C  r   r   r   )r.   r!   rN   r   r   r   	make_withy   r0   z_SchemaAllTypes.make_withNr$   r%   )r!   rE   rN   r   r   rE   )r!   rC   rN   rC   r   rC   )r!   rI   rN   rI   r   rI   )r.   r   r!   r   rN   r   r   r8   )r&   r'   r(   r*   r   r   rM   rP   rQ   rR   r2   rS   r   r   r   r   r8   _   s2   
 




r8   type_keyr   kwargsr	   r   r   c                 K  s6   | g}|  D ]\}}|| || qtj| S )aZ  Make an object by reflection.

    Parameters
    ----------
    type_key
        The type key of the object.
    kwargs
        The keyword arguments to the object.

    Returns
    -------
    obj
        The created object.

    Note
    ----
    This function is only used for testing purposes and should
    not be used in other cases.

    )itemsappendr   MakeObjectFromPackedArgs)rT   rU   argskvr   r   r   create_object   s
   

r\   c                   C  s
   t d S )zAReturn an object whose type is not registered on the Python side.z testing.make_unregistered_objectr   r   r   r   r   make_unregistered_object   s   
r^   xr   c                 C  s   t d| S )zAdd one to the input integer.ztesting.add_oner]   )r_   r   r   r   add_one   s   r`   ztesting.TestCxxClassBasec                   @  s8   e Zd ZU ded< ded< dZdZded< dd
dZdS )_TestCxxClassBaser   r   v_i32   r   zClassVar[int]not_field_2r   Nonec                 C  s   |  |d |d  d S )Nrc   r   )__ffi_init__)r   r   rb   r   r   r   __init__   s   z_TestCxxClassBase.__init__N)r   r   rb   r   r   re   )r&   r'   r(   r*   not_field_1rd   rg   r   r   r   r   ra      s   
 ra   ztesting.TestCxxClassDerivedc                   @  s"   e Zd ZU ded< dZded< dS )_TestCxxClassDerivedr   r      v_f32N)r&   r'   r(   r*   rk   r   r   r   r   ri      s   
 ri   z"testing.TestCxxClassDerivedDerivedc                   @  s,   e Zd ZU edd dZded< ded< dS )	_TestCxxClassDerivedDerivedc                   C     dS )Ndefaultr   r   r   r   r   <lambda>   r    z$_TestCxxClassDerivedDerived.<lambda>)default_factoryr   r   r9   r:   N)r&   r'   r(   r   r   r*   r   r   r   r   rl      s   
 rl   ztesting.TestCxxInitSubsetc                   @  s@   e Zd ZU ded< eddZded< edd ddZd	ed
< dS )_TestCxxInitSubsetr   required_fieldF)initoptional_fieldc                   C  rm   )Nz
py-defaultr   r   r   r   r   ro      r    z_TestCxxInitSubset.<lambda>)rp   rs   r   noteN)r&   r'   r(   r*   r   rt   ru   r   r   r   r   rq      s   
 rq   ztesting.TestCxxKwOnlyT)kw_onlyc                   @  s2   e Zd ZU ded< ded< ded< dZded< dS )_TestCxxKwOnlyr   r_   yzd   wN)r&   r'   r(   r*   r{   r   r   r   r   rw      s
   
 rw   N)rT   r   rU   r	   r   r   r$   )r_   r   r   r   )$r)   
__future__r   typingr   collections.abcr   r   tvm_ffir   r   r   r	   r
    r   coredataclassesr   r   registryr   r   r   r+   r3   r6   r8   r\   r^   r`   ra   ri   rl   rq   rw   r   r   r   r   <module>   sF   




