'Allow setting the signature version via the choose-signer event.
A value of `botocore.UNSIGNED` means no signing will be performed.
:param operation_name: The operation to sign.
:param signing_type: The type of signing that the signer is to be used
for.
:return: The signature version to sign with.'

def _choose_signer(self, operation_name, signing_type, context):

    signing_type_suffix_map = {'presign-post': '-presign-post', 'presign-url': '-query'}
    suffix = signing_type_suffix_map.get(signing_type, '')
    signature_version = self._signature_version
    if ((signature_version is not botocore.UNSIGNED) and (not signature_version.endswith(suffix))):
        signature_version += suffix
    (handler, response) = self._event_emitter.emit_until_response('choose-signer.{0}.{1}'.format(self._service_name, operation_name), signing_name=self._signing_name, region_name=self._region_name, signature_version=signature_version, context=context)
    if (response is not None):
        signature_version = response
        if ((signature_version is not botocore.UNSIGNED) and (not signature_version.endswith(suffix))):
            signature_version += suffix
    return signature_version
