diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py index ac1143acba4..439f2418174 100644 --- a/Lib/ipaddress.py +++ b/Lib/ipaddress.py @@ -12,6 +12,7 @@ __version__ = '1.0' import functools +import types IPV4LENGTH = 32 IPV6LENGTH = 128 @@ -1124,6 +1125,7 @@ class _BaseNetwork(_IPAddressBase): return (self.network_address.is_loopback and self.broadcast_address.is_loopback) + __class_getitem__ = classmethod(types.GenericAlias) class _BaseV4: @@ -1444,6 +1446,8 @@ class IPv4Interface(IPv4Address): return '%s/%s' % (self._string_from_ip_int(self._ip), self.hostmask) + __class_getitem__ = classmethod(types.GenericAlias) + class IPv4Network(_BaseV4, _BaseNetwork): @@ -2152,6 +2156,8 @@ class IPv6Interface(IPv6Address): def is_loopback(self): return self._ip == 1 and self.network.is_loopback + __class_getitem__ = classmethod(types.GenericAlias) + class IPv6Network(_BaseV6, _BaseNetwork): diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index d8acdee2da3..535c2492574 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -7,6 +7,7 @@ from collections import ( ) from collections.abc import * from contextlib import AbstractContextManager, AbstractAsyncContextManager +from ipaddress import IPv4Network, IPv4Interface, IPv6Network, IPv6Interface from itertools import chain from os import DirEntry from re import Pattern, Match @@ -36,6 +37,9 @@ class BaseTest(unittest.TestCase): Mapping, MutableMapping, MappingView, KeysView, ItemsView, ValuesView, Sequence, MutableSequence, + MappingProxyType, + DirEntry, + IPv4Network, IPv4Interface, IPv6Network, IPv6Interface, MappingProxyType, DirEntry, chain, ):