Page MenuHomePhabricator

Wikibase does not accept "+g"-formatted strings as quantities
Closed, DuplicatePublic

Description

import pywikibot
repo = pywikibot.Site('wikidata', 'wikidata')
item = pywikibot.ItemPage(repo, 'Q209351')
claim = item.get()['claims']['P2370'][0]
print(claim.getTarget())
claim.getTarget().upperBound = claim.getTarget().lowerBound = None
item.editEntity(summary='remove explicit bounds')

Prints:

{
    "amount": "+1e-28",
    "lowerBound": "+1e-28",
    "unit": "http://www.wikidata.org/entity/Q25343",
    "upperBound": "+1e-28"
}

Result: WARNING: API error modification-failed: Data value corrupt: "+1e-28" is not a well formed decimal value

Per https://www.wikidata.org/wiki/Special:EntityData/Q209351.json, Pywikibot recieves values like "+0.0000000000000000000000000001" (strings) but these are handled using Decimal and then saved as "+1e-28" (format(value, "+g")). Either Wikibase should be updated to accept values in such a format or Pywikibot shouldn't submit them.