mirror of
https://github.com/saymrwulf/cryptography.git
synced 2026-05-14 20:37:55 +00:00
Add a register_interface_if decorator. (#3120)
* Add a register_interface_if decorator. * Add tests. * PEP 8.
This commit is contained in:
parent
a2bf0ea170
commit
3c35ef1ea7
2 changed files with 36 additions and 1 deletions
|
|
@ -31,6 +31,15 @@ def register_interface(iface):
|
|||
return register_decorator
|
||||
|
||||
|
||||
def register_interface_if(predicate, iface):
|
||||
def register_decorator(klass):
|
||||
if predicate:
|
||||
verify_interface(iface, klass)
|
||||
iface.register(klass)
|
||||
return klass
|
||||
return register_decorator
|
||||
|
||||
|
||||
if hasattr(int, "from_bytes"):
|
||||
int_from_bytes = int.from_bytes
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,33 @@ import pytest
|
|||
|
||||
import six
|
||||
|
||||
from cryptography.utils import InterfaceNotImplemented, verify_interface
|
||||
from cryptography.utils import (
|
||||
InterfaceNotImplemented, register_interface_if, verify_interface
|
||||
)
|
||||
|
||||
|
||||
def test_register_interface_if_true():
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class SimpleInterface(object):
|
||||
pass
|
||||
|
||||
@register_interface_if(1 == 1, SimpleInterface)
|
||||
class SimpleClass(object):
|
||||
pass
|
||||
|
||||
assert issubclass(SimpleClass, SimpleInterface) is True
|
||||
|
||||
|
||||
def test_register_interface_if_false():
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class SimpleInterface(object):
|
||||
pass
|
||||
|
||||
@register_interface_if(1 == 2, SimpleInterface)
|
||||
class SimpleClass(object):
|
||||
pass
|
||||
|
||||
assert issubclass(SimpleClass, SimpleInterface) is False
|
||||
|
||||
|
||||
class TestVerifyInterface(object):
|
||||
|
|
|
|||
Loading…
Reference in a new issue