in causalml/inference/tree/_tree/_tree.pyx [0:0]
def _all_compatible_dtype_dicts(dtype):
# The Cython code for decision trees uses platform-specific SIZE_t
# typed indexing fields that correspond to either i4 or i8 dtypes for
# the matching fields in the numpy array depending on the bitness of
# the platform (32 bit or 64 bit respectively).
#
# We need to cast the indexing fields of the NODE_DTYPE-dtyped array at
# pickle load time to enable cross-bitness deployment scenarios. We
# typically want to make it possible to run the expensive fit method of
# a tree estimator on a 64 bit server platform, pickle the estimator
# for deployment and run the predict method of a low power 32 bit edge
# platform.
#
# A similar thing happens for endianness, the machine where the pickle was
# saved can have a different endianness than the machine where the pickle
# is loaded
dtype_dict = _dtype_to_dict(dtype)
dtype_dict_with_modified_bitness = _dtype_dict_with_modified_bitness(dtype_dict)
dtype_dict_with_modified_endianness = _dtype_to_dict(dtype.newbyteorder())
dtype_dict_with_modified_bitness_and_endianness = _dtype_dict_with_modified_bitness(
dtype_dict_with_modified_endianness
)
return [
dtype_dict,
dtype_dict_with_modified_bitness,
dtype_dict_with_modified_endianness,
dtype_dict_with_modified_bitness_and_endianness,
]