]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Improve rdataset/rrset repr to include rdata. 438/head
authorBrian Wellington <bwelling@xbill.org>
Wed, 1 Apr 2020 19:49:21 +0000 (12:49 -0700)
committerBrian Wellington <bwelling@xbill.org>
Wed, 1 Apr 2020 19:49:21 +0000 (12:49 -0700)
Previously, repr() of rdataset/rrset looked like this:
<DNS IN A rdataset>
<DNS IN TXT rdataset>
<DNS IN RRSIG rdataset>

<DNS example. IN A RRset>
<DNS example. IN TXT RRset>
<DNS example. IN RRSIG(NSEC) RRset>

With this patch, it they look like:
<DNS IN A rdataset: [<1.2.3.4>, <5.6.7.8>]>
<DNS IN TXT rdataset: [<"foo" "bar">, <"baz">]>
<DNS IN RRSIG(NSEC) rdataset: [<NSEC 1 3 3600 20200101000000 20030101000000 2143 foo MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWC...>]>

<DNS example. IN A RRset: [<1.2.3.4>, <5.6.7.8>]>
<DNS example. IN TXT RRset: [<"foo" "bar">, <"baz">]>
<DNS example. IN RRSIG(NSEC) RRset: [<NSEC 1 3 3600 20200101000000 20030101000000 2143 foo MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWC...>]>

Note that each rdata is truncated to 100 characters.

dns/rdataset.py
dns/rrset.py

index df08c944f20742fe3bc47efbed0956f6e6511ac6..16a8f891c73f7c1c8b5f2a9d2d26aec8070febbc 100644 (file)
@@ -143,13 +143,22 @@ class Rdataset(dns.set.Set):
         self.update_ttl(other.ttl)
         super(Rdataset, self).update(other)
 
+    def _rdata_repr(self):
+        def maybe_truncate(s):
+            if len(s) > 100:
+                return s[:100] + '...'
+            return s
+        return '[%s]' % ', '.join('<%s>' % maybe_truncate(str(rr))
+                                  for rr in self)
+
     def __repr__(self):
         if self.covers == 0:
             ctext = ''
         else:
             ctext = '(' + dns.rdatatype.to_text(self.covers) + ')'
         return '<DNS ' + dns.rdataclass.to_text(self.rdclass) + ' ' + \
-               dns.rdatatype.to_text(self.rdtype) + ctext + ' rdataset>'
+               dns.rdatatype.to_text(self.rdtype) + ctext + \
+               ' rdataset: ' + self._rdata_repr() + '>'
 
     def __str__(self):
         return self.to_text()
index 8be433963052ae7c25eb2947b7aa0676ce0f5f74..c5ed5ba4cfcbd6d12db86993a04afde85d6251c5 100644 (file)
@@ -62,7 +62,8 @@ class RRset(dns.rdataset.Rdataset):
             dtext = ''
         return '<DNS ' + str(self.name) + ' ' + \
                dns.rdataclass.to_text(self.rdclass) + ' ' + \
-               dns.rdatatype.to_text(self.rdtype) + ctext + dtext + ' RRset>'
+               dns.rdatatype.to_text(self.rdtype) + ctext + dtext + \
+               ' RRset: ' + self._rdata_repr() + '>'
 
     def __str__(self):
         return self.to_text()