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rtjd}dD ]B}t|
jd|
j|f  }tj|| r||       S qqqd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    