From fa266c23d2e4cb6debab32107e7503c90a9fe375 Mon Sep 17 00:00:00 2001 From: Mark Tearle Date: Wed, 25 Nov 2020 22:28:35 +0800 Subject: [PATCH 1/3] Fix _is_valid_dkim_key for Python 3.9 compatibility in OVH provider base64.decodestring was deprecated and removed in Python 3.9 in favour of decodebytes (See https://bugs.python.org/issue39351 ) --- octodns/provider/ovh.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/octodns/provider/ovh.py b/octodns/provider/ovh.py index 54f62ac..0ee8e61 100644 --- a/octodns/provider/ovh.py +++ b/octodns/provider/ovh.py @@ -370,11 +370,16 @@ class OvhProvider(BaseProvider): @staticmethod def _is_valid_dkim_key(key): + result = True try: - base64.decodestring(bytearray(key, 'utf-8')) + decode = base64.decodestring + except AttributeError: + decode = base64.decodebytes + try: + result = decode(bytearray(key, 'utf-8')) except binascii.Error: - return False - return True + result = False + return result def get_records(self, zone_name): """ From 7f89c621a1200e81ee00c39f63b25072be93677f Mon Sep 17 00:00:00 2001 From: Mark Tearle Date: Wed, 25 Nov 2020 23:29:49 +0800 Subject: [PATCH 2/3] Address coverage for Python 2, tidy up variable names in _is_valid_dkim_key --- octodns/provider/ovh.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/octodns/provider/ovh.py b/octodns/provider/ovh.py index 0ee8e61..9f7cd9a 100644 --- a/octodns/provider/ovh.py +++ b/octodns/provider/ovh.py @@ -371,12 +371,11 @@ class OvhProvider(BaseProvider): @staticmethod def _is_valid_dkim_key(key): result = True + base64_decode = getattr(base64, 'decodestring', None) + base64_decode = getattr(base64, 'decodebytes', base64_decode) + try: - decode = base64.decodestring - except AttributeError: - decode = base64.decodebytes - try: - result = decode(bytearray(key, 'utf-8')) + result = base64_decode(bytearray(key, 'utf-8')) except binascii.Error: result = False return result From f9cf97e98a9da97b7ad1ca4498bffe70dd6125b0 Mon Sep 17 00:00:00 2001 From: Mark Tearle Date: Wed, 2 Dec 2020 11:25:01 +0800 Subject: [PATCH 3/3] Add python 3.9 to GitHub CI workflow to catch removed methods --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 726e2e8..f8b37ef 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [2.7, 3.7] + python-version: [2.7, 3.7, 3.9] steps: - uses: actions/checkout@master - name: Setup python