
    ^$i9                         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KrS SK	r	S SK
r
S SKJr  S SKJr  S SKJr  S SKJr   " S S5      rg)    N)Dexis)Recon)Rixer)Xpafsc                   \    \ rS rSrSS jrS r  SS jrSS jrS rSS jr	SS	 jr
S
 rSrg)Asemb   c                    Xl         X l        [        U R                   5      U l        UR                  S   UR                  S   S.U l        SUR                  S   0U l        SUR                  S   0U l        [        U R                   5      U l        [        U R                   5      U l
        [        U R                   5      U l        0 U l        S U l        S U l        SU l        g )Namfernad)aer   r    )r   
do_verboser   dexisnsnsanser   rixerr   reconr   xpafsdocachecol_eleentropyaverent)selferimpr   s      !/home/ernad/ernad/python/asemb.py__init__Asemb.__init__   s    $466]
)+%)'*+466]
466]
466]
    c                 l    U R                   nUR                  U   R                  S   nUS-   U-   S-   nU$ )z---> called by class to see if out_fufi existsmocla/.amf.xml.gz)r   reportdirs)r   repcode	issuedater   	mocla_dirout_fufis         r   fufi
Asemb.fufi(   s<    FFHHW%**73	s?Y.>r!   Nc                 h   U R                   n0 U l        0 U l        Uc%  U R                   R                  nUc  [	        S5        gUc  U R                  U5      U l        OU R                  U5      U l        Ub  [        R                  " U5      nUc  UR                  nUc  [	        S5        gUR                  U   R                  S   nUc7  [        US5      (       a  UR                  b  UR                  nOfUS-   U-   S-   nOZUR                  U   R                  S   nUSU-   S-   -  n[        R                  R!                  U5      (       d  [	        SU 35        gUS-   U-   S	-   n[        R"                  " U5        Uc  [%        S
5      e[        R&                  " X/5      (       d  [	        SU-   5        U$ [	        SU SU 35        U R(                  R+                  X#S9n	U	c  [	        S[,        R.                  S9  Uc>  US-   U-   S-   n[        R                  R!                  U5      (       d  [	        SU-   5        gXpl        U R3                  U5        U R4                  R7                  USS9n
U R8                  R;                  U
5      n
U R8                  R=                  U
5      n
[?        U R                  5      nUnSnU
RA                  SU R                   RB                  RD                  S9n[?        U5      S:  aB  US   RF                  nUnURI                  S5      (       a  [K        USS 5      n [K        U5      nOSURN                  ;   a  URN                  S   nUb@  URI                  S5      (       a  [K        USS 5      S-  n[Q        X-  5      nO[Q        U5      nU R4                  R7                  USS9n
U R8                  R;                  U
5      n
U R8                  R=                  U
5      n
U R                   RR                  RU                  U
5      U l+        [X        RZ                  " [X        R\                  " UR^                  S   S5      5      nUUl#        [X        RZ                  " [X        R\                  " UR^                  S   S5      5      nU R`                  b  U R`                  Ul#        [X        RZ                  " [X        R\                  " UR^                  S   S5      5      n[c        U Rd                  5      S:X  a  [	        S[,        R.                  S9  [c        U Rd                  5      Ul#        [X        RZ                  " [X        R\                  " UR^                  S   S5      5      n[c        U5      Ul#        U RV                  Rg                  U5        U RV                  Rg                  U5        U RV                  Rg                  U5        U RV                  Rg                  U5        U Ri                  U5        U
Rk                  US S!S"9  [	        S#U-   5        U$ ! [L         a    URN                  S   n GNf = f)$z*build the amf file, use doc_fufi for brownNzasemb needs a repcode.zasemb needs an issuedate.r#   
given_fufir$   z.sidezasemb needs r%   zasemb needs a side fufizasemb does not renew asemb: dexis.set_issuedate(, doc_fufi=doc_fufi%asemb can not continue without dexis.filezasemb can't start without 	add_statez//e:truncate
namespacesr   %truncated   r   r)   r   r   z(asemb should should have an averent here
issue_size   Tcompressionpretty_printasemb wrote )6r   papnuspapwesgiven_repcodeprintlast_sigsigfilerget_issuedategiven_issuedater&   r'   hasattrr/   ospathisfileprepare	Exceptiondonerer   set_issuedatesysstderr	side_fufiparse_side_fufir   amf_docr   flattenremove_historylenxpathabovonsmaptextendswithfloat
ValueErrorconfintxget_colr   etElementQNamer   r   strr   appendcompose_docswrite)r   r(   r)   r3   parentr   r*   rX   r+   outrepdocr?   max_docsr=   	truncatesnumber_truncateissuedate_eleentropy_eleaverent_eleissue_size_eles                       r   buildAsemb.build/   s,    FF?ff**G./>}}W-DH}}V,DH++H5I))I 12HHW%**73	>q,''ALL,DLL	%Oi7'A	(--g6Iy722I77>>),,YK01s?Y.>h566||Hk22)H45O+I;k(LMjj&&y&D;9

K!C)3g=I77>>),,2Y>?"Y'##Gt#<##F+**62%
LL,0FFLL,>,> ! @	y>A }))H&O  %%"'2"7."'"8 166!vvj)H  %% !B036x45x= ##Gt#<##F+**62vvxx''/

288ADDM;#GH&jj!$$w-!CD<<##||Kjj!$$w-!CDt||!<zz#t||,BHHQTT']L$IJ!*oM*N+K(K((#XADAnx'(S  .66*-.s   .X X10X1c                 $   U R                   n0 U l        0 U l        SU l        Uc  UR                  nUc  [        S5        g Uc  UR                  nUc  [        S5        g [        SU SU 35        U R                  R                  X#S9nUc  [        S[        R                  S9  UR                  R                  UR                  S	   5      nX&;  a  [        S
5        g Xb   n[        R                  " U5      nUR!                  SU R                   R"                  R$                  S9n	Sn
U	 H  nU
S-  n
SU R                  U'   M     UR&                  U   R                  S   nUS-   U-   S-   nU R(                  R+                  US S9nU R,                  R/                  U5      nU R,                  R1                  U5      nU R(                  R+                  US S9nU R,                  R/                  U5      nU R,                  R1                  U5      nU R                   R2                  R5                  U5      U l        [8        R:                  " [8        R<                  " UR>                  S   S5      5      nX/l         [8        R:                  " [8        R<                  " UR>                  S   S5      5      nU R6                  RC                  U5        U R6                  RC                  U5        U RE                  U
5        URG                  USSS9  [        SU-   5        U$ )Nr   z0asemb: build_unsorted can't do without a repcodez3asemb: build_unsorted can't do without an issuedater0   r1   r2   r4   r5   issuesz4asemb: build_unsorted can't do without an issue fufiz//a:text[@ref]/@refr9   r   r@   r#   r$   r%   r7   r   r)   r?   TrA   rD   )$r   rF   rE   rJ   rG   rH   rM   r   rU   rV   rW   ddates_uniquer'   rK   	parse_laxr^   r_   r`   r&   r   rZ   r   r[   r\   rg   rh   r   ri   rj   rk   r   ra   rm   rn   ro   )r   r(   r)   r3   r   rq   issue_fufis
issue_fufidocpapidsrs   papidr*   r+   rr   rv   ry   s                    r   build_unsortedAsemb.build_unsorted   s   FF?ooGHI))I KL+I;k(LMjj&&y&D;9

Kcc&&qvvh'78'HI +
ooj)0&*ffll&8&8  :EMH!"DKK  HHW%**73	s?Y.>##Gt#<##F+**62##Gt#<##F+**62vvxx''/

288ADDM;#GH&BHHQTT']L$IJM*N+(#XADAnx'(r!   c           	         U R                   nSnU R                  nU R                   GH  n[        R                  " SUS9nU R                  U5      nXPR                  ;   a  U R                  U   nOUnU R                  R                  US5       H"  n	U	R                  5       R                  U	5        M$     [        R                  " [        R                  " UR                  S   S5      [        U5      [        R                  " U5      S9n	UR!                  U5        UR!                  U	5        [        R                  " [        R                  " UR                  S   S5      [        U R                  U   5      U R"                  [$        R                  " U5      S	9n
UR!                  U
5        U R&                  R!                  U5        US
-  nX1:  d  GM    g    g )Nr   haspart)r`   z./e:sausager   sausage)decimshonuitem)weight	criterionpoletr@   )r   r   rF   ri   rj   compose_docrE   r   run	getparentremoverk   r   rl   shonusmakerm   rJ   letnusr   )r   rs   r   
count_docsr   r   haspart_eletext_elenumbersausage_eleitem_eles              r   rn   Asemb.compose_docs   sm   hh

 FF[[E**Yc:K''.H#U+##zz~~hF%%'..{;  G**RXXadd7mY%G+.v;+1;;v+>@K
 x({+zz"((144=&"A),T[[-?)@,0HH(.J(?AH
 x(LL,!OJ%= !> 	r!   c                    XR                   ;   a  U R                   U   $ U(       a  [        SU-   S-   SSS9  U R                  R                  U5      R	                  5       nU(       a
  [        SSS9   [
        R                  " U5      nWU R                   U'   U$ ! [
        R                   a=    USS	 S
-   n[        SU S3[        R                  S9  [        R                  " S5         Naf = f)Nzfetch z ... r   T)endflushdone)r   r   2   u    …zasemb can not parse 'z'
rerun dexisr5   r@   )r   rH   r   fetchdecoderi   
fromstringXMLSyntaxErrorrV   rW   exit)r   r   r   rq   r   	print_outs         r   r   Asemb.compose_doc  s    LL <<&&(U"W,"DAjju%,,.&%	--$C "U
    	Ab	F*I))NCzz#HHQK		s   2B AC*)C*c                    Ub  0 U l         0 U l        UnXl        U R                  n[        US5      n0 nSnSn UR	                  5       nU H  nUSS	 nUR%                  S
5      n['        U5      S:  a  [        SU-   S-   5        M;  US   nUS:X  a  SnOQUR)                  S5      (       d  UR)                  S5      (       a%  UR*                  S   nUS   n [-        U5      nUS-  n [-        U5      nXUS   '   US:  a  Xm[0        R2                  " US5      -  -  nUS-  nXPR                   US   '   M     [        [5        US5      5      U l        [        [5        SU-  U-  S5      5      n[        U5      U l        [;        XDR<                  SS9nU H  nUU   U R                  U'   M     U R                  $ ! [
         a    [        [        R                  " 5       5      nS[        R                  R                  U5      -   n	U	S[        U5      -   -  n	SU 3n
[        SU	 3[        R                  S9  [        R                   " X)5        [        U
[        R                  S9  [        R"                  " U5         gf = f! [.         a,    [        U5      n[        SU 3[        R                  S9  Sn GNf = f! [.         a,    [        U5      n[        SU 3[        R                  S9  Sn GNf = f)z%stores in self.weight and self.numberrr   z/home/ernad/_zasemb can not read zmocla: copy to r5   Fr;   	   zbad parts with line ''r   r   ze-zasemb can't parse weight r>   r@   T)keyreverse)rE   rF   rX   open	readlinesUnicodeDecodeErrorrf   timerO   rP   basenamerl   rH   rV   rW   shutilcopy2r   splitr]   rb   	partitionrc   rd   mathlogroundr   r   sortedget)r   r,   rX   	side_filepapwer   r   lines
epoch_timesavegard_fufierrlinepartsr   weightsprint_weightr   sorted_papidsr   s                      r   rY   Asemb.parse_side_fufi  s    DKDKI!NNN	C(	
	'')E D":DJJt$E5zA~-4s:;1XF| %%)>)> **3/ "6]F  #v %%(OzDHHVQ$777!OJ$.KKa!I J 5!,-eC'MJ6:;7|u))TB"E!&uDKK #{{o " 	 TYY[)J*RWW-=-=i-HHMS3z?22M'	{3COM?3#**ELL2#CJJ'IIi 	8 " #&v;L5l^D"zz+ F  "6{1,@::' s6   F4 I9&J24B?I65I692J/.J/22K('K(c                 0   U R                   nUR                  U   R                  S   nUR                  R	                  USS9nUc  gX@l        UR                  R	                  USS9n[        R                  R                  U5      R                  SS5      nU$ )zget model for a reportr#   z*.model)searchFz.modelr   )
r   r&   r'   r~   last_by_mtime
model_fufirO   rP   r   replace)r   r(   r   r*   
last_modellast_model_fufirJ   s          r   rI   Asemb.last_sigb  s    FFHHW%**73	SS&&y&C
$##++Ii+Hgg/77"E
r!   )r   r   r   r   r   r   r   r   r   r   r   rE   rF   r   r   rX   rJ   r   )F)NNNN)N)__name__
__module____qualname____firstlineno__r   r,   rz   r   rn   r   rY   rI   __static_attributes__ r!   r   r   r      s9    ( <@rh3j'R(HZ
r!   r   )r   rO   rV   r   r   
lxml.etreeetreeri   rK   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   <module>r      s:     	 
          Z Zr!   