U
    &Ÿˆcl  ã                   @   s†   d dl mZ d dlZd dlZzd dlmZmZ e e W n ek
rL   Y nX d dlZd dl	Z	e e e dd„ Z
dd„ Zdd	„ ZdS )
é    )Úprint_functionN)ÚOptionalÚTuplec                 C   sR   |d }|d }| j | | j| d  }| j| d }|dkrJd}|d8 }||fS )z³
    get the (year, month) tuple when the maintenance for the distribution
    ends. Needs the data of the release and the number of months that
    its is supported as input
    é   r   é   )ZyearZmonth)Zrelease_dateZm_monthsZyearsZmonthsZsupport_end_yearZsupport_end_month© r   ú+/usr/lib/python3/dist-packages/apt/utils.pyÚget_maintenance_end_date'   s    ÿr	   c              
   C   sv   | rt j | ¡sdS t  t | ¡¡�H}t |¡}t|ƒ}d|krNW 5 Q R £ dS |d }t |¡W  5 Q R £ S Q R X dS )zF
    return the release date as time_t for the given release file
    NZDate)	ÚosÚpathÚexistsÚfdopenÚapt_pkgZopen_maybe_clear_signed_fileZTagFileÚnextZstr_to_time)r   ÚdataÚtagZsectionÚdater   r   r   Ú"get_release_date_from_release_file;   s    
r   c                 C   s  || krdS | | }d}|j jD ]J}|dks |jdkr8q |jD ]*\}}|j|kr>|j|kr>|j|kr>|}q>q |stdS | j |jd d ¡}	| jjD ]z}
|
j	D ]n}|	rœ|	j
|j
krœ|	jrœtj d¡}dD ]B}t |
j¡d|
j|f  }tj || ¡rÆ||       S qÆqœq’dS )z- get the release file that provides this pkg Nr   zDir::State::lists)Z	InReleaseZReleasezdists_%s_%s)Z_pkgZversion_listZ	file_listÚoriginÚlabelÚarchiveZ_listZ
find_indexÚlistZindex_filesZdescribeZ
is_trustedr   ZconfigZfind_dirZuri_to_filenameZuriZdistr
   r   r   )ÚcacheZpkgnamer   ÚreleaseÚpkgZverZaverZver_fileZ_indexZ	indexfileZ	metaindexÚmÚdirnameZrelfileÚnamer   r   r   Úget_release_filename_for_pkgL   s@    
ÿþ

ÿþ
ÿr   )Z
__future__r   Zdatetimer
   Útypingr   r   ÚImportErrorZaptr   r	   r   r   r   r   r   r   Ú<module>   s    