
    z$h?,                     8    S r SSKrSSKrSSKJr   " S S5      rg)z-useful functions when we don't know the impna    N)Rexerc                       \ rS rSrSS jrS rSS jrS rS rS r	S	 r
S
 rSS jrS rSS jrSS jrSS jrS rSrg)Abovo   Nc                    Xl         S U l        0 U l        [        U 5      U l        0 U l        U R                  5         U R                  5         U R                  5         U R                  S5        U R                  5         U R                  5        H  nU R                  U5        M     U R                  5         X l        U R                  5         g )Ntop)e
given_fufidirsr   rexer	constantsread_constantsset_namespacesset_system_constantsset_dirs
set_stagesforked_dirnas
set_learst
do_verboseset_resigndirs)selfr	   r   kinds       !/home/ernad/ernad/python/abovo.py__init__Abovo.__init__   s    	4[
!!#e&&(DMM$ ) 	$    c                 z   / U l         0 U l        U R                   H&  nUSS S:w  a  M  US   nUSS  nX0R                  U'   M(     [        U R                  5       H  nU R                   R	                  W5        M      U R                  R                  5       nU H   nX R                  XB   '   U R                  U	 M"     g )Nr   r   stages_	   )stagesstager   sortedappendcopy)r   constantnumbernamestages_copys        r   r   Abovo.set_stages   s    
 H!}	)a[FAB<D "&JJv ' TZZ(FKKt$ )jjoo'!F.4JJ{*+

6" "r   c                    SnS[         R                  ;   a  [         R                  S   nX l        US-   U l        U R                  S-   U-   n[         R                  R                  U5      (       d  [        SU-   5      e[        US5      nUR                  5       n0 nU HV  nU R                  R                  S   R                  U5      nUc  M0  UR                  S5      n	UR                  S	5      n
XU	'   MX     US
:X  a  X`l        U$ )Nz/home/ernadHOMEz/ernad/zI can't with with no ris_constants_line      xslt/constants.xslt.xml)osenvironhome_dirnase_dirpathisfile	Exceptionopen	readlinesr   rsmatchgroupr   )r   finar4   constants_fuficonstants_fileconstants_linesr   constants_linematchedvariable_attrselect_attrs              r   r   Abovo.read_constants/   s     RZZzz&)H  8+,t3ww~~n--3nDEEnc2(224	-Njjmm$78>>~NG#MM!,M!--*K'2m$ . ,,&Nr   c                     0 U l         U R                  S   U R                   S'   U R                  S   U R                   S'   U R                  S   U R                  S   S.U l        U R                   $ )z*set the namespaces, hardcodes the prefixesns_amfans_ernadr	   )rI   r	   )nsmapr   xpspaces)r   s    r   r   Abovo.set_namespacesH   s`    
..2

3..4

3"nnX6"nnZ8:zzr   c                     U R                   n0 n0 nU HC  nUR                  S5      (       a	  X   X$SS  '   UR                  S5      (       d  M:  X   X4SS  '   ME     X l        X0l        g )Next_   ns_   )r   
startswithextns)r   r   rT   rU   r%   s        r   r   Abovo.set_system_constantsQ   so    NN	!H""6**$-$7QRL!""5))#,#6AB< 	 "
 r   c                     / nU R                    HQ  nSU;  a  M  UR                  S5      (       a  M#  UR                  S5      nUS   nXA;  d  M@  UR                  U5        MS     U$ )zby implementation directoriesdir_r   r   )r   rS   splitr#   )r   
bymip_dirsr'   partsstarts        r   r   Abovo.forked_dirnas]   se    
NNDT!u%%JJv&E!HE&!!%( # r   c                     / nU R                    H/  nUR                  S5      (       d  M  UR                  USS 5        M1     Xl        / nU R                    H/  nUR                  S5      (       d  M  UR                  USS 5        M1     X0l        g)z#learn stages for issues and reportslearist_   Nlearest_)r   rS   r#   learistslearests)r   rb   r'   rc   s       r   r   Abovo.set_learstk   s    NND??:..OODH% # !NND??:..OODH% # !r   c                     U R                   n0 nU HY  nUSS US-   :w  a  M  USS  nU R                  c  M%  X$   nU R                  S-   U-   X5'   UR                  S5      (       d  MU  XcU'   M[     X0R                  U'   g )Nr      dirr   r,   )r   r	   r5   rS   r   )r   r   r   r   r%   r'   targets          r   r   Abovo.set_dirs{   s    NN	!H!}u,AB<Dvv!",!]]S069
$$S))!'J " 		$r   c                     U R                   R                  nU R                  nU R                   HG  nUSS S:w  a  M  USS nU R                   c  M"  X4   nU R                   R                  S   S-   U-   X%'   MI     U$ )zsets the blatt dirsr   rf   blatt_
   Nblattr,   )r	   r   r   )r   r	   r   r   r%   r'   rh   s          r   set_blatt_dirsAbovo.set_blatt_dirs   sy    vv{{NN	H!}(BC=Dvv!",!VV[[1C7&@
 ' r   c                     U R                   n0 nU H<  nUSS S:w  a  M  USS  nX@R                  S   ;  a  [        SU S35      eX   nXRU'   M>     X R                  S'   g )Nr   rf   resignr   r   zYour resigndir z must be a topdir)r   r   r8   )r   r   r   r%   r'   rh   s         r   r   Abovo.set_resigndirs   sw    NN	!H!}(AB<D99U++/$7H IJJ(FJ " #		(r   c                    [        U[        5      (       a(  U R                  U5      (       a  XR                  l        U$ [        U5      S:X  aJ  US   nSU;   a?  USUR                  S5       nUb(  U R                  U5      (       a  XPR                  l        U$ SnS[        R                  ;   a  [        R                  S   nUb  [        U5      S:  a  US   n[        R                  R                  U5      (       a  X@l        [        R                  R                  US-   5      (       a
  US-   U l        UR                  S5      (       a1  [        R                  R                  USS 5      (       a
  USS U l        U$ Ub  [        U5      S:X  a   [        S5        [        R                  " 5         US   nU R                  U5      (       a  X@R                  l        U$ SU;   a,  USUR                  S5       nU R                  U5      (       a  U$ U R!                  UUS	9nU R                  U5      (       a  U$ [        R                  S
   S-   U-   S-   n	[        R                  R                  U	5      (       d   [        S5        [        R                  " 5         [        R                  R#                  U	5      n	U R!                  U	US	9nU R                  U5      (       a  U$ [        S5        [        R                  " 5         g)z/we guess the impna from the first argument onlyr/   r   -NIMPNAz.gzzAbovo can't see your impna.)r   r+   z/staff/z.amf.xmlzabovo: I can't get the impna.)
isinstancestris_impna_validr	   impnalenindexr2   r3   r6   r7   r
   endswithprintsysexitimpna_from_fufirealpath)
r   bipasr	   r   hint
impna_hint	impna_envpart_before_dashcand_impna_from_file
staff_fufis
             r   guess_impnaAbovo.guess_impna   s    eS!!d&9&9%&@&@ FFLLu:?8Dd{!"24::c?3
)**:66'1))	bjj 

7+I  5zA~Qx77>>$''&*O77>>$,//&*UlDO==''BGGNN49,E,E&*3BiDO=CJ!O/0HHJQxt$$FFLK$;#$4TZZ_5""#344''  $33D?I  4  K344''ZZ')3d:ZG
ww~~j))/0HHJWW%%j1
#33J?I  4  K344''-.
r   c                     [        U5      S:X  a  gU R                  S   S   nUS-   U-   n[        R                  R	                  U5      (       a  U(       a  [        SU-   5        gU(       a  [        US-   5        g)	Nr   Fr   styler,   zabovo sees Tz can't be seen by abovo)r{   r   r2   r6   isdirr~   )r   stringr   	style_dircand_dirs        r   ry   Abovo.is_impna_valid   sl    v;!IIe$W-	s?V+77==""mi/0(667r   c                    [         R                  R                  U5      nU(       a  [        SU-   5        Uc  [        US-   5        g [         R                  R	                  U5      (       d   U R
                  (       a  [        SU-   5        g X0l        UR                  U R                  5      (       dP  UR                  S5       H;  nU R                  R                  U5      (       d  M%  US UR                  S5       nUs  $    U(       a  [        SU-   5        U R                  S    HU  nU R                  S   U   nU(       a  [        U5        UR                  US-   S5      nU(       a  [        U5        X:w  d  MU    O   U(       a  [        S	W-   5        WR                  S5      n	US
U	 n
U(       a  [        SU
-   5        U R!                  U
5      (       a  U
$ g )Nzabovo tries from fufi z is not a fufizabovo: I don't see fufi r,   rt   zI have a fufi r    zrumpfi r   zThe cand_impna is )r2   r6   abspathr~   r7   r   r
   rS   r5   rY   r   
is_repcoder|   r   replacefindry   )r   r   r   fufifolderr   	top_dirnatop_fudirumpfipos_of_slash
cand_impnas              r   r   Abovo.impna_from_fufi   s   wwt$*T12<$))*ww~~d##0478t}}--**S/::((00'-.@v||C/@'A$++ * "T)* 5)Iyy'	2Hh \\(S."5Ff~ * )f$%{{3'Al+
 &34z** +r   c                 R    Sn[         R                  R                  U5      (       a  gg)Nz/etc/wpa_supplicant.confTF)r2   r6   r7   )r   	test_fufis     r   
is_testingAbovo.is_testing'  s     .	77>>)$$r   )r   r   r   r	   rT   r
   r4   rc   rb   r5   rU   rK   r   r!   r    rL   )NF)r1   )N)F)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   rn   r   r   ry   r   r   __static_attributes__ r   r   r   r      sK    &#(2
 #FR+Zr   r   )__doc__r2   r   r   r   r   r   r   r   <module>r      s    3 	 
 d dr   