
                            S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJ	r	  Sr
\R                  " S	\R                  5      r " S
 S\5      r\R                   " SS9 " S S5      5       rSS jrg)z6Common classes and functions for network policy rules.    )absolute_import)annotations)division)unicode_literalsN)
exceptionszPROTOCOL[:PORT[-PORT]]z

    (?P<protocol>[a-zA-Z0-9+.-]+) # The protocol group.

    (:(?P<ports>\d+(-\d+)?))?     # The optional ports group.
                                  # May specify a range.

    $                             # End of input marker.
    c                      \ rS rSrSrSrg)Layer4ConfigParsingError+   z(Raised when layer4 config parsing fails. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       9lib/googlecloudsdk/api_lib/compute/layer4_config_utils.pyr	   r	   +   s    0r   r	   T)frozenc                  *    \ rS rSr% S\S'   S\S'   Srg)Layer4Config/   strip_protocolz
str | Noneportsr   N)r   r   r   r   __annotations__r   r   r   r   r   r   /   s    	r   r   c                    [         R                  U 5      nU(       d!  [        R                  " S[         SU  S35      eUR                  S5      nUR                  S5      n[        X#S9$ )z@Parses protocol:port mappings for --layer4-configs command line.z"Layer4 config must be of the form z; received [z].protocolr   )r   r   )LEGAL_SPECSmatchr   ArgumentErrorALLOWED_METAVARgroupr   )layer4_configr   r   r   s       r   ParseLayer4Configr$   5   sj    


M
*%	

"
"
,_,= >"O2	' 
 J'+
++g
%	+	;;r   )r#   r   returnr   )r   
__future__r   r   r   r   dataclassesre"googlecloudsdk.command_lib.computer   r!   compileVERBOSEr   	Exceptionr	   	dataclassr   r$   r   r   r   <module>r.      sw    = & "  '  	 9 +jj JJ1y 1 d#  $
<r   