
    kh                     f    d dl mZmZmZmZ d dlmZmZ ddlm	Z	m
Z
mZmZ ddlmZ  G d de      Zy	)
    )OptionalTupleUnionDict)ABCabstractmethod   )LayoutModelConfigadd_identifier_for_configlayout_model_config_parser$is_lp_layout_model_config_any_format   )requires_backendsc            	           e Zd Zeed               Zeed               Zeedeeeeef   f   fd              Z	ede
d   fd       Zede
d   fd       Zd	ed
ede
eef   fdZdd	edee   deeef   fdZ fdZ xZS )BaseLayoutModelc                      y)z<DEPENDENCIES lists all necessary dependencies for the class.N selfs    `/var/www/teggl/fontify/venv/lib/python3.12/site-packages/layoutparser/models/base_layoutmodel.pyDEPENDENCIESzBaseLayoutModel.DEPENDENCIES   s     	    c                      y Nr   r   s    r   DETECTOR_NAMEzBaseLayoutModel.DETECTOR_NAME        	r   returnc                      y r   r   r   s    r   MODEL_CATALOGzBaseLayoutModel.MODEL_CATALOG#   r   r   image)z
np.ndarrayzImage.Imagec                      y r   r   r   r    s     r   detectzBaseLayoutModel.detect(   s    r   c                      y)zDIt will process the input images appropriately to the target format.Nr   r"   s     r   image_loaderzBaseLayoutModel.image_loader-   r   r   config_path
identifierc                    t        |      rt        ||      }| j                  D ]H  }||v st        | j                  |   j	                               d   }t        || j                  |      c S  t        d| d| j                   d      |S )Nr   zThe config z is not a valid config for zI, possibly because there aren't models trained for the specified dataset.)	r   r   r   listkeysr   r   
ValueError	__class__)r   r&   r'   dataset_namedefault_model_archs        r   _parse_configzBaseLayoutModel._parse_config2   s    /<3KLK $ 2 2 k;.)-d.@.@.N.S.S.U)VWX)Y&5k4CUCUWijj	k
 {;-7RSWSaSaRb cg h i i r   
model_pathc                 b   | j                  |d      }t        |t              r||st        d||f d      ||fS t        |t              r||j                         }n| j                  |d      }t        |t              r|n|j                  }t        |t              r|n|j                  }||fS )Nconfigz%Invalid config and model path pairs (zG):When config_path is a regular URL, the model_path should not be emptyweight)r/   
isinstancestrr+   r
   dualfull)r   r&   r0   allow_empty_paths       r   config_parserzBaseLayoutModel.config_parser@   s    ((h?k3'J,># ;[*<U;V W\ ] 
 #J..%67J<N$))+J++JAJ%/S%Ak{GWGW#-j##>ZJOO
J&&r   c                 N    t        | | j                         t        |   |       S r   )r   r   super__new__)clsargskwargsr,   s      r   r<   zBaseLayoutModel.__new__U   s"    #s//0ws##r   )F)__name__
__module____qualname__propertyr   r   r   r   r5   r   r   r#   r%   r
   r/   r   r   r9   r<   __classcell__)r,   s   @r   r   r      s          tCc3h$78    E"=>   %(C"D    FWY\F\@] ' '# 'chilnqiqcr '*$ $r   r   N)typingr   r   r   r   abcr   r   model_configr
   r   r   r   
file_utilsr   r   r   r   r   <module>rI      s-    0 / # I  I *C$c C$r   