
    Jd'                         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Zd dl	Z	d dl
mZ d dlmZ  G d d          ZdS )    N)quote)Alfit)Ranfic                   P    e Zd Zd ZddZddZddZd Zd	 ZddZ	ddZ
ddZd
S )Vemlic                    || _         t          | j                   | _        t          | j                   | _        | j                                        | _        | j        )t          dt          j                   t                       d| _
        d| _        d| j         j        v r$t          | j         j        d                   | _        i | _        i | _        | j         j        d         | _        d S )Nzvemli can't run with no ranfifilez.json.gz   vemli_digitsvemli)er   alfitr   ranfisigprintsysstderrquitextdigitsconfintvrdirsfolder)selferimps     !/home/ernad/ernad/python/vemli.py__init__zVemli.__init__   s    46]]
46]]
:>>##81z# # # #FFFTV[((dfk.9::DKfk'*t    Fc                 ^   t          d           ddlm}  || j        d          | _        ddlm}  || j        d          | _        | j                            d          }|D ]G}t          d|z              |                     ||          }|t          d
t          j	                   Hd	S )z-> prepare classing vemte filezget the required sigsr   )Fitlir   )MoclaT)for_classingzvemli: I have work for Nz-vemli can't make testing files can't continuer	   )
r   fitlir$   r   moclar%   required_sigsprepare_for_sigr   r   )r   	issuedate
do_verboser$   r%   sigsr   outs           r    prepare_classingzVemli.prepare_classing'   s    %&&&U467++
U467++
z''T':: 	' 	'C+c1222&&y#66C{E:' ' ' '		' 	'r"   Tc                    | j         j        d         }|dz   |z   dz   |z   dz   }t          j                            |          rt          d           |S |dz   |z   dz   |z   dz   | j        z   }t          j                            |          rbt          t          j	        |                    dk    r=| j
                            |          }t          d           t          d	|z              |S | j                            |
          }|t          d|z              dS | j
                            ||          }|t          d|z              dS |rt          d|z              || _        || _        t          d|z              |                     ||          }|dS t          d|z   dz              | j
                            |          }|S )z#used to prepare vemlis for classingclass/_z.classzcase 1.vemlir   zcase 2zmocla returns )r   Nz+mocla can't continue to dig, no vemlis for r,   zvemli sees no alfit for zmocla needs to make vemlis for z mocla needs to build the vemlis z#vemli calls mocla.vemte_from_vemli())r   r   ospathisfiler   r   lenfilerloadr(   vemte_from_vemlir   get	get_alfitr   r   
build_fufi)	r   r+   r   r,   r   
vemte_fufi
vemli_fufir   
alfit_fufis	            r    r*   zVemli.prepare_for_sig6   s    W%c\I-3c9HD
7>>*%% 	(OOOc\I-3c9HDh
 7>>*%% 	#ej.D.D*E*E*I*I44Z@@J(OOO"Z/000
3''=?#EFFF4Z)))
)KK
,y89994 	B3j@AAA 0:=>>>__ZJ_GG
43j@3FGGGZ00<<
r"   
new_to_oldc                     | j         dz   | j        z   | j        z   }t          j        |          }|dk    rt	          j        |           |S t          |d          }|S )z-> list of alfit filesz/*randomT)reverse)r   r   r   globrF   shufflesorted)r   orderglob_string	out_fufiss       r    rM   zVemli.out_fufisa   sd    kD(483dh>Ik**	HN9%%%9d333	r"   c                 <    | j         dz   |z   dz   |z   | j        z   }|S )z--> used by moclar2   r3   )r   r   )r   r+   r   fufis       r    out_fufizVemli.out_fufik   s/    {S 9,s2(r"   c                 2   |                      || j                  }t          j                            |          s&t          d|z   dz   |z   t          j                   dS d|z   dz   |z   }t          j	        |dt          j
                  }|                                d	         dd
                                         }|                    d          }t          |          dk     r&t          d|z   dz   |z   t          j                   dS |d         }|S )zgreps a line from a vemli filezvemli has no file z
 for seed r	   Nz/bin/zgrep  T)shellstdoutr   "   zvemli has no seed z in )rP   r   r7   r8   r9   r   r   r   
subprocessPopenPIPEcommunicatedecodesplitr:   )	r   r+   papidrO   cmdprocesslinefieldsr   s	            r    grepz
Vemli.grepq   s   }}Y11w~~d## 	&-<uDz# # # #4e#c)D0"3d:?KKK""$$Q',3355Cv;;??&.7$>z# # # #4q	r"   Nc                 <   | j                                         }|r)t          d| j                                        z              ||| _        |D ]K}t
          j                            |          }|dd         }|||k    r4|                     ||           LdS )z:-> makes update from alfit files from issues, for trainingzvemli uses Nr   
   r5   )	r   rM   r   r   r   r7   r8   basenamer@   )r   r,   only_issuedater   alfit_fufisrC   banar+   s           r    updatezVemli.update   s    j**,, 	4-$*.."2"22333?DH% 	? 	?J7##J//DQrT
I).. OOJ:O>>>>	? 	?r"   c                 \   t          j        |          }d}|t          j                            |          }d|v r_t          j                            |          st          d|z              dS |                    dd          }|dz   | j        z   | j	        z   }nt          j        
                    |          dk    r+|dz   | j        j        z   d	z   | j        z   d
z   | j	        z   }d}nt          d|z   dz             | j        dz   |z   d	z   | j        z   }| j                            d          r|| j	        z  }n7| j                            d          r|d| j	        z   z  }nt          d          t          j        ||g          st          d|z              |S t#          j        |d           t'          | j                  dk    r| j                                        | _        |rt          d|z              t          j        |          }i | _        |r*|D ]&}|                     ||         d         |d           'n#|D ] }|                     ||         |d           !t          d|z              t          j        || j                   i | _        t#          j        |           |S )z@--> called by train to get seed vemlis, must return fufi or NoneFNz/krikt.zvemli: mocla does not see z/alfit.z/vemli_zgrund.json.gzr2   r3   z.grundTzvemli can't handle your case ''z/vemliz/classr4   zvemli can't handle your case.zvemli doneres i  r   zvemli loads ar5   zvemli writes )r;   get_issuedater7   r8   dirnamer9   r   replacer   r   rf   r   max_issuedate	Exceptionr   endswithdonerelockerplacer:   r   r   r>   r<   r   
feed_papiddumpremove)	r   in_fufir,   r+   is_it_grundfudirP   dr^   s	            r    r@   zVemli.build_fufi   s    '00	7??7++DG##w~~g..  6@AAA4!//)Y??)+dh6A!!'**o==#:(<<sBH'(*.(3" @ '!(*-!. / / / {S(94s:TXEH{##H-- ADH$%%h// AHtx// ?@@@|Hwi00 	"X-...OXt$$$ tv;;!Z^^%%DF 	,.7*+++Jw 	C H H%uGGGGH  C C%%EBBBBo()))
8TV$$$hr"   c                    d}i }| j         }|D ]S}|| j        vr| j        |         }d|                    d          z   }	||         |	z  }
|
|t          |          <   ||
z  }Tt	          j        |          }d}t          |          D ]O}t	          j        ||                   |z  }|t          |          dz   t          |          d|         z   dz   z  }P|dt          |          z   z  }|| j	        |<   d S )Nr      rR    :z# )
r   r   countr   mathsqrtrJ   strr   r   )r   fitsr^   r,   sumf
numbs_intsr   fitnumberlengthadd	root_sumfra   numbvals                  r    rw   zVemli.feed_papid   s   
 	 	C$&  VC[F 3'Fs)f$C&)Js6{{#CKDDIdOO	:&& 	? 	?D)Jt,--	9CCIIOc#hhqx&883>>DDuU||##ur"   )F)T)rD   )FNN)__name__
__module____qualname__r!   r/   r*   rM   rP   rc   rj   r@   rw    r"   r    r   r      s          *' ' ' ') ) ) )V       &? ? ? ?d= = = =~     r"   r   )rH   rX   r   r7   rF   r   requests.utilsr   r;   ru   r   r   r   r   r   r   r"   r    <module>r      s          				  



                          } } } } } } } } } }r"   