File: //lib/python3/dist-packages/uaclient/__pycache__/version.cpython-310.pyc
o
    ��g�
  �                   @   s�   d Z ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZm
Z
 ddlmZ ddlmZ d	Zd
Zdefdd
�Zdee fdd�Zdee fdd�ZdS )z"
Client version related functions
�    N)�inf)�Optional)�get_apt_cache_time�get_pkg_candidate_version�version_compare)�CANDIDATE_CACHE_PATH�UAC_RUN_PATH)�ProcessExecutionError)�subpz35.1z35.1ubuntu0~22.04�returnc                  C   sp   t �d�st S tj�tj�t��} tj�tj�| d��r6g d�}zt|�\}}|�	� W S  t
y5   Y tS w tS )aO  Return the packaged version as a string
    Prefer the binary PACKAGED_VESION set by debian/rules to DEB_VERSION.
    If unavailable, check for a .git development environments:
      a. If run in our upstream repo `git describe` will gives a leading
         XX.Y so return the --long version to allow daily build recipes
         to count commit offset from upstream's XX.Y signed tag.
      b. If run in a git-ubuntu pkg repo, upstream tags aren't visible,
         believe __VERSION__ is correct - there is and MUST always be a
         test to make sure it matches debian/changelog
    z@@PACKAGED_VERSIONz.git)�git�describez
--abbrev=8z--match=[0-9]*z--long)�PACKAGED_VERSION�
startswith�os�path�dirname�__file__�exists�joinr
   �stripr	   �__VERSION__)�topdir�cmd�out�_� r   �2/usr/lib/python3/dist-packages/uaclient/version.py�get_version   s   
�r   c                  C   s�   t � pt} tj�t�rt�t�j| k rUd }z.td�}|rBtj	t
dd� ttd��}|�|� W d   � |W S 1 s:w   Y  |W S W n t
yT   |d urR| Y S Y nw zttd��}|�� �� W  d   � W S 1 smw   Y  W d S  t
y~   Y d S w )Nzubuntu-pro-clientT)�exist_ok�w�r)r   r   r   r   r   r   �stat�st_mtimer   �makedirsr   �open�write�	Exception�readr   )�last_apt_cache_update�candidate_version�fr   r   r   �get_last_known_candidate/   s<