Skip to content

Commit 87a7353

Browse files
committed
fixes #84
1 parent 4426904 commit 87a7353

3 files changed

Lines changed: 28 additions & 16 deletions

File tree

tests/test_wikiquery.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
'''
66
import json
77
import unittest
8-
import sys
98
from contextlib import redirect_stdout
109
from io import StringIO
1110
from wikibot.wikiclient import WikiClient
@@ -38,7 +37,9 @@ def testWikiQuery(self):
3837
'''
3938
# make sure the CI wikiUser is prepared
4039
if self.inPublicCI(): return
41-
wikiId='orcopy'
40+
debug=self.debug
41+
debug=True
42+
wikiId='orclone'
4243
wikiClient=self.getWikiClient(wikiId)
4344
wikiPush=WikiPush(fromWikiId=wikiId)
4445
askQuery="""{{#ask: [[IsA::Event]][[Ordinal::>2]][[start date::>2018]][[start date::<2019]]
@@ -51,13 +52,13 @@ def testWikiQuery(self):
5152
| ?Homepage = homepage
5253
|format=table
5354
}}"""
54-
for outputFormat in ["csv","json","xml","ttl","wikidata","lod"]:
55+
for outputFormat in ["csv","json","xml","ttl","mediawiki","github","latex","lod"]:
5556
formatedQueryResults = wikiPush.formatQueryResult(askQuery, wikiClient,outputFormat=outputFormat, entityName="Event")
5657
if formatedQueryResults:
57-
if self.debug:
58+
if debug:
5859
print(formatedQueryResults)
5960
else:
60-
if self.debug:
61+
if debug:
6162
print(f"Format {outputFormat} is not supported.")
6263
pass
6364

wikibot/version.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ class Version(object):
99
Version handling for py-3rdparty-mediawiki
1010
'''
1111
name="py-3rdparty-mediawiki"
12-
version='0.6.2'
12+
version='0.6.3'
1313
date = '2020-10-31'
14-
updated = '2022-03-30'
14+
updated = '2022-05-09'

wikibot/wikipush.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from argparse import ArgumentParser
2121
from argparse import RawDescriptionHelpFormatter
2222
import json
23+
from lodstorage.query import Query
2324

2425
class WikiPush(object):
2526
'''
@@ -53,7 +54,7 @@ def log(self,msg,end='\n'):
5354
if self.verbose:
5455
print (msg,end=end)
5556

56-
def formatQueryResult(self,askQuery,wiki=None,limit=None,showProgress=False,queryDivision=1,outputFormat='lod', entityName="data"):
57+
def formatQueryResult(self,askQuery,wiki=None,limit=None,showProgress=False,queryDivision=1,outputFormat='lod', entityName="data",title:str=None):
5758
'''
5859
format the query result for the given askQuery.
5960
Args:
@@ -63,24 +64,33 @@ def formatQueryResult(self,askQuery,wiki=None,limit=None,showProgress=False,quer
6364
showProgress(bool): true if progress of the query retrieval should be indicated (default: one dot per 50 records ...)
6465
queryDivision(int): Defines the number of subintervals the query is divided into (must be greater equal 1)
6566
outputFormat(str): output format of the query results - default format is lod
67+
entityName(str): the name of the entity
68+
title(str): the title of the query (if any)
6669
Returns:
6770
Query results in the requested outputFormat as string.
6871
If the requested outputFormat is not supported None is returned.
6972
'''
7073
pageRecords=self.queryPages(askQuery, wiki, limit, showProgress, queryDivision)
71-
if outputFormat.lower() == "csv":
74+
outputFormat=outputFormat.lower()
75+
if outputFormat== "csv":
7276
return self.convertToCSV(pageRecords)
73-
elif outputFormat.lower() == "json":
77+
elif outputFormat == "json":
7478
res = []
7579
for page in pageRecords.values():
7680
res.append(page)
7781
res_json = json.dumps({entityName: res}, default=str, indent=3)
7882
return res_json
79-
elif outputFormat.lower() == "lod":
83+
elif outputFormat == "lod":
8084
return [pageRecord for pageRecord in pageRecords.values()]
8185
else:
82-
if self.debug:
83-
print(f"Format {outputFormat} is not supported.")
86+
if title is None:
87+
title=entityName
88+
query=Query(name=entityName,query=askQuery,title=title)
89+
qlod=[pageRecord for pageRecord in pageRecords.values()]
90+
doc=query.documentQueryResult(qlod, limit, tablefmt=outputFormat, withSourceCode=False)
91+
return doc
92+
#if self.debug:
93+
# print(f"Format {outputFormat} is not supported.")
8494
return None
8595

8696
def convertToCSV(self, pageRecords, separator=";"):
@@ -627,7 +637,7 @@ def main(argv=None,mode='wikipush'): # IGNORE:C0111
627637
elif mode=="wikiquery":
628638
parser.add_argument("-l", "--login", dest="login", action='store_true', help="login to source wiki for access permission")
629639
parser.add_argument("-s", "--source", dest="source", help="source wiki id", required=True)
630-
parser.add_argument("--format", dest="format", default='json', help="format to use for query result csv,json,xml,ttl or wiki")
640+
parser.add_argument("--format", dest="format", default='json', help="format to use for query result csv,json,lod or any of the tablefmt options of https://pypi.org/project/tabulate/")
631641
parser.add_argument("--entityName", dest="entityName", default='data', help="name of the entites that are queried - only needed for some output formats - default is 'data'")
632642
elif mode=="wikiupload":
633643
parser.add_argument("--files", nargs='+', help="list of files to be uploaded", required=True)
@@ -648,7 +658,8 @@ def main(argv=None,mode='wikipush'): # IGNORE:C0111
648658
parser.add_argument("-p", "--pages", nargs='+', help="list of page Titles to be pushed", required=False)
649659
parser.add_argument("-ui", "--withGUI", dest="ui", help="Pop up GUI for selection", action="store_true",required=False)
650660
parser.add_argument("-qd", "--queryDivision", default=1, dest="queryDivision", type=int, help="divide query into equidistant subintervals to limit the result size of the individual queries", required=False)
651-
661+
if mode in ["wikiquery"]:
662+
parser.add_argument("--title",help="the title for the query")
652663
if not mode in ["wikibackup", "wikiquery"]:
653664
parser.add_argument("-t", "--target", dest="target", help="target wiki id", required=True)
654665
# Process arguments
@@ -690,7 +701,7 @@ def main(argv=None,mode='wikipush'): # IGNORE:C0111
690701
with open(args.queryFile, 'r') as queryFile:
691702
query=queryFile.read()
692703
if mode=="wikiquery":
693-
formatedQueryResults = wikipush.formatQueryResult(query,wiki=queryWiki,limit=args.limit,showProgress=args.showProgress, queryDivision=args.queryDivision,outputFormat=args.format, entityName=args.entityName)
704+
formatedQueryResults = wikipush.formatQueryResult(query,wiki=queryWiki,limit=args.limit,showProgress=args.showProgress, queryDivision=args.queryDivision,outputFormat=args.format, entityName=args.entityName,title=args.title)
694705
if formatedQueryResults:
695706
print(formatedQueryResults)
696707
else:

0 commit comments

Comments
 (0)