
    _iY                     ^    S SK Jr  SSKJr  SSKJrJrJr   " S S\5      r	 " S S\\	5      r
g	)
    )ABCMeta   )logging)DuplicateRegistrationErrorraise_class_not_found_error raise_no_entity_registered_errorc                   |   ^  \ rS rSrSrSrSrSrU 4S jr\	S 5       r
\	S 5       r\	S	 5       rS
 rS\4S jrSrU =r$ )AutoRegisterMetaClass   zmeta class that automatically registry subclass to its baseclass

Args:
    type (class): type

Returns:
    class: meta class
entities	__is_base__registered_mapc                 L   > [         TU ]  XX#5      nU R                  X$U5        U$ N)super__new__-_AutoRegisterMetaClass__register_model_entity)mcsnamebasesattrscls	__class__s        [/var/www/html/land-ocr/venv/lib/python3.13/site-packages/paddlex/utils/subclass_register.pyr   AutoRegisterMetaClass.__new__'   s(    goc6##E6
    c                     U(       aQ  U HJ  nU R                  U5      nU(       d  M  [        X R                  5      (       d  M9  U R                  XR5        ML     g g r   )'_AutoRegisterMetaClass__find_base_classhasattr,_AutoRegisterMetaClass__model_type_attr_name._AutoRegisterMetaClass__register_to_base_class)r   r   r   r   basebase_clss         r   __register_model_entity-AutoRegisterMetaClass.__register_model_entity,   sG    0068-G-G H H00?  r   c                     U R                   nUR                  S5      (       a  SUR                   3U-   n[        XS5      (       a  U$ UR                   H  nU R                  U5      nU(       d  M  Us  $    g )N___F)'_AutoRegisterMetaClass__base_class_flag
startswith__name__getattr	__bases__r   )r   r   is_base_flagr"   r#   s        r   __find_base_class'AutoRegisterMetaClass.__find_base_class4   sr    ,,""4((s||n-<L3e,,JMMD,,T2Hx " r   c           
         [        X R                  5      n[        U[        5      (       a  U/n[        XR                  0 5      nU He  nXT;   a2  XE   ULa+  [        SU SUR                   SXE   R                   S35      eX$U'   [        R                  " SUR                   SU S35        Mg     [        XR                  U5        g )Nz
The name(`z5`) duplicated registration! The class entities are: `z` and `z`.zThe class entity(z) has been register as name(`z`).)
r,   r    
isinstancestr+_AutoRegisterMetaClass__registered_map_namer   r+   r   debugsetattr)r   r"   r   cls_entity_namerecordsr   s         r   __register_to_base_class.AutoRegisterMetaClass.__register_to_base_classA   s    !#'A'ABos++./O$ 9 92>#D7=#;0 &[\_\h\h[i j	-   DMMM#CLL>1NtfTWX $ 	//9r   c                     [        U [        U 5      R                  5      (       d  [        U 5        [	        U [        U 5      R                  5      $ )zget all subclass)r   typer4   r   r,   )r   s    r   allAutoRegisterMetaClass.allT   s8    sDI;;<<,S1sDI;;<<r   r   c                 L    U R                  5       nX;  a  [        XU5        X!   $ )z get the registried class by name)r=   r   )r   r   all_entitiess      r   getAutoRegisterMetaClass.getZ   s&    wwy#'<@!!r    )r+   
__module____qualname____firstlineno____doc__r    r)   r4   r   classmethodr   r   r!   r=   r3   rA   __static_attributes____classcell__)r   s   @r   r
   r
      su     (#.
 @ @ 
 
 : :$="s " "r   r
   c                       \ rS rSrS rSrg)AutoRegisterABCMetaClassb   rC   N)r+   rD   rE   rF   rG   rI   rC   r   r   rL   rL   b   s    "r   rL   N)abcr    r   errorsr   r   r   r<   r
   rL   rC   r   r   <module>rQ      s5      F"D F"R#w(= #r   