using ipaddress module in vlaidators

This commit is contained in:
Devaev Maxim 2020-04-22 21:28:27 +03:00
parent 1bb0d725fa
commit 820ef17871

View File

@ -20,7 +20,7 @@
# ========================================================================== # # ========================================================================== #
import socket import ipaddress
from typing import List from typing import List
from typing import Callable from typing import Callable
@ -50,9 +50,9 @@ def valid_ip(arg: Any, v4: bool=True, v6: bool=True) -> str:
assert v4 or v6 assert v4 or v6
validators: List[Callable] = [] validators: List[Callable] = []
if v4: if v4:
validators.append(lambda arg: (arg, socket.inet_pton(socket.AF_INET, arg))[0]) validators.append(lambda arg: str(ipaddress.IPv4Address(arg)))
if v6: if v6:
validators.append(lambda arg: (arg, socket.inet_pton(socket.AF_INET6, arg))[0]) validators.append(lambda arg: str(ipaddress.IPv6Address(arg)))
name = "IP address" name = "IP address"
return check_any( return check_any(
arg=valid_stripped_string_not_empty(arg, name), arg=valid_stripped_string_not_empty(arg, name),