from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from chromestatus_openapi.models.base_model import Model
from chromestatus_openapi.models.release_note_feature import ReleaseNoteFeature
from chromestatus_openapi import util

from chromestatus_openapi.models.release_note_feature import ReleaseNoteFeature  # noqa: E501

class ReleaseNotesResponse(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, milestone=None, features=None):  # noqa: E501
        """ReleaseNotesResponse - a model defined in OpenAPI

        :param milestone: The milestone of this ReleaseNotesResponse.  # noqa: E501
        :type milestone: int
        :param features: The features of this ReleaseNotesResponse.  # noqa: E501
        :type features: List[ReleaseNoteFeature]
        """
        self.openapi_types = {
            'milestone': int,
            'features': List[ReleaseNoteFeature]
        }

        self.attribute_map = {
            'milestone': 'milestone',
            'features': 'features'
        }

        self._milestone = milestone
        self._features = features

    @classmethod
    def from_dict(cls, dikt) -> 'ReleaseNotesResponse':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The ReleaseNotesResponse of this ReleaseNotesResponse.  # noqa: E501
        :rtype: ReleaseNotesResponse
        """
        return util.deserialize_model(dikt, cls)

    @property
    def milestone(self) -> int:
        """Gets the milestone of this ReleaseNotesResponse.

        Target Chromium milestone number.  # noqa: E501

        :return: The milestone of this ReleaseNotesResponse.
        :rtype: int
        """
        return self._milestone

    @milestone.setter
    def milestone(self, milestone: int):
        """Sets the milestone of this ReleaseNotesResponse.

        Target Chromium milestone number.  # noqa: E501

        :param milestone: The milestone of this ReleaseNotesResponse.
        :type milestone: int
        """
        if milestone is None:
            raise ValueError("Invalid value for `milestone`, must not be `None`")  # noqa: E501
        if milestone is not None and milestone < 1:  # noqa: E501
            raise ValueError("Invalid value for `milestone`, must be a value greater than or equal to `1`")  # noqa: E501

        self._milestone = milestone

    @property
    def features(self) -> List[ReleaseNoteFeature]:
        """Gets the features of this ReleaseNotesResponse.

        List of curated feature release notes for the milestone.  # noqa: E501

        :return: The features of this ReleaseNotesResponse.
        :rtype: List[ReleaseNoteFeature]
        """
        return self._features

    @features.setter
    def features(self, features: List[ReleaseNoteFeature]):
        """Sets the features of this ReleaseNotesResponse.

        List of curated feature release notes for the milestone.  # noqa: E501

        :param features: The features of this ReleaseNotesResponse.
        :type features: List[ReleaseNoteFeature]
        """
        if features is None:
            raise ValueError("Invalid value for `features`, must not be `None`")  # noqa: E501

        self._features = features
