@@ -830,7 +830,7 @@ class Traits(Record):
830830 static_ip_score : Optional [float ]
831831 user_count : Optional [int ]
832832 user_type : Optional [str ]
833- _network : Optional [str ]
833+ _network : Optional [Union [ ipaddress . IPv4Network , ipaddress . IPv6Network ] ]
834834 _prefix_len : Optional [int ]
835835
836836 def __init__ (
@@ -881,23 +881,27 @@ def __init__(
881881 self .user_type = user_type
882882 self .user_count = user_count
883883 self .ip_address = ip_address
884- self ._network = network
884+ if network is None :
885+ self ._network = None
886+ else :
887+ self ._network = ipaddress .ip_network (network , False )
888+ # We don't construct the network using prefix_len here as that is
889+ # for database lookups. Customers using the database tend to be
890+ # much more performance sensitive than web service users.
885891 self ._prefix_len = prefix_len
886892
887893 @property
888894 def network (self ) -> Optional [Union [ipaddress .IPv4Network , ipaddress .IPv6Network ]]:
889895 """The network for the record"""
890896 # This code is duplicated for performance reasons
891897 network = self ._network
892- if isinstance ( network , ( ipaddress . IPv4Network , ipaddress . IPv6Network )) :
898+ if network is not None :
893899 return network
894900
895- if network is None :
896- ip_address = self .ip_address
897- prefix_len = self ._prefix_len
898- if ip_address is None or prefix_len is None :
899- return None
900- network = f"{ ip_address } /{ prefix_len } "
901- network = ipaddress .ip_network (network , False )
901+ ip_address = self .ip_address
902+ prefix_len = self ._prefix_len
903+ if ip_address is None or prefix_len is None :
904+ return None
905+ network = ipaddress .ip_network (f"{ ip_address } /{ prefix_len } " , False )
902906 self ._network = network
903- return network # type: ignore
907+ return network
0 commit comments