
    ze	&                     L    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dS )    N)Rexerc                       e Zd ZddZddZd Zd ZddZddZddZ	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 Zd Zd ZdS )FolderFc                 "    || _         || _        d S N)e
do_verbose)selferimpr	   s      "/home/ernad/ernad/python/folder.py__init__zFolder.__init__
   s    $t    c                 R   | j         }|                     |          }i }|d S |D ]}t          j                            |          }|j                            |          r/|dd         }||vrg ||<   ||                             |           j|                     ||           |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    F##D))=4 	F 	FD7##D))Dszz$ F 2J	C''%'C	NI%%d++++""4}"EEEE
r   c                 6   | j         }t          j        |dz             }i }|d S |D ]q}t          j                            |          }|dd         }||vrg ||<   n!t          d| d| t          j                   ||                             |           r|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     F	$!::;;=4 	( 	(D7##D))DQrT
I##!#IBYBBDBB:' ' ' '	N!!$''''
r   c                 j    t          j         |dz   |z   dz             }t          |          dk    rdS dS )N/z_*r   FT)r&   len)r
   r   r!   r   s       r   has_it_issuedatezFolder.has_it_issuedate5   s8    	$*y04788u::??5tr   c                 J   | j         }t          t          j        |dz             d          }i }t          |          dk    rdS |D ][}t          j                            |          }|dd         }| j         j        j        d         	                    |          sV|||<   \|S )z8same as dates but allows any file type, last comes first/*T)reverser   Nr   is_date)
r   sortedr&   r-   r   r   r   r   rsmatchr   s	            r   by_dateszFolder.by_dates;   s     Fty--t<<<u::??4 	" 	"D7##D))DQrT
I68;y)//	:: !C	NN
r   c                 T   || _         | j        }t          t          j        | j         dz                       }i }|D ]k}t          j                            |          }|j                            |          s|r|dd         }	|	|vr|||	<   QR|s| 	                    ||           l|S )zfirst datesr0   r   r   r   
r   r   r3   r&   r   r   r   r   r   r   )
r
   r   r   
do_non_rifr   r   r   r   r    r!   s
             r   firstszFolder.firstsK   s    	FtyT!12233 		F 		FD7##D))Dszz$ F: F 2J	C''%)C	NN F""4}"EEE
r   c                 B   || _         | j        }t          t          j        | j         dz                       }i }|D ]b}t          j                            |          }|j                            |          r|dd         }|||<   K| 	                    ||           c|S )
last datesr0   r   r   r   r8   r   s	            r   lastszFolder.lasts]   s    	FtyT!12233 	F 	FD7##D))Dszz$ F 2J	!%I""4}"EEEE
r   c                    || _         | j        }t          t          j        | j         dz   |z   dz                       }d}|D ]>}t          j                            |          }|j                            |          s<|}?|S )zlast fufi for given issuedater,   * )	r   r   r3   r&   r   r   r   r   r   )r
   r   r!   r   r   out_fufir   r    s           r   last_by_issuedatezFolder.last_by_issuedatel   s    	FtyS9!<s!BCCDD 	 	D7##D))D3::d## HHr   c                 .   || _         | j        }t          t          j        | j         dz   |z   dz                       }t	          |          dk    rd S |d d         }|D ]/}| j        rt          d|            t          j        |           0|d         S )Nr,   r?   r   zfolder removes )	r   r   r3   r&   r-   r	   r'   r   remove)r
   r   r!   r   r   r   s         r   keep_only_lastzFolder.keep_only_lasty   s    	FtyS9!<s!BCCDDu::??4crc
 	 	D 0...///IdOOOOAwr   c                     || _         |                     ||          }t          |          dk    rdS t          |          }|                                 |d         }||         S )r<   r   r   N)r   r=   r-   r3   r1   )r
   r   r   last_issuedatesr=   lasts         r   	very_lastzFolder.very_last   sd    	**T*GG1$$4''Qxt$$r   Tc                    | j         }t          j                            |          s t	          d|z   t
          j                   dS g }|dz   |j        d         z   }t          t          j	        |                    D ]}|
                    |           |s|S |dz   }t          j	        |          D ]}|
                    |           t          |          }|S )from old folders libraryznothing in r$   Nr0   amfz.gz)r   r   r   isdirr'   r(   r)   extr3   r&   r   )	r
   folderwith_gzr   r   	base_globr   	comp_globsorted_fufiss	            r   r   zFolder.list_amf_fufis   s    Fw}}V$$ 	-&(sz::::4TMAE%L0	49Y//00 	 	DLL 	L%	Ii(( 	 	DLLe}}r   c                    |                      |          }i }|D ]l}t          j                            |          }t	          |          dk     r5|dd         dk    rD|dd         }||vri ||<   |dd         }|||         |<   mdS )rL      r      _r      N)r   r   r   r   r-   )	r
   rP   r	   r   ivr   r    r!   shotis	            r   isvezFolder.isve   s    ##F++ 	, 	,D7##D))D4yy2~~BrE{c!!QrT
I"" "9RU'+9e$	, 	,r   c                 d   |                      |          }i }|D ]_}t          j                            |          }|dd         dk    r0|dd         }|dd         }||vr|||<   N|||         k     r|||<   `t	          |                                d           }	i }
|	D ]}||         |
|<   |
S )rL   r   rW   rX   r   rY   c                 *    |                                  S r   lowerxs    r   <lambda>z)Folder.firsts_isda_shot.<locals>.<lambda>       17799 r   key)r   r   r   r   r3   keys)r
   rP   r	   r   dr   r    r!   r[   
issuedatesrZ   s              r   firsts_isda_shotzFolder.firsts_isda_shot   s    ##F++ 	% 	%D7##D))DBrE{c!!QrT
IBKE!!$)q|##$)AFFHH*<*<===
# 	) 	)IiLByMM	r   c                    |                      |          }| t          d|z   t          j                   dS i }|D ]_}t          j                            |          }|dd         dk    r0|dd         }|dd         }||vr|||<   N|||         k     r|||<   `t          |                                d	 
          }	g }
|	D ]}|
	                    ||                    |
S )rL   Nzno data for r$   r   rW   rX   r   rY   c                 *    |                                  S r   r_   ra   s    r   rc   z%Folder.firsts_shoti.<locals>.<lambda>   rd   r   re   )
r   r'   r(   r)   r   r   r   r3   rg   r   )r
   rP   r	   r   rh   r   r    r!   r[   ri   shotiss              r   firsts_shotizFolder.firsts_shoti   s   ##F++=.6)
;;;;4 	% 	%D7##D))DBrE{c!!QrT
IBKE!!$)q|##$)AFFHH*<*<===
# 	( 	(IMM!I,''''r   c                 Z   || _         | j        }t          j        | j         dz             }i }|D ]{}t          j                            |          }|j                            |          r)|dd         }||v rt          |dz   |z             |||<   d| 	                    ||           ||S )Nr0   r   r   z
 twice in r   )
r   r   r&   r   r   r   r   r   	Exceptionr   r   s	            r   dates_uniquezFolder.dates_unique   s    	F	$)d*++ 	F 	FD7##D))Dszz$ F 2J	###I$<t$CDDD!%I""4}"EEEE
r   c                 `    |rt          |dz             | j        rt          |dz              |S )Nz is not a rif)rp   r	   r'   )r
   r   r   s      r   r   zFolder.gripe_non_rif   s?     	*D?2333_ 	*$()))r   r?   c                     | d| }t          j         |          }t          |          st          d|z   dz              d S t          |t          j        j                  }|S )Nr,   zfolder see nothing for ''re   )r&   r-   r'   maxr   r   getmtime)r
   r   searchglob_stringr   latest_fufis         r   last_by_mtimezFolder.last_by_mtime   sm    ((((	+&&5zz 	,{:S@AAA4%RW%5666r   c                 |    |                      |          }|                      |          }d}|D ]}||v r|dz  }|S )z0count date different between two fudis, not usedr      )rq   )r
   fudi_big
fudi_smalldafu_big
dafu_smallcountdates          r   dafudizFolder.dafudi  sZ    $$X..&&z22
 	 	Dz!!QJEEr   c                     |                      |          }|t          d|z   dz              dS d}| j        j        D ]'}|t	          j                    k    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   ri   datertoday)r
   r   dafur   r!   s        r   count_gap_issueszFolder.count_gap_issues  s    zz$<(4/56 7 7 74* 	 	I 5;==((D  QJEE r   c                     t          t          |                     |                                                              }|d         S )Nr   )r3   listr"   rg   )r
   r   r"   s      r   first_issuedatezFolder.first_issuedate-  s8    tDJJt,,11334455Qxr   N)F)FF)T)r?   )__name__
__module____qualname__r   r"   r*   r.   r6   r:   r=   rB   rF   rJ   r   r\   rj   rn   rq   r   rz   r   r   r    r   r   r   r      s          
   $  (         $       	% 	% 	% 	%   &, , , ,&   0   2          	 	 	  4    r   r   )r   r&   r(   r   rexerr   r   r   r   r   <module>r      sw    				  



       g g g g g g g g g gr   