New in version 3.1.
This module implements classes for working with IP host and network addresses, both IPv4 and IPv6.
Take an IP string or int and return an object of the correct type. Returns an IPv4 or IPv6 object.
The ipaddr parameter must be a string, bytes or integer representing the IP address in ascii, network byte order or as a number respectively. Either IPv4 or IPv6 addresses may be supplied. Integers less than 2**32 will be considered to be IPv4.
Raises ValueError if the ipaddr passed is not either an IPv4 or an IPv6 address.
Collapse a sequence of IPv4 or IPv6 objects into the most concise representation. Returns a list of IPv4 or IPv6 objects.
Example usage:
>>> collapse_address_list([IPv4('1.1.0.0/24'), IPv4('1.1.1.0/24')])
[IPv4('1.1.0.0/23')]
A generic IP address object. This base class defines the API and contains common code. Most authors should either use the IP() function or create IPv4 or IPv6 objects directly rather than using this base class.
IP address objects support the following python operators: =, !=, <, >, <=, >=, and in.
An IP address object may be used as a sequence index or as a hash key and can be converted back to an integer representation using int(). It may also be used as a sequence that yields the string representation of every IP address within the object’s subnet.
The following properties are available on all IP address objects:
The following methods are available on all IP address objects:
Remove an address from within a larger block. Returns a sorted list of IP address objects representing networks.
Examples:
>>> addr1 = IP('10.1.1.0/24')
>>> addr2 = IP('10.1.1.0/26')
>>> addr1.address_exclude(addr2)
[IP('10.1.1.64/26'), IP('10.1.1.128/25')]
>>> addr1 = IP('::1/32')
>>> addr2 = IP('::1/128')
>>> addr1.address_exclude(addr2)
[IP('::0/128'), IP('::2/127'), IP('::4/126'), IP('::8/125'),
... IP('0:0:8000::/33')]
Raises ValueError if other is not completely contained by self.
Compare this IP object’s network to another IP network. Returns -1, 0 or 1.
This compares the integer representation of the network addresses. The host bits are not considered by this method. If you want to compare host bits, you can use host_a.ip < host_b.ip.
If the IP versions of self and other are the same, returns:
eg: IPv4(‘1.1.1.0/24’) < IPv4(‘1.1.2.0/24’)
IPv6(‘1080::200C:417A’) < IPv6(‘1080::200B:417B’)
eg: IPv4(‘1.1.1.1/24’) == IPv4(‘1.1.1.2/24’)
IPv6(‘1080::200C:417A/96’) == IPv6(‘1080::200C:417B/96’)
eg: IPv4(‘1.1.1.0/24’) > IPv4(‘1.1.0.0/24’)
IPv6(‘1080::1:200C:417A/112’) > IPv6(‘1080::0:200C:417A/112’)
If the IP versions of self and other are different, returns:
Returns a list of subnets which when joined make up the current subnet.
The optional prefixlen_diff argument specifies how many bits the prefix length should be increased by. Given a /24 network and prefixlen_diff=3, for example, 8 subnets of size /27 will be returned.
If called on a host IP address rather than a network, a list containing the host itself will be returned.
Raises PrefixlenDiffInvalidError if the prefixlen_diff is out of range.
Returns a single IP object representing the supernet containing the current network.
The optional prefixlen_diff argument specifies how many bits the prefix length should be decreased by. Given a /24 network and prefixlen_diff=3, for example, a supernet with a 21 bit netmask is returned.
Raises PrefixlenDiffInvalidError if the prefixlen_diff is out of range.
This class represents and manipulates 32-bit IPv4 addresses.
Attributes:
# These examples for IPv4('1.2.3.4/27')
.ip: 16909060
.ip_ext: '1.2.3.4'
.ip_ext_full: '1.2.3.4'
.network: 16909056
.network_ext: '1.2.3.0'
.hostmask: 31 (0x1F)
.hostmask_ext: '0.0.0.31'
.broadcast: 16909087 (0x102031F)
.broadcast_ext: '1.2.3.31'
.netmask: 4294967040 (0xFFFFFFE0)
.netmask_ext: '255.255.255.224'
.prefixlen: 27
This class respresents and manipulates 128-bit IPv6 addresses.
Attributes:
# These examples are for IPv6('2001:658:22A:CAFE:200::1/64')
.ip: 42540616829182469433547762482097946625
.ip_ext: '2001:658:22a:cafe:200::1'
.ip_ext_full: '2001:0658:022a:cafe:0200:0000:0000:0001'
.network: 42540616829182469433403647294022090752
.network_ext: '2001:658:22a:cafe::'
.hostmask: 18446744073709551615
.hostmask_ext: '::ffff:ffff:ffff:ffff'
.broadcast: 42540616829182469451850391367731642367
.broadcast_ext: '2001:658:22a:cafe:ffff:ffff:ffff:ffff'
.netmask: 340282366920938463444927863358058659840
.netmask_ext: 64
.prefixlen: 64
The following exceptions are defined by this module:
See also