jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634285 )
Change subject: [IMPR] Replaced basestring to str ......................................................................
[IMPR] Replaced basestring to str
Bug: T265128 Change-Id: I548cb45e6b147ddcda7930c379040482070765ec --- M generate_user_files.py M pywikibot/__init__.py M pywikibot/bot_choice.py 3 files changed, 31 insertions(+), 52 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/generate_user_files.py b/generate_user_files.py index f8437f2..7d5a7bf 100755 --- a/generate_user_files.py +++ b/generate_user_files.py @@ -11,6 +11,8 @@ import re import sys
+from typing import Optional, Tuple + from collections import namedtuple from textwrap import fill
@@ -95,18 +97,16 @@ return False
-def get_site_and_lang(default_family='wikipedia', default_lang='en', - default_username=None, force=False): +def get_site_and_lang(default_family: Optional[str] = 'wikipedia', + default_lang: Optional[str] = 'en', + default_username: Optional[str] = None, force=False): """ Ask the user for the family, language and username.
@param default_family: The default family which should be chosen. - @type default_family: None or str @param default_lang: The default language which should be chosen, if the family supports this language. - @type default_lang: None or str @param default_username: The default username which should be chosen. - @type default_username: None or str @return: The family, language and username @rtype: tuple of three str """ @@ -425,14 +425,13 @@ return userfile, passfile
-def main(*args): +def main(*args: Tuple[str, ...]): """ Process command line arguments and generate user-config.
If args is an empty list, sys.argv is used.
@param args: command line arguments - @type args: str """ # set the config family and mylang values to an invalid state so that # the script can detect that the command line arguments -family & -lang diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py index b552b49..7f83449 100644 --- a/pywikibot/__init__.py +++ b/pywikibot/__init__.py @@ -133,11 +133,10 @@ return cls._ISO8601Format()
@classmethod - def _ISO8601Format(cls, sep='T'): + def _ISO8601Format(cls, sep: str = 'T'): """ISO8601 format string.
@param sep: one-character separator, placed between the date and time - @type sep: str @return: ISO8601 format string @rtype: str """ @@ -145,13 +144,12 @@ return '%Y-%m-%d{0}%H:%M:%SZ'.format(sep)
@classmethod - def fromISOformat(cls, ts, sep='T'): + def fromISOformat(cls, ts, sep: str = 'T'): """Convert an ISO 8601 timestamp to a Timestamp object.
@param ts: ISO 8601 timestamp or a Timestamp object already @type ts: str or Timestamp @param sep: one-character separator, placed between the date and time - @type sep: str @return: Timestamp object @rtype: Timestamp """ @@ -216,27 +214,23 @@ _items = ('lat', 'lon', 'entity')
@_deprecate_arg('entity', 'globe_item') - def __init__(self, lat, lon, alt=None, precision=None, globe=None, - typ='', name='', dim=None, site=None, globe_item=None, - primary=False): + def __init__(self, lat: float, lon: float, alt=None, + precision: Optional[float] = None, + globe: Optional[str] = None, typ: str = '', + name: str = '', dim: Optional[int] = None, + site=None, globe_item=None, primary: bool = False): """ Represent a geo coordinate.
@param lat: Latitude - @type lat: float @param lon: Longitude - @type lon: float @param alt: Altitude? TODO FIXME @param precision: precision @type precision: float @param globe: Which globe the point is on - @type globe: str @param typ: The type of coordinate point - @type typ: str @param name: The name - @type name: str @param dim: Dimension (in meters) - @type dim: int @param site: The Wikibase site @type site: pywikibot.site.DataSite @param globe_item: The Wikibase item for the globe, or the entity URI @@ -244,7 +238,6 @@ if present. @type globe_item: pywikibot.ItemPage or str @param primary: True for a primary set of coordinates - @type primary: bool """ self.lat = lat self.lon = lon @@ -576,25 +569,22 @@ precision, before, after, timezone, calendarmodel, site)
@classmethod - def fromTimestamp(cls, timestamp, precision=14, before=0, after=0, - timezone=0, calendarmodel=None, site=None): + def fromTimestamp(cls, timestamp, precision: Union[int, str] = 14, + before: int = 0, after: int = 0, + timezone: int = 0, calendarmodel: Optional[str] = None, + site=None): """ Create a new WbTime object from a pywikibot.Timestamp.
@param timestamp: Timestamp @type timestamp: pywikibot.Timestamp @param precision: The unit of the precision of the time. - @type precision: int or str @param before: Number of units after the given time it could be, if uncertain. The unit is given by the precision. - @type before: int @param after: Number of units before the given time it could be, if uncertain. The unit is given by the precision. - @type after: int @param timezone: Timezone information in minutes. - @type timezone: int @param calendarmodel: URI identifying the calendar model - @type calendarmodel: str @param site: The Wikibase site @type site: pywikibot.site.DataSite @rtype: pywikibot.WbTime @@ -655,12 +645,11 @@ return json
@classmethod - def fromWikibase(cls, wb, site=None): + def fromWikibase(cls, wb: dict, site=None): """ Create a WbTime from the JSON data given by the Wikibase API.
@param wb: Wikibase JSON - @type wb: dict @param site: The Wikibase site @type site: pywikibot.site.DataSite @rtype: pywikibot.WbTime @@ -695,14 +684,13 @@ return site.mw_version < '1.29.0-wmf.2'
@staticmethod - def _todecimal(value): + def _todecimal(value: str): """ Convert a string to a Decimal for use in WbQuantity.
None value is returned as is.
@param value: decimal number to convert - @type value: str @rtype: Decimal """ if isinstance(value, Decimal): @@ -814,12 +802,11 @@ return json
@classmethod - def fromWikibase(cls, wb, site=None): + def fromWikibase(cls, wb: dict, site=None): """ Create a WbQuantity from the JSON data given by the Wikibase API.
@param wb: Wikibase JSON - @type wb: dict @param site: The Wikibase site @type site: pywikibot.site.DataSite @rtype: pywikibot.WbQuantity @@ -843,14 +830,12 @@
_items = ('text', 'language')
- def __init__(self, text, language): + def __init__(self, text: str, language: str): """ Create a new WbMonolingualText object.
@param text: text string - @type text: str @param language: language code of the string - @type language: str """ if not text or not language: raise ValueError('text and language cannot be empty') @@ -870,12 +855,11 @@ return json
@classmethod - def fromWikibase(cls, wb): + def fromWikibase(cls, wb: dict): """ Create a WbMonolingualText from the JSON data given by Wikibase API.
@param wb: Wikibase JSON - @type wb: dict @rtype: pywikibot.WbMonolingualText """ return cls(wb['text'], wb['language']) @@ -925,7 +909,7 @@ raise NotImplementedError
@staticmethod - def _validate(page, data_site, ending, label): + def _validate(page, data_site, ending: str, label): """ Validate the provided page against general and type specific rules.
@@ -936,7 +920,6 @@ @type data_site: pywikibot.site.APISite @param ending: Required filetype-like ending in page titles. E.g. '.map' - @type ending: str @param label: Label describing the data type in error messages. @type site: str """ @@ -997,12 +980,11 @@ return self.page.title()
@classmethod - def fromWikibase(cls, page_name, site): + def fromWikibase(cls, page_name: str, site): """ Create a _WbDataPage from the JSON data given by the Wikibase API.
@param page_name: page name from Wikibase value - @type page_name: str @param site: The Wikibase site @type site: pywikibot.site.DataSite @rtype: pywikibot._WbDataPage @@ -1147,7 +1129,8 @@
@_deprecate_arg('sysop', None) -def Site(code=None, fam=None, user=None, sysop=None, interface=None, url=None): +def Site(code: Optional[str] = None, fam=None, user: Optional[str] = None, + sysop=None, interface=None, url: Optional[str] = None): """A factory method to obtain a Site object.
Site objects are cached and reused by this method. @@ -1156,17 +1139,14 @@ using the method parameters.
@param code: language code (override config.mylang) - @type code: str @param fam: family name or object (override config.family) @type fam: str or pywikibot.family.Family @param user: bot user name to use on this site (override config.usernames) - @type user: str @param interface: site class or name of class in pywikibot.site (override config.site_interface) @type interface: subclass of L{pywikibot.site.BaseSite} or string @param url: Instead of code and fam, does try to get a Site based on the URL. Still requires that the family supporting that URL exists. - @type url: str @rtype: pywikibot.site.APISite @raises ValueError: URL and pair of code and family given @raises ValueError: Invalid interface name diff --git a/pywikibot/bot_choice.py b/pywikibot/bot_choice.py index 2242c94..7a00159 100755 --- a/pywikibot/bot_choice.py +++ b/pywikibot/bot_choice.py @@ -6,7 +6,9 @@ # Distributed under the terms of the MIT license. # import re + from textwrap import fill +from typing import Optional
import pywikibot
@@ -106,13 +108,12 @@
"""An option with a description and shortcut and returning the shortcut."""
- def __init__(self, option: str, shortcut, **kwargs): + def __init__(self, option: str, shortcut: str, **kwargs): """ Initializer.
@param option: option string @param shortcut: Shortcut of the option - @type shortcut: str """ super().__init__(**kwargs) self.option = option @@ -432,13 +433,12 @@
before_question = True
- def __init__(self, sequence, prefix='', pre=None, post=None, **kwargs): + def __init__(self, sequence, prefix='', pre: Optional[str] = None, + post: Optional[str] = None, **kwargs): """Initializer.
@param pre: Additional comment printed before the list. - @type pre: str @param post: Additional comment printed after the list. - @type post: str """ super().__init__(sequence, prefix, **kwargs) self.pre = pre
pywikibot-commits@lists.wikimedia.org