Computes a cross-kernel stable hash value for the given object.

    The supported data structure are the built-in list, tuple and dict types.

    Any included tuple or list, whether outer or nested, may only contain
    values of the following built-in types: bool, int, float, complex, str,
    list, tuple and dict.

    Any included dict, whether outer or nested, may only contain keys of a
    single type, which can be one the following built-in types: bool, int,
    float, str, and may only contain values of only the following built-in
    types: bool, int, float, complex, str, list, tuple, dict.

    Parameters
    ---------
    obj : bool/int/float/complex/str/dict/list/tuple
        The object for which to compute a hash value.

    Returns
    -------
    int
        The computed hash value.

def json_based_stable_hash(obj):
    """Computes a cross-kernel stable hash value for the given object.

    The supported data structure are the built-in list, tuple and dict types.

    Any included tuple or list, whether outer or nested, may only contain
    values of the following built-in types: bool, int, float, complex, str,
    list, tuple and dict.

    Any included dict, whether outer or nested, may only contain keys of a
    single type, which can be one the following built-in types: bool, int,
    float, str, and may only contain values of only the following built-in
    types: bool, int, float, complex, str, list, tuple, dict.

    Parameters
    ---------
    obj : bool/int/float/complex/str/dict/list/tuple
        The object for which to compute a hash value.

    Returns
    -------
    int
        The computed hash value.
    """
    encoded_str = json.dumps(
        obj=obj,
        skipkeys=False,
        ensure_ascii=False,
        check_circular=True,
        allow_nan=True,
        cls=None,
        indent=0,
        separators=(',', ':'),
        default=None,
        sort_keys=True,
    ).encode('utf-8')
    return hashlib.sha256(encoded_str).hexdigest()