summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035>2011-09-08 22:50:08 +0000
committerpmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035>2011-09-08 22:50:08 +0000
commitea53e856d74307518d4b4499e1a883c6ffed2d20 (patch)
treeb364c924570d2a29b210889b30fdee59e952e789
parent272ab88844ff041308c1085e1676e8b525cdeb8b (diff)
downloadipaddr-py-ea53e856d74307518d4b4499e1a883c6ffed2d20.tar.gz
remove the ip attribute from the network objects. make collpase_address_list work. still need to figure out how to handle type-promotion
git-svn-id: https://ipaddr-py.googlecode.com/svn@228 09200d28-7f98-11dd-ad27-0f66e57d2035
-rw-r--r--branches/3144/ipaddr.py39
1 files changed, 38 insertions, 1 deletions
diff --git a/branches/3144/ipaddr.py b/branches/3144/ipaddr.py
index ca6bdf2..00b118c 100644
--- a/branches/3144/ipaddr.py
+++ b/branches/3144/ipaddr.py
@@ -387,7 +387,10 @@ def collapse_address_list(addresses):
if ips and ips[-1]._version != ip._version:
raise TypeError("%s and %s are not of the same version" % (
str(ip), str(ips[-1])))
- ips.append(ip.ip)
+ try:
+ ips.append(ip.ip)
+ except AttributeError:
+ ips.append(ip.network_address)
else:
if nets and nets[-1]._version != ip._version:
raise TypeError("%s and %s are not of the same version" % (
@@ -1429,6 +1432,23 @@ class IPv4Interface(_BaseV4, _BaseNetwork):
class IPv4Network(IPv4Interface):
def __init__(self, address):
IPv4Interface.__init__(self, address, strict=True)
+ del self.__dict__['ip']
+
+ def __str__(self):
+ return '%s/%d' % (str(self.network_address),
+ self.prefixlen)
+
+ @property
+ def with_prefixlen(self):
+ return '%s/%d' % (str(self.network_address), self._prefixlen)
+
+ @property
+ def with_netmask(self):
+ return '%s/%s' % (str(self.network_address), str(self.netmask))
+
+ @property
+ def with_hostmask(self):
+ return '%s/%s' % (str(self.network_address), str(self.hostmask))
class _BaseV6(object):
@@ -1960,3 +1980,20 @@ class IPv6Interface(_BaseV6, _BaseNetwork):
class IPv6Network(IPv6Interface):
def __init__(self, address):
IPv6Interface.__init__(self, address, strict=True)
+ del self.__dict__['ip']
+
+ def __str__(self):
+ return '%s/%d' % (str(self.network_address),
+ self.prefixlen)
+
+ @property
+ def with_prefixlen(self):
+ return '%s/%d' % (str(self.network_address), self._prefixlen)
+
+ @property
+ def with_netmask(self):
+ return '%s/%s' % (str(self.network_address), str(self.netmask))
+
+ @property
+ def with_hostmask(self):
+ return '%s/%s' % (str(self.network_address), str(self.hostmask))