o
    4ñÕfâ  ã                   @   sX   d dl mZ d dlZd dlZd dlmZmZ d dlZd dlZ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r%d}|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   é   )ÚyearÚmonth)Úrelease_dateÚm_monthsÚyearsÚmonthsÚsupport_end_yearÚsupport_end_month© r   ú+/usr/lib/python3/dist-packages/apt/utils.pyÚget_maintenance_end_date   s   ÿr   c                 C   s†   | rt j | ¡s
dS t  t | ¡¡�'}t |¡}t|ƒ}d|vr)	 W d  ƒ dS |d }t |¡W  d  ƒ S 1 s<w   Y  dS )zF
    return the release date as time_t for the given release file
    NÚDate)	ÚosÚpathÚexistsÚfdopenÚapt_pkgÚopen_maybe_clear_signed_fileÚTagFileÚnextÚstr_to_time)r   ÚdataÚtagÚsectionÚdater   r   r   Ú"get_release_date_from_release_file2   s   
ü$úr    c                 C   s  || vrdS | | }d}|j jD ]%}|du s|jdu rq|jD ]\}}|j|kr4|j|kr4|j|kr4|}qq|s:dS | j |jd d ¡}	| jjD ]=}
|
j	D ]7}|	r…|	j
|j
kr…|	jr…tj d¡}dD ]!}t |
j¡d|
j|f  }tj || ¡r„||       S qcqNqIdS )z- get the release file that provides this pkg Nr   zDir::State::lists)Ú	InReleaseÚReleasezdists_%s_%s)Ú_pkgÚversion_listÚ	file_listÚoriginÚlabelÚarchiveÚ_listÚ
find_indexÚlistÚindex_filesÚdescribeÚ
is_trustedr   ÚconfigÚfind_dirÚuri_to_filenameÚuriÚdistr   r   r   )ÚcacheÚpkgnamer'   ÚreleaseÚpkgÚverÚaverÚver_fileÚ_indexÚ	indexfileÚ	metaindexÚmÚdirnameÚrelfileÚnamer   r   r   Úget_release_filename_for_pkgC   sD   


€û
ÿ
ÿÿ€ø
rB   )Ú
__future__r   Údatetimer   Útypingr   r   Úaptr   r   r    rB   r   r   r   r   Ú<module>   s   