o
    8`?                     @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc                   @   sT   e Zd Zdd ZdddZdddZd	d
 Zdd ZdddZdd Z	dddZ
dS )Fitlic                 C   sB   || _ d| d | _| jd | _d | _d | _i | _d| _d| _d S )N.z.jsonz.gzr   )e	ext_no_gzext	last_fufilast_sigf
count_keyscount_times)selferimpkind r   !/home/ernad/ernad/python/fitli.py__init__   s   zFitli.__init__NFc                 C   sL   | j }|jd }d| j }|d urd| | j }| j jj||d}|| _|S )Nfitli*)search)r   dirsr   dlast_by_mtimer   )r   sig
do_verboser   fudir   r   r   r   r   fufi   s   

z
Fitli.fufic                 C   s|   | j |d}|du r&|du rtd| j  dS td| j d | d  dS td| d dd	d
 t|}tdd	d |S )z-> get current version)r   NzThere is no z for r   zfitli loads z ...  T)endflushdone)r   )r   printr   filerload)r   r   r   r   r   r   r   r   get$   s   
z	Fitli.getc                 C   sR   | j jd }|d | j }g }t|D ]}tj|}||| jd q|S )z-> get available sigsr   /*r   )	r   r   r   globospathbasenameappendreplace)r   r   glob_stringsigsr   banar   r   r   	list_sigs2   s   zFitli.list_sigsc           	      C   sd   | j }|jd }g }|d | j }t| j}t|D ]}tj|}|d|  }|| q|S )z---> get list of all versions, called by moclar   r$   r   )	r   r   r   lenr%   r&   r'   r(   r)   )	r   r   folderr,   r+   len_extr   r-   r   r   r   r   sigs_available<   s   

zFitli.sigs_availablec                 C   s   | j }g }|jD ]V}|j| }|r | dkr td| d  q|jd }|d }t|}	t|	dkr=td| tj	d t|	dkrDq|	d }
t
j|
}|d	d
}||v rYq|| q|S )z#sigs we need for the models we haver   zfitli: report z is bremsed.moclaz/*.model   zmore than one model for )filez.modelr   )r   livereportbremse_levelr    r   r%   r/   sysstderrr&   r'   r(   r*   r)   )r   r   for_classingr   r,   repcoder7   	mocla_dirr+   fufisr   r-   r   r   r   r   required_sigsI   s,   



zFitli.required_sigsc                 C   sd   | j d ur| j S | jd u r|   | jd u rd S tj| j}d}t| j }||| }|| _ |S )N   )r   r   r   r&   r'   r(   r/   r   )r   r-   Z	start_sigZend_sigr   r   r   r   r   d   s   


z	Fitli.sigc                 C   sD   | j }| j j}|jd d | d | j }tt|dkr dS dS )z=-> considered up to date if there is a file for max_issuedater   /z_*_*r   FT)r   max_issuedater   r   r/   r%   )r   r   r   rB   r+   r   r   r   is_up_to_dater   s   zFitli.is_up_to_date)NF)FF)F)__name__
__module____qualname__r   r   r#   r.   r2   r?   r   rC   r   r   r   r   r      s    




r   )r%   r&   r9   r!   r   r   r   r   r   <module>   s
    