# coding: utf-8

"""
    College Football Data API

    This is an API for accessing all sorts of college football data.  It currently has a wide array of data ranging from play by play to player statistics to game scores and more.  # noqa: E501

    OpenAPI spec version: 2.2.9
    Contact: admin@collegefootballdata.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class Game(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'id': 'int',
        'season': 'int',
        'week': 'int',
        'season_type': 'str',
        'start_date': 'str',
        'start_time_tbd': 'bool',
        'neutral_site': 'bool',
        'conference_game': 'bool',
        'attendance': 'int',
        'venue_id': 'int',
        'venue': 'str',
        'home_id': 'int',
        'home_team': 'str',
        'home_conference': 'str',
        'home_points': 'int',
        'home_line_scores': 'list[int]',
        'home_post_win_prob': 'float',
        'away_id': 'int',
        'away_team': 'str',
        'away_conference': 'str',
        'away_points': 'int',
        'away_line_scores': 'list[int]',
        'away_post_win_prob': 'float',
        'excitement_index': 'float'
    }

    attribute_map = {
        'id': 'id',
        'season': 'season',
        'week': 'week',
        'season_type': 'season_type',
        'start_date': 'start_date',
        'start_time_tbd': 'start_time_tbd',
        'neutral_site': 'neutral_site',
        'conference_game': 'conference_game',
        'attendance': 'attendance',
        'venue_id': 'venue_id',
        'venue': 'venue',
        'home_id': 'home_id',
        'home_team': 'home_team',
        'home_conference': 'home_conference',
        'home_points': 'home_points',
        'home_line_scores': 'home_line_scores',
        'home_post_win_prob': 'home_post_win_prob',
        'away_id': 'away_id',
        'away_team': 'away_team',
        'away_conference': 'away_conference',
        'away_points': 'away_points',
        'away_line_scores': 'away_line_scores',
        'away_post_win_prob': 'away_post_win_prob',
        'excitement_index': 'excitement_index'
    }

    def __init__(self, id=None, season=None, week=None, season_type=None, start_date=None, start_time_tbd=None, neutral_site=None, conference_game=None, attendance=None, venue_id=None, venue=None, home_id=None, home_team=None, home_conference=None, home_points=None, home_line_scores=None, home_post_win_prob=None, away_id=None, away_team=None, away_conference=None, away_points=None, away_line_scores=None, away_post_win_prob=None, excitement_index=None):  # noqa: E501
        """Game - a model defined in Swagger"""  # noqa: E501

        self._id = None
        self._season = None
        self._week = None
        self._season_type = None
        self._start_date = None
        self._start_time_tbd = None
        self._neutral_site = None
        self._conference_game = None
        self._attendance = None
        self._venue_id = None
        self._venue = None
        self._home_id = None
        self._home_team = None
        self._home_conference = None
        self._home_points = None
        self._home_line_scores = None
        self._home_post_win_prob = None
        self._away_id = None
        self._away_team = None
        self._away_conference = None
        self._away_points = None
        self._away_line_scores = None
        self._away_post_win_prob = None
        self._excitement_index = None
        self.discriminator = None

        if id is not None:
            self.id = id
        if season is not None:
            self.season = season
        if week is not None:
            self.week = week
        if season_type is not None:
            self.season_type = season_type
        if start_date is not None:
            self.start_date = start_date
        if start_time_tbd is not None:
            self.start_time_tbd = start_time_tbd
        if neutral_site is not None:
            self.neutral_site = neutral_site
        if conference_game is not None:
            self.conference_game = conference_game
        if attendance is not None:
            self.attendance = attendance
        if venue_id is not None:
            self.venue_id = venue_id
        if venue is not None:
            self.venue = venue
        if home_id is not None:
            self.home_id = home_id
        if home_team is not None:
            self.home_team = home_team
        if home_conference is not None:
            self.home_conference = home_conference
        if home_points is not None:
            self.home_points = home_points
        if home_line_scores is not None:
            self.home_line_scores = home_line_scores
        if home_post_win_prob is not None:
            self.home_post_win_prob = home_post_win_prob
        if away_id is not None:
            self.away_id = away_id
        if away_team is not None:
            self.away_team = away_team
        if away_conference is not None:
            self.away_conference = away_conference
        if away_points is not None:
            self.away_points = away_points
        if away_line_scores is not None:
            self.away_line_scores = away_line_scores
        if away_post_win_prob is not None:
            self.away_post_win_prob = away_post_win_prob
        if excitement_index is not None:
            self.excitement_index = excitement_index

    @property
    def id(self):
        """Gets the id of this Game.  # noqa: E501


        :return: The id of this Game.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this Game.


        :param id: The id of this Game.  # noqa: E501
        :type: int
        """

        self._id = id

    @property
    def season(self):
        """Gets the season of this Game.  # noqa: E501


        :return: The season of this Game.  # noqa: E501
        :rtype: int
        """
        return self._season

    @season.setter
    def season(self, season):
        """Sets the season of this Game.


        :param season: The season of this Game.  # noqa: E501
        :type: int
        """

        self._season = season

    @property
    def week(self):
        """Gets the week of this Game.  # noqa: E501


        :return: The week of this Game.  # noqa: E501
        :rtype: int
        """
        return self._week

    @week.setter
    def week(self, week):
        """Sets the week of this Game.


        :param week: The week of this Game.  # noqa: E501
        :type: int
        """

        self._week = week

    @property
    def season_type(self):
        """Gets the season_type of this Game.  # noqa: E501


        :return: The season_type of this Game.  # noqa: E501
        :rtype: str
        """
        return self._season_type

    @season_type.setter
    def season_type(self, season_type):
        """Sets the season_type of this Game.


        :param season_type: The season_type of this Game.  # noqa: E501
        :type: str
        """

        self._season_type = season_type

    @property
    def start_date(self):
        """Gets the start_date of this Game.  # noqa: E501


        :return: The start_date of this Game.  # noqa: E501
        :rtype: str
        """
        return self._start_date

    @start_date.setter
    def start_date(self, start_date):
        """Sets the start_date of this Game.


        :param start_date: The start_date of this Game.  # noqa: E501
        :type: str
        """

        self._start_date = start_date

    @property
    def start_time_tbd(self):
        """Gets the start_time_tbd of this Game.  # noqa: E501


        :return: The start_time_tbd of this Game.  # noqa: E501
        :rtype: bool
        """
        return self._start_time_tbd

    @start_time_tbd.setter
    def start_time_tbd(self, start_time_tbd):
        """Sets the start_time_tbd of this Game.


        :param start_time_tbd: The start_time_tbd of this Game.  # noqa: E501
        :type: bool
        """

        self._start_time_tbd = start_time_tbd

    @property
    def neutral_site(self):
        """Gets the neutral_site of this Game.  # noqa: E501


        :return: The neutral_site of this Game.  # noqa: E501
        :rtype: bool
        """
        return self._neutral_site

    @neutral_site.setter
    def neutral_site(self, neutral_site):
        """Sets the neutral_site of this Game.


        :param neutral_site: The neutral_site of this Game.  # noqa: E501
        :type: bool
        """

        self._neutral_site = neutral_site

    @property
    def conference_game(self):
        """Gets the conference_game of this Game.  # noqa: E501


        :return: The conference_game of this Game.  # noqa: E501
        :rtype: bool
        """
        return self._conference_game

    @conference_game.setter
    def conference_game(self, conference_game):
        """Sets the conference_game of this Game.


        :param conference_game: The conference_game of this Game.  # noqa: E501
        :type: bool
        """

        self._conference_game = conference_game

    @property
    def attendance(self):
        """Gets the attendance of this Game.  # noqa: E501


        :return: The attendance of this Game.  # noqa: E501
        :rtype: int
        """
        return self._attendance

    @attendance.setter
    def attendance(self, attendance):
        """Sets the attendance of this Game.


        :param attendance: The attendance of this Game.  # noqa: E501
        :type: int
        """

        self._attendance = attendance

    @property
    def venue_id(self):
        """Gets the venue_id of this Game.  # noqa: E501


        :return: The venue_id of this Game.  # noqa: E501
        :rtype: int
        """
        return self._venue_id

    @venue_id.setter
    def venue_id(self, venue_id):
        """Sets the venue_id of this Game.


        :param venue_id: The venue_id of this Game.  # noqa: E501
        :type: int
        """

        self._venue_id = venue_id

    @property
    def venue(self):
        """Gets the venue of this Game.  # noqa: E501


        :return: The venue of this Game.  # noqa: E501
        :rtype: str
        """
        return self._venue

    @venue.setter
    def venue(self, venue):
        """Sets the venue of this Game.


        :param venue: The venue of this Game.  # noqa: E501
        :type: str
        """

        self._venue = venue

    @property
    def home_id(self):
        """Gets the home_id of this Game.  # noqa: E501


        :return: The home_id of this Game.  # noqa: E501
        :rtype: int
        """
        return self._home_id

    @home_id.setter
    def home_id(self, home_id):
        """Sets the home_id of this Game.


        :param home_id: The home_id of this Game.  # noqa: E501
        :type: int
        """

        self._home_id = home_id

    @property
    def home_team(self):
        """Gets the home_team of this Game.  # noqa: E501


        :return: The home_team of this Game.  # noqa: E501
        :rtype: str
        """
        return self._home_team

    @home_team.setter
    def home_team(self, home_team):
        """Sets the home_team of this Game.


        :param home_team: The home_team of this Game.  # noqa: E501
        :type: str
        """

        self._home_team = home_team

    @property
    def home_conference(self):
        """Gets the home_conference of this Game.  # noqa: E501


        :return: The home_conference of this Game.  # noqa: E501
        :rtype: str
        """
        return self._home_conference

    @home_conference.setter
    def home_conference(self, home_conference):
        """Sets the home_conference of this Game.


        :param home_conference: The home_conference of this Game.  # noqa: E501
        :type: str
        """

        self._home_conference = home_conference

    @property
    def home_points(self):
        """Gets the home_points of this Game.  # noqa: E501


        :return: The home_points of this Game.  # noqa: E501
        :rtype: int
        """
        return self._home_points

    @home_points.setter
    def home_points(self, home_points):
        """Sets the home_points of this Game.


        :param home_points: The home_points of this Game.  # noqa: E501
        :type: int
        """

        self._home_points = home_points

    @property
    def home_line_scores(self):
        """Gets the home_line_scores of this Game.  # noqa: E501


        :return: The home_line_scores of this Game.  # noqa: E501
        :rtype: list[int]
        """
        return self._home_line_scores

    @home_line_scores.setter
    def home_line_scores(self, home_line_scores):
        """Sets the home_line_scores of this Game.


        :param home_line_scores: The home_line_scores of this Game.  # noqa: E501
        :type: list[int]
        """

        self._home_line_scores = home_line_scores

    @property
    def home_post_win_prob(self):
        """Gets the home_post_win_prob of this Game.  # noqa: E501


        :return: The home_post_win_prob of this Game.  # noqa: E501
        :rtype: float
        """
        return self._home_post_win_prob

    @home_post_win_prob.setter
    def home_post_win_prob(self, home_post_win_prob):
        """Sets the home_post_win_prob of this Game.


        :param home_post_win_prob: The home_post_win_prob of this Game.  # noqa: E501
        :type: float
        """

        self._home_post_win_prob = home_post_win_prob

    @property
    def away_id(self):
        """Gets the away_id of this Game.  # noqa: E501


        :return: The away_id of this Game.  # noqa: E501
        :rtype: int
        """
        return self._away_id

    @away_id.setter
    def away_id(self, away_id):
        """Sets the away_id of this Game.


        :param away_id: The away_id of this Game.  # noqa: E501
        :type: int
        """

        self._away_id = away_id

    @property
    def away_team(self):
        """Gets the away_team of this Game.  # noqa: E501


        :return: The away_team of this Game.  # noqa: E501
        :rtype: str
        """
        return self._away_team

    @away_team.setter
    def away_team(self, away_team):
        """Sets the away_team of this Game.


        :param away_team: The away_team of this Game.  # noqa: E501
        :type: str
        """

        self._away_team = away_team

    @property
    def away_conference(self):
        """Gets the away_conference of this Game.  # noqa: E501


        :return: The away_conference of this Game.  # noqa: E501
        :rtype: str
        """
        return self._away_conference

    @away_conference.setter
    def away_conference(self, away_conference):
        """Sets the away_conference of this Game.


        :param away_conference: The away_conference of this Game.  # noqa: E501
        :type: str
        """

        self._away_conference = away_conference

    @property
    def away_points(self):
        """Gets the away_points of this Game.  # noqa: E501


        :return: The away_points of this Game.  # noqa: E501
        :rtype: int
        """
        return self._away_points

    @away_points.setter
    def away_points(self, away_points):
        """Sets the away_points of this Game.


        :param away_points: The away_points of this Game.  # noqa: E501
        :type: int
        """

        self._away_points = away_points

    @property
    def away_line_scores(self):
        """Gets the away_line_scores of this Game.  # noqa: E501


        :return: The away_line_scores of this Game.  # noqa: E501
        :rtype: list[int]
        """
        return self._away_line_scores

    @away_line_scores.setter
    def away_line_scores(self, away_line_scores):
        """Sets the away_line_scores of this Game.


        :param away_line_scores: The away_line_scores of this Game.  # noqa: E501
        :type: list[int]
        """

        self._away_line_scores = away_line_scores

    @property
    def away_post_win_prob(self):
        """Gets the away_post_win_prob of this Game.  # noqa: E501


        :return: The away_post_win_prob of this Game.  # noqa: E501
        :rtype: float
        """
        return self._away_post_win_prob

    @away_post_win_prob.setter
    def away_post_win_prob(self, away_post_win_prob):
        """Sets the away_post_win_prob of this Game.


        :param away_post_win_prob: The away_post_win_prob of this Game.  # noqa: E501
        :type: float
        """

        self._away_post_win_prob = away_post_win_prob

    @property
    def excitement_index(self):
        """Gets the excitement_index of this Game.  # noqa: E501


        :return: The excitement_index of this Game.  # noqa: E501
        :rtype: float
        """
        return self._excitement_index

    @excitement_index.setter
    def excitement_index(self, excitement_index):
        """Sets the excitement_index of this Game.


        :param excitement_index: The excitement_index of this Game.  # noqa: E501
        :type: float
        """

        self._excitement_index = excitement_index

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(Game, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, Game):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
