docs: def delete_user(iam_client, user, mfa_serial = None, keep_user = False, terminated_groups = []):
      """
      Delete IAM user
  
      :param iam_client:
      :param user:
      :param mfa_serial:
      :param keep_user:
      :param terminated_groups:
      :return:
      """
      errors = []
      printInfo('Deleting user %s...' % user)
      # Delete access keys
      try:
          aws_keys = get_access_keys(iam_client, user)
          for aws_key in aws_keys:
              try:
                  printInfo('Deleting access key ID %s... ' % aws_key['AccessKeyId'], False)
                  iam_client.delete_access_key(AccessKeyId = aws_key['AccessKeyId'], UserName = user)
                  printInfo('Success')
              except Exception as e:
                  printInfo('Failed')
                  printException(e)
                  errors.append(e.response['Error']['Code'])
      except Exception as e:
          printException(e)
          printError('Failed to get access keys for user %s.' % user)
      # Deactivate and delete MFA devices
      try:
          mfa_devices = iam_client.list_mfa_devices(UserName = user)['MFADevices']
          for mfa_device in mfa_devices:
              serial = mfa_device['SerialNumber']
              try:
                  printInfo('Deactivating MFA device %s... ' % serial, False)
                  iam_client.deactivate_mfa_device(SerialNumber = serial, UserName = user)
                  printInfo('Success')
              except Exception as e:
                  printInfo('Failed')
                  printException(e)
                  errors.append(e.response['Error']['Code'])
              delete_virtual_mfa_device(iam_client, serial)
          if mfa_serial:
              delete_virtual_mfa_device(iam_client, mfa_serial)
      except Exception as e:
          printException(e)
          printError('Faile to fetch/delete MFA device serial number for user %s.' % user)
          errors.append(e.response['Error']['Code'])
      # Remove IAM user from groups
      try:
          groups = iam_client.list_groups_for_user(UserName = user)['Groups']
          for group in groups:
              try:
                  printInfo('Removing from group %s... ' % group['GroupName'], False)
                  iam_client.remove_user_from_group(GroupName = group['GroupName'], UserName = user)
                  printInfo('Success')
              except Exception as e:
                  printInfo('Failed')
                  printException(e)
                  errors.append(e.response['Error']['Code'])
      except Exception as e:
          printException(e)
          printError('Failed to fetch IAM groups for user %s.' % user)
          errors.append(e.response['Error']['Code'])
      # Delete login profile
      login_profile = []
      try:
          login_profile = iam_client.get_login_profile(UserName = user)['LoginProfile']
      except Exception as e:
          pass
      try:
          if len(login_profile):
              printInfo('Deleting login profile... ', False)
              iam_client.delete_login_profile(UserName = user)
              printInfo('Success')
      except Exception as e:
          printInfo('Failed')
          printException(e)
          errors.append(e.response['Error']['Code'])
      # Delete inline policies
      try:
          printInfo('Deleting inline policies... ', False)
          policies = iam_client.list_user_policies(UserName = user)
          for policy in policies['PolicyNames']:
              iam_client.delete_user_policy(UserName = user, PolicyName = policy)
          printInfo('Success')
      except Exception as e:
          printInfo('Failed')
          printException(e)
          errors.append(e.response['Error']['Code'])
      # Detach managed policies
      try:
          printInfo('Detaching managed policies... ', False)
          policies = iam_client.list_attached_user_policies(UserName = user)
          for policy in policies['AttachedPolicies']:
              iam_client.detach_user_policy(UserName = user, PolicyArn = policy['PolicyArn'])
          printInfo('Success')
      except Exception as e:
          printInfo('Failed')
          printException(e)
          errors.append(e.response['Error']['Code'])
      # Delete IAM user
      try:
          if not keep_user:
              iam_client.delete_user(UserName = user)
              printInfo('User %s deleted.' % user)
          else:
              for group in terminated_groups:
                  add_user_to_group(iam_client, group, user)
      except Exception as e:
          printException(e)
          printError('Failed to delete user.')
          errors.append(e.response['Error']['Code'])
          pass
      return errors