jayvdb created this task.
jayvdb added a subscriber: jayvdb.
jayvdb added projects: pywikibot-core, Pywikibot-Wikidata.
Herald added subscribers: pywikibot-bugs-list, Aklapper.

TASK DESCRIPTION
  If a coordinate has data like P625 on 
https://www.wikidata.org/w/index.php?title=Q148440&oldid=284724541 :
  
  ```
  {
      "latitude": -8.6747222222222,
      "longitude": 121.38444444444,
      "altitude": null,
      "precision": null,
      "globe": "http://www.wikidata.org/entity/Q2";
  }
  ```
  
  The following code causes an exception
  
  ```
  import pywikibot
  
  wikidata = pywikibot.Site('wikidata', 'wikidata')
  wikidata_ds = wikidata.data_repository()
  
  for qid in ['Q2108108', 'Q148440']:
      item = pywikibot.ItemPage(wikidata_ds, qid)
      item.get()
      P625 = item.claims['P625'][0]
      P625_geo = P625.target
      print('%s P625 repr: %r' % (qid, P625_geo))
      print('%s P625 str: %s' % (qid, P625_geo))
  ```
  
  The output is
  
  ```
  Q2108108 P625 repr: Coordinate(lat=-9.56722222, lon=124.9075, globe=earth)
  Q2108108 P625 str: {
      "altitude": null,
      "globe": "http://www.wikidata.org/entity/Q2";,
      "latitude": -9.56722222,
      "longitude": 124.9075,
      "precision": 0.00027777777777778
  }
  Q148440 P625 repr: Coordinate(lat=-8.67472222222, lon=121.384444444, 
globe=earth)
  Traceback (most recent call last):
    File "pwb.py", line 248, in <module>
      if not main():
    File "pwb.py", line 242, in main
      run_python_file(filename, [filename] + args, argvu, file_package)
    File "pwb.py", line 120, in run_python_file
      main_mod.__dict__)
    File "./geobug.py", line 12, in <module>
      print('%s P625 str: %s' % (qid, P625_geo))
    File ".../core/pywikibot/_wbtypes.py", line 36, in __str__
      return json.dumps(self.toWikibase(), indent=4, sort_keys=True,
    File ".../core/pywikibot/__init__.py", line 295, in toWikibase
      'precision': self.precision,
    File ".../core/pywikibot/__init__.py", line 340, in precision
      self._dim / (radius * math.cos(math.radians(self.lat))))
  TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
  <type 'exceptions.TypeError'>
  CRITICAL: Closing network session.
  ```
  
  This prevents round trips of data, as `toWikibase` fails.

TASK DETAIL
  https://phabricator.wikimedia.org/T123910

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: jayvdb
Cc: Aklapper, jayvdb, pywikibot-bugs-list, Ricordisamoa



_______________________________________________
pywikibot-bugs mailing list
pywikibot-bugs@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs

Reply via email to