Mixins¶
blake2signer.mixins
¶
Mixins: abstract classes that provide certain restricted functionality.
They work as a building block for other classes.
CompressorMixin
¶
Compressor mixin.
Adds compressing capabilities to a subclass.
__init__(self, *args, *, compressor=<class 'blake2signer.compressors.ZlibCompressor'>, compression_flag=b'.', compression_ratio=5.0, **kwargs)
special
¶
Add compressing capabilities.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
Any |
Additional positional arguments. |
() |
compressor |
Type[blake2signer.interfaces.CompressorInterface] |
Compressor class to use (defaults to a Zlib compressor). |
<class 'blake2signer.compressors.ZlibCompressor'> |
compression_flag |
Union[str, bytes] |
Character to mark the payload as compressed. It must not belong to the encoder alphabet and be ASCII (defaults to "."). |
b'.' |
compression_ratio |
Union[int, float] |
Desired minimal compression ratio, between 0 and below 100 (defaults to 5). It is used to calculate when to consider a payload sufficiently compressed to detect detrimental compression. By default, if compression achieves less than 5% of size reduction, it is considered detrimental. |
5.0 |
**kwargs |
Any |
Additional keyword only arguments. |
{} |
Returns:
Type | Description |
---|---|
None |
None. |
Source code in blake2signer/mixins.py
def __init__(
self,
*args: typing.Any,
compressor: typing.Type[CompressorInterface] = ZlibCompressor,
compression_flag: typing.Union[str, bytes] = b'.',
compression_ratio: typing.Union[int, float] = 5.0,
**kwargs: typing.Any,
) -> None:
"""Add compressing capabilities.
Args:
*args: Additional positional arguments.
compressor (optional): Compressor class to use (defaults to a Zlib
compressor).
compression_flag (optional): Character to mark the payload as compressed.
It must not belong to the encoder alphabet and be ASCII (defaults
to ".").
compression_ratio (optional): Desired minimal compression ratio, between
0 and below 100 (defaults to 5). It is used to calculate when
to consider a payload sufficiently compressed to detect detrimental
compression. By default, if compression achieves less than 5% of
size reduction, it is considered detrimental.
**kwargs: Additional keyword only arguments.
Returns:
None.
"""
self._compressor = compressor()
personalisation = self._force_bytes(kwargs.get('personalisation', b''))
personalisation += self._compressor.__class__.__name__.encode()
kwargs['personalisation'] = personalisation
self._compression_flag: bytes = self._validate_comp_flag(compression_flag)
self._compression_ratio: float = self._validate_comp_ratio(compression_ratio)
super().__init__(*args, **kwargs) # type: ignore
EncoderMixin
¶
Encoder mixin.
Adds encoding capabilities to a subclass.
__init__(self, *args, *, encoder=<class 'blake2signer.encoders.B64URLEncoder'>, **kwargs)
special
¶
Add encoding capabilities.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
Any |
Additional positional arguments. |
() |
encoder |
Type[blake2signer.interfaces.EncoderInterface] |
Encoder class to use (defaults to a Base64 URL safe encoder). |
<class 'blake2signer.encoders.B64URLEncoder'> |
**kwargs |
Any |
Additional keyword only arguments. |
{} |
Returns:
Type | Description |
---|---|
None |
None. |
Source code in blake2signer/mixins.py
def __init__(
self,
*args: typing.Any,
encoder: typing.Type[EncoderInterface] = B64URLEncoder,
**kwargs: typing.Any,
) -> None:
"""Add encoding capabilities.
Args:
*args: Additional positional arguments.
encoder (optional): Encoder class to use (defaults to a Base64 URL
safe encoder).
**kwargs: Additional keyword only arguments.
Returns:
None.
"""
self._encoder = self._validate_encoder(encoder)
personalisation = self._force_bytes(kwargs.get('personalisation', b''))
personalisation += self._encoder.__class__.__name__.encode()
kwargs['personalisation'] = personalisation
super().__init__(*args, **kwargs) # type: ignore
Mixin
¶
Base class for a Blake2Signer mixin.
SerializerMixin
¶
Serializer mixin.
Adds serializing capabilities to a subclass.
__init__(self, *args, *, serializer=<class 'blake2signer.serializers.JSONSerializer'>, **kwargs)
special
¶
Add serializing capabilities.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
Any |
Additional positional arguments. |
() |
serializer |
Type[blake2signer.interfaces.SerializerInterface] |
Serializer class to use (defaults to a JSON serializer). |
<class 'blake2signer.serializers.JSONSerializer'> |
**kwargs |
Any |
Additional keyword only arguments. |
{} |
Returns:
Type | Description |
---|---|
None |
None. |
Source code in blake2signer/mixins.py
def __init__(
self,
*args: typing.Any,
serializer: typing.Type[SerializerInterface] = JSONSerializer,
**kwargs: typing.Any,
) -> None:
"""Add serializing capabilities.
Args:
*args: Additional positional arguments.
serializer (optional): Serializer class to use (defaults to a JSON
serializer).
**kwargs: Additional keyword only arguments.
Returns:
None.
"""
self._serializer = serializer()
personalisation = self._force_bytes(kwargs.get('personalisation', b''))
personalisation += self._serializer.__class__.__name__.encode()
kwargs['personalisation'] = personalisation
super().__init__(*args, **kwargs) # type: ignore