Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_ref_custom_diff_stated_in():
# diff ref stated in
statements = copy.deepcopy(orig_statements1)
statements[0].references[0][0] = wdi_core.WDItemID("Q123", prop_nr="P813", is_reference=True)
item = fake_itemengine1(wd_item_id='Q20814663', global_ref_mode="CUSTOM", ref_handler=custom_ref_handler)
orig = item.wd_json_representation['claims']['P698']
item.update(data=statements)
new = item.wd_json_representation['claims']['P698']
require_write = not all(
any(x.equals(y, include_ref=True) for y in item.original_statements) for x in item.statements)
assert require_write
frc = frc_fake_query_data_paper1(base_data_type=wdi_core.WDBaseDataType, engine=wdi_core.WDItemEngine, use_refs=True,
ref_handler=custom_ref_handler)
frc.debug = True
assert frc.write_required(data=statements)
def make_statements(self):
s = []
helper = self.helper
# instance of edition
s.append(wdi_core.WDItemID(helper.get_qid('Q3331189'), helper.get_pid("P31")))
# edition or translation of
s.append(wdi_core.WDItemID(self.edition_of_qid, helper.get_pid("P629")))
# edition number
s.append(wdi_core.WDString(self.edition, helper.get_pid("P393")))
if self.archive_url:
s.append(wdi_core.WDUrl(self.archive_url, helper.get_pid('P1065')))
if self.pub_date:
s.append(wdi_core.WDTime(self.pub_date, helper.get_pid('P577'), precision=self.date_precision))
self.statements = s
def make_statements(self, ordinals=None):
"""
:param ordinals: passed to self.make_author_statements
:return:
"""
self.make_reference()
s = []
### Required statements
for pubtype in self.meta['pubtype_qid']:
s.append(wdi_core.WDItemID(pubtype, self.PROPS['instance of'], references=[self.reference]))
s.append(wdi_core.WDMonolingualText(self.meta['title'], self.PROPS['title'], references=[self.reference]))
s.append(wdi_core.WDTime(self.meta['date'], self.PROPS['publication date'], references=[self.reference]))
s.append(wdi_core.WDItemID(self.meta['journal_wdid'], self.PROPS['published in'], references=[self.reference]))
s.extend(self.make_author_statements(ordinals=ordinals))
### Optional statements
if self.meta['pmid']:
s.append(wdi_core.WDExternalID(self.meta['pmid'], self.PROPS['PubMed ID'], references=[self.reference]))
if self.meta['volume']:
s.append(wdi_core.WDString(self.meta['volume'], self.PROPS['volume'], references=[self.reference]))
if self.meta['pages']:
s.append(wdi_core.WDString(self.meta['pages'], self.PROPS['page(s)'], references=[self.reference]))
if self.meta['issue']:
s.append(wdi_core.WDString(self.meta['issue'], self.PROPS['issue'], references=[self.reference]))
if self.meta['doi']:
s.append(wdi_core.WDExternalID(self.meta['doi'].upper(), self.PROPS['DOI'], references=[self.reference]))
if self.meta['pmcid']:
s.append(wdi_core.WDExternalID(self.meta['pmcid'].replace("PMC", ""), self.PROPS['PMCID'],
references=[self.reference]))
def make_statements(self):
self.statements.append(
wdi_core.WDItemID(self.instance_of_qid, PROPS['instance of'], references=[self.reference]))
self.statements.append(wdi_core.WDMonolingualText(self.title, PROPS['title'], references=[self.reference]))
if self.publication_date:
date = self.publication_date.strftime("+%Y-%m-%dT00:00:00Z")
self.statements.append(
wdi_core.WDTime(date, PROPS['publication date'], references=[self.reference]))
if self.published_in_qid:
self.statements.append(
wdi_core.WDItemID(self.published_in_qid, PROPS['published in'], references=[self.reference]))
if self.volume:
self.statements.append(wdi_core.WDString(self.volume, PROPS['volume'], references=[self.reference]))
if self.pages:
self.statements.append(wdi_core.WDString(self.pages, PROPS['page(s)'], references=[self.reference]))
if self.issue:
self.statements.append(wdi_core.WDString(self.issue, PROPS['issue'], references=[self.reference]))
def make_author_statements(self, ordinals=None):
"""
ordinals is a list of ordinals to NOT include
use this to update an existing item that may have authors, so you don't want to
add the author string for them
:param ordinals: if None, include all authors
:return:
"""
s = []
for n, author in enumerate(self.meta['authors'], 1):
if ordinals is not None and n in ordinals:
continue
series_ordinal = wdi_core.WDString(str(n), self.PROPS['series ordinal'], is_qualifier=True)
if author in self.meta['author_orcid']:
if self.meta['author_qid'][author]:
s.append(wdi_core.WDItemID(self.meta['author_qid'][author], self.PROPS['author'],
references=[self.reference], qualifiers=[series_ordinal]))
else:
msg = "No Author found for author: {}, orcid: {}".format(author, self.meta['author_orcid'][author])
self.warnings.append(msg)
print(msg)
s.append(wdi_core.WDString(author, self.PROPS['author name string'],
references=[self.reference], qualifiers=[series_ordinal]))
elif author:
s.append(wdi_core.WDString(author, self.PROPS['author name string'],
references=[self.reference], qualifiers=[series_ordinal]))
return s
def make_statements(self):
s = []
helper = self.helper
# instance of edition
s.append(wdi_core.WDItemID(helper.get_qid('Q3331189'), helper.get_pid("P31")))
# edition or translation of
s.append(wdi_core.WDItemID(self.edition_of_qid, helper.get_pid("P629")))
# edition number
s.append(wdi_core.WDString(self.edition, helper.get_pid("P393")))
if self.archive_url:
s.append(wdi_core.WDUrl(self.archive_url, helper.get_pid('P1065')))
if self.pub_date:
s.append(wdi_core.WDTime(self.pub_date, helper.get_pid('P577'), precision=self.date_precision))
self.statements = s
def make_statements(self):
s = []
helper = self.helper
# instance of edition
s.append(wdi_core.WDItemID(helper.get_qid('Q3331189'), helper.get_pid("P31")))
# edition or translation of
s.append(wdi_core.WDItemID(self.edition_of_qid, helper.get_pid("P629")))
# edition number
s.append(wdi_core.WDString(self.edition, helper.get_pid("P393")))
if self.archive_url:
s.append(wdi_core.WDUrl(self.archive_url, helper.get_pid('P1065')))
if self.pub_date:
s.append(wdi_core.WDTime(self.pub_date, helper.get_pid('P577'), precision=self.date_precision))
self.statements = s
def make_statements(self):
self.statements.append(
wdi_core.WDItemID(self.instance_of_qid, PROPS['instance of'], references=[self.reference]))
self.statements.append(wdi_core.WDMonolingualText(self.title, PROPS['title'], references=[self.reference]))
if self.publication_date:
date = self.publication_date.strftime("+%Y-%m-%dT00:00:00Z")
self.statements.append(
wdi_core.WDTime(date, PROPS['publication date'], references=[self.reference]))
if self.published_in_qid:
self.statements.append(
wdi_core.WDItemID(self.published_in_qid, PROPS['published in'], references=[self.reference]))
if self.volume:
self.statements.append(wdi_core.WDString(self.volume, PROPS['volume'], references=[self.reference]))
if self.pages:
self.statements.append(wdi_core.WDString(self.pages, PROPS['page(s)'], references=[self.reference]))
if self.issue:
self.statements.append(wdi_core.WDString(self.issue, PROPS['issue'], references=[self.reference]))