
    4f'                     t    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 d dlmZ  G d d      Zy)	    N)Alfit)Nafra)Inkri)Tofde)Vemlic                   R    e Zd ZddZd Zd Zd Zd Zd Zd Z	d Z
dd
Zd Zd Zy	)Sidatc                    || _         t        | j                         | _        t        | j                         | _        t        | j                         | _        t        | j                         | _        t        | j                         | _
        d| _        || _        d| _        d| j                   j                  v r| j                   j                  d   | _        d| _        d | _        y )N zissues.json.gzseed_prefixzkrikt.json.gz)er   inkrir   nafrar   tofder   alfitr   vemliprefix
do_verbose
sidis_nameconf
krikt_namei)selferimpr   s      !/home/ernad/ernad/python/sidat.py__init__zSidat.__init__   s    466]
466]
466]
466]
466]
$*DFFKK'&&++m4DK)    c                    | j                   }|j                  d   }|dz   }t        j                  |      D ]S  }t        j                  j                  |      }|j                  dd      }||j                  vrC| j                  |       U y)z:--> The steps that have to be taken to update, for testingseeds/*.txt.txtr   N)	r   dirsglobospathbasenamereplaceliveupdate_report)r   r   seed_dirglob_stringfufibanarepcodes          r   
update_allzSidat.update_all!   sv    FF66'?)IIk*D77##D)Dll62.Gaff$w' +r   c                 z    | j                   }|j                  |   }|j                  d   dz   | j                  z   }|S z--> called by trainsidat/)r   reportr"   r   )r   r.   r   r4   issues_fufis        r   
sidis_fufizSidat.sidis_fufi-   s=     FF'"kk'*S04??Br   c                 N    | j                   }|j                  d   dz   |z   dz   }|S )--> called by startr   r3   r!   )r   r"   )r   r.   r   r,   s       r   	seed_fufizSidat.seed_fufi5   s.     FFvvg$w.7r   c                 z    | j                   }|j                  |   }|j                  d   dz   | j                  z   }|S r1   )r   r4   r"   r   )r   r.   r   r4   
krikt_fufis        r   r;   zSidat.krikt_fufi<   s;    FF'"[[)C/$//A
r   c                 `    | j                   }|j                  |   }|j                  d   dz   }|S )z--> called by sedatr2   z/sedat.json.gz)r   r4   r"   )r   r.   r   r4   
sedat_fufis        r   r=   zSidat.sedat_fufiD   s3    FF'"[[),<<
r   c                     g }t        | j                  |      d      }|j                         D ]F  }|j                  d      r|j	                         j                         d   }|j                  |       H |S )r8   r#r   )openr9   	readlines
startswithstripsplitappend)r   r.   papids	seed_filelinepapids         r   rG   zSidat.papidsL   sj    0#6	'')Ds#JJL&&(+EMM%  * r   c                    | j                   }|j                  |   }| j                  |      }| j                  rt	        d|z          | j                  |      }| j                  rt	        d|z          t        j                  ||g      rt	        d       | j                  |       | j                  rt	        d       || _	        y)z3--> The steps that have to be taken to update seedszsidat: issues_fufi is zsidat: seeds_fufi is z#sidat: I need to rebuild the seeds.)only_repcodezsidat: build doneN)
r   r4   r6   r   printr9   filerdonerebuildr.   )r   r.   r   r4   r5   
seeds_fufis         r   r)   zSidat.update_reportX   s    FF'" oog.??*[89^^G,
??)J67<<j\278JJGJ,??%&4 r   Nc                    | j                   }|j                  d   }|dz   }t        j                  |      D ]  }t        j                  j                  |      }|j                  dd      }|| _        |||k7  rD||j                  vr%t        d|z   dz          t        j                          ||j                  vrt        d|z   d	z          |j                  |   | _        | j                  j                  d
   dz   | _        | j                  |       t!        j"                  | j                  d      rt        d       t        d        y)z;--> The steps that have to be taken only once, in principler   r    r!   r   Nzsidat: z is not live, enable it.z&sidat's erimp does not see the report .r2   z/external.txtT)allow_missingzsidat: no external seeds.zsidat: I ignore external seeds.)r   r"   r#   r$   r%   r&   r'   r.   r(   rM   sysexitreportsr4   external_fufifind_issues_for_internalrN   is_empty)r   rL   r   r*   r+   r9   r-   r.   s           r   rP   zSidat.build   s   FF66'?);/I77##I.Dll62.G"DL'G|,Caff$i'),FFG
aii'>H3NO((7+DK!%!1!1'!:_!LD)))4~~d00E1278' 0r   c                 R   | j                  | j                        }t        j                  |       || _        t        j
                  ||g      s/t        j
                  | j                  |gd      st        d       yi | _        d| _	        t        |d      }| j                  O| j                  rt        d       | j                  j                         | _        | j                  rt        dd	       |j                         D ]3  }|j!                  d
      r| j#                  |j%                                5 t        j&                  | j                  |       t        d|        t        | j                  d      }|j)                  | j                         |j+                          y)z=find what can be done by issues and what can be done by sidocT)do_allow_emptyz4sidat is not renewing the issues for internal seeds.Fr   r?   zsidat loads the inkri.done)flushr@   zsidat wrote the issues fufi w)r6   r.   rN   preparer5   rO   rX   rM   issuesr2   rA   r   r   r   loadrB   rC    find_issuedate_for_internal_seedrD   dumpwriteclose)r   r9   r5   rH   rI   
sidat_files         r   rY   zSidat.find_issues_for_internal   sF    oodll3k"& [9+6T//),02HI
C(	66>./ZZ__&DFfD)'')Ds#11$**,?	 *
 	

4;;,,[M:;$,,c2
$r   c                     | j                   }| j                  |z   }||v r||   | j                  |<   y| xj                  |dz   z  c_        y)NT
F)r   r   ra   r2   )r   seedr   rJ   s       r   rc   z&Sidat.find_issuedate_for_internal_seed   sJ    FFd"A:!"5DKKJJ%$,&Jr   )F)N)__name__
__module____qualname__r   r/   r6   r9   r;   r=   rG   r)   rP   rY   rc    r   r   r	   r	      s;     
(
,\98#vr   r	   )r#   r$   rU   rN   r   r   r   r   r   r   r   r   r   r   r	   rn   r   r   <module>ro      s,     	 
      v vr   