def create_human_sim_info(gender: Gender = None,
                              age: Age = None,
                              first_name: str = None,
                              last_name: str = None,
                              trait_ids: Tuple[int] = (),
                              household: Household = None,
                              source: str = 'testing') -> Union[SimInfo, None]:
        """create_human_sim_info(\
            gender=None,\
            age=None,\
            species=None,\
            first_name=None,\
            last_name=None,\
            trait_ids=(),\
            household=None,\
            source='testing'\
        )

        Create SimInfo for a Human Sim.

        :param gender: The Gender of the created Sim.
        :type gender: Gender, optional
        :param age: The Age of the created Sim.
        :type age: Age, optional
        :param first_name: The First Name of the created Sim.
        :type first_name: str, optional
        :param last_name: The Last Name of the created Sim.
        :type last_name: str, optional
        :param trait_ids: The decimal identifiers of the Traits to add to the created Sim.
        :type trait_ids: Tuple[int], optional
        :param household: The household to place the created Sim in. If None, the Sim will be placed in a hidden household.
        :type household: Household, optional
        :param source: The reason for the Sims creation.
        :type source: str, optional
        :return: The SimInfo of the created Sim or None if the Sim failed to be created.
        :rtype: SimInfo
        """
        from sims4communitylib.utils.sims.common_household_utils import CommonHouseholdUtils
        household = household or CommonHouseholdUtils.create_empty_household(
            as_hidden_household=True)
        sim_creator = SimCreator(
            gender=gender,
            age=age,
            first_name=first_name
            or SimSpawner.get_random_first_name(gender, Species.HUMAN),
            last_name=last_name,
            traits=trait_ids)
        (sim_info_list, _) = SimSpawner.create_sim_infos(
            (sim_creator, ),
            household=household,
            generate_deterministic_sim=True,
            creation_source=source)
        if not sim_info_list:
            return None
        return sim_info_list[0]
 def save(self,
          mod_identity: CommonModIdentity,
          data: Dict[str, Any],
          identifier: str = None) -> bool:
     data_name = self._format_data_name(mod_identity, identifier=identifier)
     self.log.format_with_message('Saving data.', data_name=data_name)
     self.log.format_with_message('Attempting to locate data.',
                                  data_name=data_name)
     persisted_data_storage = CommonHouseholdUtils.locate_household_by_name(
         data_name)
     if persisted_data_storage is None:
         self.log.debug(
             'No persisted data found, creating new persisted data.')
         persisted_data_storage = CommonHouseholdUtils.create_empty_household(
             as_hidden_household=True)
         if persisted_data_storage is None:
             self.log.debug('Failed to persisted data.')
             return False
         self.log.debug(
             'Persisted data created successfully. Setting properties.')
         persisted_data_storage.name = data_name
         persisted_data_storage.creator_id = 0
         persisted_data_storage.creator_name = data_name
         persisted_data_storage.creator_uuid = b''
     else:
         self.log.format_with_message(
             'Found persisted data. Attempting to save data.',
             data=persisted_data_storage)
     self.log.format_with_message('Attempting to save data.',
                                  data=persisted_data_storage)
     try:
         self.log.format(data_being_saved=data)
         json_save_data = json.dumps(data)
         persisted_data_storage.description = json_save_data
     except Exception as ex:
         self.log.format_error_with_message('Failed to save data.',
                                            data_name=data_name,
                                            exception=ex)
         raise ex
     self.log.format_with_message('Done saving data.', data_name=data_name)
     return True