from semanticscholar.SemanticScholarObject import SemanticScholarObject


class Dataset(SemanticScholarObject):
    '''
    This class represents a particular dataset in a release version of the Semantic Scholar Datasets.
    '''

    FIELDS = [
        'name',
        'description',
        'readme',
        'files'
    ]

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

        :param dict data: Dataset data from the API.
        '''
        super().__init__()
        self._name = None
        self._description = None
        self._readme = None
        self._files = None
        self._init_attributes(data)

    @property
    def name(self) -> str:
        '''
        Dataset name.

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

    @property
    def description(self) -> str:
        '''
        Dataset description.

        :type: :class:`str`
        '''
        return self._description
    
    @property
    def readme(self) -> str:
        '''
        Dataset README.

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

    @property
    def files(self) -> list:
        '''
        List of file urls in the dataset.

        :type: :class:`list` of :class:`str`
        '''
        return self._files

    def _init_attributes(self, data) -> None:
        self._data = data
        if 'name' in data:
            self._name = data['name']
        if 'description' in data:
            self._description = data['description']
        if 'README' in data:
            self._readme = data['README']
        if 'files' in data:
            self._files = data['files']