
    ЮGgi                     D    d dl Z d dlZd dlZd dlZd dlmZ  G d d      Zy)    N)Folderc                   D    e Zd Zd Zd
dZd
dZd Zd ZddZd Z	dd	Z
y)Fitlic                     || _         d|z   dz   | _        | j                  dz   | _        d | _        d | _        i | _        d| _        d| _        t        |      | _	        y )N.z.jsonz.gzr   )
e	ext_no_gzext	last_fufilast_sigf
count_keyscount_timesr   folder)selferimpkinds      !/home/ernad/ernad/python/fitli.py__init__zFitli.__init__   s[    tg->>E)Um    Nc                     | j                   }|j                  d   }d| j                  z   }|d|z   | j                  z   }| j                   j                  j	                  ||      }|| _        |S )Nfitli*)search)r   dirsr
   dlast_by_mtimer   )r   sig
do_verboser   fudir   r   s          r   fufiz
Fitli.fufi   sf    FFvvgtxx?3Y)FFFHH**4*?	"r   c                     | j                  |      }|+t        |      }t        d| dt        j                         yt        d|z   dz   dd	
       t        j                  |      }t        dd	       |S )z3-> get current version, should move to ranfi.load())r   Nzfitli has no file for sig ''filezfitli loads z ...  T)endflushdone)r(   )r!   strprintsysstderrfilerload)r   r   r   r!   	print_sigr   s         r   getz	Fitli.get&   ss    yySy!<CI/	{!<zz# 	nt#g-2TBJJtfD!r   c                 (   | j                   j                  d   }|dz   | j                  z   }g }t        j                  |      D ]L  }t        j
                  j                  |      }|j                  |j                  | j                  d             N |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_sigs8   st    vv{{7#TkDHH,IIk*D77##D)DKKTXXr23 + r   c                 .   | j                   }|j                  d   }g }|dz   | j                  z   }t        | j                        }t	        j                  |      D ]8  }t
        j                  j                  |      }|d|  }|j                  |       : |S )z---> get list of all versions, called by moclar   r3   r   )	r   r   r
   lenr4   r5   r6   r7   r8   )	r   r   r   r;   r:   len_extr!   r<   r   s	            r   sigs_availablezFitli.sigs_availableB   s    FFtmdhh.dhh-IIk*D77##D)Dq'"CKK + r   c                    | j                   }g }|j                  D ]3  }|j                  |   }|r%|j                         dkD  rt	        d|z   dz          :|j
                  d   }|dz   }t        j                  |      }	t        |	      dkD  r:t	        d|z   t        j                         | j                  j                  |d	       t        |	      dk(  r|	d   }
t        j                  j                  |
      }|j                  d
d      }|j!                  d      }t        |      dk(  r|d   dz   |d   z   }||v r#|j#                  |       6 |S )z#sigs we need for the models we haver   zfitli: report z is bremsed.moclaz/*.model   zfitli: more than one model for r$   z*.modelz.modelr&   _   )r   livereportbremse_levelr+   r   r4   r?   r,   r-   r   keep_only_lastr5   r6   r7   r9   splitr8   )r   r   for_classingr   r;   repcoderH   	mocla_dirr:   fufisr!   r<   r   parts_of_sigs                 r   required_sigszFitli.required_sigsO   s:   FFvvGXXg&F &&(1,*W4~EFG,I#j0KIIk*E5zA~7'A

S**9i@5zQ8D77##D)D,,x,C99S>L< A%"1o+l1o=d{KK3 4 r   c                 "   | j                   | j                   S | j                  | j                          | j                  y t        j                  j                  | j                        }d}t        | j                         }||| }|| _         |S )N   )r   r   r!   r5   r6   r7   r?   r
   )r   r<   	start_sigend_sigr   s        r   r   z	Fitli.sigo   sz    ==$== >>!IIK~~%ww/	M/9W%
r   c                     	 | j                   }| j                   j                  }|j                  d   dz   |z   dz   | j                  z   }t	        t        j
                  |            dk(  ryy)z=<- considered up to date if there is a file for max_issuedater   /z_*_*r   FT)r   max_issuedater   r
   r?   r4   )r   r   r   rX   r:   s        r   is_up_to_datezFitli.is_up_to_date}   sc    FF,,ffWo+m;fDHH tyy%&!+r   )NF)FF)F)__name__
__module____qualname__r   r!   r1   r=   rA   rQ   r   rY    r   r   r   r      s+    $@
r   r   )r4   r5   r,   r.   r   r   r   r]   r   r   <module>r^      s      	 
  z zr   