
    9i                         S SK r S SKrS SKJr  SSKJr  SSKJrJr  SS/r	SS	 jr
\
r " S
 S\5      r " S S\\ R                  S9rSS jrg)    N)OrderedDict   )UnsupportedParamError   )get_registered_model_infoget_registered_suite_infoConfig
BaseConfigc                      [        U 5      nUS   n[	        U5      nUS   nU" XS9nU$ ! [         a  n[        [        U 5       S35      UeSnAff = f)_create_configz  is not a registered model name.Nsuiteconfig)
model_nameconfig_path)r   KeyErrorr   reprr   )r   r   
model_infoe
suite_name
suite_info
config_cls
config_objs           ]/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/repo_apis/base/config.pyr   r      st    .z:
 G$J*:6JH%JzKJ  #J  @A
	s   * 
AAAc                      ^  \ rS rSrS r\rSU 4S jjr\S 5       r	S r
S rS rS rS rS	 rS
 rS rS rS rSrU =r$ )_Config.   c                    > [         TU ]  5         U R                  5       U l        Ub  U R	                  UR                  5        g g N)super__init___DICT_TYPE__dictreset_from_dict)selfcfg	__class__s     r   r    _Config.__init__3   s:    %%'
?  +     c                 ,    [        U R                  5      $ )dict)r*   r"   r$   s    r   r*   _Config.dict:   s     DJJr(   c                 N     U R                   U   nU$ ! [         a    [        ef = fr   )r"   r   AttributeErrorr$   keyvals      r   __getattr___Config.__getattr__?   s.    	!**S/CJ 	!  	!s    $c                      X R                   U'   g)set_valNr"   r/   s      r   r5   _Config.set_valF   s    

3r(   c                      U R                   U   $ r   r6   r$   r0   s     r   __getitem___Config.__getitem__J   s    zz#r(   c                      X R                   U'   g r   r6   r/   s      r   __setitem___Config.__setitem__M   s    

3r(   c                     XR                   ;   $ r   r6   r9   s     r   __contains___Config.__contains__P   s    jj  r(   c                 F    U R                  5       nUR                  U5        g)
new_configN)copyupdate)r$   kwargsr%   s      r   rC   _Config.new_configS   s    iik

6r(   c                      [        U 5      " U S9$ )rD   r%   )typer+   s    r   rD   _Config.copyX   s    Dzd##r(   c                 :    U R                   R                  U5        g)popN)r"   rM   r9   s     r   rM   _Config.pop\   s    

sr(   c                     [        U SS9$ )Nr   indent)
format_cfgr+   s    r   __repr___Config.__repr__`   s    $q))r(   c                 n    U R                   R                  5         U R                   R                  U5        g)r#   N)r"   clearrE   r$   dict_like_objs     r   r#   _Config.reset_from_dictc   s$    



-(r(   r6   r   )__name__
__module____qualname____firstlineno____doc__r   r!   r    propertyr*   r2   r5   r:   r=   r@   rC   rD   rM   rS   r#   __static_attributes____classcell__r&   s   @r   r   r   .   s[    K,    !!
$*) )r(   r   c                   f  ^  \ rS rSrSrSU 4S jjrS r\R                  S 5       r	\R                  S 5       r
\R                  S 5       r\R                  SS j5       r\R                  S	 5       r\R                  SS
 j5       r\R                  SS j5       rS rS rSS jrS rS rS rSrU =r$ )r
   i   z
Abstract base class of Config.

Config provides the functionality to load, parse, or dump to a configuration
file with a specific format. Also, it provides APIs to update configurations
of several important hyperparameters and model components.
c                    > [         TU ]  US9  Xl        Uc/  Uc  [        U R                  5      nUS   nU R	                  U5        gg)z
Initialize the instance.

Args:
    model_name (str): A registered model name.
    config_path (str|None): Path of a configuration file. Default: None.
    cfg (BaseConfig|None): `BaseConfig` object to initialize from.
        Default: None.
rI   Nr   )r   r    r   r   load)r$   r   r   r%   r   r&   s        r   r    BaseConfig.__init__r   sN     	S!$;"6tG
(7IIk" r(   c                     g)zUpdate the deviceN )r$   devices     r   update_deviceBaseConfig.update_device   s    r(   c                     [         e)z Load configurations from a file.NotImplementedErrorr$   r   s     r   rf   BaseConfig.load   
     "!r(   c                     [         e)zDump configurations to a file.rn   rp   s     r   dumpBaseConfig.dump   rr   r(   c                     [         e)z.Update configurations from a dict-like object.rn   rW   s     r   rE   BaseConfig.update   rr   r(   c                     [         e)z!Update configurations of dataset.rn   )r$   dataset_dirdataset_types      r   update_datasetBaseConfig.update_dataset   rr   r(   c                     [         e)zUpdate learning rate.rn   )r$   learning_rates     r   update_learning_rateBaseConfig.update_learning_rate   rr   r(   c                     [         e)zN
Update batch size.

By default this method modifies the training batch size.
rn   )r$   
batch_sizemodes      r   update_batch_sizeBaseConfig.update_batch_size   
     "!r(   c                     [         e)zk
Update path to pretrained weights.

By default this method modifies the weight path for the entire model.
rn   )r$   weight_pathis_backbones      r   update_pretrained_weights$BaseConfig.update_pretrained_weights   r   r(   c                     [         e)z5Get total number of epochs or iterations in training.rn   r+   s    r   get_epochs_itersBaseConfig.get_epochs_iters       !!r(   c                     [         e)z#Get learning rate used in training.rn   r+   s    r   get_learning_rateBaseConfig.get_learning_rate   r   r(   c                     [         e)zJ
Get batch size.

By default this method returns the training batch size.
rn   )r$   r   s     r   get_batch_sizeBaseConfig.get_batch_size   s
     "!r(   c                     [         e)z0Get total number of epochs or iterations in QAT.rn   r+   s    r   get_qat_epochs_itersBaseConfig.get_qat_epochs_iters   r   r(   c                     [         e)zGet learning rate used in QAT.rn   r+   s    r   get_qat_learning_rate BaseConfig.get_qat_learning_rate   r   r(   c                 6    [        U 5      " U R                  U S9$ )rD   )r   r%   )rJ   r   r+   s    r   rD   BaseConfig.copy   s    DzT__$??r(   )r   )NNr   )train)F)rZ   r[   r\   r]   r^   r    rk   abcabstractmethodrf   rt   rE   r{   r   r   r   r   r   r   r   r   rD   r`   ra   rb   s   @r   r
   r
   i   s    #&  	" " 	" " 	" " 	" " 	" " 	" " 	" """"""@ @r(   )	metaclassc                    [         R                  R                  4n[        [        4n/ UQUQ7nSU-  n[        U [        5      (       a  U R                  n [        X5      (       a  [        [        U R                  5       5      5       Hc  u  nu  pxU[        U5      S-   -  n[        X5      (       a  US[        XS-   S9-   -  nOU[        U5      -  nU[        U 5      S-
  :w  d  M^  US-  nMe     U$ [        X5      (       ae  [        U 5       HT  u  phUS-  n[        X5      (       a  US[        XS-   S9-   -  nOU[        U5      -  nU[        U 5      S-
  :w  d  MO  US-  nMV     U$ U[        U 5      -  nU$ )rR    z: 
r   rP   z- )collectionsr   Mappinglisttuple
isinstancer   r*   	enumeratesorteditemsstrrR   len)	r%   rQ   	MAP_TYPES	SEQ_TYPESNESTED_TYPESsikvs	            r   rR   rR      sb   ((*IuI+Y++LfA#whh#!!"6#))+#67IAvQ$A!**TJq!<<<SVCHqL T	 8& H 
C	#	#cNDAIA!**TJq!<<<SVCHqL T	 # H 	
SXHr(   r   )r   )r   collections.abcr   r   utils.errorsr   registerr   r   __all__r   r	   objectr   ABCMetar
   rR   ri   r(   r   <module>r      sU       # 1 J\
"" 
8)f 8)vd@CKK d@Nr(   