code: def check_backup_count_and_state(self, site):
          
          basebackups = self.get_remote_basebackups_info(site)
          self.log.debug("Found %r basebackups", basebackups)
  
          if basebackups:
              last_backup_time = basebackups[-1]["metadata"]["start-time"]
          else:
              last_backup_time = None
  
          allowed_basebackup_count = self.config["backup_sites"][site]["basebackup_count"]
          if allowed_basebackup_count is None:
              allowed_basebackup_count = len(basebackups)
  
          while len(basebackups) > allowed_basebackup_count:
              self.log.warning("Too many basebackups: %d > %d, %r, starting to get rid of %r",
                               len(basebackups), allowed_basebackup_count, basebackups, basebackups[0]["name"])
              basebackup_to_be_deleted = basebackups.pop(0)
              pg_version = basebackup_to_be_deleted["metadata"].get("pg-version")
              last_wal_segment_still_needed = 0
              if basebackups:
                  last_wal_segment_still_needed = basebackups[0]["metadata"]["start-wal-segment"]
  
              if last_wal_segment_still_needed:
                  self.delete_remote_wal_before(last_wal_segment_still_needed, site, pg_version)
              self.delete_remote_basebackup(site, basebackup_to_be_deleted["name"], basebackup_to_be_deleted["metadata"])
          self.state["backup_sites"][site]["basebackups"] = basebackups
  
          return last_backup_time
docs: Look up basebackups from the object store, prune any extra
          backups and return the datetime of the latest backup.