Hi guys,
Op 20-9-2013 4:12, legoktm schreef:
Hi Jeroen,
Sorry about the late response...
Talked with Jeroen a bit about this on irc. Forgot
to send an email here.
On Fri, Sep 6, 2013 at 11:47 AM, Jeroen De Dauw
<jeroendedauw(a)gmail.com <mailto:jeroendedauw@gmail.com>> wrote:
Hey,
While looking at the source of the pywikipediabot in the past, I
noticed that it contained a bunch of Wikibase specific code
(sometimes even Wikidata specific). The code I saw often did a
poor job at separating different concerns, and did some weird
things to represent parts of the Wikibase data model.
I wonder if Jeroen looked at the code in compat or in core. Core is much
cleaner than compat. Jeroen?
Right now I think our biggest issue is that Claim subclasses
PropertyPage. I originally wrote this thinking it would be convenient,
but now after using the code for a while, the only function we
actually use is PropertyPage.datatype(), which can easily be fixed.
I'll start working on that.
Good idea. We should try to stick to
https://meta.wikimedia.org/wiki/Wikidata/Notes/Data_model as much as
possible, so implementing things in Pywikipedia when things come
available on Wikidata itself. We shouldn't forgot about Pywikipedia
itself. I ran into a page problem earlier.
Take the class Page:
Three calling formats are supported:
- If the first argument is a Page, create a copy of that object.
This can be used to convert an existing Page into a subclass
object, such as Category or ImagePage. (If the title is also
given as the second argument, creates a copy with that title;
this is used when pages are moved.)
- If the first argument is a Site, create a Page on that Site
using the second argument as the title (may include a section),
and the third as the namespace number. The namespace number is
mandatory, even if the title includes the namespace prefix.
This
is the preferred syntax when using an already-normalized title
obtained from api.php or a database dump. WARNING: may produce
invalid objects if page title isn't in normal form!
- If the first argument is a Link, create a Page from that link.
This is the preferred syntax when using a title scraped from
wikitext, URLs, or another non-normalized source.
I think it would be nice if subclasses of page (like ItemPage) also
support these three formats. What do you think? Use case for this is
generators. If I use a generator on Wikidata it returns page objects,
would be nice to just be able to say itempage = pywikibot.ItemPage(page).
Maarten