Page MenuHomePhabricator

Modify pywikibot.Timestamp to support Wikidata
Closed, DeclinedPublic

Description

Pywikibot currently contains a Timestamp class (see https://git.wikimedia.org/blob/pywikibot%2Fcore.git/HEAD/pywikibot%2F__init__.py).

This class should be modified like Coordinate to support Wikidata.

Example how to add a time claim:

'action' => 'wbcreateclaim',
'entity' => 'Q82',
'property' => 'P11',
'snaktype' => 'value',
'value' => '{"time":"+00000002010-01-02T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"}',
'bot' => 1,

(from https://www.mediawiki.org/wiki/Extension:Wikibase_Repository/API)

Should probably at least implement "toWikibase" and "fromWikibase"


Version: core-(2.0)
Severity: normal

Details

Reference
bz64501

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:08 AM
bzimport set Reference to bz64501.
bzimport added a subscriber: Unknown Object (????).

There is already class WbTime(object) with the methods above. Shouldn't we extend this class instead, with a method that accepts a pywikibot.Timestamp as input ("fromTimeStampToWbTime" or similar?)?

I completely overlooked WbTime. Shouldn't the two of them be merged into one object?

(In reply to Maarten Dammers from comment #2)

I completely overlooked WbTime. Shouldn't the two of them be merged into one
object?

Ideally yes. But I don't believe it's possible.

pywikibot.Timestamp is an extension of datetime.datetime, which has a limit on how large dates it can handle. https://docs.python.org/2.7/library/datetime.html says the year has to be between 1 and 9999, but Wikibase supports much older dates, or dates farther in the future, which is why we needed WbTime.

I think creating a fromTimeStampToWbTime or similar function is probably the best way to handle it for now.

(In reply to Mpaa from comment #1)

There is already class WbTime(object) with the methods above. Shouldn't we
extend this class instead, with a method that accepts a pywikibot.Timestamp
as input ("fromTimeStampToWbTime" or similar?)?

pywikibot.WbTime.fromTimestr(timestamp.toISOformat()) already works perfectly.

(In reply to Maarten Dammers from comment #2)

I completely overlooked WbTime. Shouldn't the two of them be merged into one
object?

Maybe, but WbTime has Wikibase-specific attributes like "precision", "after", "before" and "calendarmodel".

So I think closing this bug is okay, Does anyone disagree?