
    *Ag"                     x    d dl Z 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 d dlm	Z	 d dl
mZ d dlmZ  G d d      Zy)    N)Krikt)Natli)Trito)Spanac                   N    e Zd Zd ZddZddZddZddZddZddZ	d	 Z
d
 Zy)Tofdec                    || _         t        | j                         | _        t        | j                         | _        t        | j                         | _        t        | j                         | _        | j                  j                         | _
        | j                  t        d      | j                  j                  | _        | j                   j                  d   | _        i | _        y)zdetermine frases in S kritNz$tofde can't run without a nafli_fufitofde)er   kriktr   tritor   natlir   spanafufi
natli_fufi	Exceptionsigdirsfolderd)selferimps     !/home/ernad/ernad/python/tofde.py__init__zTofde.__init__   s    466]
466]
466]
466]
**//+??"BCC::>> ffkk'*    c                     | j                   dz   }t        j                  |      }|dk(  rt        j                  |       |S t	        |d      }|S )z/-> list of tofde files, excludes reports tofdesz
/*.json.gzrandomT)reverse)r   globr   shufflesorted)r   orderglob_string	out_fufiss       r   r$   zTofde.out_fufis#   sJ    kkL0IIk*	HNN9%9d3	r   c                    | j                   }| j                  j                  }| d| d| d}t        j                  j                  |      r|S |dz   }| j                  j                  j                  ||      }|s|S | j                  j                  |      }	| j                  |	      }
t        j                  j                  |      r|S |
|
du st        d|z          |S )z&-> get the tofde fufi for an issuedate/_.json.gzz
_*.json.gz)searchFztofde return on outdated )r   r   r   ospathisfiler   r   last_by_mtimer   r   update_for_krikt_fufiprint)r   	issuedate	do_update
do_verbose	tofde_dirr   r   r)   	last_fufiin_fufiouts              r   r   z
Tofde.fufi-   s    
 KK	jjnnAi[#h777>>$K\)FFHH**9V*D	**//),((177>>$Kse|-	9:r   Nc                    | j                   j                  d      }|r"t        d| j                  j                  z          |D ]A  }t
        j                  j                  |      }|dd }|||k7  r/| j                  ||       C y)z -> makes update from krikt filesr   )r"   ztofde uses r   
   Nr2   )	r   r$   r/   r   r   r*   r+   basenamer.   )r   r2   only_issuedatekrikt_fufisr   banar0   s          r   updatezTofde.updateF   s~    jj***:-$**..01D77##D)DQr
I).&&t
&C  r   c                 2   t        j                  |      }| j                  j                  }|Jt        j
                  j                  |      }d| j                  z   dz   }|dz   |z   }|rt        d|z          n| j                  j                  d      r&| j                  dz   |z   dz   | j                  z   dz   }n| j                  j                  |d      sGt        d	|        | j                  dz   |z   d
z   }t        d|        t        j                  |       y | j                  dz   |z   dz   | j                  z   dz   }t        j                  ||g      s|rt        d|z          |S t        j                   |d       |rt        d|z          t#        | j$                        dk(  r| j&                  j)                         | _        t        j*                  |      }i | _        |D ]  }	| j/                  ||	   |	d        t#        | j,                        dk(  rt        d|z   t0        j2                         y t        j4                  || j,                         t        d|z          t        j6                  |       t        j8                  |       i | _        |S )Nztofde.r(   r&   ztofde: seed case to z/classr'   z.tofde.json.gztraspiztofde skips out of traspi *ztofde clears ztofde doneres i  ztofde loads r   Fr9   ztofdes got nothing from )fileztofde wrote )filerget_issuedater   r2   r*   r+   dirnamer   r/   r   endswithr   is_it_inclear_by_globdonerelockerplacelenr   r   getloadf
feed_papidsysstderrdumpremoveclear_by_issuedate)
r   r   r2   r0   fudir=   out_fufir#   r   papids
             r   r.   zTofde.update_for_krikt_fufiT   sC   ''-	VV&&
77??4(Ddhh&3DczD(H,x78 {{##H-;;,y83>HH/0
 zz**9h?6ykBC"&++"3i"?#"EKM+78''4;;,y83>HH)*||Htf-&12OXt$.4'( tvv;!ZZ^^%DFJJtEOOAeHeO>  tvv;!,t3zz#

8TVV$nx'(h  *r   c                     i }d|vry |d   D ]9  }| j                  ||      }|D ]  }||vr	||   ||<   ||xx   ||   z  cc<   ! ; || j                  |<   y)NSr9   T)scanrO   )r   r   rX   r2   foundpartfrasesfrases           r   rP   zTofde.feed_papid   sx    e#JDYYt
Y;F%#)%=E%Leu-	    ur   c                    | j                   j                  |      }|j                         }t        |      }i }| j                  }d}|rt        d|z   dz          ||dz
  k  r|dz  }||   }||dz      }	||vr|rt        d|z   dz          3|	||   vr|rt        d|z   dz   |	z   dz          Td| _        |d	z   |	z   }
|rt        d
|
z          ||   |	   }|rt        dt        |      z          t        d |D              r?|
|vrd||
<   n||
xx   dz  cc<   t        |      dk(  r|rt        dt        |      z          | j                  |      }|dz   }|r"t        dt        |      z          t        d       | j                  |||d        }|rt        d|z   dz          |D ]:  }|||v s|
d	z   |z   }||vrd||<   n||xx   dz  cc<   |s-t        d|z          < ||dz
  k  r|S )Nr'         z
no first ''z' no 'r    zbase:zsticks c              3   $   K   | ]  }|d u  
 y w)N ).0xs     r   	<genexpr>zTofde.scan.<locals>.<genexpr>   s     -f19fs   zpass at zlongest_ahead 	remainingzremaining 'z	I append )r   process_fieldsplitrL   r   r/   extentstranylongest_aheadfrase_ahead)r   r]   r2   termsmax_lenr^   r   count_startfirstseconbasesticksrq   ahead_startrr   stickto_adds                    r   r[   z
Tofde.scan   s5   zz''- 

e*FF#*s"#GaK'1K+&E+/*EA~,.45AeH$#+0583>?DK3;&Dgn%uXe_Fi#f+-.-f--v%#$F4L4LA%Lv;!#!j3v;67 ..v6M%/K&]);;<k"**=%:MNKmk1C78=K'!CZ%/FV+)*vv!+!kF23  M GaK'b r   c                 r    d}|D ]/  }||j                         }|t        |      k  s%t        |      }1 |S )z measures the longest frase aheadr   )rm   rL   )r   r^   rq   r_   wordss        r   rq   zTofde.longest_ahead   sA    E}KKMEs5z) #E
  r   c                 b    t        |      }||z
  }|dkD  r||z  }dj                  |d|       }|S )Nr   re   )rL   join)r   aheadr~   	len_wordsdiffr_   s         r   rr   zTofde.frase_ahead   s>    J	y !8TMEq(r   )
new_to_old)TF)FN)F)__name__
__module____qualname__r   r$   r   r>   r.   rP   r[   rq   rr   rg   r   r   r   r      s2    $2D4D=@	r   r   )r   r*   rQ   r   rC   rJ   r   r   r   r   r   r   r   r   r   rg   r   r   <module>r      s/     	 
       i ir   