o
    *j)                     @   sV   d dl Z d dlZd dlZd dlZd dlZd dlmZ e Zdd ZG dd de	Z
dS )    N)
get_loggerc                 C   s:   t d|  t|  tj|  t|  tj|  d S )NzSeed: )printrandomseednpZtorchZmanual_seedcudaZmanual_seed_all)r    r   y/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/multi_modal/videocomposer/utils/config.py
setup_seed   s
   


r
   c                   @   s   e Zd Z					d ddZdd Zdd	 Zd
d Zdd Zd!ddZd"ddZ	dd Z
dd Zdd Zdd Zdd Zdd ZdS )#ConfigTNexp06_text_depths_vs_style.yamlc                 C   s   |d urt j|r|d | _ntd| d|| _d|d ur$d| nd | _|rT|  | _t	
d| jj d| _|  }| | j}| ||}| |}|| _| | d S )	Nz/configsz
model_dir z is not exist!cfg. zLoading config from {}.T)ospathisdir	model_dir	Exceptioncfg_file_name_level_parse_argsargsloggerinfoformatcfg_fileneed_initialization_initialize_cfg
_load_yaml_merge_cfg_from_base_update_from_argscfg_dict_update_dict)selfloadr"   	cfg_levelr   r   cfg_baser   r   r	   __init__   s*   

zConfig.__init__c                 C   s   t jdd}|jdddtj| j| jd |jddd	td
 |jdt	ddd |jddddd |jdddtdf |jdddtd |jdddtd |jddtd |jdd td!f |jd"d#d t j
d$ | S )%Nz?Argparser for configuring [code base name to think of] codebase)descriptionz--cfgr   zPath to the configuration file)desthelpdefaultz--init_methodz9Initialization method, includes TCP or shared file-systemztcp://localhost:9999)r+   r,   typez--seedi"  z$Need to explore for different videos)r-   r,   r+   z--debug
store_trueFzInto debug information)actionr,   r+   z--input_videozdemo_video/video_8800.mp4z;input video for full task, or motion vector of input videos)r,   r+   r-   z--image_pathr   zSingle Image Inputz--sketch_pathzSingle Sketch Inputz--style_image)r+   r-   z--input_text_desczwA colorful and beautiful fish swimming in a small glass bowl with              multicolored piece of stone, Macro Video)r,   r-   optszother configurations)r+   r,   nargs)argparseArgumentParseradd_argumentr   r   joinr   r   strint	REMAINDER
parse_args)r$   parserr   r   r	   r   1   sl   zConfig._parse_argsc                 C   s&   d}|D ]}||d 7 }q|d d S )Nr   /r   )r$   	path_listr   pr   r   r	   
_path_joind   s   zConfig._path_joinc                 C   s&   | j }t|D ]	}t||||< q|S N)r   varsgetattr)r$   r"   r   varr   r   r	   r!   j   s   zConfig._update_from_argsc                 C   s   | j r`d| _ tjtj| jdr:ttj| jdd}tj|	 tj
d}W d    |S 1 s3w   Y  |S ttj| jdd}tj|	 tj
d}W d    |S 1 s[w   Y  |S )NFz	base.yamlrLoader)r   r   r   existsr5   r   openyamlr%   read
SafeLoader)r$   fr   r   r   r	   r   p   s   

zConfig._initialize_cfgr   c           	      C   s  |j d usJ |dks+t|d}tj| tjd}W d    n1 s%w   Y  nt dd |j dd krK|j 	t dd d|_ z%t|j d}tj| tjd}|j }W d    n1 sjw   Y  W nJ t
y } z>tjtdd d |j  |_ t|j d}tj| tjd}|j }W d    n1 sw   Y  t| W Y d }~nd }~ww d	| vrd
| vrd| vr|S d| v r%|d d dkr|d d}| |dd d|d d  |d d|d   }n|d 	d|j 	|j dd d}| ||}| ||}nd	| v rw|d	 d dkrV|d	 d}| |dd d|  |d	 d|d   }n|d	 	d|j 	|j dd d}| ||}| j||dd}d
| v r|d
 d dkr|d
 d}| |dd d|d
 d  |d
 d|d   }n|d
 	d|j 	|j dd d}| ||}| ||}| ||}|S )Nr   rD   rE   r;   r<   r   z./Z	_BASE_RUNZ_BASE_MODELZ_BASE   r   z..T)preserve_base)r   rH   rI   r%   rJ   rK   r   getcwdsplitreplacer   r   realpath__file__r   keyscountr?   r   r    _merge_cfg_from_command)	r$   r   	file_namerL   r   eZ
prev_countZcfg_base_filer'   r   r   r	   r   {   s   "
zConfig._load_yamlFc                 C   s\   |  D ]'\}}|| v r!t|tr| || | q|||< qd|vs'|r+|||< q|S )NZBASE)itemsrU   
isinstancedictr    )r$   r'   Zcfg_newrO   kvr   r   r	   r       s   

zConfig._merge_cfg_from_basec                 C   s  t |jd dksJ d|jt |j|jdd d }|jdd d }t|D ]\}}|d}t |dksBJ dt ||d | v sSJ d|d t |dkrm|d ||d   v slJ d|n|t |d	kr|d ||d   v sJ d||d ||d  |d   v sJ d|nKt |dkr|d ||d   v sJ d||d ||d  |d   v sJ d||d	 ||d  |d  |d   v sJ d|t |dkr|| ||d < q)t |dkr|| ||d  |d < q)t |d	kr$|| ||d  |d  |d < q)t |dkr?|| ||d  |d  |d  |d	 < q)|S )
N   r   z$Override list {} has odd length: {}.rN   r      z1Key depth error. 
Maximum depth: 3
 Get depth: {}zNon-existant key: {}.   )lenr0   r   	enumeraterQ   rU   )r$   r   r   rU   valsidxkeyZ	key_splitr   r   r	   rW      s   
"zConfig._merge_cfg_from_commandc                    s6   fdd t  fdd| D }j| d S )Nc                    sR   t |tu r| td||  j jdfS t |tu r%|dd dkr%t|}| |fS )NF)r%   r"   r&   r   r   rN   ra   ze-)r-   r\   r   r   r   r6   float)rf   elemr$   r   r	   recur   s   z"Config._update_dict.<locals>.recurc                 3   s    | ]
\}} ||V  qd S r@   r   ).0r]   r^   )rj   r   r	   	<genexpr>  s    z&Config._update_dict.<locals>.<genexpr>)r\   rZ   __dict__update)r$   r"   Zdicr   )rj   r$   r	   r#      s   zConfig._update_dictc                 C   s   | j S r@   )r   ri   r   r   r	   get_args  s   zConfig.get_argsc                 C   s   d |  S )Nz{}
)r   dumpri   r   r   r	   __repr__  s   zConfig.__repr__c                 C   s   t j| jddS )Nr_   )indent)jsondumpsr"   ri   r   r   r	   rp     s   zConfig.dumpc                 C   s
   t | S r@   )copydeepcopyri   r   r   r	   	deep_copy  s   
zConfig.deep_copy)TNNNr   )r   )F)__name__
__module____qualname__r(   r   r?   r!   r   r   r    rW   r#   ro   rq   rp   rw   r   r   r   r	   r      s&    
3

E*r   )r2   ru   r   rs   rI   Zmodelscope.utils.loggerr   r   r
   objectr   r   r   r   r	   <module>   s   