5
5
import datetime
6
6
import json
7
7
8
- from typing import Any , Dict , List , Optional , Union , cast
8
+ from typing import Any , Dict , List , Optional
9
9
10
10
from lxml .etree import _Element
11
11
from typeguard import typechecked
@@ -52,11 +52,11 @@ def __init__(
52
52
for field in self .__slots__ :
53
53
self .__setattr__ (field , kwargs .get (field , None ))
54
54
55
- def _extractPubMedId (self , xml_element : _Element ) -> Union [str , None , int ]:
55
+ def _extractPubMedId (self , xml_element : _Element ) -> Optional [str ]:
56
56
path = ".//PMID"
57
57
return getContentUnique (element = xml_element , path = path )
58
58
59
- def _extractTitle (self , xml_element : _Element ) -> Union [str , None , int ]:
59
+ def _extractTitle (self , xml_element : _Element ) -> Optional [str ]:
60
60
path = ".//ArticleTitle"
61
61
return getAllContent (element = xml_element , path = path )
62
62
@@ -68,35 +68,32 @@ def _extractKeywords(self, xml_element: _Element) -> List[Any]:
68
68
if keyword is not None
69
69
]
70
70
71
- def _extractJournal (self , xml_element : _Element ) -> Union [str , None , int ]:
71
+ def _extractJournal (self , xml_element : _Element ) -> Optional [str ]:
72
72
path = ".//Journal/Title"
73
73
return getContent (element = xml_element , path = path )
74
74
75
- def _extractAbstract (self , xml_element : _Element ) -> Union [str , None , int ]:
75
+ def _extractAbstract (self , xml_element : _Element ) -> Optional [str ]:
76
76
path = ".//AbstractText"
77
- return getAbstract (element = xml_element , path = path )
77
+ abstract = getAbstract (element = xml_element , path = path )
78
+ return abstract
78
79
79
- def _extractConclusions (
80
- self , xml_element : _Element
81
- ) -> Union [str , None , int ]:
80
+ def _extractConclusions (self , xml_element : _Element ) -> Optional [str ]:
82
81
path = ".//AbstractText[@Label='CONCLUSION']"
83
82
return getContent (element = xml_element , path = path )
84
83
85
- def _extractMethods (self , xml_element : _Element ) -> Union [str , None , int ]:
84
+ def _extractMethods (self , xml_element : _Element ) -> Optional [str ]:
86
85
path = ".//AbstractText[@Label='METHOD']"
87
86
return getContent (element = xml_element , path = path )
88
87
89
- def _extractResults (self , xml_element : _Element ) -> Union [str , None , int ]:
88
+ def _extractResults (self , xml_element : _Element ) -> Optional [str ]:
90
89
path = ".//AbstractText[@Label='RESULTS']"
91
90
return getContent (element = xml_element , path = path )
92
91
93
- def _extractCopyrights (
94
- self , xml_element : _Element
95
- ) -> Union [str , None , int ]:
92
+ def _extractCopyrights (self , xml_element : _Element ) -> Optional [str ]:
96
93
path = ".//CopyrightInformation"
97
94
return getContent (element = xml_element , path = path )
98
95
99
- def _extractDoi (self , xml_element : _Element ) -> Union [str , None , int ]:
96
+ def _extractDoi (self , xml_element : _Element ) -> Optional [str ]:
100
97
path = ".//ArticleId[@IdType='doi']"
101
98
return getContentUnique (element = xml_element , path = path )
102
99
@@ -128,7 +125,7 @@ def _extractPublicationDate(
128
125
129
126
def _extractAuthors (
130
127
self , xml_element : _Element
131
- ) -> List [dict [str , Union [str , None , int ]]]:
128
+ ) -> List [dict [str , Optional [str ]]]:
132
129
return [
133
130
{
134
131
"lastname" : getContent (author , ".//LastName" , None ),
@@ -145,15 +142,15 @@ def _initializeFromXML(self, xml_element: _Element) -> None:
145
142
"""Parse an XML element into an article object."""
146
143
# Parse the different fields of the article
147
144
self .pubmed_id = self ._extractPubMedId (xml_element )
148
- self .title = cast ( str , self ._extractTitle (xml_element ) )
145
+ self .title = self ._extractTitle (xml_element )
149
146
self .keywords = self ._extractKeywords (xml_element )
150
- self .journal = cast ( str , self ._extractJournal (xml_element ) )
151
- self .abstract = cast ( str , self ._extractAbstract (xml_element ) or "" )
152
- self .conclusions = cast ( str , self ._extractConclusions (xml_element ) )
153
- self .methods = cast ( str , self ._extractMethods (xml_element ) )
154
- self .results = cast ( str , self ._extractResults (xml_element ) )
155
- self .copyrights = cast ( str , self ._extractCopyrights (xml_element ) )
156
- self .doi = cast ( str , self ._extractDoi (xml_element ) )
147
+ self .journal = self ._extractJournal (xml_element )
148
+ self .abstract = self ._extractAbstract (xml_element ) or ""
149
+ self .conclusions = self ._extractConclusions (xml_element )
150
+ self .methods = self ._extractMethods (xml_element )
151
+ self .results = self ._extractResults (xml_element )
152
+ self .copyrights = self ._extractCopyrights (xml_element )
153
+ self .doi = self ._extractDoi (xml_element )
157
154
self .publication_date = self ._extractPublicationDate (xml_element )
158
155
self .authors = self ._extractAuthors (xml_element )
159
156
self .xml = xml_element
@@ -230,11 +227,11 @@ def __init__(
230
227
for field in self .__slots__ :
231
228
self .__setattr__ (field , kwargs .get (field , None ))
232
229
233
- def _extractPMCId (self , xml_element : _Element ) -> Union [str , None , int ]:
230
+ def _extractPMCId (self , xml_element : _Element ) -> Optional [str ]:
234
231
path = ".//article-meta/article-id[@pub-id-type='pmc']"
235
232
return getContentUnique (element = xml_element , path = path )
236
233
237
- def _extractTitle (self , xml_element : _Element ) -> Union [str , None , int ]:
234
+ def _extractTitle (self , xml_element : _Element ) -> Optional [str ]:
238
235
path = ".//title-group"
239
236
return getAllContent (element = xml_element , path = path )
240
237
@@ -248,38 +245,38 @@ def _extractTitle(self, xml_element: _Element) -> Union[str, None, int]:
248
245
# ]
249
246
# TODO: adapt the function for PubMed Central
250
247
# def _extractJournal
251
- # (self, xml_element: _Element) -> Union [str, None, int ]:
248
+ # (self, xml_element: _Element) -> Optional [str]:
252
249
# path = ".//Journal/Title"
253
250
# return getContent(element=xml_element, path=path)
254
251
255
- def _extractAbstract (self , xml_element : _Element ) -> Union [str , None , int ]:
252
+ def _extractAbstract (self , xml_element : _Element ) -> Optional [str ]:
256
253
path = ".//abstract"
257
254
return getAllContent (element = xml_element , path = path )
258
255
259
256
# TODO: adapt the function for PubMed Central
260
257
# def _extractConclusions(
261
258
# self, xml_element: _Element
262
- # ) -> Union [str, None, int ]:
259
+ # ) -> Optional [str]:
263
260
# path = ".//AbstractText[@Label='CONCLUSION']"
264
261
# return getContent(element=xml_element, path=path)
265
262
# TODO: adapt the function for PubMed Central
266
263
# def _extractMethods(self, xml_element: _Element)
267
- # -> Union [str, None, int ]:
264
+ # -> Optional [str]:
268
265
# path = ".//AbstractText[@Label='METHOD']"
269
266
# return getContent(element=xml_element, path=path)
270
267
# TODO: adapt the function for PubMed Central
271
268
# def _extractResults(self, xml_element: _Element)
272
- # -> Union [str, None, int ]:
269
+ # -> Optional [str]:
273
270
# path = ".//AbstractText[@Label='RESULTS']"
274
271
# return getContent(element=xml_element, path=path)
275
272
# TODO: adapt the function for PubMed Central
276
273
# def _extractCopyrights(
277
274
# self, xml_element: _Element
278
- # ) -> Union [str, None, int ]:
275
+ # ) -> Optional [str]:
279
276
# path = ".//CopyrightInformation"
280
277
# return getContent(element=xml_element, path=path)
281
278
282
- def _extractDoi (self , xml_element : _Element ) -> Union [str , None , int ]:
279
+ def _extractDoi (self , xml_element : _Element ) -> Optional [str ]:
283
280
path = ".//article-meta/article-id[@pub-id-type='doi']"
284
281
return getContentUnique (element = xml_element , path = path )
285
282
@@ -318,7 +315,7 @@ def _extractPublicationDate(
318
315
319
316
def _extractAuthors (
320
317
self , xml_element : _Element
321
- ) -> List [dict [str , Union [str , None , int ]]]:
318
+ ) -> List [dict [str , Optional [str ]]]:
322
319
contrib_group = xml_element .findall (".//contrib-group" )
323
320
if contrib_group :
324
321
return [
0 commit comments