
    Ng                     n    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d	S )
    )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                     dS )z<DEPENDENCIES lists all necessary dependencies for the class.N selfs    `/var/www/html/ai-engine/env/lib/python3.11/site-packages/layoutparser/models/base_layoutmodel.pyDEPENDENCIESzBaseLayoutModel.DEPENDENCIES   s	     	    c                     d S Nr   r   s    r   DETECTOR_NAMEzBaseLayoutModel.DETECTOR_NAME   	     	r   returnc                     d S r   r   r   s    r   MODEL_CATALOGzBaseLayoutModel.MODEL_CATALOG#   r   r   image)z
np.ndarrayzImage.Imagec                     d S r   r   r   r    s     r   detectzBaseLayoutModel.detect(   s    r   c                     dS )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          |          rt          ||          }| j        D ]P}||v rJt          | j        |                                                   d         }t          || j        |          c S Qt          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LLK $ 2 k k;..)-d.@.N.S.S.U.U)V)VWX)Y&5k4CUWijjjjj /  h; h hSWSa h h h i i i r   F
model_pathc                    |                      |d          }t          |t                    r||st          d||f d          ||fS t          |t                    r||                                }n|                      |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'' 	BJ,># / ][*<U ] ] ]  
 #J..%677 	BJ<N$))++JJ++JAAJ%/S%A%AWkk{GW#-j##>#>SZZJO
J&&r   c                 p    t          | | j                   t                                          |           S r   )r   r   super__new__)clsargskwargsr,   s      r   r<   zBaseLayoutModel.__new__U   s,    #s/000ww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          ^ X   ^ X tCc3h$78    ^ X 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  I  I  I  I  I  I  I  I  I  I * * * * * *C$ C$ C$ C$ C$c C$ C$ C$ C$ C$r   