from semanticscholar.SemanticScholarObject import SemanticScholarObject
from semanticscholar.Dataset import Dataset

class Release(SemanticScholarObject):
    '''
    This class represents a release version of the Semantic Scholar Datasets.
    '''

    FIELDS = [
        'release_id',
        'readme',
        'datasets'
    ]

    def __init__(self, data) -> None:
        '''
        Initialize Release object.

        :param dict data: Release data from the API.
        '''
        super().__init__()
        self._release_id = None
        self._readme = None
        self._datasets = None
        self._init_attributes(data)

    @property
    def release_id(self) -> str:
        '''
        Release identifier.

        :type: :class:`str`
        '''
        return self._release_id

    @property
    def readme(self) -> str:
        '''
        Release README.

        :type: :class:`str`
        '''
        return self._readme

    @property
    def datasets(self) -> list:
        '''
        List of datasets in this release.

        :type: :class:`list` of :class:`semanticscholar.Dataset.Dataset`
        '''
        return self._datasets

    def _init_attributes(self, data) -> None:
        self._data = data
        if 'release_id' in data:
            self._release_id = data['release_id']
        if 'README' in data:
            self._readme = data['README']
        if 'datasets' in data:
            self._datasets = [Dataset(dataset) for dataset in data['datasets']]