From 3ea78af8e103e6538374b5e57088d397e1fe7924 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Sun, 15 Apr 2018 09:58:36 -0700 Subject: [PATCH] pycodestyle updates, mostly escaping \, couple r's, ignore break on binary --- octodns/provider/cloudflare.py | 4 ++-- octodns/provider/digitalocean.py | 4 ++-- octodns/provider/dnsmadeeasy.py | 4 ++-- octodns/provider/googlecloud.py | 4 ++-- octodns/provider/ns1.py | 4 ++-- octodns/provider/ovh.py | 6 +++--- octodns/provider/rackspace.py | 4 ++-- octodns/provider/route53.py | 2 +- octodns/source/tinydns.py | 4 ++-- octodns/zone.py | 2 +- script/lint | 2 +- tests/test_octodns_provider_ns1.py | 8 ++++---- tests/test_octodns_provider_ovh.py | 30 +++++++++++++++--------------- tests/test_octodns_record.py | 12 ++++++------ 14 files changed, 45 insertions(+), 45 deletions(-) diff --git a/octodns/provider/cloudflare.py b/octodns/provider/cloudflare.py index a8dda5d..c51e61c 100644 --- a/octodns/provider/cloudflare.py +++ b/octodns/provider/cloudflare.py @@ -129,7 +129,7 @@ class CloudflareProvider(BaseProvider): return { 'ttl': records[0]['ttl'], 'type': _type, - 'values': [r['content'].replace(';', '\;') for r in records], + 'values': [r['content'].replace(';', '\\;') for r in records], } def _data_for_CAA(self, _type, records): @@ -296,7 +296,7 @@ class CloudflareProvider(BaseProvider): def _contents_for_TXT(self, record): for value in record.values: - yield {'content': value.replace('\;', ';')} + yield {'content': value.replace('\\;', ';')} def _contents_for_CNAME(self, record): yield {'content': record.value} diff --git a/octodns/provider/digitalocean.py b/octodns/provider/digitalocean.py index 052a6b9..e71e87f 100644 --- a/octodns/provider/digitalocean.py +++ b/octodns/provider/digitalocean.py @@ -198,7 +198,7 @@ class DigitalOceanProvider(BaseProvider): } def _data_for_TXT(self, _type, records): - values = [value['data'].replace(';', '\;') for value in records] + values = [value['data'].replace(';', '\\;') for value in records] return { 'ttl': records[0]['ttl'], 'type': _type, @@ -298,7 +298,7 @@ class DigitalOceanProvider(BaseProvider): # have to strip them here and add them when going the other way for value in record.values: yield { - 'data': value.replace('\;', ';'), + 'data': value.replace('\\;', ';'), 'name': record.name, 'ttl': record.ttl, 'type': record._type diff --git a/octodns/provider/dnsmadeeasy.py b/octodns/provider/dnsmadeeasy.py index 550aa0b..b439931 100644 --- a/octodns/provider/dnsmadeeasy.py +++ b/octodns/provider/dnsmadeeasy.py @@ -190,7 +190,7 @@ class DnsMadeEasyProvider(BaseProvider): } def _data_for_TXT(self, _type, records): - values = [value['value'].replace(';', '\;') for value in records] + values = [value['value'].replace(';', '\\;') for value in records] return { 'ttl': records[0]['ttl'], 'type': _type, @@ -324,7 +324,7 @@ class DnsMadeEasyProvider(BaseProvider): # DNSMadeEasy does not want values escaped for value in record.chunked_values: yield { - 'value': value.replace('\;', ';'), + 'value': value.replace('\\;', ';'), 'name': record.name, 'ttl': record.ttl, 'type': record._type diff --git a/octodns/provider/googlecloud.py b/octodns/provider/googlecloud.py index b762879..82a4fcf 100644 --- a/octodns/provider/googlecloud.py +++ b/octodns/provider/googlecloud.py @@ -281,10 +281,10 @@ class GoogleCloudProvider(BaseProvider): def _data_for_SPF(self, gcloud_record): if len(gcloud_record.rrdatas) > 1: return { - 'values': [self._fix_semicolons.sub('\;', rr) + 'values': [self._fix_semicolons.sub('\\;', rr) for rr in gcloud_record.rrdatas]} return { - 'value': self._fix_semicolons.sub('\;', gcloud_record.rrdatas[0])} + 'value': self._fix_semicolons.sub('\\;', gcloud_record.rrdatas[0])} def _data_for_SRV(self, gcloud_record): return {'values': [{ diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index ca8a12a..37b8d77 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -86,7 +86,7 @@ class Ns1Provider(BaseProvider): _data_for_AAAA = _data_for_A def _data_for_SPF(self, _type, record): - values = [v.replace(';', '\;') for v in record['short_answers']] + values = [v.replace(';', '\\;') for v in record['short_answers']] return { 'ttl': record['ttl'], 'type': _type, @@ -259,7 +259,7 @@ class Ns1Provider(BaseProvider): # NS1 seems to be the only provider that doesn't want things # escaped in values so we have to strip them here and add # them when going the other way - values = [v.replace('\;', ';') for v in record.values] + values = [v.replace('\\;', ';') for v in record.values] return {'answers': values, 'ttl': record.ttl} _params_for_TXT = _params_for_SPF diff --git a/octodns/provider/ovh.py b/octodns/provider/ovh.py index 7bb3feb..ee1cef9 100644 --- a/octodns/provider/ovh.py +++ b/octodns/provider/ovh.py @@ -211,7 +211,7 @@ class OvhProvider(BaseProvider): return { 'ttl': records[0]['ttl'], 'type': "TXT", - 'values': [record['target'].replace(';', '\;') + 'values': [record['target'].replace(';', '\\;') for record in records] } @@ -295,7 +295,7 @@ class OvhProvider(BaseProvider): field_type = 'TXT' if self._is_valid_dkim(value): field_type = 'DKIM' - value = value.replace("\;", ";") + value = value.replace("\\;", ";") yield { 'target': value, 'subDomain': record.name, @@ -321,7 +321,7 @@ class OvhProvider(BaseProvider): 'n': lambda _: True, 'g': lambda _: True} - splitted = value.split('\;') + splitted = value.split('\\;') found_key = False for splitted_value in splitted: sub_split = map(lambda x: x.strip(), splitted_value.split("=", 1)) diff --git a/octodns/provider/rackspace.py b/octodns/provider/rackspace.py index 35e27dc..b9912a3 100644 --- a/octodns/provider/rackspace.py +++ b/octodns/provider/rackspace.py @@ -28,12 +28,12 @@ def remove_trailing_dot(s): def escape_semicolon(s): assert s - return string.replace(s, ';', '\;') + return string.replace(s, ';', '\\;') def unescape_semicolon(s): assert s - return string.replace(s, '\;', ';') + return string.replace(s, '\\;', ';') class RackspaceProvider(BaseProvider): diff --git a/octodns/provider/route53.py b/octodns/provider/route53.py index c99873a..5fc0faa 100644 --- a/octodns/provider/route53.py +++ b/octodns/provider/route53.py @@ -352,7 +352,7 @@ class Route53Provider(BaseProvider): def _data_for_quoted(self, rrset): return { 'type': rrset['Type'], - 'values': [self._fix_semicolons.sub('\;', rr['Value'][1:-1]) + 'values': [self._fix_semicolons.sub('\\;', rr['Value'][1:-1]) for rr in rrset['ResourceRecords']], 'ttl': int(rrset['TTL']) } diff --git a/octodns/source/tinydns.py b/octodns/source/tinydns.py index 63cafa2..8013cd4 100644 --- a/octodns/source/tinydns.py +++ b/octodns/source/tinydns.py @@ -104,7 +104,7 @@ class TinyDnsBaseSource(BaseSource): '+': 'A', '@': 'MX', } - name_re = re.compile('((?P.+)\.)?{}$'.format(zone.name[:-1])) + name_re = re.compile(r'((?P.+)\.)?{}$'.format(zone.name[:-1])) data = defaultdict(lambda: defaultdict(list)) for line in self._lines(): @@ -140,7 +140,7 @@ class TinyDnsBaseSource(BaseSource): 'record=%s', record) def _populate_in_addr_arpa(self, zone, lenient): - name_re = re.compile('(?P.+)\.{}$'.format(zone.name[:-1])) + name_re = re.compile(r'(?P.+)\.{}$'.format(zone.name[:-1])) for line in self._lines(): _type = line[0] diff --git a/octodns/zone.py b/octodns/zone.py index bed3a59..e4dc859 100644 --- a/octodns/zone.py +++ b/octodns/zone.py @@ -45,7 +45,7 @@ class Zone(object): self._records = defaultdict(set) # optional leading . to match empty hostname # optional trailing . b/c some sources don't have it on their fqdn - self._name_re = re.compile('\.?{}?$'.format(name)) + self._name_re = re.compile(r'\.?{}?$'.format(name)) self.log.debug('__init__: zone=%s, sub_zones=%s', self, sub_zones) diff --git a/script/lint b/script/lint index 431ac4e..5fd9a7d 100755 --- a/script/lint +++ b/script/lint @@ -17,5 +17,5 @@ fi SOURCES="*.py octodns/*.py octodns/*/*.py tests/*.py" -pycodestyle --ignore=E221,E241,E251,E722 $SOURCES +pycodestyle --ignore=E221,E241,E251,E722,W504 $SOURCES pyflakes $SOURCES diff --git a/tests/test_octodns_provider_ns1.py b/tests/test_octodns_provider_ns1.py index d23f91e..fc74e9e 100644 --- a/tests/test_octodns_provider_ns1.py +++ b/tests/test_octodns_provider_ns1.py @@ -432,21 +432,21 @@ class TestNs1Provider(TestCase): 'ttl': 31, 'short_answers': ['foo; bar baz; blip'] } - self.assertEquals(['foo\; bar baz\; blip'], + self.assertEquals(['foo\\; bar baz\\; blip'], provider._data_for_SPF('SPF', record)['values']) record = { 'ttl': 31, 'short_answers': ['no', 'foo; bar baz; blip', 'yes'] } - self.assertEquals(['no', 'foo\; bar baz\; blip', 'yes'], + self.assertEquals(['no', 'foo\\; bar baz\\; blip', 'yes'], provider._data_for_TXT('TXT', record)['values']) zone = Zone('unit.tests.', []) record = Record.new(zone, 'spf', { 'ttl': 34, 'type': 'SPF', - 'value': 'foo\; bar baz\; blip' + 'value': 'foo\\; bar baz\\; blip' }) self.assertEquals(['foo; bar baz; blip'], provider._params_for_SPF(record)['answers']) @@ -454,7 +454,7 @@ class TestNs1Provider(TestCase): record = Record.new(zone, 'txt', { 'ttl': 35, 'type': 'TXT', - 'value': 'foo\; bar baz\; blip' + 'value': 'foo\\; bar baz\\; blip' }) self.assertEquals(['foo; bar baz; blip'], provider._params_for_TXT(record)['answers']) diff --git a/tests/test_octodns_provider_ovh.py b/tests/test_octodns_provider_ovh.py index 5a62094..d3f468d 100644 --- a/tests/test_octodns_provider_ovh.py +++ b/tests/test_octodns_provider_ovh.py @@ -280,24 +280,24 @@ class TestOvhProvider(TestCase): }) valid_dkim = [valid_dkim_key, - 'v=DKIM1 \; %s' % valid_dkim_key, - 'h=sha256 \; %s' % valid_dkim_key, - 'h=sha1 \; %s' % valid_dkim_key, - 's=* \; %s' % valid_dkim_key, - 's=email \; %s' % valid_dkim_key, - 't=y \; %s' % valid_dkim_key, - 't=s \; %s' % valid_dkim_key, - 'k=rsa \; %s' % valid_dkim_key, - 'n=notes \; %s' % valid_dkim_key, - 'g=granularity \; %s' % valid_dkim_key, + 'v=DKIM1 \\; %s' % valid_dkim_key, + 'h=sha256 \\; %s' % valid_dkim_key, + 'h=sha1 \\; %s' % valid_dkim_key, + 's=* \\; %s' % valid_dkim_key, + 's=email \\; %s' % valid_dkim_key, + 't=y \\; %s' % valid_dkim_key, + 't=s \\; %s' % valid_dkim_key, + 'k=rsa \\; %s' % valid_dkim_key, + 'n=notes \\; %s' % valid_dkim_key, + 'g=granularity \\; %s' % valid_dkim_key, ] invalid_dkim = ['p=%invalid%', # Invalid public key 'v=DKIM1', # Missing public key - 'v=DKIM2 \; %s' % valid_dkim_key, # Invalid version - 'h=sha512 \; %s' % valid_dkim_key, # Invalid hash algo - 's=fake \; %s' % valid_dkim_key, # Invalid selector - 't=fake \; %s' % valid_dkim_key, # Invalid flag - 'u=invalid \; %s' % valid_dkim_key, # Invalid key + 'v=DKIM2 \\; %s' % valid_dkim_key, # Invalid version + 'h=sha512 \\; %s' % valid_dkim_key, # Invalid hash algo + 's=fake \\; %s' % valid_dkim_key, # Invalid selector + 't=fake \\; %s' % valid_dkim_key, # Invalid flag + 'u=invalid \\; %s' % valid_dkim_key, # Invalid key ] @patch('ovh.Client') diff --git a/tests/test_octodns_record.py b/tests/test_octodns_record.py index 16da404..3facd32 100644 --- a/tests/test_octodns_record.py +++ b/tests/test_octodns_record.py @@ -1515,7 +1515,7 @@ class TestRecordValidation(TestCase): 'values': [ 'v=spf1 ip4:192.168.0.1/16-all', 'v=spf1 ip4:10.1.2.1/24-all', - 'this has some\; semi-colons\; in it', + 'this has some\\; semi-colons\\; in it', ] }) @@ -1532,7 +1532,7 @@ class TestRecordValidation(TestCase): Record.new(self.zone, '', { 'type': 'SPF', 'ttl': 600, - 'value': 'this has some; semi-colons\; in it', + 'value': 'this has some; semi-colons\\; in it', }) self.assertEquals(['unescaped ;'], ctx.exception.reasons) @@ -1677,7 +1677,7 @@ class TestRecordValidation(TestCase): 'ttl': 600, 'values': [ 'hello world', - 'this has some\; semi-colons\; in it', + 'this has some\\; semi-colons\\; in it', ] }) @@ -1694,7 +1694,7 @@ class TestRecordValidation(TestCase): Record.new(self.zone, '', { 'type': 'TXT', 'ttl': 600, - 'value': 'this has some; semi-colons\; in it', + 'value': 'this has some; semi-colons\\; in it', }) self.assertEquals(['unescaped ;'], ctx.exception.reasons) @@ -1724,7 +1724,7 @@ class TestRecordValidation(TestCase): 'values': [ 'hello world', long_value, - 'this has some\; semi-colons\; in it', + 'this has some\\; semi-colons\\; in it', ] }) self.assertEquals(3, len(single.values)) @@ -1749,7 +1749,7 @@ class TestRecordValidation(TestCase): 'values': [ '"hello world"', long_split_value, - '"this has some\; semi-colons\; in it"', + '"this has some\\; semi-colons\\; in it"', ] }) self.assertEquals(expected, chunked.chunked_values[0])