mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Merge pull request #234 from github/lint-fixes
pycodestyle updates, mostly escaping \, couple r's, ignore break on binary
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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': [{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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'])
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
'+': 'A',
|
||||
'@': 'MX',
|
||||
}
|
||||
name_re = re.compile('((?P<name>.+)\.)?{}$'.format(zone.name[:-1]))
|
||||
name_re = re.compile(r'((?P<name>.+)\.)?{}$'.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<name>.+)\.{}$'.format(zone.name[:-1]))
|
||||
name_re = re.compile(r'(?P<name>.+)\.{}$'.format(zone.name[:-1]))
|
||||
|
||||
for line in self._lines():
|
||||
_type = line[0]
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'])
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user