
    T`f*                     |    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y)    N)quote)Alfit)Ranfic                   T    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 Zy)Vemlic                    || _         t        | j                         | _        t        | j                         | _        | j                  j                         | _        | j
                  %t        dt        j                         t                d| _
        d| _        d| j                   j                  v r't        | j                   j                  d         | _        i | _        i | _        | j                   j                   d   | _        y )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    466]
466]
::>>#881zz#FTVV[[(dffkk.9:DKffkk'*    c                 T   t        d       ddlm}  || j                  d      | _        ddlm}  || j                  d      | _        | j                  j                  d      }|D ]@  }t        d|z          | j                  ||      }|&t        d
t        j                         B y	)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    %&4667+
4667+
zz''T':C+c12&&y#6C{E::'	 r"   c                 l   | j                   j                  d   }|dz   |z   dz   |z   dz   }t        j                  j	                  |      rt        d       |S |dz   |z   dz   |z   dz   | j                  z   }t        j                  j	                  |      rWt        t        j                  |            dkD  r6| j                  j                  |      }t        d       t        d	|z          |S | j                  j                  |
      }|t        d|z          y| j                  j                  ||      }|t        d|z          y|rt        d|z          || _        || _        t        d|z          | j#                  ||      }|yt        d|z   dz          | j                  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
77>>*%(Oc\I-3c9HDhh
 77>>*%#ejj.D*E*I44Z@J(O"Z/0

3'=?#EFZZ)))
)K
,y893j@A 0:=>__ZJ_G
3j@3FGZZ00<
r"   Nc                    | j                   }||}| j                  dz   |z   | j                  z   }t        j                  |      }|dk(  rt	        j
                  |       |S |dk(  rt        |d      }|S t        |      }|S )z-> list of vemli filesz/*random
new_to_oldT)reverse)r   r   r   globrE   shufflesorted)r   orderdo_sigfisigfiglob_string	out_fufiss         r    rO   zVemli.out_fufisa   s    EkkD(50488;IIk*	HNN9%L y$7I9%	r"   c                 P    | 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_fufis   s3    {{S 9,s2((r"   c                    | j                  || j                        }t        j                  j	                  |      s%t        d|z   dz   |z   t        j                         yd|z   dz   |z   }t        j                  |dt        j                        }|j                         d	   dd
 j                         }|j                  d      }t        |      dk  r%t        d|z   dz   |z   t        j                         y|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 )rR   r   r7   r8   r9   r   r   r   
subprocessPopenPIPEcommunicatedecodesplitr:   )	r   r+   papidrQ   cmdprocesslinefieldsr   s	            r    grepz
Vemli.grepy   s    }}Y1ww~~d#&-<uDzz#e#c)D0""3d:??K""$Q',335Cv;?&.7$>zz#q	r"   c                 &   | j                   j                         }|r&t        d| j                  j	                         z          ||| _        |D ]A  }t
        j                  j                  |      }|dd }|||k7  r/| j                  ||       C y)z:-> makes update from alfit files from issues, for trainingzvemli uses Nr   
   r5   )	r   rO   r   r   r   r7   r8   basenamer@   )r   r,   only_issuedater   alfit_fufisrC   banar+   s           r    updatezVemli.update   s    jj**,-$**.."223?DH%J77##J/DQr
I). OOJ:O> &r"   c                    t        j                  |      }d}|t        j                  j	                  |      }d|v r`t        j                  j                  |      st        d|z          y|j                  dd      }|dz   | j                  z   | j                  z   }nt        j                  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                  j                  d      r|| j                  z  }n9| j                  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*                  j-                         | _        |rt        d|z          t        j.                  |      }i | _        |r"|D ]  }| j3                  ||   d   |d        n|D ]  }| j3                  ||   |d        t        d|z          t        j4                  || j0                         i | _        t#        j6                  |       |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   rh   r   max_issuedate	Exceptionr   endswithdonerelockerplacer:   r   r   r>   r<   r   
feed_papiddumpremove)	r   in_fufir,   r+   is_it_grundfudirR   dr`   s	            r    r@   zVemli.build_fufi   sm    ''0	77??7+DG#ww~~g.6@A!//)Y?)+dhh6A!!'*o=#:(<(<<sBHH'(*.((3" @ '!(*-!. / / {{S(94s:TXXEH{{##H-DHH$%%h/Htxx// ?@@||Hwi0"X-.OXt$ tvv;!ZZ^^%DF.7*+JJw%uG  %%EB o()

8TVV$hr"   c                    d}i }| j                   }|D ]O  }|| j                  vr| j                  |   }d|j                  d      z   }	||   |	z  }
|
|t        |      <   ||
z  }Q t	        j
                  |      }d}t        |      D ]@  }t	        j
                  ||         |z  }|t        |      dz   t        |      d| z   dz   z  }B |dt        |      z   z  }|| j                  |<   y )Nr      rT    :z# )
r   r   countr   mathsqrtrJ   strr   r   )r   fitsr`   r,   sumf
numbs_intsr   fitnumberlengthadd	root_sumfrc   numbvals                  r    ry   zVemli.feed_papid   s    
C$&& VVC[F 3'Fs)f$C&)Js6{#CKD  IIdO	:&D))Jt,-	9CCIOc#hq&883>>D '
 	uU|##ur"   c                     |j                  d      d   j                         }i }|D ]5  }d|vr|j                  d      }t        |d         |t        |d         <   7 |S )N#r   r      )	partitionr_   floatr   )r   textpartsvectpartpiecess         r    parsezVemli.parse  sg    $Q'--/D$^^C(F#(#3DVAY 	 
 r"   )F)T)rF   N)FNN)__name__
__module____qualname__r!   r/   r*   rO   rR   re   rl   r@   ry   r    r"   r    r   r      s7    *')V$&?d=~4r"   r   )rH   rZ   r   r7   rE   r   requests.utilsr   r;   rw   r   r   r   r   r   r   r"   r    <module>r      s2       	  
      O Or"   