get_canonical_key returns the canonical form of a key given a key id.
        For example, '12345' maps to shard 6. The canonical key at index 6
        (say '12') is the canonical key id given the key id of '12345'. This
        is useful for sets that need to exist on all shards. See
        compute_canonical_key_ids for how these are calculated.

        Keyword arguments:
        key_type -- the type of key (e.g. 'canceled')
        key_id -- the key id (e.g. '12345')

        returns the canonical key string (e.g. 'canceled:{12}')

def get_canonical_key(self, key_type, key_id):
        """
        get_canonical_key returns the canonical form of a key given a key id.
        For example, '12345' maps to shard 6. The canonical key at index 6
        (say '12') is the canonical key id given the key id of '12345'. This
        is useful for sets that need to exist on all shards. See
        compute_canonical_key_ids for how these are calculated.

        Keyword arguments:
        key_type -- the type of key (e.g. 'canceled')
        key_id -- the key id (e.g. '12345')

        returns the canonical key string (e.g. 'canceled:{12}')
        """
        canonical_key_id = self.get_canonical_key_id(key_id)
        return self.get_key(key_type, canonical_key_id)