dnspython
library, as of v2.1.0rc1
(the latest version as of November, 9, 2020), doesn't support this type of a zone style per se.
Going down your stack trace for the to_text()
call:
dns/zone.py#622:
to_text()
dns/zone.py#586:
to_file()
dns/node.py#53:
to_text()
dns/rdataset.py#233:
to_text()
— this is where the actual formatting is being done:
for rd in self:
extra = ''
if want_comments:
if rd.rdcomment:
extra = f' ;{rd.rdcomment}'
s.write('%s%s%d %s %s %s%s\n' %
(ntext, pad, self.ttl, dns.rdataclass.to_text(rdclass),
dns.rdatatype.to_text(self.rdtype),
rd.to_text(origin=origin, relativize=relativize,
**kw),
extra))
So, as you can see, self.ttl
is included into the rdataset
text output invariably.
What you can do though is iterate over the zone, creating a zone file of your preferred style yourself — or make changes directly to the to_text()
output which is a standardized zone description and thus is stable enough to be processed automatically. Quick example of how that could look:
zone_lines = ['$TTL %s' % zone['@'].rdatasets[0].ttl]
for rdat in zone.to_text().decode('ascii').strip().split('\n'):
rdat_params = rdat.split(' ')
rdat_params.pop(1)
zone_lines.append(' '.join(rdat_params))
zone_text = '\n'.join(zone_lines)
You can also create a feature request for the dnspython
project on Github. The author would then consider your feature request, they have been quite responsive recently.