class_docstr: Connect4 Board.
code: def get_win_state(self):
      for player in [-1, 1]:
          player_pieces = self.np_pieces == -player
          # Check rows & columns for win
          if (
              self._is_straight_winner(player_pieces)
              or self._is_straight_winner(player_pieces.transpose())
              or self._is_diagonal_winner(player_pieces)
          ):
              return WinState(True, -player)
  
      # draw has very little value.
      if not self.get_valid_moves().any():
          return WinState(True, None)
  
      # Game is not ended yet.
      return WinState(False, None)
  
imports: import numpy
  from collections import namedtuple
label_desc: Use image node_id 5 for calling the Board obj's underlying member method code with example usage: obj.get_win_state() and returns: WinState, WinState, WinState