
    g,                     D    d dl Z d dlZd dlZd dlZd dlmZ  G d d      Zy)    N)Rexerc                       e Zd ZddZddZd ZddZd ZddZddZ	dd	Z
d
 ZddZddZddZddZddZ	 	 ddZddZddZddZd Zd Zd Zd ZddZy)Folderc                      || _         || _        y N)e
do_verbose)selferimpr	   s      "/home/ernad/ernad/python/folder.py__init__zFolder.__init__
   s    $    c                 8   | j                   }| j                  |      }i }|y |D ]r  }t        j                  j	                  |      }|j
                  j                  |      r#|dd }||vrg ||<   ||   j                  |       `| j                  ||       t |S )Nr   
   ex_on_non_rif)	r   list_amf_fufisospathbasenameRis_rifappendgripe_non_rif	r
   fudir   r   fufisoutfufibana	issuedates	            r   dateszFolder.dates   s    FF##D)=D77##D)Dsszz$ 2J	C'%'C	NI%%d+""4}"E  
r   c                 ,   | j                   }t        j                  |dz         }i }|y |D ]e  }t        j                  j	                  |      }|dd }||vrg ||<   n!t        d| d| t        j                         ||   j                  |       g |S )Nz/????-??-??*.amf.xml.gzr   r   zrepeat of issuedate z in file)	r   globr   r   r   printsysstderrr   )r
   r   r   r   r   r   r    r!   s           r   loose_dateszFolder.loose_dates!   s     FF		$!::;=D77##D)DQr
I#!#I,YKtD6B::'	N!!$'  
r   Nc                     d}i }|	|d|z   z  }n|dz  }|dz   |z   }t        t        j                  |      d      D ]3  }t        j                  j	                  |      }|dd }|||k  r/|||<   5 |S )	Nz
????-??-??*_*/Treverser   r   )sortedr&   r   r   r   )	r
   r   extstartglob_stringr   r   r    r!   s	            r   dafuszFolder.dafus5   s    "?39$K4KSj;.499[14@D77##D)DQr
I Y%6!C	N A 
r   c                 ^    t        j                   |dz   |z   dz         }t        |      dk(  ryy)Nr.   r-   r   FT)r&   len)r
   r   r!   r   s       r   has_it_issuedatezFolder.has_it_issuedateF   s/    		$*y0478u:?r   c                 L   | j                   }t        t        j                  |dz         d      }i }t        |      dk(  ry|D ]^  }t        j
                  j                  |      }|dd }| j                   j                  j                  d   j                  |      sZ|||<   ` |S )z8same as dates but allows any file type, last comes first/*Tr/   r   Nr   is_date)
r   r1   r&   r7   r   r   r   r   rsmatchr   s	            r   by_dateszFolder.by_datesL   s     FFtyy-t<u:?D77##D)DQr
I6688;;y)//	:!C	N  
r   c                 X   || _         | j                  }t        t        j                  | j                   dz               }i }|D ]d  }t        j
                  j                  |      }|j                  j                  |      s|r|dd }	|	|vr|||	<   NO|rR| j                  ||       f |S )zfirst datesr:   r   r   r   
r   r   r1   r&   r   r   r   r   r   r   )
r
   r   r   
do_non_rifr   r   r   r   r    r!   s
             r   firstszFolder.firsts\   s    	FFtyyT!123D77##D)Dsszz$: 2J	C'%)C	N""4}"E  
r   c                 D   || _         | j                  }t        t        j                  | j                   dz               }i }|D ]Z  }t        j
                  j                  |      }|j                  j                  |      r|dd }|||<   H| j                  ||       \ |S )
last datesr:   r   r   r   r@   r   s	            r   lastszFolder.lastsn   s    	FFtyyT!123D77##D)Dsszz$ 2J	!%I""4}"E  
r   c                    || _         | j                  }t        t        j                  | j                   dz   |z   dz               }d}|D ]?  }t        j
                  j                  |      }|j                  j                  |      s>|}A |S )zlast fufi for given issuedater.   r,    )	r   r   r1   r&   r   r   r   r   r   )r
   r   r!   r   r   out_fufir   r    s           r   last_by_issuedatezFolder.last_by_issuedate}   sy    	FFtyyS9!<s!BCDD77##D)D33::d#H	 
 r   c                    || _         t        t        j                  | j                   dz   |z   dz               }t        |      dk(  ry |d d }|D ]4  }| j                  rt        d|        |r t        j                  |       6 d   S )Nr.   r,   r   folder removes )r   r1   r&   r7   r	   r'   r   remove)r
   r   r!   do_testr   r   s         r   keep_only_lastzFolder.keep_only_last   s    	tyyS9!<s!BCDu:?cr
Dv./		$	 
 Awr   c                     || _         | j                  ||      }t        |      dk(  ryt        |      }|j	                          |d   }||   S )rD   r   r   N)r   rE   r7   r1   r0   )r
   r   r   last_issuedatesrE   lasts         r   	very_lastzFolder.very_last   sR    	**T*G1$'Qxt$$r   c                    | j                   }t        j                  j                  |      s!|rt	        d|z   t
        j                         yg }|dz   |j                  d   z   }t        t        j                  |            D ]  }|j                  |        |s|S |dz   }t        j                  |      D ]  }|j                  |        t        |      }	|	S )from old folders libraryznothing in r$   Nr:   amfz.gz)r   r   r   isdirr'   r(   r)   r2   r1   r&   r   )
r
   folderwith_gzdo_warnr   r   	base_globr   	comp_globsorted_fufiss
             r   r   zFolder.list_amf_fufis   s    FFww}}V$mf,3::>TMAEE%L0	499Y/0DLL 1L%	IIi(DLL )e}r   c                     | j                  |      }i }|D ]U  }t        j                  j                  |      }t	        |      dk  r1|dd dk7  r:|dd }||vsDi ||<   |dd }|||   |<   W y)rU      r      _r      N)r   r   r   r   r7   )	r
   rX   r	   r   ivr   r    r!   shotis	            r   isvezFolder.isve   s    ##F+D77##D)D4y2~Br{c!Qr
I" "9R'+9e$ r   c                 (   | j                  |      }i }|D ]L  }t        j                  j                  |      }|dd dk7  r+|dd }|dd }||vr|||<   ?|||   k  sH|||<   N t	        |j                         d       }	i }
|	D ]
  }||   |
|<    |
S )rU   r   r`   ra   r   rb   c                 "    | j                         S r   lowerxs    r   <lambda>z)Folder.firsts_isda_shot.<locals>.<lambda>   
    1779r   key)r   r   r   r   r1   keys)r
   rX   r	   r   dr   r    r!   rd   
issuedatesrc   s              r   firsts_isda_shotzFolder.firsts_isda_shot   s    ##F+D77##D)DBr{c!Qr
IBKE!$)q|#$)  AFFH*<=
#IiLByM $	r   c                    | j                  |      }|!|rt        d|z   t        j                         yi }|D ]L  }t        j
                  j                  |      }|dd dk7  r+|dd }|dd }	||vr|	||<   ?|	||   k  sH|	||<   N t        |j                         d	 
      }
g }|
D ]  }|j                  ||           |S )rU   Nzno data for r$   r   r`   ra   r   rb   c                 "    | j                         S r   rh   rj   s    r   rl   z%Folder.firsts_shoti.<locals>.<lambda>   rm   r   rn   )
r   r'   r(   r)   r   r   r   r1   rp   r   )r
   rX   r	   rZ   r   rq   r   r    r!   rd   rr   shotiss               r   firsts_shotizFolder.firsts_shoti   s     ##F+=nv-CJJ?D77##D)DBr{c!Qr
IBKE!$)q|#$)  AFFH*<=
#IMM!I,' $r   c                 \   || _         | j                  }t        j                  | j                   dz         }i }|D ]o  }t        j                  j                  |      }|j                  j                  |      r |dd }||v rt        |dz   |z         |||<   ]| j                  ||       q |S )Nr:   r   r   z
 twice in r   )
r   r   r&   r   r   r   r   r   	Exceptionr   r   s	            r   dates_uniquezFolder.dates_unique   s    	FF		$))d*+D77##D)Dsszz$ 2J	##I$<t$CDD!%I""4}"E  
r   c                 Z    |rt        |dz         | j                  rt        |dz          |S )Nzis not a rifz is not a rif)ry   r	   r'   )r
   r   r   s      r   r   zFolder.gripe_non_rif  s.    D>122__$()r   c                     | d| }t        j                   |      }t        |      st        d|z   dz          y t        |t        j
                  j                        }|S )Nr.   zfolder see nothing for ''rn   )r&   r7   r'   maxr   r   getmtime)r
   r   searchr4   r   latest_fufis         r   last_by_mtimezFolder.last_by_mtime  sY    ax(		+&5z,{:S@A%RWW%5%56r   c                 p    | j                  |      }| j                  |      }d}|D ]  }||v r|dz  } |S )z0count date different between two fudis, not usedr      )rz   )r
   fudi_big
fudi_smalldafu_big
dafu_smallcountdates          r   dafudizFolder.dafudi  sL    $$X.&&z2
Dz!QJE  r   c                     | j                  |      }|t        d|z   dz          yd}| j                  j                  D ]'  }|t	        j
                         kD  r||v r|c S |dz  }) |S )z&count date different between two fudisNzfolder does not see z count_gap_issues() return Noner   r   )r"   r'   r   rr   datertoday)r
   r   dafur   r!   s        r   count_gap_issueszFolder.count_gap_issues'  sy    zz$<(4/56 7**I 5;;=(D QJE +  r   c                 n    t        t        | j                  |      j                                     }|d   S )Nr   )r1   listr"   rp   )r
   r   r"   s      r   first_issuedatezFolder.first_issuedateA  s,    tDJJt,11345Qxr   c                 6   t         j                  j                  |      st        dt        j
                         y |j                  d      sd|z   }|dz   |z   }t        j                  |      D ](  }t        d| d|        t        j                  |       * y )NzI need a directory herer$   .r:   rL   z by extension )	r   r   rW   r'   r(   r)   
startswithr&   rM   )r
   r   r2   r4   r   s        r   delete_by_extentionzFolder.delete_by_extentionE  sz    ww}}T"+#**=~~c")CTkC'IIk*DOD6u=>IIdO +r   c                    |dz   |z   }t        j                   |      }t        |      dk(  r|d   S t        |      dk(  r|st        dt        j                         y t        |      dkD  r"|st        dt        j                         |d   S y )Nr.   r   r   z#folder: no result for {glob_string}r$   z)folder: several results for {glob_string})r&   r7   r'   r(   r)   )r
   r   	bana_glob	do_silentr4   founds         r   
get_uniquezFolder.get_uniqueP  s    Sj9,		+&u:?8Ou:?;::'u:>A::'8O	 r   )F)NN)FF)TF)T)r,   )__name__
__module____qualname__r   r"   r*   r5   r8   r>   rB   rE   rI   rO   rS   r   re   rs   rw   rz   r   r   r   r   r   r   r    r   r   r   r      s}    
$(" $	%(,&0 /3"6 	4	r   r   )r   r&   r(   r   rexerr   r   r   r   r   <module>r      s     	  
  V Vr   