code: def parse_users(self, user, params):
          
          if user['UserName'] in self.users:
              return
          api_client = params['api_client']
          # Ensure consistent attribute names across resource types
          user['id'] = user.pop('UserId')
          user['name'] = user.pop('UserName')
          user['arn'] = user.pop('Arn')
          policies = self.__get_inline_policies(api_client, 'user', user['id'], user['name'])
          if len(policies):
              user['inline_policies'] = policies
          user['inline_policies_count'] = len(policies)
          user['groups'] = []
          groups = handle_truncated_response(api_client.list_groups_for_user, {'UserName': user['name']}, ['Groups'])['Groups']
          for group in groups:
              user['groups'].append(group['GroupName'])
          try:
              user['LoginProfile'] = api_client.get_login_profile(UserName = user['name'])['LoginProfile']
          except Exception as e:
              pass
          user['AccessKeys'] = api_client.list_access_keys(UserName = user['name'])['AccessKeyMetadata']
          user['MFADevices'] = api_client.list_mfa_devices(UserName = user['name'])['MFADevices']
          # TODO: Users signing certss
          self.users[user['id']] = user
docs: Parse a single IAM user and fetch additional data