jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1101155?usp=email )
Change subject: IMPR: *precision* value 'millenia' is deprecated due to
spelling mistake
......................................................................
IMPR: *precision* value 'millenia' is deprecated due to spelling mistake
'millennium' must be used instead (singular like for century, year etc.)
Change-Id: Ia1e3c88d7fd7cfb6f633b66a1e987fffce0c0be8
---
M pywikibot/_wbtypes.py
M tests/wbtypes_tests.py
2 files changed, 63 insertions(+), 31 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/_wbtypes.py b/pywikibot/_wbtypes.py
index 19317be..a0c0b5d 100644
--- a/pywikibot/_wbtypes.py
+++ b/pywikibot/_wbtypes.py
@@ -11,14 +11,16 @@
import json
import math
import re
+from collections.abc import Mapping
from decimal import Decimal
from typing import TYPE_CHECKING, Any
import pywikibot
from pywikibot import exceptions
+from pywikibot.backports import Iterator
from pywikibot.logging import warning
from pywikibot.time import Timestamp
-from pywikibot.tools import remove_last_args
+from pywikibot.tools import issue_deprecation_warning, remove_last_args
if TYPE_CHECKING:
@@ -289,6 +291,43 @@
return pywikibot.ItemPage.from_entity_uri(repo, self.entity, lazy_load)
+class _Precision(Mapping):
+
+ """Wrapper for WbTime.PRECISION to deprecate 'millenia' key."""
+
+ PRECISION = {
+ '1000000000': 0,
+ '100000000': 1,
+ '10000000': 2,
+ '1000000': 3,
+ '100000': 4,
+ '10000': 5,
+ 'millennium': 6,
+ 'century': 7,
+ 'decade': 8,
+ 'year': 9,
+ 'month': 10,
+ 'day': 11,
+ 'hour': 12,
+ 'minute': 13,
+ 'second': 14,
+ }
+
+ def __getitem__(self, key) -> int:
+ if key == 'millenia':
+ issue_deprecation_warning(
+ f'{key!r} key for precision', "'millennium'", since='10.0.0')
+ return self.PRECISION['millennium']
+
+ return self.PRECISION[key]
+
+ def __iter__(self) -> Iterator[int]:
+ return iter(self.PRECISION)
+
+ def __len__(self) -> int:
+ return len(self.PRECISION)
+
+
class WbTime(WbRepresentation):
"""A Wikibase time representation.
@@ -304,22 +343,7 @@
:class:`pywikibot.Timestamp` and :meth:`fromTimestamp`.
"""
- PRECISION = {'1000000000': 0,
- '100000000': 1,
- '10000000': 2,
- '1000000': 3,
- '100000': 4,
- '10000': 5,
- 'millenia': 6,
- 'century': 7,
- 'decade': 8,
- 'year': 9,
- 'month': 10,
- 'day': 11,
- 'hour': 12,
- 'minute': 13,
- 'second': 14
- }
+ PRECISION = _Precision()
FORMATSTR = '{0:+012d}-{1:02d}-{2:02d}T{3:02d}:{4:02d}:{5:02d}Z'
@@ -378,21 +402,30 @@
the equality operator will return false if the timezone is
different.
- :param year: The year as a signed integer of between 1 and 16 digits.
+ .. deprecated:: 10.0
+ *precision* value 'millenia' is deprecated; 'millennium' must
+ be used instead.
+
+ :param year: The year as a signed integer of between 1 and 16
+ digits.
:param month: Month of the timestamp, if it exists.
:param day: Day of the timestamp, if it exists.
:param hour: Hour of the timestamp, if it exists.
:param minute: Minute of the timestamp, if it exists.
:param second: Second of the timestamp, if it exists.
- :param precision: The unit of the precision of the time.
- :param before: Number of units after the given time it could be, if
- uncertain. The unit is given by the precision.
- :param after: Number of units before the given time it could be, if
- uncertain. The unit is given by the precision.
+ :param precision: The unit of the precision of the time. Must be
+ either an int in range 0 - 14 or one of '1000000000',
+ '100000000', '10000000', '1000000', '100000', '10000',
+ 'millennium', 'century', 'decade', 'year', month', 'day',
+ 'hour', 'minute' or 'second'.
+ :param before: Number of units after the given time it could be,
+ if uncertain. The unit is given by the precision.
+ :param after: Number of units before the given time it could be,
+ if uncertain. The unit is given by the precision.
:param timezone: Timezone information in minutes.
:param calendarmodel: URI identifying the calendar model.
- :param site: The Wikibase site. If not provided, retrieves the data
- repository from the default site from user-config.py.
+ :param site: The Wikibase site. If not provided, retrieves the
+ data repository from the default site from user-config.py.
Only used if calendarmodel is not given.
"""
if year is None:
@@ -441,7 +474,6 @@
and precision in self.PRECISION.values()):
self.precision = precision
elif precision in self.PRECISION:
- assert isinstance(precision, str)
self.precision = self.PRECISION[precision]
else:
raise ValueError(f'Invalid precision: "{precision}"')
@@ -647,7 +679,7 @@
# so we don't need to do anything complicated like the other
# examples.
year = round(year / power_of_10) * power_of_10
- elif self.precision == self.PRECISION['millenia']:
+ elif self.precision == self.PRECISION['millennium']:
# Similar situation with centuries
year_float = year / 1000
if year_float < 0:
diff --git a/tests/wbtypes_tests.py b/tests/wbtypes_tests.py
index 1a83216..dc672a9 100755
--- a/tests/wbtypes_tests.py
+++ b/tests/wbtypes_tests.py
@@ -258,7 +258,7 @@
# some aliases here
decade = pywikibot.WbTime.PRECISION['decade']
century = pywikibot.WbTime.PRECISION['century']
- millenia = pywikibot.WbTime.PRECISION['millenia']
+ millennium = pywikibot.WbTime.PRECISION['millennium']
t = pywikibot.WbTime(site=repo, year=2010, month=1, day=1, hour=12,
minute=43, second=12)
t2 = pywikibot.WbTime(site=repo, year=2010, month=1, day=1, hour=12,
@@ -287,7 +287,7 @@
precision=century)
t10 = pywikibot.WbTime(site=repo, year=2010, month=1, day=1, hour=12,
minute=43, second=12,
- precision=millenia)
+ precision=millennium)
t11 = pywikibot.WbTime(site=repo, year=2010, month=1, day=1, hour=12,
minute=43, second=12, timezone=-300,
precision=pywikibot.WbTime.PRECISION['day'])
@@ -324,10 +324,10 @@
precision=century).normalize())
self.assertEqual(t10.normalize(),
pywikibot.WbTime(site=repo, year=3000,
- precision=millenia))
+ precision=millennium))
self.assertEqual(t10.normalize(),
pywikibot.WbTime(site=repo, year=2010,
- precision=millenia).normalize())
+ precision=millennium).normalize())
t11_normalized = t11.normalize()
t12_normalized = t12.normalize()
self.assertEqual(t11_normalized.timezone, 0)
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1101155?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ia1e3c88d7fd7cfb6f633b66a1e987fffce0c0be8
Gerrit-Change-Number: 1101155
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]