
                         H    S r SSKJr  SSKJr  SSKJr  SSKr " S S5      rg)zEUtilities for Anthos On-Prem API for VMware platform version parsing.    )absolute_import)division)unicode_literalsNc                   d    \ rS rSrSrS\4S jrS\4S jrS\S\4S jr	S	 r
S
 rS rS rS rSrg)Version   zFAnthos On-Prem VMware platform version parsing and comparison library.versionc                 j    Xl         SU l        SU l        SU l        SU l        U R                  U5        g )Nr   )originalmajorminorpatch	gke_patchparse_version)selfr	   s     ;lib/googlecloudsdk/api_lib/container/vmware/version_util.py__init__Version.__init__   s1    MDJDJDJDNw    c                    [         R                  " S5      nUR                  U5      nU(       a  UR                  5       U:w  a  [	        SR                  US5      5      eXl        [        UR                  S5      5      U l        [        UR                  S5      5      U l	        [        UR                  S5      5      U l
        [        UR                  S5      5      U l        g)	zParses 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   Version.parse_version$   s     jj!BCO#))'2MM//1W<
:
A
A~  M]((+,DJ]((+,DJ]((+,DJ,,Q/0DNr   feature_versionreturnc                      U [        U5      :  + $ )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_availableVersion.feature_available@   s     w/00r   c                 z    SR                  U R                  U R                  U R                  U R                  5      $ )Nz.major: {}, minor: {}, patch: {}, gke_patch: {})r    r   r   r   r   r   s    r   print_versionVersion.print_versionK   s.    ;BB

DJJ

DNN r   c                    U R                   UR                   :  a  gU R                   UR                   :  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gg)NTFr   r   r   r   r   other_versions     r   __lt__Version.__lt__P   s    zzM'''	m))	)zzM'''	m))	)zzM'''	m))	)~~///	-11	1r   c                     U R                   UR                   :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ Nr/   r0   s     r   __eq__Version.__eq__g   s`    

m))) 	6JJ----	6JJ----	6 NNm555	r   c                     U R                   $ r5   r   r+   s    r   __str__Version.__str__o       ==r   c                     U R                   $ r5   r9   r+   s    r   __repr__Version.__repr__r   r<   r   )r   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__strr   r   boolr(   r,   r2   r6   r:   r>   __static_attributes__ r   r   r   r      sI    N c  13 18	1s 	1t 	1
.r   r   )rD   
__future__r   r   r   r   r   rH   r   r   <module>rJ      s#    L &  ' 	[ [r   