
    $gG<                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d Zej                            dd ed           ed           ed          d ed           ed          d	fd
 ed           ed           ed
           ed           ed           ed          dfd ed           ed           ed           ed           ed           ed          dfg          d             Zd Zd Zej                            g dg dg dg dg dg d g d!g d"g d#g d$g	          d%             Zd& Zd' Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Z d3 Z!ej                            d4g d5          d6             Z"d7 Z#d8 Z$d9 Z%d: Z&d; Z'd< Z(d= Z)d> Z*d? Z+d@ Z,dA Z-dB Z.dC Z/dD Z0dE Z1dF Z2dG Z3dS )H    N)	IPAddress	IPNetwork	INET_ATON	INET_PTONspanning_cidrAddrFormatErrorZEROFILLNOHOSTc                     t          d          } | j        dk    sJ t          |           dk    sJ t          |           dk    sJ |                                 dk    sJ t          |           dk    sJ t          |           dk    sJ t          |           dk    sJ | j        dk    sJ | 	                                dk    sJ | j
        d	k    sJ d S )
N	192.0.2.1   zIPAddress('192.0.2.1')      
0xc0000201s    "0b11000000000000000000001000000001z#11000000.00000000.00000010.00000001)   r         )r   versionreprstrformatinthexbytesbinbitswordsips    [/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/netaddr/tests/ip/test_ip_v4.pytest_ipaddress_v4r!      s    	;		B:????88/////r77k!!!!99;;+%%%%r77j    r77l""""99+++++6999997799=====8~%%%%%%    )valueipaddrnetworkcidr	broadcastnetmaskhostmasksizer   z192.0.2.1/32255.255.255.2550.0.0.0r   192.0.2.0/24	192.0.2.0192.0.2.255255.255.255.0z	0.0.0.255   z192.0.3.112/22z192.0.3.112	192.0.0.0z192.0.0.0/22z192.0.3.255z255.255.252.0z	0.0.3.255i   c                     t          |           }|j        |k    sJ |j        |k    sJ |j        |k    sJ |j        |k    sJ |j        |k    sJ |j        |k    sJ |j        |k    sJ d S )N)r   r   r%   r&   r'   r(   r)   r*   )	r#   r$   r%   r&   r'   r(   r)   r*   nets	            r    test_ipnetwork_v4r5   !   s    H E

C6V;'!!!!8t=I%%%%;'!!!!<8####8tr"   c                     t          d          } t          |           dk    sJ t          |           }t          |          dk    sJ |t          d          t          d          t          d          t          d          t          d          t          d          t          d	          t          d
          gk    sJ d S )N192.0.2.16/29   
192.0.2.16
192.0.2.17z
192.0.2.18z
192.0.2.19z
192.0.2.20z
192.0.2.21z
192.0.2.22
192.0.2.23)r   lenlistr   )r   ip_lists     r    !test_ipnetwork_list_operations_v4r?   O   s    	?	#	#Br77a<<<<2hhGw<<1,,,,,,,,	 	 	 	 	 	 	r"   c                      t          d          } | d         t          d          k    sJ | d         t          d          k    sJ | d         t          d          k    sJ d S )Nr7   r   r9   r   r:   r;   )r   r   r   s    r    "test_ipnetwork_index_operations_v4rB   b   sl    	?	#	#Ba5Il++++++a5Il++++++b6Y|,,,,,,,,r"   )startstopstep)NNrA   )rA   r   )rA   NrA   )rA   N)r   Nr   )r   rA   N)r   r   N)r   Nr   )r   r   r   c                     t          d          }|| ||         }t          |t          j                  sJ t	          |          t	          |          | ||         k    sJ d S )Nr7   )r   
isinstancetypesGeneratorTyper=   )rC   rD   rE   r   results        r    "test_ipnetwork_slice_operations_v4rM   i   sh     
?	#	#Bd4 Ffe122222<<488E$tO4444444r"   c                  P   t          t          d                    } t          j        |            t	          |           t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d	          t          d
          t          d          t          d          t          d          t          d          t          d          t          d          t          d          gk    sJ d S )N192.0.2.128/28z192.0.2.128z192.0.2.129192.0.2.130z192.0.2.131z192.0.2.132z192.0.2.133z192.0.2.134z192.0.2.135z192.0.2.136z192.0.2.137z192.0.2.138z192.0.2.139z192.0.2.140z192.0.2.141z192.0.2.142z192.0.2.143)r=   r   randomshufflesortedr   r>   s    r    test_ipnetwork_sort_orderrU   ~   s   9-..//G
N7'??-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  !      r"   c            
         t          d          t          d          t          d          t          d          t          d          t          d          t          d          g} t          j        |            |                                  | t          d          t          d          t          d          t          d          t          d          t          d          t          d          gk    sJ d S )NrP   rO   z::z192.0.3.0/24r-   z	fe80::/6410.0.0.1)r   r   rQ   rR   sortrT   s    r    <test_ipaddress_and_ipnetwork_canonical_sort_order_by_versionrY      s    -  "##$.!!.!!+*G N7LLNNN*.!!"##-  .!!$+      r"   c                  J    t          d          t          d          k    sJ d S )Nz192.168.0.15z192.168.0.15/32r    r"   r    test_ipnetwork_v4_constructorr]      s*    ^$$	2C(D(DDDDDDDr"   c                  j   t          d          dz   t          d          k    sJ dt          d          z   t          d          k    sJ t          d          dz
  t          d          k    sJ t          d          t          d          z   t          d          k    sJ t          d          t          d          z
  t          d          k    sJ t          j        t                    5  dt          d          z
   d d d            n# 1 swxY w Y   t          d          } | dz  } | t          d          k    sJ | dz  } | t          d          k    sJ | t          d          z  } | t          d	          k    sJ | t          d
          z  } | t          d          k    sJ t          d          } t          j        t                    5  | dz  } d d d            n# 1 swxY w Y   t          d          } t          j        t                    5  | dz  } d d d            d S # 1 swxY w Y   d S )Nr.   r   r   r2   z0.0.0.42z
192.0.0.42rW   10.0.0.2z	10.0.0.43z0.0.0.43z10.0.0.0r,   rA   r+   )r   pytestraises
IndexErrorr   s    r    $test_ipaddress_integer_operations_v4rc      s   [!!A%;)?)?????y%%%;)?)?????[!!A%;)?)?????[!!Ij$9$99Y|=T=TTTTT\""Yz%:%::i>T>TTTTT	z	"	" # #	Ik""""# # # # # # # # # # # # # # # 
:		B!GB:&&&&&&!GB:&&&&&&)J

B;'''''')J

B:&&&&&& 
9		B	z	"	"  
b               
$	%	%B	z	"	"  
b                 s6   -DDDG""G&)G&H((H,/H,c                     t          d          t          d          z  t          d          k    sJ t          d          t          d          z  t          d          k    sJ t          d          t          d          z  t          d          k    sJ t          d	          j        d
                    d          k    sJ d S )Nz
192.0.2.15r0   r.   255.255.0.0z0.0.255.255r+   	255.0.0.0z	0.255.0.0z1.2.3.4zascii)r   packedencoder\   r"   r    #test_ipaddress_binary_operations_v4rj      s    \""Y%?%??9[CYCYYYYY]##i&>&>>)L]B^B^^^^^]##i&<&<<	+@V@VVVVVY&*<*C*CG*L*LLLLLLLr"   c            	         t          t          d                                                    t          d          t          d          t          d          t          d          t          d          t          d          gk    sJ t          t          d                    t          d	          t          d
          gk    sJ t          t          d                                                    t          d	          t          d
          gk    sJ t          t          d                                                    t          d	          gk    sJ d S )Nz192.0.2.0/29r   z	192.0.2.2z	192.0.2.3z	192.0.2.4z	192.0.2.5z	192.0.2.6z192.168.0.0/31192.168.0.0z192.168.0.1z192.168.0.0/32)r=   r   
iter_hostsr   r\   r"   r    test_iterhosts_v4rn      sS   	.))446677++++++<     	*++,,-  -  1    
 	*++668899-  -  >     	*++668899i>V>V=WWWWWWWr"   c                      t          t          d                    rJ t          t          d                    sJ t          t          d                    sJ d S )Nr,   0.0.0.1r+   )boolr   r\   r"   r    $test_ipaddress_boolean_evaluation_v4rr      s]    Ii(()))))	)$$%%%%%	+,,-------r"   c                  B    t          t          d                    sJ d S )Nz	0.0.0.0/0)rq   r   r\   r"   r    $test_ipnetwork_boolean_evaluation_v4rt      s$    	+&&'''''''r"   c                  Z   t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ d S )Nz192.0.2.0/255.255.254.0192.0.2.0/23z192.0.2.65/255.255.254.0z192.0.2.65/23z192.0.2.65/255.255.255.0z192.0.2.65/24r[   r\   r"   r    test_ipnetwork_equality_v4rw      s    .//9^3L3LLLLL/00In4M4MMMMM/00Io4N4NNNNN/00In4M4MMMMM/00Io4N4NNNNNNNr"   c                  ~   t          d          t          d          dft          d          t          d          dft          d          t          d          dft          d          t          d          dft          d          t          d          dffD ]#\  } }}| |v |u sJ t          |           |v |u sJ $d S )Nr   r-   Tr/   rv   F)r   r   r   )whatr%   rL   s      r    test_ip_network_membership_v4rz     s    	;		>!:!:DA	=	!	!9^#<#<dC	>	"	"In$=$=tD	>	"	"In$=$=tD	>	"	"In$=$=uE" 0 0gv F****D		W$/////0 0r"   c                     t          d          t          d          k    sJ t          d          t          d          usJ t          d          t          d          k    rJ t          d          t          d          usJ d S )Nr-   r[   r\   r"   r    test_ip_network_equality_v4r|     s    ^$$	.(A(AAAAA^$$In,E,EEEEE((In,E,EEEEE((In,E,EEEEEEEr"   c                     t          d          t          d          k    sJ t          dd          t          d          k    sJ t          dd          t          d          k    sJ t          d          t          d          k    sJ d S )Nr   rp   r      z::1
   z0.0.0.10r   r\   r"   r    %test_ipaddress_integer_constructor_v4r     s    Q<<9Y//////Q??i	222222Q??i......R==Ij11111111r"   c                  $   t          d          t          d          k    sJ t          dd          t          d          k    sJ t          d          t          d          k    sJ t          ddz  dz
            t          d	          k    sJ d S )
Nl    z::1:ffff:ffff    r~   z::255.255.255.255r      r   z'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffffr   r\   r"   r    %test_ipaddress_integer_constructor_v6r     s    [!!Y%?%?????Z##y1D'E'EEEEE[!!Y%?%?????QVaZ  I.W$X$XXXXXXXr"   c                     t          dt                    t          d          k    sJ t          dt                    t          d          k    sJ t          dt                    t          d          k    sJ t          dt                    t          d          k    sJ t          dt                    t          d          k    sJ t          dt                    t          d          k    sJ t          d	t                    t          d          k    sJ t          d
t                    t          d          k    sJ d S )Nz0x7f.0x1flagsz	127.0.0.1z0x7f.0x0.0x0.0x10177.01	0x7f.0.01127z	0.0.0.127z127.1z127.0.1)r   r   r\   r"   r    'test_ipaddress_inet_aton_constructor_v4r   $  s;   Zy111Y{5K5KKKKK'y999Y{=S=SSSSSYi000Ik4J4JJJJJ[	222i6L6LLLLL U),,,	+0F0FFFFFU),,,	+0F0FFFFFWI...)K2H2HHHHHYi000Ik4J4JJJJJJJr"   address)	r   r   10z10.1z10.0.1z	010.0.0.1z	10.01.0.1z	10.0.00.1z	10.0.1.01c                    t          j        t                    5  t          | t                     d d d            n# 1 swxY w Y   t          j        t                    5  t          |            d d d            d S # 1 swxY w Y   d S )Nr   )r`   ra   r   r   r   )r   s    r    =test_ipaddress_inet_pton_constructor_v4_rejects_invalid_inputr   1  s     
	'	' , ,'++++, , , , , , , , , , , , , , , 
	'	'  '                 s!   =AA!A>>BBc                  X    t          dt                    t          d          k    sJ d S )NrW   r   )r   r   r\   r"   r    ;test_ipaddress_inet_pton_constructor_v4_accepts_valid_inputr   G  s.    Zy111Yz5J5JJJJJJJr"   c                     t          dt                    t          d          k    sJ t          dt          t          z            t          d          k    sJ t          dt          t          z            t          d          k    sJ t          j        t
                    5  t          dt                    sJ 	 d d d            n# 1 swxY w Y   t          j        t
                    5  t          dt          t          z            sJ 	 d d d            n# 1 swxY w Y   t          dt          t          z            t          d          k    sJ d S )Nz010.000.000.001r   z8.0.0.1rW   z010.000.001)r   r   r	   r`   ra   r   r   r\   r"   r    0test_ipaddress_constructor_zero_filled_octets_v4r   K  s   &i888Ii<P<PPPPP&i(.BCCCyQ[G\G\\\\\])h*>???9ZCXCXXXXX		'	' 8 8h77777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
	'	' D Di(.BCCCCCCCD D D D D D D D D D D D D D D &i(.BCCCyQ[G\G\\\\\\\s$   %CCC/!DD!$D!c                     t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          t          d                    t          d          k    sJ t          t          d                    t          d          k    sJ d S )Nr-   z192.0.2.0/255.255.255.0z192.0.2.0/0.0.0.255r[   r\   r"   r    test_ipnetwork_constructor_v4r   Y  s    ^$$	.(A(AAAAA.//9^3L3LLLLL*++y/H/HHHHHY~..//9^3L3LLLLLY~..//9^3L3LLLLLLLr"   c                      t          j        t                    5  t          d           d d d            d S # 1 swxY w Y   d S )Nfoor`   ra   r   r   r\   r"   r    %test_ipnetwork_bad_string_constructorr   a  s    		'	'  %                 s   7;;c                  ^   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          dd          t          d          k    sJ t          dd          t          d          k    sJ t          dd          t          d          k    sJ d S )	Nz10/8T)expand_partialz
10.0.0.0/8z10.20/16z10.20.0.0/16z10.20.30/24z10.20.30.0/24r   r\   r"   r     test_ipnetwork_expand_partial_v4r   f  s    		'	'  &              VD111Y|5L5LLLLLZ555>9R9RRRRR]4888Io<V<VVVVVVVs   6::c                  v   t          d                                          dk    sJ t          d                                          dk    sJ t          d                                          dk    sJ t          d                                          dk    sJ t          d	                                          d
k    sJ t          d                                          dk    sJ t          d                                          dk    sJ t          d                                          dk    sJ d S )Nr,   r   z	128.0.0.0r   rf   r8   re      r0      z255.255.255.254   r+       z1.1.1.1)r   netmask_bitsr\   r"   r    test_ipaddress_netmask_v4r   n  s2   Y,,..!3333[!!..00A5555[!!..00A5555]##0022b8888_%%2244::::&''4466"<<<<&''4466"<<<<Y,,.."444444r"   c                      t          t          d                    dk    sJ t          t          d                    dk    sJ d S )Nr   0x0r   
0xffffffff)r   r   r\   r"   r    test_ipaddress_hex_formatr   z  sH    y||%%%%y$$%%555555r"   c                      t          t          d                    dk    sJ t          t          d                    dk    sJ d S )Nr   0o37777777777r   0o0)octr   r\   r"   r    test_ipaddress_oct_formatr     sH    y$$%%8888y||%%%%%%r"   c                     t          d          } | j        j        d         j        dk    sJ | j        j        d         j        dk    sJ | j        j        d         j        dk    sJ | j        j        d         j        dk    sJ d S )Nz224.0.1.173r   	Multicastz224/8Reserved)r   infoIPv4designationprefixstatusr   r   r   s    r    test_multicast_infor     s    	=	!	!B7<?&+55557<?!W,,,,7<?!Z////7Q'=888888r"   c                  &   t          d          } | t          d          k    sJ t          j        |           }t          j        |          }|| k    sJ t	          |          t	          |           k    sJ |j        dk    sJ |j        dk    sJ d S )Nr   r   r   )r   pickledumpsloadsidr#   r   )r   bufip2s      r    test_ipaddress_pickling_v4r     s    	:		B;''''''
,r

C
,s

C"9999c77bff9
"""";!r"   c                  @   t          d          } | t          d          k    sJ t          j        |           }t          j        |          }|| k    sJ t	          |          t	          |           k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr-   l       r   r   )r   r   r   r   r   r#   	prefixlenr   )r&   r   cidr2s      r    test_ipnetwork_pickling_v4r     s    ^$$D9^,,,,,,
,t

CLED====e994    ;*$$$$?b    =Ar"   c                      t          d          } g }t          d          D ])}|                    t          |                      | dz  } *|g dk    sJ d S )N192.0.2.0/28r   r   )r   z192.0.2.16/28z192.0.2.32/28z192.0.2.48/28z192.0.2.64/28z192.0.2.80/28z192.0.2.96/28z192.0.2.112/28rO   z192.0.2.144/28z192.0.2.160/28z192.0.2.176/28z192.0.2.192/28z192.0.2.208/28z192.0.2.224/28z192.0.2.240/28)r   rangeappendr   )r   resultsis      r    "test_ipnetwork_incrementing_by_intr     s|    	>	"	"BG2YY  s2ww
a         r"   c                     t          d          j        t          d          k    sJ t          d          j        J t	          t          d                                                    t          d          t          d          gk    sJ t          d          j        t          d          k    sJ t          d          j        J t	          t          d                                                    t          d          gk    sJ d S )Nz192.0.2.0/31r.   r   z192.0.2.0/32)r   r%   r   r'   r=   rm   r\   r"   r    test_rfc3021_subnetsr     s   ^$$,	+0F0FFFFF^$$.666	.))446677++<     ^$$,	+0F0FFFFF^$$.666	.))446677Ik<R<R;SSSSSSSr"   c                      t          d          } | j        dk    sJ d| _        | j        dk    sJ t          d          } | j        dk    sJ d| _        | j        dk    sJ d S )N192.168.0.0/16r   r8   dead:beef::/16@   )r   r   r   s    r    test_ipnetwork_change_prefixlenr     s~    	#	$	$B<2BL<1	#	$	$B<2BL<2r"   c                      t          d          } d| _        | j        dk    sJ t          d          } d| _        | j        dk    sJ d S )Nr   rf   r8   r   zffff:ffff:ffff:ffff::r   )r   r(   r   r   s    r    test_ipnetwork_change_netmaskr     sX    	#	$	$BBJ<1	#	$	$B(BJ<2r"   c                      t          d          t          d          ddg} t          |           t          d          k    sJ t          t          |                     t          d          k    sJ d S )NrW   r_   z10.0.0.3z10.0.0.4z10.0.0.0/29)r   r   r   reversed)	addressess    r    "test_spanning_cidr_handles_stringsr     sy     	**	I ##y'?'?????),,--=1I1IIIIIIIr"   c                  |    t          t          d          t                    j        t          d          k    sJ d S )Nz192.168.0.1/24r   rl   )r   r
   r   r   r\   r"   r    test_ipnetwork_nohostr     s;    Y/00???BiP]F^F^^^^^^^r"   )4r   rJ   rQ   r`   netaddrr   r   r   r   r   r   r	   r
   r!   markparametrizer5   r?   rB   rM   rU   rY   r]   rc   rj   rn   rr   rt   rw   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   r"   r    <module>r      s      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& & & V Ik""Ik""In%%I'((Ii  		
 Ik""Ik""In%%Im$$Io&&Ik""		
 Im$$Ik""In%%Im$$Io&&Ik""		
+" "F G" "F  &- - - 		
 5 5 5  .  2E E E  BM M MX X X,. . .( ( (O O O	0 	0 	0F F F2 2 2Y Y Y
K 
K 
K 
 
 
   K K K] ] ]M M M  
W W W	5 	5 	56 6 6
& & &
9 9 9
 
 
    6T T T	 	 	  
J 
J 
J_ _ _ _ _r"   