aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Stapleton <alexs@prol.etari.at>2014-03-16 16:32:50 +0000
committerAlex Stapleton <alexs@prol.etari.at>2014-03-16 16:32:50 +0000
commit24dc98c7fdafad5c8a81a079dd5b369a92793a01 (patch)
treeca88936933be6ee92cf908aa38dda04f9488fe42
parente171c5fcf47263d4aee35c555844e4c4d7aec5f0 (diff)
downloadcryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.tar.gz
cryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.tar.bz2
cryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.zip
Fix circular imports with available_backends()
-rw-r--r--cryptography/hazmat/backends/__init__.py33
-rw-r--r--tests/conftest.py4
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)