1212# pylint:disable=R0903
1313from abc import ABCMeta
1414from collections .abc import Sequence
15+ from ipaddress import IPv4Address , IPv6Address
1516from typing import Optional , Union
1617
1718from geoip2 ._internal import Model
19+ from geoip2 .types import IPAddress
1820
1921
2022class Record (Model , metaclass = ABCMeta ):
@@ -841,7 +843,7 @@ class Traits(Record):
841843 autonomous_system_organization : Optional [str ]
842844 connection_type : Optional [str ]
843845 domain : Optional [str ]
844- _ip_address : Optional [ str ]
846+ _ip_address : IPAddress
845847 is_anonymous : bool
846848 is_anonymous_proxy : bool
847849 is_anonymous_vpn : bool
@@ -912,6 +914,8 @@ def __init__(
912914 self .static_ip_score = static_ip_score
913915 self .user_type = user_type
914916 self .user_count = user_count
917+ if ip_address is None :
918+ raise TypeError ("ip_address must be defined" )
915919 self ._ip_address = ip_address
916920 if network is None :
917921 self ._network = None
@@ -923,12 +927,9 @@ def __init__(
923927 self ._prefix_len = prefix_len
924928
925929 @property
926- def ip_address (self ):
930+ def ip_address (self ) -> Union [ IPv4Address , IPv6Address ] :
927931 """The IP address for the record."""
928- if not isinstance (
929- self ._ip_address ,
930- (ipaddress .IPv4Address , ipaddress .IPv6Address ),
931- ):
932+ if not isinstance (self ._ip_address , (IPv4Address , IPv6Address )):
932933 self ._ip_address = ipaddress .ip_address (self ._ip_address )
933934 return self ._ip_address
934935
0 commit comments