
    8`?                     @    d dl Z d dlZd dlZd dlZ G d d          ZdS )    Nc                   F    e Zd Zd ZddZddZd Zd ZddZd	 Z	dd
Z
dS )Fitlic                     || _         d|z   dz   | _        | j        dz   | _        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kinds      !/home/ernad/ernad/python/fitli.py__init__zFitli.__init__   sP    tg->E)t    NFc                     | j         }|j        d         }d| j        z   }|d|z   | j        z   }| j         j                            ||          }|| _        |S )Nfitli*)search)r   dirsr	   dlast_by_mtimer
   )r   sig
do_verboser   fudir   r
   s          r   fufiz
Fitli.fufi   s]    Fvgtx?3Y)FFH**4*??	"r   c                 (   |                      |          }|<|t          d| j        z              n t          d| j        z   dz   |z   dz              dS t          d|z   dz   dd	
           t          j        |          }t          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   s        r   getz	Fitli.get$   s    yySy!!<{nty01111nty07:S@3FGGG4nt#g-2TBBBBJtfD!!!!r   c                    | j         j        d         }|dz   | j        z   }g }t          j        |          D ]O}t          j                            |          }|                    |                    | j        d                     P|S )z-> get available sigsr   /*r!   )	r   r   r	   globospathbasenameappendreplace)r   r   glob_stringsigsr   banas         r   	list_sigszFitli.list_sigs2   s}    v{7#TkDH,Ik** 	4 	4D7##D))DKKTXr223333r   c                     | j         }|j        d         }g }|dz   | j        z   }t          | j                  }t	          j        |          D ]A}t
          j                            |          }|d|          }|                    |           B|S )z---> get list of all versions, called by moclar   r*   r   )	r   r   r	   lenr+   r,   r-   r.   r/   )	r   r   folderr2   r1   len_extr   r3   r   s	            r   sigs_availablezFitli.sigs_available<   s    Ftmdh.dh--Ik** 	 	D7##D))Dq'z"CKKr   c                 .   | j         }g }|j        D ]}|j        |         }|r.|                                dk    rt	          d|z   dz              @|j        d         }|dz   }t          j        |          }	t          |	          dk    rt	          d|z   t          j	                   t          |	          dk    r|	d         }
t          j                            |
          }|                    d	d
          }||v r|                    |           |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+   r6   sysstderrr,   r-   r.   r0   r/   )r   r   for_classingr   r2   repcoder?   	mocla_dirr1   fufisr   r3   r   s                r   required_sigszFitli.required_sigsI   s    Fv 	 	GXg&F  &&((1,,*W4~EFFFG,I#j0KIk**E5zzA~~07:LLLL5zzQ8D7##D))D,,x,,Cd{{KKr   c                    | j         | j         S | j        |                                  | j        d S t          j                            | j                  }d}t          | j                   }|||         }|| _         |S )N   )r   r
   r   r,   r-   r.   r6   r	   )r   r3   	start_sigend_sigr   s        r   r   z	Fitli.sigd   sz    =$= >!IIKKK~%tw//	MM/9W$%
r   c                     | j         }| j         j        }|j        d         dz   |z   dz   | j        z   }t	          t          j        |                    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	   r6   r+   )r   r   r   rN   r1   s        r   is_up_to_datezFitli.is_up_to_dater   s`    F,fWo+m;fDH ty%%&&!++5tr   )NF)FF)F)__name__
__module____qualname__r   r   r(   r4   r9   rG   r   rO    r   r   r   r      s        
 
 
             6  	 	 	 	 	 	r   r   )r+   r,   rA   r&   r   rS   r   r   <module>rT      se     				 



 o o o o o o o o o or   