Coverage for src/dqx_network_checks/validators.py: 100%

44 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-07-01 10:49 +0200

1import ipaddress 

2 

3 

4def validate_ipv4_address(address: str) -> bool: 

5 try: 

6 ipaddress.IPv4Address(address) 

7 return True 

8 except ipaddress.AddressValueError: 

9 return False 

10 

11 

12def validate_multicast_ipv4_address(address: str) -> bool: 

13 try: 

14 parsed_ip = ipaddress.IPv4Address(address) 

15 return parsed_ip.is_multicast 

16 except ValueError: 

17 return False 

18 

19 

20def validate_private_ipv4_address(address: str) -> bool: 

21 try: 

22 parsed_ip = ipaddress.IPv4Address(address) 

23 return parsed_ip.is_private 

24 except ValueError: 

25 return False 

26 

27 

28def validate_global_ipv4_address(address: str) -> bool: 

29 try: 

30 parsed_ip = ipaddress.IPv4Address(address) 

31 return parsed_ip.is_global 

32 except ValueError: 

33 return False 

34 

35 

36def validate_loopback_ipv4_address(address: str) -> bool: 

37 try: 

38 parsed_ip = ipaddress.IPv4Address(address) 

39 return parsed_ip.is_loopback 

40 except ValueError: 

41 return False 

42 

43 

44def validate_ipv4_network(network: str) -> bool: 

45 try: 

46 ipaddress.IPv4Network(network) 

47 return True 

48 except (ipaddress.NetmaskValueError, ipaddress.AddressValueError): 

49 return False 

50 

51 

52def validate_network_contains_ipv4_address(network: str, address: str) -> bool: 

53 try: 

54 parsed_network = ipaddress.IPv4Network(network) 

55 parsed_ip = ipaddress.IPv4Address(address) 

56 return parsed_ip in parsed_network 

57 except ValueError: 

58 return False