code: def _set_default_phe(self):
      if "phe" not in self._cipher_mapping:
          self._cipher_mapping["phe"] = {}
      if self._device not in self._cipher_mapping["phe"]:
          if self._device == device_type.CPU:
              self._cipher_mapping["phe"][device_type.CPU] = {
                  "kind": "paillier",
                  "key_length": cfg.safety.phe.paillier.minimum_key_size,
              }
          else:
              logger.warning(
                  f"no impl exists for device {self._device}, fallback to CPU"
              )
              self._cipher_mapping["phe"][
                  device_type.CPU
              ] = self._cipher_mapping["phe"].get(
                  device_type.CPU,
                  {
                      "kind": "paillier",
                      "key_length": cfg.safety.phe.paillier.minimum_key_size,
                  },
              )
  
imports: import logging
  import typing
  from fate.arch.config import cfg
  from ..unify import device
label_desc: Use image node_id 4 for calling the CipherKit obj's underlying member method code with example usage: obj._set_default_phe() without return types