
    kh                     r    d Z ddlmZ dZddgZe G d d             Zdedefd	Zded
edefdZ		 ddefdZ
y)a"  
Inside layoutparser, we support the following formats for specifying layout model configs 
or weights:

1. URL-based formats:
    - A local path: ~/models/publaynet/path
    - Link to the models: https://web/url/to/models

2. LayoutParser Based Model/Config Path Formats:
    - Full format: lp://<backend-name>/<dataset-name>/<model-architecture-name>
    - Short format: lp://<dataset-name>/<model-architecture-name> 
    - Brief format: lp://<dataset-name>

For each LayoutParser-based format, you could also add a `config` or `weight` identifier 
after them: 
    - Full format: lp://<backend-name>/<dataset-name>/<model-architecture-name>/<config, weight>
    - Short format: lp://<dataset-name>/<model-architecture-name>/<config, weight> 
    - Brief format: lp://<dataset-name>/<config, weight>
    )	dataclasszlp://configweightc                   r    e Zd ZU eed<   eed<   eed<   eed<   d Zed        Zed        Zed        Z	d	 Z
y
)LayoutModelConfigbackend_namedataset_name
model_arch
identifierc                 ,    | j                   t        v sJ y )N)r   %ALLOWED_LAYOUT_MODEL_IDENTIFIER_NAMESselfs    \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/layoutparser/models/model_config.py__post_init__zLayoutModelConfig.__post_init__1   s    "GGGG    c                     t         dj                  | j                  | j                  | j                  | j
                  g      z   S N/)LAYOUT_PARSER_MODEL_PREFIXjoinr   r	   r
   r   r   s    r   fullzLayoutModelConfig.full4   s:    )CHH 1 14??DOOT-
 
 	
r   c                 t    t         dj                  | j                  | j                  | j                  g      z   S r   )r   r   r	   r
   r   r   s    r   shortzLayoutModelConfig.short:   s2    )CHHA-
 
 	
r   c                 ^    t         dj                  | j                  | j                  g      z   S r   )r   r   r	   r
   r   s    r   briefzLayoutModelConfig.brief@   s%    )CHHd6G6G5Y,ZZZr   c                     t         D ]  }|| j                  k7  s n | j                  | j                  | j                  | j
                        S )Nr   r	   r
   r   )r   r   	__class__r   r	   r
   )r   r   s     r   dualzLayoutModelConfig.dualD   sT    ? 	JT__,	 ~~****!	  
 	
r   N)__name__
__module____qualname__str__annotations__r   propertyr   r   r   r     r   r   r   r   )   sc     OOH 
 

 
 

 [ [

r   r   returnc                     | j                  t              syt        | t        t              d  j                  d            dvryy)NFr   )            T)
startswithr   lensplit)r   s    r   $is_lp_layout_model_config_any_formatr1   Q   s@    78
6#0134::3?@Tr   r   c                 T    | j                  d      j                  d|       d| z   S r   )rstrip)r   r   s     r   add_identifier_for_configr4   Y   s/    ==$$q%561ZL9IIIr   Nc                    | j                  d      d   t        v sJ d|  d       | t        t              d  j                  d      }t        |      dk(  r|\  }}}}nxt        |      dk(  r$|d k7  sJ |d   |k(  r|d k7  sJ |\  }}}nM|\  }}}nFt        |      dk(  r*|d k7  sJ |d k7  sJ |d   |k(  rt	        d	|        |\  }}nt	        d	|        t        ||||
      S )Nr   zThe input config zu does not contain identifier information.Consider run `config = add_identifier_for_config(config, identifier)` first.r-   r,   r   r+   zInvalid LP Model Config r   )r0   r   r/   r   
ValueErrorr   )r   r   r
   partsr	   r   _s          r   layout_model_config_parserr:   ]   s?    <<R $II 
F8 $W 	XI
 31245;;C@E
5zQ=B:lJ
	Uqt###8|#%%%*/'A|Z 490L*j	Uqt###T!!!8|#7x@AA $) j3F8<==!!	 r   )NN)__doc__dataclassesr   r   r   r   r$   boolr1   r4   r:   r'   r   r   <module>r>      s}   ( "$ )18(< % $
 $
 $
N  Jc Js Js J
 +/((r   