a
    `'                     @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc                   @   s   e Zd Zdd Zd#ddZd$ddZd%dd	Zd
d Zd&ddZd'ddZ	d(ddZ
d)ddZd*ddZd+ddZd,ddZd-ddZdd Zd d! Zd"S ).Folderc                 C   s
   || _ d S N)e)selferimp r   "/home/ernad/ernad/python/folder.py__init__	   s    zFolder.__init__Fc           	      C   s   || _ | j}| |}i }|d u r&d S |D ]V}tj|}|j|rr|dd }||vrbg ||< || | q*| j	||d q*|S )Nr   
   ex_on_non_rif)
fudir   list_amf_fufisospathbasenameRis_rifappendgripe_non_rif	r   r   r   r   fufisoutfufibana	issuedater   r   r   dates   s    
zFolder.datesc           	      C   sz   || _ | j}tt| j d }i }|D ]L}tj|}|j|rf|dd }||vr(|||< qtq(q(| j	||d q(|S )zfirst dates/*r   r
   r   
r   r   sortedglobr   r   r   r   r   r   r   r   r   r   firsts   s    
zFolder.firstsc           	      C   sn   || _ | j}tt| j d }i }|D ]@}tj|}|j|rZ|dd }|||< q(| j	||d q(|S )
last datesr   r   r
   r   r   r   r   r   r   lasts1   s    
zFolder.lastsc                 C   sX   || _ | j}tt| j d | d }d}|D ]"}tj|}|j|sNq0|}q0|S )zlast fufi for given issuedate/* )	r   r   r   r    r   r   r   r   r   )r   r   r   r   r   out_fufir   r   r   r   r   last_by_issuedate@   s    zFolder.last_by_issuedatec                 C   sD   || _ | j||d}t|dkr$dS t|}|  |d }|| S )r"   r   r   N)r   r#   lenr   reverse)r   r   r   Zlast_issuedatesr#   lastr   r   r   	very_lastM   s    zFolder.very_lastTc           	      C   s   | j }tj|s(td| tjd dS g }|d |jd  }tt		|D ]}|
| qL|sd|S |d }t		|D ]}|
| qvt|}|S )from old folders libraryznothing in fileNr   Zamfz.gz)r   r   r   isdirprintsysstderrextr   r    r   )	r   folderZwith_gzr   r   Z	base_globr   Z	comp_globZsorted_fufisr   r   r   r   X   s    zFolder.list_amf_fufisc           	      C   s|   |  |}i }|D ]d}tj|}t|dk r0q|dd dkrBq|dd }||vri ||< |dd }||| |< qdS )r-      r
      _r      N)r   r   r   r   r)   )	r   r5   
do_verboser   ivr   r   r   shotir   r   r   isvek   s    
zFolder.isvec                 C   s   |  |}i }|D ]`}tj|}|dd dkr4q|dd }|dd }||vr^|||< q||| k r|||< qt| dd d}	i }
|	D ]}|| |
|< q|
S )	r-   r
   r7   r8   r   r9   c                 S   s   |   S r   lowerxr   r   r   <lambda>       z)Folder.firsts_isda_shot.<locals>.<lambda>key)r   r   r   r   r   keys)r   r5   r:   r   dr   r   r   r<   
issuedatesr;   r   r   r   firsts_isda_shot~   s$    

zFolder.firsts_isda_shotc                 C   s   |  |}|du r(td| tjd dS i }|D ]`}tj|}|dd dkrRq0|dd }|dd }||vr||||< q0||| k r0|||< q0t| d	d
 d}	g }
|	D ]}|
	||  q|
S )r-   Nzno data for r.   r
   r7   r8   r   r9   c                 S   s   |   S r   r>   r@   r   r   r   rB      rC   z%Folder.firsts_shoti.<locals>.<lambda>rD   )
r   r1   r2   r3   r   r   r   r   rF   r   )r   r5   r:   r   rG   r   r   r   r<   rH   Zshotisr   r   r   firsts_shoti   s*    

zFolder.firsts_shotic           	      C   s   || _ | j}t| j d }i }|D ]X}tj|}|j|rn|dd }||v rdt|d | |||< q$| j	||d q$|S )Nr   r   r
   z
 twice in r   )
r   r   r    r   r   r   r   r   	Exceptionr   r   r   r   r   dates_unique   s    
zFolder.dates_uniquec                 C   s(   |rt |d nt|d tjd |S )Nz is not a rifr.   )rK   r1   r2   r3   )r   r   r   r   r   r   r      s    zFolder.gripe_non_rifr%   c                 C   sH   | d| }t  |}t|s4td| d  d S t|tjjd}|S )Nr$   zfolder see nothing for ''rD   )r    r)   r1   maxr   r   getmtime)r   r   searchglob_stringr   Zlatest_fufir   r   r   last_by_mtime   s    
zFolder.last_by_mtimec                 C   s8   |  |}|  |}d}|D ]}||v r*q|d7 }q|S )z0count date different between two fudis, not usedr      )rL   )r   Zfudi_bigZ
fudi_smallZdafu_bigZ
dafu_smallcountdater   r   r   dafudi   s    


zFolder.dafudic                 C   sb   |  |}|du r&td| d  dS d}| jjD ]*}|t krDq2||v rT|  S |d7 }q2|S )z&count date different between two fudisNzfolder does not see z count_gap_issues() return Noner   rS   )r   r1   r   rH   datertoday)r   r   ZdafurT   r   r   r   r   count_gap_issues   s    

	zFolder.count_gap_issuesN)F)F)F)F)T)T)T)T)F)F)r%   )__name__
__module____qualname__r	   r   r!   r#   r(   r,   r   r=   rI   rJ   rL   r   rR   rV   rY   r   r   r   r   r      s   










	r   )r   r    r2   rW   r   r   r   r   r   <module>   s   