
    j                         d dl Z d dlZd dlmZ d dlZddlmZmZm	Z	 ddl
T d ZdefdZ G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d dee          ZdS )    N)ABCMeta   )DuplicateRegistrationErrorraise_class_not_found_error raise_no_entity_registered_error)*c                    t          | t                    rd |                                 D             S t          | t                    rd | D             S t          | t          j                  r|                                 S t          | t          j        t          j        f          rt          |           S t          | t          j
        t          j        f          rt          |           S t          | t          j                  rt          |           S t          | t          j                  rt!          |           S | S )Nc                 ^    i | ]*\  }}t          |t                    |t          |          +S  )
isinstancetypeconvert_and_remove_types).0kvs      b/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddlex/utils/misc.py
<dictcomp>z,convert_and_remove_types.<locals>.<dictcomp>    sG     
 
 
1a&&
'**
 
 
    c                 ,    g | ]}t          |          S r   )r   )r   r   s     r   
<listcomp>z,convert_and_remove_types.<locals>.<listcomp>&   s!    :::(++:::r   )r   dictitemslistnpndarraytolistfloat32float64floatint32int64intbool_boolstr_str)datas    r   r   r      s   $ 
 



 
 
 	

 
D$		 ::T::::	D"*	%	% 	{{}}	D2:rz2	3	3 T{{	D28RX.	/	/ 4yy	D"(	#	# Dzz	D"'	"	" 4yyKr   pathc                 @    t           j                            |           S )ztget absolute path

    Args:
        path (str): the relative path

    Returns:
        str: the absolute path
    )osr(   abspath)r(   s    r   r+   r+   4   s     7??4   r   c                   (     e Zd ZdZ fdZd Z xZS )CachedPropertyaD  
    A property that is only computed once per instance and then replaces itself
    with an ordinary attribute.

    The implementation refers to
    https://github.com/pydanny/cached-property/blob/master/cached_property.py .

    Note that this implementation does NOT work in multi-thread or coroutine
    scenarios.
    c                     t                                                       || _        t          |dd          | _        d S )N__doc__ )super__init__funcgetattrr/   )selfr3   	__class__s     r   r2   zCachedProperty.__init__L   s7    	tY33r   c                 `    || S |                      |          }||j        | j         j        <   |S N)r3   __dict____name__)r5   objclsvals       r   __get__zCachedProperty.__get__Q   s3    ;Kiinn ,/TY'(
r   )r:   
__module____qualname__r/   r2   r>   __classcell__r6   s   @r   r-   r-   @   sQ        	 	4 4 4 4 4
      r   r-   c                   0     e Zd Zd Z fdZddZd Z xZS )Constantc                 V    t                                                       || _        d S r8   )r1   r2   r=   )r5   r=   r6   s     r   r2   zConstant.__init__^   s$    r   Nc                     | j         S r8   )r=   )r5   r;   type_s      r   r>   zConstant.__get__b   s	    xr   c                      t          d          )Nz+The value of a constant cannot be modified!)AttributeError)r5   r;   r=   s      r   __set__zConstant.__set__e   s    JKKKr   r8   )r:   r?   r@   r/   r2   r>   rJ   rA   rB   s   @r   rD   rD   [   sg        N       L L L L L L Lr   rD   c                   D     e Zd ZdZi Z ej                    Z fdZ xZ	S )	Singletonzgsingleton meta class

    Args:
        type (class): type

    Returns:
        class: meta class
    c                     | | j         vrI| j        5  | | j         vr! t                      j        |i || j         | <   d d d            n# 1 swxY w Y   | j         |          S r8   )_insts_lockr1   __call__)r<   argskwargsr6   s      r   rP   zSingleton.__call__v   s    cj   H Hcj((&6egg&6&G&G&GCJsOH H H H H H H H H H H H H H H z#s   +A		AA)
r:   r?   r@   r/   rN   	threadingLockrO   rP   rA   rB   s   @r   rL   rL   i   sX          FINE        r   rL   c                        e Zd ZdZdZdZdZ fdZed             Z	ed             Z
ed             Zd	 Zd
efdZ xZS )AutoRegisterMetaClasszmeta class that automatically registry subclass to its baseclass

    Args:
        type (class): type

    Returns:
        class: meta class
    entities	__is_base__registered_mapc                 ~    t                                          | |||          }|                     |||           |S r8   )r1   __new__-_AutoRegisterMetaClass__register_model_entity)mcsnamebasesattrsr<   r6   s        r   r[   zAutoRegisterMetaClass.__new__   s;    ggooc466##E3666
r   c                 r    |r2|D ]1}|                      |          }|r|                     ||           0d S d S r8   )'_AutoRegisterMetaClass__find_base_class._AutoRegisterMetaClass__register_to_base_class)r]   r_   r<   r`   basebase_clss         r   __register_model_entityz-AutoRegisterMetaClass.__register_model_entity   sg     	@ @ @0066 @003???		@ 	@@ @r   c                     | j         }|                    d          rd|j         |z   }t          ||d          r|S |j        D ]}|                     |          }|r|c S d S )N___F)'_AutoRegisterMetaClass__base_class_flag
startswithr:   r4   	__bases__rb   )r]   r<   is_base_flagrd   re   s        r   __find_base_classz'AutoRegisterMetaClass.__find_base_class   s    ,""4(( 	=-s|--<L3e,, 	JM 	  	 D,,T22H   tr   c           
      |   t          || j        |j                  }t          |t                    r|g}t          || j        i           }|D ]Y}||v r3||         |ur)t          d| d|j         d||         j         d          |||<   t          d|j         d| d           Zt          || j        |           d S )Nz
The name(`z5`) duplicated registration! The class entities are: `z` and `z`.zThe class entity(z) has been register as name(`z`).)	r4   ,_AutoRegisterMetaClass__model_type_attr_namer:   r   r&   +_AutoRegisterMetaClass__registered_map_namer   debugsetattr)r]   rd   r<   cls_entity_namerecordsr^   s         r   __register_to_base_classz.AutoRegisterMetaClass.__register_to_base_class   s   !#s'A3<PPos++ 	0./O$ 92>># 		 		Dw74=#;#;0  \_\h  	$-      GDMXCLXXtXXX    	c/99999r   c                     t          | t          |           j                  st          |            t	          | t          |           j                  S )zget all subclass)hasattrr   rq   r   r4   )r<   s    r   allzAutoRegisterMetaClass.all   sD    sDII;<< 	2,S111sDII;<<<r   r^   c                 d    |                                  }||vrt          || |           ||         S )z get the registried class by name)ry   r   )r<   r^   all_entitiess      r   getzAutoRegisterMetaClass.get   s7    wwyy|##'c<@@@D!!r   )r:   r?   r@   r/   rp   rj   rq   r[   classmethodr\   rb   rc   ry   r&   r|   rA   rB   s   @r   rV   rV      s          (#.    
 @ @ [@ 
 
 [
 : : [:$= = ="s " " " " " " " "r   rV   c                       e Zd Zd ZdS )AutoRegisterABCMetaClassN)r:   r?   r@   r/   r   r   r   r   r      s        """"r   r   )r*   rS   abcr   numpyr   errorsr   r   r   loggingr   r&   r+   objectr-   rD   r   rL   rV   r   r   r   r   <module>r      s    
			                       
      ,	!# 	! 	! 	! 	!    V   6L L L L Lv L L L       ,F" F" F" F" F"D F" F" F"R# # # # #w(= # # # # #r   