
    |-j                         d dl Z d dlZd dlmZ ddlmZ ddlmZmZ ddgZ	dd	Z
e
Z G d
 de          Z G d dee j                  ZddZdS )    N)OrderedDict   )UnsupportedParamError   )get_registered_model_infoget_registered_suite_infoConfig
BaseConfigc                     	 t          |           }n2# t          $ r%}t          t          |            d          |d}~ww xY w|d         }t	          |          }|d         } || |          }|S )_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/banglarbhumi/venv/lib/python3.11/site-packages/paddlex/repo_apis/base/config.pyr   r      s    .z::

   #JAAA
 
	
 G$J*:66JH%Jz{KKKJs    
A <Ac                   z     e Zd Zd ZeZd fd	Zed             Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Z xZS )_ConfigNc                     t                                                       |                                 | _        ||                     |j                   d S d S N)super__init___DICT_TYPE__dictreset_from_dict)selfcfg	__class__s     r   r   z_Config.__init__3   sT    %%''
?  +++++ ?    c                 *    t          | j                  S )dict)r(   r!   r#   s    r   r(   z_Config.dict:   s     DJr&   c                 L    	 | j         |         }|S # t          $ r t          w xY wr   )r!   r   AttributeErrorr#   keyvals      r   __getattr__z_Config.__getattr__?   s8    	!*S/CJ 	! 	! 	!  	!s    #c                     || j         |<   dS )set_valNr!   r,   s      r   r1   z_Config.set_valF   s    
3r&   c                     | j         |         S r   r2   r#   r-   s     r   __getitem__z_Config.__getitem__J   s    z#r&   c                     || j         |<   d S r   r2   r,   s      r   __setitem__z_Config.__setitem__M   s    
3r&   c                     || j         v S r   r2   r4   s     r   __contains__z_Config.__contains__P   s    dj  r&   c                 X    |                                  }|                    |           dS )
new_configN)copyupdate)r#   kwargsr$   s      r   r;   z_Config.new_configS   s'    iikk

6r&   c                 4     t          |           |           S )r<   r$   )typer)   s    r   r<   z_Config.copyX   s    tDzzd####r&   c                 :    | j                             |           dS )popN)r!   rC   r4   s     r   rC   z_Config.pop\   s    
sr&   c                 $    t          | d          S )Nr   indent)
format_cfgr)   s    r   __repr__z_Config.__repr__`   s    $q))))r&   c                 l    | j                                          | j                             |           dS )r"   N)r!   clearr=   r#   dict_like_objs     r   r"   z_Config.reset_from_dictc   s2    

-(((((r&   r   )__name__
__module____qualname____doc__r   r    r   propertyr(   r/   r1   r5   r7   r9   r;   r<   rC   rH   r"   __classcell__r%   s   @r   r   r   .   s        MK, , , , , ,     X ! ! !      ! ! !  
$ $ $  * * *) ) ) ) ) ) )r&   r   c                   6    e Zd ZdZd fd	Zd Zej        d             Zej        d             Z	ej        d             Z
ej        dd            Zej        d	             Zej        dd            Zej        dd            Zd Zd ZddZd Zd Zd Z xZS )r
   a
  
    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.
    Nc                     t                                          |           || _        |5|t          | j                  }|d         }|                     |           dS dS )a+  
        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.
        r@   Nr   )r   r   r   r   load)r#   r   r   r$   r   r%   s        r   r   zBaseConfig.__init__r   sj     	S!!!$;"6tGG
(7IIk""""" ;r&   c                     dS )zUpdate the deviceN )r#   devices     r   update_devicezBaseConfig.update_device   s      r&   c                     t           )z Load configurations from a file.NotImplementedErrorr#   r   s     r   rV   zBaseConfig.load   
     "!r&   c                     t           )zDump configurations to a file.r\   r^   s     r   dumpzBaseConfig.dump   r_   r&   c                     t           )z.Update configurations from a dict-like object.r\   rK   s     r   r=   zBaseConfig.update   r_   r&   c                     t           )z!Update configurations of dataset.r\   )r#   dataset_dirdataset_types      r   update_datasetzBaseConfig.update_dataset   r_   r&   c                     t           )zUpdate learning rate.r\   )r#   learning_rates     r   update_learning_ratezBaseConfig.update_learning_rate   r_   r&   trainc                     t           )zf
        Update batch size.

        By default this method modifies the training batch size.
        r\   )r#   
batch_sizemodes      r   update_batch_sizezBaseConfig.update_batch_size   
     "!r&   Fc                     t           )z
        Update path to pretrained weights.

        By default this method modifies the weight path for the entire model.
        r\   )r#   weight_pathis_backbones      r   update_pretrained_weightsz$BaseConfig.update_pretrained_weights   ro   r&   c                     t           )z5Get total number of epochs or iterations in training.r\   r)   s    r   get_epochs_iterszBaseConfig.get_epochs_iters       !!r&   c                     t           )z#Get learning rate used in training.r\   r)   s    r   get_learning_ratezBaseConfig.get_learning_rate   rv   r&   c                     t           )zb
        Get batch size.

        By default this method returns the training batch size.
        r\   )r#   rm   s     r   get_batch_sizezBaseConfig.get_batch_size   s
     "!r&   c                     t           )z0Get total number of epochs or iterations in QAT.r\   r)   s    r   get_qat_epochs_iterszBaseConfig.get_qat_epochs_iters   rv   r&   c                     t           )zGet learning rate used in QAT.r\   r)   s    r   get_qat_learning_ratez BaseConfig.get_qat_learning_rate   rv   r&   c                 @     t          |           | j        |           S )r<   )r   r$   )rA   r   r)   s    r   r<   zBaseConfig.copy   s    tDzzT_$????r&   )NNr   )rj   )F)rM   rN   rO   rP   r   rZ   abcabstractmethodrV   ra   r=   rf   ri   rn   rs   ru   rx   rz   r|   r~   r<   rR   rS   s   @r   r
   r
   i   s        # # # # # #&      	" " " 	" " " 	" " " 	" " " " 	" " " 	" " " " 	" " " "" " "" " "" " " "" " "" " "@ @ @ @ @ @ @r&   )	metaclassc                 *   t           j        j        f}t          t          f}g ||R }d|z  }t          | t                    r| j        } t          | |          rt          t          | 
                                                    D ]u\  }\  }}|t          |          dz   z  }t          ||          r|dt          ||dz             z   z  }n|t          |          z  }|t          |           dz
  k    r|dz  }vnt          | |          rst          |           D ]b\  }}|dz  }t          ||          r|dt          ||dz             z   z  }n|t          |          z  }|t          |           dz
  k    r|dz  }cn|t          |           z  }|S )rG    z: 
r   rE   z- )collectionsr   Mappinglisttuple
isinstancer   r(   	enumeratesorteditemsstrrG   len)	r$   rF   	MAP_TYPES	SEQ_TYPESNESTED_TYPESsikvs	            r   rG   rG      s   (*IuI+Y+++LfA#w h#y!! "6#))++#6#677 	 	IAv1Q$A!\** TJq!<<<<<SVVCHHqL  T		 
C	#	# 
cNN 	 	DAqIA!\** TJq!<<<<<SVVCHHqL  T		 	
SXXHr&   r   )r   )r   collections.abcr   r   utils.errorsr   registerr   r   __all__r   r	   objectr   ABCMetar
   rG   rX   r&   r   <module>r      s    


     # # # # # # 1 1 1 1 1 1 J J J J J J J J\
"   " 
8) 8) 8) 8) 8)f 8) 8) 8)vd@ d@ d@ d@ d@CK d@ d@ d@ d@N     r&   