jenkins-bot has submitted this change and it was merged.
Change subject: Allow Coordinate.precision to be None ......................................................................
Allow Coordinate.precision to be None
Wikibase has coordinates without a precision. They cause an exception when saving unmodified.
Also add a setter for Coordinate.precision, so existing data without a precision can be improved.
Bug: T123910 Change-Id: I9ce758c7271c78ba9b97bf2f52b4b34160d935e1 --- M pywikibot/__init__.py 1 file changed, 12 insertions(+), 1 deletion(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py index c2f4dd5..d3353d4 100644 --- a/pywikibot/__init__.py +++ b/pywikibot/__init__.py @@ -331,6 +331,11 @@ u""" Return the precision of the geo coordinate.
+ The precision is calculated if the Coordinate does not have a precision, + and self._dim is set. + + When no precision and no self._dim exists, None is returned. + The biggest error (in degrees) will be given by the longitudinal error; the same error in meters becomes larger (in degrees) further up north. We can thus ignore the latitudinal error. @@ -346,13 +351,19 @@
Therefore:: precision = math.degrees(self._dim/(radius*math.cos(math.radians(self.lat)))) + + @rtype: float or None """ - if not self._precision: + if self._precision is None and self._dim is not None: radius = 6378137 # TODO: Support other globes self._precision = math.degrees( self._dim / (radius * math.cos(math.radians(self.lat)))) return self._precision
+ @precision.setter + def precision(self, value): + self._precision = value + def precisionToDim(self): """Convert precision from Wikibase to GeoData's dim.""" raise NotImplementedError
pywikibot-commits@lists.wikimedia.org