Skip to content

Commit

Permalink
feat: add new type PublicationVenue
Browse files Browse the repository at this point in the history
  • Loading branch information
danielnsilva committed Jan 24, 2023
1 parent 19557ca commit 648bd77
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 2 deletions.
5 changes: 3 additions & 2 deletions semanticscholar/Paper.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import Any
import semanticscholar.Author
import semanticscholar.Journal
from semanticscholar.PublicationVenue import PublicationVenue
from semanticscholar.SemanticScholarObject import SemanticScholarObject
import semanticscholar.Tldr

Expand Down Expand Up @@ -356,7 +356,8 @@ def _init_attributes(self, data) -> None:
if 'publicationTypes' in data:
self._publicationTypes = data['publicationTypes']
if 'publicationVenue' in data:
self._publicationVenue = data['publicationVenue']
if data['publicationVenue'] is not None:
self._publicationVenue = PublicationVenue(data['publicationVenue'])
if 'referenceCount' in data:
self._referenceCount = data['referenceCount']
if 'references' in data:
Expand Down
84 changes: 84 additions & 0 deletions semanticscholar/PublicationVenue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
from semanticscholar.SemanticScholarObject import SemanticScholarObject


class PublicationVenue(SemanticScholarObject):
'''
This class abstracts a publication venue.
'''

def __init__(self, data: dict) -> None:
super().__init__()
self._alternate_names = None
self._alternate_urls = None
self._id = None
self._issn = None
self._name = None
self._type = None
self._url = None
self._init_attributes(data)

@property
def alternate_names(self) -> list:
'''
:type: :class:`list`
'''
return self._alternate_names

@property
def alternate_urls(self) -> list:
'''
:type: :class:`list`
'''
return self._alternate_urls

@property
def id(self) -> str:
'''
:type: :class:`str`
'''
return self._id

@property
def issn(self) -> str:
'''
:type: :class:`str`
'''
return self._issn

@property
def name(self) -> str:
'''
:type: :class:`str`
'''
return self._name

@property
def type(self) -> str:
'''
:type: :class:`str`
'''
return self._type

@property
def url(self) -> str:
'''
:type: :class:`str
'''
return self._url

def _init_attributes(self, data):
self._data = data
if 'alternate_names' in data:
self._alternate_names = data['alternate_names']
if 'alternate_urls' in data:
self._alternate_urls = data['alternate_urls']
if 'id' in data:
self._id = data['id']
if 'issn' in data:
self._issn = data['issn']
if 'name' in data:
self._name = data['name']
if 'type' in data:
self._type = data['type']
if 'url' in data:
self._url = data['url']
18 changes: 18 additions & 0 deletions tests/test_semanticscholar.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from semanticscholar.Citation import Citation
from semanticscholar.Journal import Journal
from semanticscholar.Paper import Paper
from semanticscholar.PublicationVenue import PublicationVenue
from semanticscholar.Reference import Reference
from semanticscholar.SemanticScholar import SemanticScholar
from semanticscholar.SemanticScholarException import (
Expand Down Expand Up @@ -107,6 +108,23 @@ def test_paper(self) -> None:
self.assertEqual(item.keys(), data.keys())
file.close()

def test_pubication_venue(self):
file = open('tests/data/Paper.json', encoding='utf-8')
data = json.loads(file.read())['citations'][0]['publicationVenue']
item = PublicationVenue(data)
self.assertEqual(item.alternate_names, data['alternate_names'])
self.assertEqual(item.alternate_urls, data['alternate_urls'])
self.assertEqual(item.id, data['id'])
self.assertEqual(item.issn, data['issn'])
self.assertEqual(item.name, data['name'])
self.assertEqual(item.type, data['type'])
self.assertEqual(item.url, data['url'])
self.assertEqual(item.raw_data, data)
self.assertEqual(str(item), str(data))
self.assertEqual(item['name'], data['name'])
self.assertEqual(item.keys(), data.keys())
file.close()

def test_reference(self):
file = open('tests/data/Reference.json', encoding='utf-8')
data = json.loads(file.read())
Expand Down

0 comments on commit 648bd77

Please sign in to comment.