Returns the signature appropriate for the request. The request is not changed by this function.

        Keyword arguments:
        request -- A request object which can be consumed by this API.
        authheaders -- A string-indexable object which contains the headers appropriate for this signature version.
        secret -- The base64-encoded secret key for the HMAC authorization.

def sign(self, request, authheaders, secret):
        """Returns the signature appropriate for the request. The request is not changed by this function.

        Keyword arguments:
        request -- A request object which can be consumed by this API.
        authheaders -- A string-indexable object which contains the headers appropriate for this signature version.
        secret -- The base64-encoded secret key for the HMAC authorization.
        """
        mac = hmac.HMAC(secret.encode('utf-8'), digestmod=self.digest)
        mac.update(self.signable(request, authheaders).encode('utf-8'))
        digest = mac.digest()
        return base64.b64encode(digest).decode('utf-8')