
    ph:                     L    S SK r S SKrS SKrS SKrS SKrS SKJr   " S S5      rg)    N)Ishusc                       \ rS rSrSrSS jrS rSS jrSS jrS r	S	 r
S
 rS rSS jrS rS rS rS rS rS rS rS rS rS rS rSrg)Beric   z&basic functions for a report (Bericht)c                     Xl         X l        U R                  5         X0l        U R                   R                  R
                  U l        [        U5      U l        S U l        g N)	erepcodeset_dirs
do_verboseabovonsmapr   ishuslast_issuedate)selferimpr
   r   s       !/home/ernad/ernad/python/beric.py__init__Beric.__init__   sE    $VV\\''
5\
"    c                    U R                   R                  S   S-   U R                  -   U l        0 U l        0 U l        U R                   R
                  R                   HA  nU R                  S-   U-   U R                  U'   U R                  S-   U-   U R                  U'   MC     U R                   R
                  R                  S   nU R                   R
                  R                   HN  nU R                   R
                  R                  SU-      nU R                  S-   U-   S-   U-   U R                  U'   MP     U R                   R
                  R                  S   nU R                  S-   U-   U R                  S'   U R                   R                  S   S-   U R                  -   U R                  S'   U R                  S	-   U R                  S
'   g )Nreports/vardir_learnlearest_vardir_statestateblattz	/reports/z/optopt)r	   dirsr
   fudistager   	constantslearests)r   given_stage	learn_dirlearesttargetvar_dirs         r   r   Beric.set_dirs   si   FFKK	*S04<<?		
66<<--K&*ii#o&CDJJ{#%)YY_{%BDIIk" . FFLL**>:	vv||,,GVV\\++J,@AF!%S9!<s!BV!KDIIg - &&,,((8!YY_w6		'!VV[[1K?$,,N		'99v-		%r   c           	      z   U R                   nUR                  SU nU R                  nU R                   R                  R	                  U R
                  U   5      nUR                  R                  U R
                  U   5      n[        U5      S:X  a  / $ 0 n	U H  n
X;  a  M
  Xz   nUR                  R                  U5      nX;  a#  [        SU SU
 SU 3[        R                  S9  MQ  X   nUR                  R                  U5      nX-
  nUS:  a"  [        U SU
 SU 3[        R                  S9  S nXU
'   M     U	$ )Nr   zno earlier for  z in filez, z: negative delay )r	   
issuedatesr
   foldalastsr"   firstslenftistprintsysstderr)r   earlierlaterspanr	   recent_issuedatesr
   later_datesearlier_datesdelays	issuedate
later_fufi
later_tistearlier_fufiearlier_tistdelays                   r   r?   Beric.delays3   s2   FFLL40,,ffll((E):;tzz'':;{q I$I1$/J*-J-wa	{$wiH::'(3L3388L1L-Eqy	I;.?wG::' %9! %" r   Nc                    U R                   U   nUS-   nUb  US-   U-   n[        R                  R                  U5      (       d  g[        R                  " U5      n[        U5      S:X  a  g[        U[        R                  R                  S9nU$ )zalso fills the model timez/*Nr   r   )key)r    ospathisdirglobr3   maxgetmtime)r   whatkindwhat_dirglob_stringlist_of_fufis	last_fufis          r   last
Beric.lastO   s|    99T?o"S.4/Kww}}X&&		+.}"277+;+;<	r   c                     U R                   b  U R                   $ U R                  R                  R                  U R                  S   5      n[        U5      n[        U5      S:X  a  g US   nX0l         U$ )Nsentr   )r   r	   r0   r2   r    listr3   )r   issuedate_fufisr/   r   s       r   get_last_issuedateBeric.get_last_issuedate]   si    *&&&&&,,--dii.?@/*
z?a#B,r   c                     U R                   nU R                  S5      nUR                  R                  U5      nU R                  S5      nUR                  R                  U5      nX5:w  a  gg)NselectedrX   TF)r	   rU   r4   r@   )r   r	   last_selectedlast_selected_issuedate	last_sentlast_sent_issuedates         r   has_it_labourBeric.has_it_labourh   sY    FF		*-"###--">IIf%	ccmmI6"9r   c                     SU R                   R                  ;  a  g[        U R                   R                  R	                  U R
                  S   5      5      nU[        U R                   R                  S   5      :  a  gg)z6moved to caler.is_report_mature, with opposite booleantraspiFrX   Tr	   confr3   dr1   r    int)r   count_issues_sents     r   is_it_adolescentBeric.is_it_adolescentr   sZ    466;;&tyy/@ ABs466;;x#899r   c                     SU R                   R                  ;  a  g[        U R                   R                  R	                  U R
                  S   5      5      n[        U R                   R                  S   5      nX!U-  -
  $ )z!how much adolescent is the reportrg   r   rX   rh   )r   rl   rg   s      r   
adopercentBeric.adopercent{   s_    466;;&tyy/@ ABTVV[[*+F222r   c                    [        U R                  R                  R                  U R                  S   5      R                  5       5      n[        U R                  R                  R                  U R                  S   5      R                  5       5      n[        U5      S:X  a!  U(       a  [        SU R                   S35        g[        U5      [        U5      :X  a!  U(       a  [        SU R                   S35        gU R                  5       nU(       a  [        SU 35        US:  a  g	S
U R                  R                  ;  a  gU R                  5       (       a  gU R                  R                  n[        U5      S:  a  gUS   n[        U R                  R                  R                  U R                  S   5      5      nUS   nX:  a  gUS:X  a  gg	)NsourcerX   r   report:  has no sourceTz has all issues donezbremse Fbremspi      rY   )rZ   r	   rj   r1   r    keysr3   r6   r
   bremse_levelri   is_it_emptyr/   r0   r2   )	r   r   sourcessentsbremser/   second_to_last_issuedate
sourc_list
last_sourcs	            r   	is_activeBeric.is_active   ss   tvvxx~~dii&9:??ABTVVXX^^DIIf$56;;=>w<1n=>w<3u:%.BCD""$GF8$%A: DFFKK' VV&&
 z?Q#-a= $&&,,--dii.ABC
^
 1Q;r   c                     U R                   nSUR                  ;  a  gUR                  R                  U R                  S   5      nUR                  R                  U R                  S   5      nUb  [        U5      S:X  a  gUc  g[        U5      S:X  a  gSnUR                  R                  U R                  S   5      n[        U5      [        UR                  S   5      :  a
  US:  a  SnU$ U[        UR                  S   5      :  a  SnU$ U$ )z0: not, 1: laya, 2: camilarv   r   rs   rX   rx   rw   )r	   ri   rj   datesr    r3   count_gap_issuesrk   )r   r	   source_dafu	sent_dafuearly_bremser   rz   s          r   rz   Beric.bremse_level   s    FFAFF"ccii		( 34CCIIdii/0	#k"2a"7 y>Q33//		&0AB y>Cy 122  !# ##c!&&"344Lr   c                    SSK Jn  SSKJn  SS KJn  SS KnU R                  nU" U5      nU" U5      nUc  U R                  nU R                  S   S-   n	0 n
[        R                  R                  U	5      (       aF  UR                  U	5      nUb2  UR                  SU R                  S9 H  nXUR                   S   '   M     U R                  R"                  R%                  UR&                  U   R                  S	   5      nUR(                  S
   n[+        [-        U5      5      nSnUR/                  UR1                  UR(                  S
   S5      UR(                  S9n/ n[3        U5      n[5        U5      S:X  a  g US   R7                  SS5      UR                   S'   US   R7                  SS5      UR                   S'   US   UR                   S'   US   UR                   S'   U GH-  nUU
;   a@  UR9                  U
U   5        UR9                  [;        U
U   R                   S   5      5        MJ  SnU R<                  (       a  [?        SU S35        URA                  UUR1                  US5      5      nUR7                  SS5      nUUl!        UU   nURE                  U5      UR                   S'   URG                  U5      n[5        U5      nUR9                  U5        [I        U5      UR                   S'   UUR                   S'   UUR                   S'   GM0     [J        RL                  " [J        RN                  " U5      5      UR                   S'   URQ                  U5        U R<                  (       a  [?        [R        RT                  " U5      5        U(       d  gU R<                  (       a  [?        [R        RT                  " U5      5        U R<                  (       a  [?        SU	 35        URW                  UU	5      $ )Nr   )Rixer)Rifferr   z/issues.xmlz	//e:issue)
namespacesdaterX   ernadFissues)r   rY   -u   ‒from_prettyuntil_prettyfromuntiltotalTzreport adds issuedate z to the issuestateissuetimeissuedate_prettyroughlyzreport saves ),rixerr   rifferr   
lxml.etreeetreefilerr	   r
   r    rI   rJ   isfile	parse_laxxpathr   attribr0   r2   reportnsreversedsortedElementQNamerZ   r3   replaceappendrk   r   r6   
SubElementtextformatted_timedocsstrdekanr   makecleanup_namespacesdocingshowinstall_xml)r   r
   r   r   etr   r	   r   r   out_fufi
issue_elesold_doc	issue_eler2   r   r/   needs_a_save
issues_eletotals	issuelistr@   r   fufir   r   s                            r   
issuestateBeric.issuestate   s`   !FFa?llG99W%5
77>>(##ooh/G"!({:>** "/ "FI;Dy//78"F $$QXXg%6%;%;F%CDTT']fVn-
ZZg A&'dd   ,
$	 y>Q +4R=+@+@e+L
-(,5aL,@,@e,L
.)$-bM
&!%.q\
'""IJ&!!*Y"78c*Y"7">">w"GHIL.yk9KLMj"((2w2GHI(00e<-IN)$D'-'<'<T'BIV$::d#DIEMM% (+E
IW%'0IV$3CI/0) #* (-}}UZZ5G'H
)$
j)??&++j)*??&++j)*??M(,-  X66r   c                    U R                   R                  n[        UR                  U R                  S   5      5      n[        UR                  U R                  S   5      5      n/ nU H  nXR;  d  M
  UR                  U5        M     U$ )NrX   rs   )r	   r0   rZ   r2   r    r   )r   r0   r}   sourcwaitsr@   s         r   waitingBeric.waiting  sq     U\\$))F"345U\\$))H"567I%Y'  r   c                     U R                   nU R                  nU R                   R                  R                  UR                  U   R
                  S   5      nUR                  nS nU H  nXc;  a  UnM  Us  $    g )Nrs   )r	   r
   r0   r2   r   r    r/   )r   r	   r
   source_datesr/   last_missingr@   s          r   next_missing_issuedateBeric.next_missing_issuedate(  sq    FF,,vv||**188G+<+A+A(+KL\\
#I,(	 $
 r   c                     U R                   nU R                  nU R                   R                  R                  UR                  U   R
                  S   5      n[        U5      S:  a  gg)Nrs   r   FTr	   r
   r0   r2   r   r    r3   )r   r	   r
   r   s       r   r{   Beric.is_it_empty6  sS    FF,,vv||**188G+<+A+A(+KL|q r   c                     U R                   nU R                  nU R                   R                  R                  UR                  U   R
                  S   5      n[        U5      S:  a  gg)NrX   r   FTr   )r   r	   r
   
sent_datess       r   is_it_pregnantBeric.is_it_pregnant?  sR    FF,,VV\\(('):)?)?)GH
z?Qr   c                     U R                   R                  R                  S   nU R                  S   S-   U-   n[        R
                  R                  U5      (       d  gg)z,assumes that ocotl is run on a regular basiseval_grund_namemoclar   TF)r	   r   r#   r    rI   rJ   r   )r   finaeval_grund_fufis      r   is_is_autonomousBeric.is_is_autonomousH  sL    vv||%%&78))G,s2T9ww~~o..r   c                    [        U R                  R                  R                  U R                  S   5      R                  5       5      nU R                  nSnSn/ nU[        U5      S-
  :  ak  X   nXS-      nU R                  R                  US5      nXx:X  a  US-  nME  USU SU 3S-   -  nUR                  U5        US-  nU[        U5      S-
  :  a  Mk  [        U5      S:X  a  g[        U R                  R                  R                  U R                  S	   5      R                  5       5      n	U	S   n
XS   :  a  g
SU S3nU H  nUSU-   -  nM     [        U[        R                  S9  U$ )Nrs   r    rx   rY   r,   
TrX   Frt   z missesr-   )rZ   r	   rj   r1   r    ry   r
   r3   r   shiftr   r6   r7   r8   )r   r|   r
   count
out_stringmissingscurenfuturcalcdr}   rb   msgr@   s                r   audit_issuesBeric.audit_issuesP  sc   tvvxx~~dii&9:??AB,,
c'lQ&&NEAI&EJJ$$UB/E~
AeWAeW-44JOOE"QJE c'lQ&& z?aTVVXX^^DIIf$56;;=>"I	|#	)!I3?"C "c

#r   c                    U R                   R                  R                  U R                  S   5      n[	        [        UR                  5       5      5      nUS:X  a  gUS:X  a  X;   a  gU R                  R                  US5      nXB;   a  gg)Nrs   r   Trx   F)	r	   rj   r1   r    r3   rZ   ry   r   r   )r   r@   r|   total_sourcesprevious_issuedates        r   audit_issuedateBeric.audit_issuedaten  su    &&((..8!45D01AA#!ZZ--i;(r   c                    [        U R                  R                  R                  U R                  S   5      R                  5       5      n[        U R                  R                  R                  U R                  S   5      R                  5       5      n[        U5      S:X  a  [        SU R                   S35        g[        U5      [        U5      :  a  gUS   nX0R                  R                  S   :X  a  gU$ )Nrs   rX   r   rt   ru   FrY   )
rZ   r	   rj   r1   r    ry   r3   r6   r
   r/   )r   r|   r}   last_sources       r   needs_releaseBeric.needs_release|  s    tvvxx~~dii&9:??ABTVVXX^^DIIf$56;;=>w<1HT\\N.9:w<#e*$bk&&++A..r   c                     [        U R                  R                  R                  U R                  S   5      R                  5       5      nUR                  5         [        U5      U:  a  U$ USU $ )NrX   r   )rZ   r	   rj   r1   r    ry   reverser3   )r   r   r}   s      r   last_issuesBeric.last_issues  sU    TVVXX^^DIIf$56;;=>u:LQu~r   )	r    r   r	   r!   r   r   r   r
   r"   )F)   r   )__name__
__module____qualname____firstlineno____doc__r   r   r?   rU   r\   rd   rm   rp   r   rz   r   r   r   r{   r   r   r   r   r   r   __static_attributes__ r   r   r   r      sm    0	.28	3,\BE7N< r   r   )r7   rI   rL   r   r   r   r   r   r   r   r   <module>r      s#    
 	    
E Er   