action data
        :param action: action object(type:Beautifulsoup)
        :param game: MLBAM Game object
        :param rosters: Game Rosters
        :param inning_number: Inning Number
        :param inning_id: Inning Id(0:home 1:away)
        :return: {
            'retro_game_id': Retrosheet Game id
            'game_type': Game Type(S/R/F/D/L/W)
            'game_type_des': Game Type Description
            (Spring Training or Regular Season or Wild-card Game or Divisional Series or LCS or World Series)
            'st_fl': Spring Training FLAG(T or F)
            'regseason_fl': Regular Season FLAG(T or F)
            'playoff_fl': Play Off Flag(T or F)
            'local_game_time': Game Time(UTC -5)
            'game_id': Game Id
            'home_team_id': Home Team Id
            'home_team_lg': Home Team league(AL or NL)
            'away_team_id': Away Team Id
            'away_team_lg': Away Team league(AL or NL)
            'home_team_name': Home Team Name
            'away_team_name': Away Team Name
            'home_team_name_full': Home Team Name(Full Name)
            'away_team_name_full': Away Team Name(Full Name)
            'interleague_fl': Inter League Flag(T or F)
            'park_id': Park Id
            'park_name': Park Name
            'park_loc': Park Location
            'b': Ball Count
            's': Strike count
            'o': Out count
            'des': Description
            'event': Event Action
            'player_mlbid': Player Id
            'player_first_name': Player First Name
            'player_last_name': Player Last Name
            'player_box_name': Player Box Name
            'pitch': Pitch count
            'event_num': Event Sequence Number(atbat, pitch, action)
            'home_team_runs': Score(Home)
            'away_team_runs': Score(Away)
        }

def action(cls, action, game, rosters, inning_number, inning_id):
        """
        action data
        :param action: action object(type:Beautifulsoup)
        :param game: MLBAM Game object
        :param rosters: Game Rosters
        :param inning_number: Inning Number
        :param inning_id: Inning Id(0:home 1:away)
        :return: {
            'retro_game_id': Retrosheet Game id
            'game_type': Game Type(S/R/F/D/L/W)
            'game_type_des': Game Type Description
            (Spring Training or Regular Season or Wild-card Game or Divisional Series or LCS or World Series)
            'st_fl': Spring Training FLAG(T or F)
            'regseason_fl': Regular Season FLAG(T or F)
            'playoff_fl': Play Off Flag(T or F)
            'local_game_time': Game Time(UTC -5)
            'game_id': Game Id
            'home_team_id': Home Team Id
            'home_team_lg': Home Team league(AL or NL)
            'away_team_id': Away Team Id
            'away_team_lg': Away Team league(AL or NL)
            'home_team_name': Home Team Name
            'away_team_name': Away Team Name
            'home_team_name_full': Home Team Name(Full Name)
            'away_team_name_full': Away Team Name(Full Name)
            'interleague_fl': Inter League Flag(T or F)
            'park_id': Park Id
            'park_name': Park Name
            'park_loc': Park Location
            'b': Ball Count
            's': Strike count
            'o': Out count
            'des': Description
            'event': Event Action
            'player_mlbid': Player Id
            'player_first_name': Player First Name
            'player_last_name': Player Last Name
            'player_box_name': Player Box Name
            'pitch': Pitch count
            'event_num': Event Sequence Number(atbat, pitch, action)
            'home_team_runs': Score(Home)
            'away_team_runs': Score(Away)
        }
        """
        player_mlbid = MlbamUtil.get_attribute_stats(action, 'player', str, MlbamConst.UNKNOWN_FULL)
        player = rosters.get(player_mlbid)
        act = OrderedDict()
        act['retro_game_id'] = game.retro_game_id
        act['year'] = game.timestamp.year
        act['month'] = game.timestamp.month
        act['day'] = game.timestamp.day
        act['st_fl'] = game.st_fl
        act['regseason_fl'] = game.regseason_fl
        act['playoff_fl'] = game.playoff_fl
        act['game_type'] = game.game_type
        act['game_type_des'] = game.game_type_des
        act['local_game_time'] = game.local_game_time
        act['game_id'] = game.game_id
        act['home_team_id'] = game.home_team_id
        act['away_team_id'] = game.away_team_id
        act['home_team_lg'] = game.home_team_lg
        act['away_team_lg'] = game.away_team_lg
        act['interleague_fl'] = game.interleague_fl
        act['park_id'] = game.park_id
        act['park_name'] = game.park_name
        act['inning_number'] = inning_number
        act['home_id'] = inning_id
        act['park_location'] = game.park_loc
        act['b'] = MlbamUtil.get_attribute_stats(action, 'b', int, 0)
        act['s'] = MlbamUtil.get_attribute_stats(action, 's', int, 0)
        act['o'] = MlbamUtil.get_attribute_stats(action, 'o', int, 0)
        act['des'] = MlbamUtil.get_attribute_stats(action, 'des', str, MlbamConst.UNKNOWN_FULL)
        act['event'] = MlbamUtil.get_attribute_stats(action, 'event', str, MlbamConst.UNKNOWN_FULL)
        act['player_mlbid'] = player_mlbid
        try:
            act['player_first_name'] = player.first
            act['player_last_name'] = player.last
            act['player_box_name'] = player.box_name
        except AttributeError as e:
            logging.error('Attribute Error(retro_game_id:{retro_game_id} player_mlbid:{player_mlbid})'
                          .format(**{'retro_game_id': game.retro_game_id, 'player_mlbid': player_mlbid}))
            act['player_first_name'] = MlbamConst.UNKNOWN_FULL
            act['player_last_name'] = MlbamConst.UNKNOWN_FULL
            act['player_box_name'] = MlbamConst.UNKNOWN_FULL
        act['pitch'] = MlbamUtil.get_attribute_stats(action, 'pitch', int, 0)
        act['event_num'] = MlbamUtil.get_attribute_stats(action, 'event_num', int, -1)
        act['home_team_runs'] = MlbamUtil.get_attribute_stats(action, 'home_team_runs', int, 0)
        act['away_team_runs'] = MlbamUtil.get_attribute_stats(action, 'away_team_runs', int, 0)
        return act