Skip to content

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