From 24dc98c7fdafad5c8a81a079dd5b369a92793a01 Mon Sep 17 00:00:00 2001 From: Alex Stapleton Date: Sun, 16 Mar 2014 16:32:50 +0000 Subject: Fix circular imports with available_backends() --- cryptography/hazmat/backends/__init__.py | 33 +++++++++++++++++++++++++------- tests/conftest.py | 4 ++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py index 59d1bc6c..ffb03391 100644 --- a/cryptography/hazmat/backends/__init__.py +++ b/cryptography/hazmat/backends/__init__.py @@ -13,23 +13,42 @@ from __future__ import absolute_import, division, print_function -from cryptography.hazmat.backends import openssl from cryptography.hazmat.backends.multibackend import MultiBackend from cryptography.hazmat.bindings.commoncrypto.binding import ( Binding as CommonCryptoBinding ) +from cryptography.hazmat.bindings.openssl.binding import ( + Binding as OpenSSLBinding +) + + +_available_backends = None + -_ALL_BACKENDS = [] +def available_backends(): + global _available_backends -if CommonCryptoBinding.is_available(): - from cryptography.hazmat.backends import commoncrypto - _ALL_BACKENDS.append(commoncrypto.backend) + if _available_backends is None: + _available_backends = [] -_ALL_BACKENDS.append(openssl.backend) + if CommonCryptoBinding.is_available(): + from cryptography.hazmat.backends import commoncrypto + _available_backends.append(commoncrypto.backend) + if OpenSSLBinding.is_available(): + from cryptography.hazmat.backends import openssl + _available_backends.append(openssl.backend) -_default_backend = MultiBackend(_ALL_BACKENDS) + return _available_backends + + +_default_backend = None def default_backend(): + global _default_backend + + if _default_backend is None: + _default_backend = MultiBackend(available_backends()) + return _default_backend diff --git a/tests/conftest.py b/tests/conftest.py index 0069f2c0..c5978200 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -15,7 +15,7 @@ from __future__ import absolute_import, division, print_function import pytest -from cryptography.hazmat.backends import _ALL_BACKENDS +from cryptography.hazmat.backends import available_backends from cryptography.hazmat.backends.interfaces import ( HMACBackend, CipherBackend, HashBackend, PBKDF2HMACBackend, RSABackend ) @@ -25,7 +25,7 @@ from .utils import check_for_iface, check_backend_support, select_backends def pytest_generate_tests(metafunc): names = metafunc.config.getoption("--backend") - selected_backends = select_backends(names, _ALL_BACKENDS) + selected_backends = select_backends(names, available_backends()) if "backend" in metafunc.fixturenames: metafunc.parametrize("backend", selected_backends) -- cgit v1.2.3 From 01de3ef02b63f158b7f3718472b0f13036c584c8 Mon Sep 17 00:00:00 2001 From: Alex Stapleton Date: Sun, 16 Mar 2014 16:42:47 +0000 Subject: s/available_backends/_available_backends/ --- cryptography/hazmat/backends/__init__.py | 18 +++++++++--------- tests/conftest.py | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py index ffb03391..ae78822c 100644 --- a/cryptography/hazmat/backends/__init__.py +++ b/cryptography/hazmat/backends/__init__.py @@ -22,24 +22,24 @@ from cryptography.hazmat.bindings.openssl.binding import ( ) -_available_backends = None +_available_backends_list = None -def available_backends(): - global _available_backends +def _available_backends(): + global _available_backends_list - if _available_backends is None: - _available_backends = [] + if _available_backends_list is None: + _available_backends_list = [] if CommonCryptoBinding.is_available(): from cryptography.hazmat.backends import commoncrypto - _available_backends.append(commoncrypto.backend) + _available_backends_list.append(commoncrypto.backend) if OpenSSLBinding.is_available(): from cryptography.hazmat.backends import openssl - _available_backends.append(openssl.backend) + _available_backends_list.append(openssl.backend) - return _available_backends + return _available_backends_list _default_backend = None @@ -49,6 +49,6 @@ def default_backend(): global _default_backend if _default_backend is None: - _default_backend = MultiBackend(available_backends()) + _default_backend = MultiBackend(_available_backends()) return _default_backend diff --git a/tests/conftest.py b/tests/conftest.py index c5978200..36183f46 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -15,7 +15,7 @@ from __future__ import absolute_import, division, print_function import pytest -from cryptography.hazmat.backends import available_backends +from cryptography.hazmat.backends import _available_backends from cryptography.hazmat.backends.interfaces import ( HMACBackend, CipherBackend, HashBackend, PBKDF2HMACBackend, RSABackend ) @@ -25,7 +25,7 @@ from .utils import check_for_iface, check_backend_support, select_backends def pytest_generate_tests(metafunc): names = metafunc.config.getoption("--backend") - selected_backends = select_backends(names, available_backends()) + selected_backends = select_backends(names, _available_backends()) if "backend" in metafunc.fixturenames: metafunc.parametrize("backend", selected_backends) -- cgit v1.2.3