
    f
                         d Z ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ d	Zd	Zd
efdZd
ee   fdZd
ee   fdZy)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)subpz31.2.3returnc                     t         j                  d      st         S t        j                  j	                  t        j                  j	                  t
                    } t        j                  j                  t        j                  j                  | d            r#g d}	 t        |      \  }}|j                         S t        S # t        $ r Y t        S w xY w)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_s       2/usr/lib/python3/dist-packages/uaclient/version.pyget_versionr      s     &&';<WW__RWW__X67F	ww~~bggll6623K	#YFC99;  % 		s   C 	CCc                  T   t               xs t        } t        j                  j	                  t
              r&t        j                  t
              j                  | k  rXd }	 t        d      }|rGt        j                  t        d       t        t
        d      5 }|j                  |       d d d        |S 	 	 t        t
        d      5 }|j                         j                         cd d d        S # 1 sw Y   |S xY w# t        $ r	 ||cY S Y Ww xY w# 1 sw Y   y xY w# t        $ r Y y w xY w)Nzubuntu-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fs      r   get_last_known_candidater.   .   s    /07CGGNN/077'(114II 		) 9:M N L48.4 /GG-./((	 !&, 	$668>>#	$ 	$/(( 	) ,(( -	)
	$
   s`   8C: C-)	C: 5D D#	D -C72C: 7C: :DDDD D 	D'&D'c                  N    t               } | rt        | t                     dkD  r| S y )Nr   )r.   r   r   )	candidates    r   check_for_new_versionr1   K   s&    (*I_Y>B    )__doc__os.pathr   mathr   typingr   uaclient.aptr   r   r   uaclient.defaultsr   r	   uaclient.exceptionsr
   uaclient.systemr   r   r   strr   r.   r1    r2   r   <module>r=      sb       
 A 5   S 2(3- :x} r2   