
                         H    d Z ddlmZ ddlmZ ddlmZ ddlZ G d d      Zy)zEUtilities for Anthos On-Prem API for VMware platform version parsing.    )absolute_import)division)unicode_literalsNc                   V    e Zd ZdZdefdZdefdZdedefdZd Z	d	 Z
d
 Zd Zd Zy)VersionzFAnthos On-Prem VMware platform version parsing and comparison library.versionc                 l    || _         d| _        d| _        d| _        d| _        | j                  |       y )Nr   )originalmajorminorpatch	gke_patchparse_version)selfr   s     ;lib/googlecloudsdk/api_lib/container/vmware/version_util.py__init__zVersion.__init__   s3    DMDJDJDJDNw    c                    t        j                  d      }|j                  |      }|r|j                         |k7  rt	        dj                  |d            || _        t        |j                  d            | _        t        |j                  d            | _	        t        |j                  d            | _
        t        |j                  d            | _        y)	a  Parses the input version.

    Accept versions of form such as 1.15.2-gke.0. Every version field must be
    specified. Use self.original whenever passing the version value to the
    server to avoid distorting user intention.

    Args:
      version: str
    z(\d+)\.(\d+)\.(\d+)-gke\.(\d+)z.Invalid version: {}, example valid version: {}z1.15.1-gke.2            N)recompilematchgroup
ValueErrorformatr
   intr   r   r   r   )r   r   version_patternversion_matchs       r   r   zVersion.parse_version$   s     jj!BCO#))'2MM//1W<
:
A
A~  DM]((+,DJ]((+,DJ]((+,DJ,,Q/0DNr   feature_versionreturnc                      | t        |      k   S )zCheck whether the current version has the feature available.

    Args:
      feature_version: The lowest version that the feature is available.

    Returns:
      bool
    )r   )r   r"   s     r   feature_availablezVersion.feature_available@   s     w//00r   c                 z    dj                  | j                  | j                  | j                  | j                        S )Nz.major: {}, minor: {}, patch: {}, gke_patch: {})r   r   r   r   r   r   s    r   print_versionzVersion.print_versionK   s.    ;BB

DJJ

DNN r   c                    | j                   |j                   k  ry| j                   |j                   kD  ry| j                  |j                  k  ry| j                  |j                  kD  ry| j                  |j                  k  ry| j                  |j                  kD  ry| j                  |j                  k  ry| j                  |j                  kD  ryy)NTFr   r   r   r   r   other_versions     r   __lt__zVersion.__lt__P   s    zzM'''	m))	)zzM'''	m))	)zzM'''	m))	)~~///	-11	1r   c                     | j                   |j                   k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S Nr*   r+   s     r   __eq__zVersion.__eq__g   s`    

m))) 	6JJ----	6JJ----	6 NNm555	r   c                     | j                   S r/   r
   r'   s    r   __str__zVersion.__str__o       ==r   c                     | j                   S r/   r2   r'   s    r   __repr__zVersion.__repr__r   r4   r   N)__name__
__module____qualname____doc__strr   r   boolr%   r(   r-   r0   r3   r6    r   r   r   r      sI    N c  13 18	1s 	1t 	1
.r   r   )r:   
__future__r   r   r   r   r   r=   r   r   <module>r?      s#    L &  ' 	[ [r   