a
    h                     @   s   d dl Z G dd dZdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )    Nc                   @   s   e Zd ZdS )cfg_placeholderN)__name__
__module____qualname__ r   r   j/home/psgendb/BIRCHDEV/install/SPAdes-4.2.0-Linux/linux-x86_64/share/spades/spades_pipeline/process_cfg.pyr      s   r   c                 C   s   t |  S N)open	readlinesfilenamer   r   r   
file_lines   s    r   c                 C   s   |  dd  S )N;r   )splitstripliner   r   r   skip_info_comment   s    r   c                 C   s4   |   } | dr0| d d   } | ddd} | S )N"    )r   endswithreplacer   r   r   r   skip_double_quotes   s
    
r   c                 C   s(   t |  dkr$|  d dkr$dS dS )Nr   zN/ATF)lenr   )Z	prop_liner   r   r   check_property#   s    r   c                 C   s   | rdS dS )Ntruefalser   )br   r   r   bool_to_str*   s    r    c                 C   s
   t | S r   )supportprocess_spaces)strr   r   r   r"   0   s    r"   c                    sb   G dd ddd   fdd}t  }tt| D ]&}|| | |\}}|d ur6|||< q6|S )Nc                   @   s   e Zd Zdd ZdS )z%vars_from_lines.<locals>.var_metadatac                 S   s   || _ || _|| _d S r   )valueline_numindent)selfr$   r%   r&   r   r   r   __init__6   s    z.vars_from_lines.<locals>.var_metadata.__init__N)r   r   r   r(   r   r   r   r   var_metadata5   s   r)   c                 S   s(   | D ]}|  s|dkr dS  dS d S )N_FT)isalpha)nameZsymr   r   r   valid_var_name;   s    z'vars_from_lines.<locals>.valid_var_namec                    sT   t t|  }t|dks( |d s,dS dd }|d |dd  ||| fS )Nr   )NNc                 S   s   | d t | t |    S r   )r   lstrip)sr   r   r   r&   G   s    z6vars_from_lines.<locals>.var_from_line.<locals>.indentr   )r   r   r   r   )r   r%   lr&   r-   r)   r   r   var_from_lineB   s
    z&vars_from_lines.<locals>.var_from_line)dictranger   )linesr2   varsivarmetar   r1   r   vars_from_lines4   s    

r:   c           	      C   s   t | }t|}| D ]P\}}||vr<td|| f | || }|jt| d t| d ||j< qt| d}|	| |
  d S )NzCouldn't find %s in %s 
w)r   r:   itemsr!   errorr&   r#   r%   r	   
writelinesclose)	r   Zvar_dictlogr5   Zvars_in_filer8   r$   r9   fr   r   r   substitute_paramsV   s    &

rD   c                  G   s&   t  }t| D ]}|j|j q|S r   )r   reversed__dict__update)Zcfgsrescfgr   r   r   merge_configsg   s    rJ   c                    s@   t  }dd   fdd}|  D ]\}}||j|j|< q"|S )Nc                 S   s@   | dks| dkrdS | dks$| dkr(dS |   r8t| S | S d S )NTruer   TFalser   F)isdigitint)r$   r   r   r   
load_values   s    z)load_config_from_vars.<locals>.load_valuec                    s:   t | dkr fdd| D S t | dkr6 | d S d S )Nr   c                    s   g | ]} |qS r   r   ).0Z	one_valuerO   r   r   
<listcomp>       zBload_config_from_vars.<locals>.load_value_list.<locals>.<listcomp>r   )r   )Z
value_listrQ   r   r   load_value_list}   s
    z.load_config_from_vars.<locals>.load_value_list)r   r>   r$   rF   )Zcfg_varsrI   rT   r8   r9   r   rQ   r   load_config_from_varsp   s    
	rU   c                   C   s
   t t S r   )rU   r3   r   r   r   r   empty_config   s    rV   c                 C   s   t tt| S r   )rU   r:   r   r   r   r   r   load_config_from_file   s    rW   c           	      C   s  t | }t }d}g ||< tdt|d D ]}t||d  }d}|t|k rX|| }|drp|}g ||< q,|drt|r|| | d}q,||d  ds,||d  ds,||d   dks,t|r,|| | q,t }|	 D ]}t
t|| ||< q|S )Ncommonr   r   {})r   r3   r4   r   r   
startswithr   appendr   ZiterkeysrU   r:   )	r   r5   ZblocksZcur_block_namer7   Z	prev_lineZcur_linerI   Z
block_namer   r   r   load_config_from_info_file   s.    


8r]   )r!   r   r   r   r   r   r    r"   r:   rD   rJ   rU   rV   rW   r]   r   r   r   r   <module>   s   "	