jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/683782 )
Change subject: standardize imports and check with flake8-isort
......................................................................
standardize imports and check with flake8-isort
Change-Id: I93853e4e3e420d6de4c81e24193efa9ebdbb1d66
---
M docs/conf.py
M generate_family_file.py
M generate_user_files.py
M pwb.py
M pywikibot/__init__.py
M pywikibot/__metadata__.py
M pywikibot/backports.py
M pywikibot/bot.py
M pywikibot/bot_choice.py
M pywikibot/comms/eventstreams.py
M pywikibot/comms/http.py
M pywikibot/config2.py
M pywikibot/cosmetic_changes.py
M pywikibot/daemonize.py
M pywikibot/data/api.py
M pywikibot/data/mysql.py
M pywikibot/data/sparql.py
M pywikibot/data/wikistats.py
M pywikibot/date.py
M pywikibot/diff.py
M pywikibot/echo.py
M pywikibot/editor.py
M pywikibot/exceptions.py
M pywikibot/families/wikidata_family.py
M pywikibot/families/wowwiki_family.py
M pywikibot/family.py
M pywikibot/fixes.py
M pywikibot/flow.py
M pywikibot/i18n.py
M pywikibot/interwiki_graph.py
M pywikibot/logentries.py
M pywikibot/logging.py
M pywikibot/login.py
M pywikibot/page/__init__.py
M pywikibot/page/_collections.py
M pywikibot/page/_decorators.py
M pywikibot/page/_revision.py
M pywikibot/pagegenerators.py
M pywikibot/plural.py
M pywikibot/proofreadpage.py
M pywikibot/site/__init__.py
M pywikibot/site/_apisite.py
M pywikibot/site/_basesite.py
M pywikibot/site/_datasite.py
M pywikibot/site/_decorators.py
M pywikibot/site/_extensions.py
M pywikibot/site/_generators.py
M pywikibot/site/_interwikimap.py
M pywikibot/site/_obsoletesites.py
M pywikibot/site/_siteinfo.py
M pywikibot/site_detect.py
M pywikibot/specialbots/__init__.py
M pywikibot/specialbots/_unlink.py
M pywikibot/specialbots/_upload.py
M pywikibot/textlib.py
M pywikibot/throttle.py
M pywikibot/titletranslate.py
M pywikibot/tools/__init__.py
M pywikibot/tools/chars.py
M pywikibot/tools/djvu.py
M pywikibot/tools/formatter.py
M pywikibot/userinterfaces/gui.py
M pywikibot/userinterfaces/terminal_interface.py
M pywikibot/userinterfaces/terminal_interface_base.py
M pywikibot/userinterfaces/terminal_interface_unix.py
M pywikibot/userinterfaces/terminal_interface_win32.py
M pywikibot/userinterfaces/win32_unicode.py
M pywikibot/version.py
M pywikibot/xmlreader.py
M scripts/add_text.py
M scripts/archive/blockpageschecker.py
M scripts/archive/capitalize_redirects.py
M scripts/archive/casechecker.py
M scripts/archive/catall.py
M scripts/archive/commons_link.py
M scripts/archive/compat2core.py
M scripts/archive/create_categories.py
M scripts/archive/data_ingestion.py
M scripts/archive/disambredir.py
M scripts/archive/editarticle.py
M scripts/archive/flickrripper.py
M scripts/archive/followlive.py
M scripts/archive/imagecopy.py
M scripts/archive/imagecopy_self.py
M scripts/archive/imageharvest.py
M scripts/archive/imagerecat.py
M scripts/archive/imageuncat.py
M scripts/archive/isbn.py
M scripts/archive/lonelypages.py
M scripts/archive/makecat.py
M scripts/archive/match_images.py
M scripts/archive/ndashredir.py
M scripts/archive/piper.py
M scripts/archive/selflink.py
M scripts/archive/spamremove.py
M scripts/archive/standardize_interwiki.py
M scripts/archive/states_redirect.py
M scripts/archive/surnames_redirects.py
M scripts/archive/table2wiki.py
M scripts/archive/unlink.py
M scripts/archive/wikisourcetext.py
M scripts/archivebot.py
M scripts/basic.py
M scripts/category.py
M scripts/category_redirect.py
M scripts/change_pagelang.py
M scripts/checkimages.py
M scripts/claimit.py
M scripts/clean_sandbox.py
M scripts/commons_information.py
M scripts/commonscat.py
M scripts/coordinate_import.py
M scripts/cosmetic_changes.py
M scripts/delete.py
M scripts/djvutext.py
M scripts/download_dump.py
M scripts/fixing_redirects.py
M scripts/harvest_template.py
M scripts/illustrate_wikidata.py
M scripts/image.py
M scripts/imagetransfer.py
M scripts/interwiki.py
M scripts/interwikidata.py
M scripts/listpages.py
M scripts/login.py
M scripts/maintenance/cache.py
M scripts/maintenance/colors.py
M scripts/maintenance/make_i18n_dict.py
M scripts/maintenance/preload_sites.py
M scripts/maintenance/sorting_order.py
M scripts/maintenance/update_linktrails.py
M scripts/maintenance/wikimedia_sites.py
M scripts/misspelling.py
M scripts/movepages.py
M scripts/newitem.py
M scripts/noreferences.py
M scripts/nowcommons.py
M scripts/pagefromfile.py
M scripts/parser_function_count.py
M scripts/patrol.py
M scripts/protect.py
M scripts/redirect.py
M scripts/reflinks.py
M scripts/replace.py
M scripts/replicate_wiki.py
M scripts/revertbot.py
M scripts/solve_disambiguation.py
M scripts/speedy_delete.py
M scripts/template.py
M scripts/templatecount.py
M scripts/touch.py
M scripts/transferbot.py
M scripts/unusedfiles.py
M scripts/upload.py
M scripts/version.py
M scripts/watchlist.py
M scripts/weblinkchecker.py
M scripts/welcome.py
M setup.py
M tests/__init__.py
M tests/add_text_tests.py
M tests/api_tests.py
M tests/archive/compat2core_tests.py
M tests/archive/data_ingestion_tests.py
M tests/archive/disambredir_tests.py
M tests/archive/imagecopy_tests.py
M tests/archive/isbn_tests.py
M tests/archivebot_tests.py
M tests/aspects.py
M tests/basepage.py
M tests/basesite_tests.py
M tests/bot_tests.py
M tests/cache_tests.py
M tests/category_bot_tests.py
M tests/category_tests.py
M tests/checkimages_tests.py
M tests/collections_tests.py
M tests/cosmetic_changes_tests.py
M tests/datasite_tests.py
M tests/date_tests.py
M tests/deletionbot_tests.py
M tests/deprecation_tests.py
M tests/diff_tests.py
M tests/djvu_tests.py
M tests/dry_api_tests.py
M tests/dry_site_tests.py
M tests/echo_tests.py
M tests/edit_failure_tests.py
M tests/edit_tests.py
M tests/eventstreams_tests.py
M tests/family_tests.py
M tests/file_tests.py
M tests/fixes_tests.py
M tests/fixing_redirects_tests.py
M tests/flow_edit_tests.py
M tests/flow_tests.py
M tests/flow_thanks_tests.py
M tests/generate_family_file_tests.py
M tests/generate_user_files_tests.py
M tests/http_tests.py
M tests/i18n_tests.py
M tests/interwiki_graph_tests.py
M tests/interwiki_link_tests.py
M tests/interwikidata_tests.py
M tests/interwikimap_tests.py
M tests/l10n_tests.py
M tests/link_tests.py
M tests/linter_tests.py
M tests/logentries_tests.py
M tests/login_tests.py
M tests/mediawikiversion_tests.py
M tests/mysql_tests.py
M tests/namespace_tests.py
M tests/noreferences_tests.py
M tests/oauth_tests.py
M tests/page_tests.py
M tests/pagegenerators_tests.py
M tests/paraminfo_tests.py
M tests/patrolbot_tests.py
M tests/plural_tests.py
M tests/proofreadpage_tests.py
M tests/protectbot_tests.py
M tests/pwb/print_locals.py
M tests/pwb/print_unicode.py
M tests/pwb_tests.py
M tests/redirect_bot_tests.py
M tests/reflinks_tests.py
M tests/replacebot_tests.py
M tests/script_tests.py
M tests/site_decorators_tests.py
M tests/site_detect_tests.py
M tests/site_tests.py
M tests/siteinfo_tests.py
M tests/sparql_tests.py
M tests/template_bot_tests.py
M tests/tests_tests.py
M tests/textlib_tests.py
M tests/thanks_tests.py
M tests/thread_tests.py
M tests/timestamp_tests.py
M tests/timestripper_tests.py
M tests/titletranslate_tests.py
M tests/tk_tests.py
M tests/token_tests.py
M tests/tools_chars_tests.py
M tests/tools_formatter_tests.py
M tests/tools_ip_tests.py
M tests/tools_tests.py
M tests/ui_options_tests.py
M tests/ui_tests.py
M tests/upload_tests.py
M tests/uploadbot_tests.py
M tests/uploadscript_tests.py
M tests/user_tests.py
M tests/utils.py
M tests/weblinkchecker_tests.py
M tests/wikibase_edit_tests.py
M tests/wikibase_tests.py
M tests/wikistats_tests.py
M tests/xmlreader_tests.py
M tox.ini
261 files changed, 599 insertions(+), 944 deletions(-)
Approvals:
JJMC89: Looks good to me, approved
jenkins-bot: Verified
diff --git a/docs/conf.py b/docs/conf.py
index c041d9d..40726e9 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -23,9 +23,9 @@
import os
import re
import sys
-
from os.path import abspath, dirname, join
+
docs_dir = dirname(__file__)
repo_dir = abspath(join(docs_dir, '..'))
sys.path.insert(0, repo_dir)
@@ -34,6 +34,7 @@
os.environ['PYWIKIBOT_NO_USER_CONFIG'] = '1'
import pywikibot # noqa: E402
+
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
diff --git a/generate_family_file.py b/generate_family_file.py
index 404553a..55dd8f3 100755
--- a/generate_family_file.py
+++ b/generate_family_file.py
@@ -9,10 +9,10 @@
import os
import string
import sys
-
from os import environ, getenv
from urllib.parse import urlparse
+
# see pywikibot.family.py
# Legal characters for Family name and Family langs keys
NAME_CHARACTERS = string.ascii_letters + string.digits
diff --git a/generate_user_files.py b/generate_user_files.py
index a4140d9..1de6e43 100755
--- a/generate_user_files.py
+++ b/generate_user_files.py
@@ -9,14 +9,13 @@
import os
import re
import sys
-
-from typing import Optional
-
from collections import namedtuple
from textwrap import fill
+from typing import Optional
from generate_family_file import _import_with_no_user_config
+
if sys.version_info[:2] >= (3, 9):
Tuple = tuple
else:
diff --git a/pwb.py b/pwb.py
index 95abb09..1d20d0e 100755
--- a/pwb.py
+++ b/pwb.py
@@ -24,7 +24,6 @@
import os
import sys
import types
-
from difflib import get_close_matches
from importlib import import_module
from time import sleep
@@ -187,6 +186,7 @@
from pathlib import Path # noqa: E402
+
filename, script_args, global_args = handle_args(*sys.argv)
# Search for user-config.py before creating one.
@@ -200,6 +200,7 @@
except RuntimeError:
os.environ['PYWIKIBOT_NO_USER_CONFIG'] = '2'
import pywikibot as pwb
+
# user-config.py to be created
if filename is not None and not (filename.startswith('generate_')
or filename == 'version.py'):
@@ -219,7 +220,7 @@
def find_alternates(filename, script_paths):
"""Search for similar filenames in the given script
paths."""
from pywikibot import config, input_choice, output
- from pywikibot.bot import ShowingListOption, QuitKeyboardInterrupt
+ from pywikibot.bot import QuitKeyboardInterrupt, ShowingListOption
from pywikibot.tools.formatter import color_format
assert config.pwb_close_matches > 0, \
diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py
index 1175c25..b182947 100644
--- a/pywikibot/__init__.py
+++ b/pywikibot/__init__.py
@@ -11,9 +11,6 @@
import re
import threading
import time
-
-import pywikibot.exceptions
-
from contextlib import suppress
from decimal import Decimal
from queue import Queue
@@ -21,56 +18,100 @@
from urllib.parse import urlparse
from warnings import warn
+import pywikibot.exceptions
+from pywikibot import config2 as config
from pywikibot.__metadata__ import (
- __copyright__, __description__, __download_url__, __license__,
- __maintainer__, __maintainer_email__, __name__, __url__, __version__)
-
+ __copyright__,
+ __description__,
+ __download_url__,
+ __license__,
+ __maintainer__,
+ __maintainer_email__,
+ __name__,
+ __url__,
+ __version__,
+)
from pywikibot._wbtypes import WbRepresentation as _WbRepresentation
from pywikibot.backports import cache, removesuffix
-from pywikibot import config2 as config
-from pywikibot.diff import PatchManager
-from pywikibot.family import AutoFamily, Family
-from pywikibot.i18n import translate
-from pywikibot.site import BaseSite, DataSite, APISite, ClosedSite
-from pywikibot.tools.formatter import color_format
-
from pywikibot.bot import (
- input, input_choice, input_yn, handle_args, show_help, ui,
- calledModuleName, Bot, CurrentPageBot, WikidataBot,
+ Bot,
+ CurrentPageBot,
+ WikidataBot,
+ calledModuleName,
+ handle_args,
+ input,
+ input_choice,
+ input_yn,
+ show_help,
+ ui,
)
-
from pywikibot.bot_choice import (
QuitKeyboardInterrupt as _QuitKeyboardInterrupt,
)
-
+from pywikibot.diff import PatchManager
+from pywikibot.family import AutoFamily, Family
+from pywikibot.i18n import translate
from pywikibot.logging import (
- critical, debug, error, exception, log, output, stdout, warning
+ critical,
+ debug,
+ error,
+ exception,
+ log,
+ output,
+ stdout,
+ warning,
)
-
+from pywikibot.site import APISite, BaseSite, ClosedSite, DataSite
+from pywikibot.tools import MediaWikiVersion as _MediaWikiVersion
from pywikibot.tools import (
- classproperty,
- deprecate_arg as _deprecate_arg,
- normalize_username,
- MediaWikiVersion as _MediaWikiVersion,
ModuleDeprecationWrapper as _ModuleDeprecationWrapper,
- suppress_warnings,
)
+from pywikibot.tools import classproperty
+from pywikibot.tools import deprecate_arg as _deprecate_arg
+from pywikibot.tools import normalize_username, suppress_warnings
+from pywikibot.tools.formatter import color_format
+
with suppress_warnings(category=FutureWarning):
from pywikibot.data.api import UploadWarning
-
from pywikibot.exceptions import (
- CaptchaError, CascadeLockedPage, CircularRedirect,
- CoordinateGlobeUnknownError, CoordinateGlobeUnknownException,
- EditConflict, Error, FatalServerError, InterwikiRedirectPage,
- InvalidTitle, IsNotRedirectPage, IsRedirectPage, LockedNoPage,
- LockedPage, NoCreateError, NoMoveTarget, NoPage, NoUsername,
- NoWikibaseEntity, OtherPageSaveError, PageCreatedConflict,
- PageDeletedConflict, PageRelatedError, PageSaveRelatedError,
- SectionError, Server414Error, Server504Error, ServerError,
- SiteDefinitionError, SpamblacklistError, TitleblacklistError,
- UnknownExtension, UnknownFamily, UnknownSite, UnsupportedPage,
- WikiBaseError, DEPRECATED_EXCEPTIONS,
+ DEPRECATED_EXCEPTIONS,
+ CaptchaError,
+ CascadeLockedPage,
+ CircularRedirect,
+ CoordinateGlobeUnknownError,
+ CoordinateGlobeUnknownException,
+ EditConflict,
+ Error,
+ FatalServerError,
+ InterwikiRedirectPage,
+ InvalidTitle,
+ IsNotRedirectPage,
+ IsRedirectPage,
+ LockedNoPage,
+ LockedPage,
+ NoCreateError,
+ NoMoveTarget,
+ NoPage,
+ NoUsername,
+ NoWikibaseEntity,
+ OtherPageSaveError,
+ PageCreatedConflict,
+ PageDeletedConflict,
+ PageRelatedError,
+ PageSaveRelatedError,
+ SectionError,
+ Server414Error,
+ Server504Error,
+ ServerError,
+ SiteDefinitionError,
+ SpamblacklistError,
+ TitleblacklistError,
+ UnknownExtension,
+ UnknownFamily,
+ UnknownSite,
+ UnsupportedPage,
+ WikiBaseError,
)
@@ -1173,18 +1214,19 @@
# These imports depend on Wb* classes above.
from pywikibot.page import ( # noqa: E402
- Page,
- FilePage,
Category,
+ Claim,
+ FilePage,
+ ItemPage,
Link,
+ Page,
+ PropertyPage,
SiteLink,
User,
- ItemPage,
- PropertyPage,
- Claim,
+ html2unicode,
+ unicode2html,
+ url2unicode,
)
-from pywikibot.page import ( # noqa: E402
- html2unicode, url2unicode, unicode2html)
link_regex = re.compile(r'\[\[(?P<title>[^\]|[<>{}]*)(\|.*?)?\]\]')
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 483ab04..29b663e 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -5,6 +5,8 @@
# Distributed under the terms of the MIT license.
#
from time import strftime
+
+
__name__ = 'pywikibot'
__version__ = '6.1.1.dev0'
__description__ = 'Python MediaWiki Bot Framework'
diff --git a/pywikibot/backports.py b/pywikibot/backports.py
index 32e2666..219a231 100644
--- a/pywikibot/backports.py
+++ b/pywikibot/backports.py
@@ -6,6 +6,7 @@
#
from pywikibot.tools import PYTHON_VERSION
+
# functools.cache
if PYTHON_VERSION >= (3, 9):
from functools import cache
@@ -58,7 +59,7 @@
Set = set
Tuple = tuple
else:
- from typing import Dict, FrozenSet, Iterable, List, Set, Sequence, Tuple
+ from typing import Dict, FrozenSet, Iterable, List, Sequence, Set, Tuple
# PEP 616 string methods
diff --git a/pywikibot/bot.py b/pywikibot/bot.py
index a604525..f694c00 100644
--- a/pywikibot/bot.py
+++ b/pywikibot/bot.py
@@ -93,7 +93,6 @@
import time
import warnings
import webbrowser
-
from collections.abc import Generator
from contextlib import closing
from importlib import import_module
@@ -103,38 +102,72 @@
from warnings import warn
import pywikibot
-
from pywikibot import config2 as config
from pywikibot import daemonize, i18n, version
from pywikibot.backports import Dict, Iterable, List, Sequence
-from pywikibot.tools.formatter import color_format
-from pywikibot.tools._logging import LoggingFormatter, RotatingFileHandler
-
from pywikibot.bot_choice import (
- Option, StandardOption, NestedOption, IntegerOption, ContextOption,
- ListOption, ShowingListOption, MultipleChoiceList,
- ShowingMultipleChoiceList, OutputProxyOption, HighlightContextOption,
- ChoiceException, QuitKeyboardInterrupt,
- Choice, StaticChoice, LinkChoice, AlwaysChoice
+ AlwaysChoice,
+ Choice,
+ ChoiceException,
+ ContextOption,
+ HighlightContextOption,
+ IntegerOption,
+ LinkChoice,
+ ListOption,
+ MultipleChoiceList,
+ NestedOption,
+ Option,
+ OutputProxyOption,
+ QuitKeyboardInterrupt,
+ ShowingListOption,
+ ShowingMultipleChoiceList,
+ StandardOption,
+ StaticChoice,
)
-
from pywikibot.exceptions import (
- EditConflictError, Error, LockedPageError, NoPageError,
- PageSaveRelatedError, ServerError, SpamblacklistError,
- UnhandledAnswerError, UnknownFamilyError,
- UnknownSiteError, VersionParseError, WikiBaseError,
+ EditConflictError,
+ Error,
+ LockedPageError,
+ NoPageError,
+ PageSaveRelatedError,
+ ServerError,
+ SpamblacklistError,
+ UnhandledAnswerError,
+ UnknownFamilyError,
+ UnknownSiteError,
+ VersionParseError,
+ WikiBaseError,
)
-
from pywikibot.logging import (
+ CRITICAL,
+ DEBUG,
+ ERROR,
+ INFO,
+ INPUT,
+ STDOUT,
+ VERBOSE,
+ WARNING,
add_init_routine,
- CRITICAL, DEBUG, ERROR, INFO, INPUT, STDOUT, VERBOSE, WARNING,
- critical, debug, error, exception, log, output, stdout, warning,
+ critical,
+ debug,
+ error,
+ exception,
+ log,
+ output,
+ stdout,
+ warning,
)
-
from pywikibot.tools import (
- deprecated, deprecate_arg, deprecated_args, issue_deprecation_warning,
- PYTHON_VERSION, ModuleDeprecationWrapper, suppress_warnings,
+ PYTHON_VERSION,
+ ModuleDeprecationWrapper,
+ deprecate_arg,
+ deprecated,
+ deprecated_args,
+ issue_deprecation_warning,
+ suppress_warnings,
)
+from pywikibot.tools._logging import LoggingFormatter, RotatingFileHandler
+from pywikibot.tools.formatter import color_format
# Note: all output goes through python std library "logging" module
diff --git a/pywikibot/bot_choice.py b/pywikibot/bot_choice.py
index 3c5e874..2702342 100755
--- a/pywikibot/bot_choice.py
+++ b/pywikibot/bot_choice.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import re
-
from textwrap import fill
from typing import Optional
diff --git a/pywikibot/comms/eventstreams.py b/pywikibot/comms/eventstreams.py
index 6964089..846c7d4 100644
--- a/pywikibot/comms/eventstreams.py
+++ b/pywikibot/comms/eventstreams.py
@@ -14,22 +14,23 @@
#
import json
import socket
-
from functools import partial
-from pkg_resources import parse_version
from typing import Optional
+from pkg_resources import parse_version
from requests import __version__ as requests_version
from requests.packages.urllib3.exceptions import ProtocolError
from requests.packages.urllib3.util.response import httplib
+from pywikibot import Site, Timestamp, config, debug, warning
+from pywikibot.tools import deprecated_args
+
+
try:
from sseclient import SSEClient as EventSource
except ImportError as e:
EventSource = e
-from pywikibot import config, debug, Timestamp, Site, warning
-from pywikibot.tools import deprecated_args
if parse_version(requests_version) < parse_version('2.20.1'):
raise ImportError(
diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py
index 87f07a1..4b52e35 100644
--- a/pywikibot/comms/http.py
+++ b/pywikibot/comms/http.py
@@ -19,9 +19,8 @@
import codecs
import re
import sys
-
from contextlib import suppress
-from http import cookiejar, HTTPStatus
+from http import HTTPStatus, cookiejar
from string import Formatter
from typing import Optional, Union
from urllib.parse import quote, urlparse
@@ -30,24 +29,22 @@
import requests
import pywikibot
-
-from pywikibot.backports import Tuple
from pywikibot import config2 as config
-from pywikibot.logging import critical, debug, error, log, warning
-
+from pywikibot.backports import Tuple
from pywikibot.exceptions import (
FatalServerError,
- Server504Error,
Server414Error,
+ Server504Error,
)
-
+from pywikibot.logging import critical, debug, error, log, warning
from pywikibot.tools import (
deprecated,
deprecated_args,
- issue_deprecation_warning,
file_mode_checker,
+ issue_deprecation_warning,
)
+
try:
import requests_oauthlib
except ImportError as e:
diff --git a/pywikibot/config2.py b/pywikibot/config2.py
index 3c5e45a..1e8985b 100644
--- a/pywikibot/config2.py
+++ b/pywikibot/config2.py
@@ -38,19 +38,18 @@
import stat
import sys
import types
-
from locale import getdefaultlocale
-from os import getenv, environ
+from os import environ, getenv
from pathlib import Path
from textwrap import fill
from typing import Optional, Union
from warnings import warn
-from zipfile import is_zipfile, ZipFile
+from zipfile import ZipFile, is_zipfile
from pywikibot.__metadata__ import __version__ as pwb_version
-from pywikibot.backports import Dict, List, removesuffix, Tuple
+from pywikibot.backports import Dict, List, Tuple, removesuffix
from pywikibot.logging import error, output, warning
-from pywikibot.tools import issue_deprecation_warning, deprecated
+from pywikibot.tools import deprecated, issue_deprecation_warning
OSWIN32 = (sys.platform == 'win32')
diff --git a/pywikibot/cosmetic_changes.py b/pywikibot/cosmetic_changes.py
index 233d3aa..eb014e0 100755
--- a/pywikibot/cosmetic_changes.py
+++ b/pywikibot/cosmetic_changes.py
@@ -56,21 +56,17 @@
# Distributed under the terms of the MIT license.
#
import re
-
from typing import Optional
import pywikibot
-
+from pywikibot import textlib
from pywikibot.exceptions import InvalidTitleError
from pywikibot.page import url2unicode
-from pywikibot import textlib
-
from pywikibot.textlib import (
FILE_LINK_REGEX,
_get_regexes,
_MultiTemplateMatchBuilder,
)
-
from pywikibot.tools import (
deprecated,
deprecated_args,
@@ -79,6 +75,7 @@
issue_deprecation_warning,
)
+
try:
import stdnum.isbn as stdnum_isbn
except ImportError:
diff --git a/pywikibot/daemonize.py b/pywikibot/daemonize.py
index 4ee2be3..9fe0efc 100644
--- a/pywikibot/daemonize.py
+++ b/pywikibot/daemonize.py
@@ -11,6 +11,7 @@
from pywikibot.tools import deprecated_args
+
is_daemon = False
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 95c86de..d487ac5 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -12,7 +12,6 @@
import pprint
import re
import traceback
-
from collections.abc import Container, MutableMapping, Sized
from contextlib import suppress
from email.generator import BytesGenerator
@@ -21,21 +20,14 @@
from inspect import getfullargspec
from io import BytesIO
from typing import Optional, Union
+from urllib.parse import unquote, urlencode
from warnings import warn
-from urllib.parse import urlencode, unquote
import pywikibot
import pywikibot.exceptions
-
from pywikibot import config, login
-from pywikibot.backports import removeprefix, Tuple
+from pywikibot.backports import Tuple, removeprefix
from pywikibot.comms import http
-from pywikibot.family import SubdomainFamily
-from pywikibot.login import LoginStatus
-from pywikibot.textlib import removeHTMLParts
-from pywikibot.tools import itergroup, ModuleDeprecationWrapper, PYTHON_VERSION
-from pywikibot.tools.formatter import color_format
-
from pywikibot.exceptions import (
CaptchaError,
Error,
@@ -49,6 +41,11 @@
TimeoutError,
UnsupportedPageError,
)
+from pywikibot.family import SubdomainFamily
+from pywikibot.login import LoginStatus
+from pywikibot.textlib import removeHTMLParts
+from pywikibot.tools import PYTHON_VERSION, ModuleDeprecationWrapper, itergroup
+from pywikibot.tools.formatter import color_format
_logger = 'data.api'
diff --git a/pywikibot/data/mysql.py b/pywikibot/data/mysql.py
index 95fef47..907457e 100644
--- a/pywikibot/data/mysql.py
+++ b/pywikibot/data/mysql.py
@@ -4,11 +4,14 @@
#
# Distributed under the terms of the MIT license.
#
-import pkg_resources
-
from typing import Optional
+import pkg_resources
+
import pywikibot
+from pywikibot import config2 as config
+from pywikibot.tools import deprecated_args
+
try:
import pymysql
@@ -16,10 +19,6 @@
raise ImportError('MySQL python module not found. Please install PyMySQL.')
-from pywikibot import config2 as config
-from pywikibot.tools import deprecated_args
-
-
@deprecated_args(encoding=True)
def mysql_query(query: str, params=None,
dbname: Optional[str] = None,
diff --git a/pywikibot/data/sparql.py b/pywikibot/data/sparql.py
index 7dcf6e3..5588ef0 100644
--- a/pywikibot/data/sparql.py
+++ b/pywikibot/data/sparql.py
@@ -5,13 +5,12 @@
# Distributed under the terms of the MIT license.
#
import json
-
from typing import Optional
from urllib.parse import quote
from requests.exceptions import Timeout
-from pywikibot import config, warning, Site, sleep
+from pywikibot import Site, config, sleep, warning
from pywikibot.comms import http
from pywikibot.exceptions import Error, TimeoutError
diff --git a/pywikibot/data/wikistats.py b/pywikibot/data/wikistats.py
index cffa547..1b522f6 100644
--- a/pywikibot/data/wikistats.py
+++ b/pywikibot/data/wikistats.py
@@ -3,12 +3,12 @@
# (C) Pywikibot team, 2014-2020
#
# Distributed under the terms of the MIT license.
+#
from csv import DictReader
from io import StringIO
from typing import Optional
import pywikibot
-
from pywikibot.comms import http
from pywikibot.tools import remove_last_args
diff --git a/pywikibot/date.py b/pywikibot/date.py
index 30363a5..497b94a 100644
--- a/pywikibot/date.py
+++ b/pywikibot/date.py
@@ -7,18 +7,18 @@
import calendar
import datetime
import re
-
-from collections.abc import Mapping, MutableMapping
from collections import defaultdict
+from collections.abc import Mapping, MutableMapping
from contextlib import suppress
from functools import singledispatch
from string import digits as _decimalDigits # noqa: N812
-from pywikibot.backports import Tuple
from pywikibot import Site
+from pywikibot.backports import Tuple
from pywikibot.textlib import NON_LATIN_DIGITS
from pywikibot.tools import deprecated, first_lower, first_upper
+
#
# Different collections of well known formats
#
diff --git a/pywikibot/diff.py b/pywikibot/diff.py
index 13953c2..3a0094a 100644
--- a/pywikibot/diff.py
+++ b/pywikibot/diff.py
@@ -6,13 +6,11 @@
#
import difflib
import math
-
from collections.abc import Sequence
from difflib import _format_range_unified as format_range_unified
from itertools import zip_longest
import pywikibot
-
from pywikibot.tools import chars, deprecated_args
from pywikibot.tools.formatter import color_format
diff --git a/pywikibot/echo.py b/pywikibot/echo.py
index a50ba95..5fddbfa 100644
--- a/pywikibot/echo.py
+++ b/pywikibot/echo.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot.tools import deprecated
diff --git a/pywikibot/editor.py b/pywikibot/editor.py
index 6884936..3a9ebd0 100644
--- a/pywikibot/editor.py
+++ b/pywikibot/editor.py
@@ -9,15 +9,14 @@
import os
import subprocess
import tempfile
-
from sys import platform
from textwrap import fill
from typing import Optional
import pywikibot
-
from pywikibot import config
+
try:
from pywikibot.userinterfaces import gui
except ImportError as e:
diff --git a/pywikibot/exceptions.py b/pywikibot/exceptions.py
index a7ba5cc..cc9bb9f 100644
--- a/pywikibot/exceptions.py
+++ b/pywikibot/exceptions.py
@@ -159,7 +159,6 @@
#
import re
import sys
-
from typing import Optional, Union
from pywikibot.tools import ModuleDeprecationWrapper, _NotImplementedWarning
diff --git a/pywikibot/families/wikidata_family.py
b/pywikibot/families/wikidata_family.py
index 162aa7c..c296b45 100644
--- a/pywikibot/families/wikidata_family.py
+++ b/pywikibot/families/wikidata_family.py
@@ -4,8 +4,7 @@
#
# Distributed under the terms of the MIT license.
#
-from pywikibot import config
-from pywikibot import family
+from pywikibot import config, family
# The Wikidata family
diff --git a/pywikibot/families/wowwiki_family.py b/pywikibot/families/wowwiki_family.py
index ebb6162..6e98ce4 100644
--- a/pywikibot/families/wowwiki_family.py
+++ b/pywikibot/families/wowwiki_family.py
@@ -5,7 +5,7 @@
# Distributed under the terms of the MIT license.
#
from pywikibot import family
-from pywikibot.tools import deprecated, classproperty
+from pywikibot.tools import classproperty, deprecated
class Family(family.FandomFamily):
diff --git a/pywikibot/family.py b/pywikibot/family.py
index 5a0ec89..b12e525 100644
--- a/pywikibot/family.py
+++ b/pywikibot/family.py
@@ -12,23 +12,20 @@
import types
import urllib.parse as urlparse
import warnings
-
from importlib import import_module
from itertools import chain
from os.path import basename, dirname, splitext
from typing import Optional
import pywikibot
-
from pywikibot import config
from pywikibot.backports import Dict, List, Tuple
-from pywikibot.exceptions import UnknownFamilyError, FamilyMaintenanceWarning
-
+from pywikibot.exceptions import FamilyMaintenanceWarning, UnknownFamilyError
from pywikibot.tools import (
+ ModuleDeprecationWrapper,
classproperty,
deprecated,
deprecated_args,
- ModuleDeprecationWrapper,
)
diff --git a/pywikibot/fixes.py b/pywikibot/fixes.py
index 388cdd8..2055b5c 100644
--- a/pywikibot/fixes.py
+++ b/pywikibot/fixes.py
@@ -8,6 +8,7 @@
from pywikibot import config
+
parameter_help = """
Currently available predefined fixes are:
diff --git a/pywikibot/flow.py b/pywikibot/flow.py
index 5d16acd..b99044f 100644
--- a/pywikibot/flow.py
+++ b/pywikibot/flow.py
@@ -6,17 +6,16 @@
#
import abc
import logging
-
-from urllib.parse import urlparse, parse_qs
-
-from pywikibot.page import BasePage, User
-from pywikibot.tools import deprecate_arg
+from urllib.parse import parse_qs, urlparse
from pywikibot.exceptions import (
LockedPageError,
NoPageError,
UnknownExtensionError,
)
+from pywikibot.page import BasePage, User
+from pywikibot.tools import deprecate_arg
+
logger = logging.getLogger('pywiki.wiki.flow')
diff --git a/pywikibot/i18n.py b/pywikibot/i18n.py
index b2d8d45..42fcbda 100644
--- a/pywikibot/i18n.py
+++ b/pywikibot/i18n.py
@@ -23,9 +23,8 @@
import os
import pkgutil
import re
-
-from collections.abc import Mapping
from collections import defaultdict
+from collections.abc import Mapping
from contextlib import suppress
from textwrap import fill
from typing import Optional, Union
@@ -33,19 +32,18 @@
import pywikibot
import pywikibot.exceptions
-
from pywikibot import __url__
from pywikibot import config2 as config
-from pywikibot.backports import cache, List
+from pywikibot.backports import List, cache
from pywikibot.plural import plural_rule
-
from pywikibot.tools import (
+ ModuleDeprecationWrapper,
deprecated,
deprecated_args,
issue_deprecation_warning,
- ModuleDeprecationWrapper,
)
+
PLURAL_PATTERN = r'{{PLURAL:(?:%\()?([^\)]*?)(?:\)d)?\|(.*?)}}'
# Package name for the translation messages. The messages data must loaded
diff --git a/pywikibot/interwiki_graph.py b/pywikibot/interwiki_graph.py
index b4b9067..8faa414 100644
--- a/pywikibot/interwiki_graph.py
+++ b/pywikibot/interwiki_graph.py
@@ -6,15 +6,14 @@
#
import itertools
import threading
-
from collections import Counter
from typing import Optional
import pywikibot
-
from pywikibot import config2 as config
from pywikibot.tools import ModuleDeprecationWrapper
+
try:
import pydot
except ImportError as e:
diff --git a/pywikibot/logentries.py b/pywikibot/logentries.py
index 0d09a4d..3d2e9cf 100644
--- a/pywikibot/logentries.py
+++ b/pywikibot/logentries.py
@@ -9,7 +9,6 @@
from typing import Optional
import pywikibot
-
from pywikibot.backports import List
from pywikibot.exceptions import Error, HiddenKeyError
from pywikibot.tools import deprecated
diff --git a/pywikibot/logging.py b/pywikibot/logging.py
index 785ce4d..60191f2 100644
--- a/pywikibot/logging.py
+++ b/pywikibot/logging.py
@@ -9,9 +9,10 @@
import sys
# logging levels
-from logging import DEBUG, INFO, WARNING, ERROR, CRITICAL
+from logging import CRITICAL, DEBUG, ERROR, INFO, WARNING
from typing import Optional
+
STDOUT = 16
VERBOSE = 18
INPUT = 25
diff --git a/pywikibot/login.py b/pywikibot/login.py
index d8902a1..f11c51e 100644
--- a/pywikibot/login.py
+++ b/pywikibot/login.py
@@ -8,26 +8,24 @@
import codecs
import os
import webbrowser
-
from enum import IntEnum
from typing import Optional
from warnings import warn
import pywikibot
import pywikibot.data.api
-
-from pywikibot import config, __url__
+from pywikibot import __url__, config
from pywikibot.comms import http
from pywikibot.exceptions import APIError, NoUsernameError
-
from pywikibot.tools import (
+ ModuleDeprecationWrapper,
deprecated_args,
file_mode_checker,
- ModuleDeprecationWrapper,
normalize_username,
remove_last_args,
)
+
try:
import mwoauth
except ImportError as e:
diff --git a/pywikibot/page/__init__.py b/pywikibot/page/__init__.py
index 68ad4b2..ac947c1 100644
--- a/pywikibot/page/__init__.py
+++ b/pywikibot/page/__init__.py
@@ -19,8 +19,7 @@
import os.path
import re
import unicodedata
-
-from collections import Counter, defaultdict, OrderedDict
+from collections import Counter, OrderedDict, defaultdict
from contextlib import suppress
from html.entities import name2codepoint
from http import HTTPStatus
@@ -30,16 +29,9 @@
from warnings import warn
import pywikibot
-
from pywikibot import config, i18n, textlib
-from pywikibot.backports import cache, Dict, Iterable, List, Tuple
+from pywikibot.backports import Dict, Iterable, List, Tuple, cache
from pywikibot.comms import http
-from pywikibot.family import Family
-from pywikibot.page._decorators import allow_asynchronous
-from pywikibot.page._revision import Revision
-from pywikibot.site import DataSite, Namespace
-from pywikibot.tools import is_IP
-
from pywikibot.exceptions import (
APIError,
AutoblockUserError,
@@ -62,25 +54,29 @@
UserRightsError,
WikiBaseError,
)
-
+from pywikibot.family import Family
from pywikibot.page._collections import (
AliasesDict,
ClaimCollection,
LanguageDict,
SiteLinkCollection,
)
-
+from pywikibot.page._decorators import allow_asynchronous
+from pywikibot.page._revision import Revision
+from pywikibot.site import DataSite, Namespace
from pywikibot.tools import (
- compute_file_hash,
ComparableMixin,
- deprecated,
+ compute_file_hash,
deprecate_arg,
+ deprecated,
deprecated_args,
first_upper,
+ is_IP,
redirect_func,
remove_last_args,
)
+
PROTOCOL_REGEX = r'\Ahttps?://'
__all__ = (
@@ -1230,7 +1226,9 @@
% (family, self.site.lang))
# cc depends on page directly and via several other imports
from pywikibot.cosmetic_changes import (
- CANCEL_MATCH, CosmeticChangesToolkit)
+ CANCEL_MATCH,
+ CosmeticChangesToolkit,
+ )
cc_toolkit = CosmeticChangesToolkit(self, ignore=CANCEL_MATCH)
self.text = cc_toolkit.change(old)
diff --git a/pywikibot/page/_collections.py b/pywikibot/page/_collections.py
index fbc9a60..a943148 100644
--- a/pywikibot/page/_collections.py
+++ b/pywikibot/page/_collections.py
@@ -4,12 +4,11 @@
#
# Distributed under the terms of the MIT license.
#
-from collections.abc import MutableMapping
from collections import defaultdict
+from collections.abc import MutableMapping
from typing import Optional
import pywikibot
-
from pywikibot.site import BaseSite
diff --git a/pywikibot/page/_decorators.py b/pywikibot/page/_decorators.py
index 96bd2a8..c5d694d 100644
--- a/pywikibot/page/_decorators.py
+++ b/pywikibot/page/_decorators.py
@@ -7,14 +7,12 @@
#
import pywikibot
-
-from pywikibot.tools import add_full_name, manage_wrapping
-
from pywikibot.exceptions import (
Error,
OtherPageSaveError,
PageSaveRelatedError,
)
+from pywikibot.tools import add_full_name, manage_wrapping
@add_full_name
diff --git a/pywikibot/page/_revision.py b/pywikibot/page/_revision.py
index 5fb552f..aeb522a 100644
--- a/pywikibot/page/_revision.py
+++ b/pywikibot/page/_revision.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import hashlib
-
from collections.abc import Mapping
from contextlib import suppress
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 6f6f54d..356588b 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -24,35 +24,32 @@
import json
import re
import sys
-
-from collections.abc import Iterator
from collections import namedtuple
+from collections.abc import Iterator
from datetime import timedelta
from functools import partial
from http import HTTPStatus
from itertools import zip_longest
-from requests.exceptions import ReadTimeout
from typing import Optional, Union
-import pywikibot
+from requests.exceptions import ReadTimeout
-from pywikibot import date, config, i18n, xmlreader
+import pywikibot
+from pywikibot import config, date, i18n, xmlreader
from pywikibot.backports import Iterable, List
from pywikibot.bot import ShowingListOption
from pywikibot.comms import http
from pywikibot.data import api
-from pywikibot.proofreadpage import ProofreadPage
-
from pywikibot.exceptions import (
NoPageError,
ServerError,
UnknownExtensionError,
)
-
+from pywikibot.proofreadpage import ProofreadPage
from pywikibot.tools import (
+ DequeGenerator,
deprecated,
deprecated_args,
- DequeGenerator,
filter_unique,
intersect_generators,
itergroup,
diff --git a/pywikibot/plural.py b/pywikibot/plural.py
index 6618df4..aebde6a 100644
--- a/pywikibot/plural.py
+++ b/pywikibot/plural.py
@@ -5,9 +5,9 @@
# Distributed under the terms of the MIT license.
#
import sys
-
from typing import Callable, Union
+
if sys.version_info[:2] >= (3, 9):
Dict = dict
else:
diff --git a/pywikibot/proofreadpage.py b/pywikibot/proofreadpage.py
index 19e9ac4..3e59539 100644
--- a/pywikibot/proofreadpage.py
+++ b/pywikibot/proofreadpage.py
@@ -26,13 +26,20 @@
import json
import re
import time
-
from functools import partial
from http import HTTPStatus
from typing import Optional
from requests.exceptions import ReadTimeout
+import pywikibot
+from pywikibot import textlib
+from pywikibot.comms import http
+from pywikibot.data.api import Request
+from pywikibot.exceptions import Error, OtherPageSaveError
+from pywikibot.tools import ModuleDeprecationWrapper
+
+
try:
from bs4 import BeautifulSoup
except ImportError as e:
@@ -50,13 +57,6 @@
else:
_bs4_soup = partial(BeautifulSoup, features='lxml')
-import pywikibot
-
-from pywikibot.comms import http
-from pywikibot.data.api import Request
-from pywikibot.exceptions import Error, OtherPageSaveError
-from pywikibot import textlib
-from pywikibot.tools import ModuleDeprecationWrapper
_logger = 'proofreadpage'
diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index 4b419ed..0065402 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -13,6 +13,7 @@
from pywikibot.site._tokenwallet import TokenWallet
from pywikibot.tools import ModuleDeprecationWrapper, suppress_warnings
+
with suppress_warnings(category=FutureWarning):
from pywikibot.site._basesite import PageInUse
diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py
index b7cfd22..5f4a5c9 100644
--- a/pywikibot/site/_apisite.py
+++ b/pywikibot/site/_apisite.py
@@ -10,8 +10,7 @@
import re
import time
import typing
-
-from collections import defaultdict, namedtuple, OrderedDict
+from collections import OrderedDict, defaultdict, namedtuple
from collections.abc import Iterable
from contextlib import suppress
from textwrap import fill
@@ -20,20 +19,10 @@
import pywikibot
import pywikibot.family
-
from pywikibot.comms.http import get_authentication
from pywikibot.data import api
-from pywikibot.exceptions import APIError
-from pywikibot.login import LoginStatus as _LoginStatus
-from pywikibot.site._basesite import BaseSite
-from pywikibot.site._decorators import need_right, need_version
-from pywikibot.site._generators import GeneratorsMixin
-from pywikibot.site._interwikimap import _InterwikiMap
-from pywikibot.site._namespace import Namespace
-from pywikibot.site._siteinfo import Siteinfo
-from pywikibot.site._tokenwallet import TokenWallet
-
from pywikibot.exceptions import (
+ APIError,
ArticleExistsConflictError,
CaptchaError,
CascadeLockedPageError,
@@ -55,10 +44,12 @@
SiteDefinitionError,
SpamblacklistError,
TitleblacklistError,
- UploadError,
UnknownExtensionError,
+ UploadError,
)
-
+from pywikibot.login import LoginStatus as _LoginStatus
+from pywikibot.site._basesite import BaseSite
+from pywikibot.site._decorators import need_right, need_version
from pywikibot.site._extensions import (
EchoMixin,
FlowMixin,
@@ -72,14 +63,18 @@
UrlShortenerMixin,
WikibaseClientMixin,
)
-
+from pywikibot.site._generators import GeneratorsMixin
+from pywikibot.site._interwikimap import _InterwikiMap
+from pywikibot.site._namespace import Namespace
+from pywikibot.site._siteinfo import Siteinfo
+from pywikibot.site._tokenwallet import TokenWallet
from pywikibot.tools import (
+ MediaWikiVersion,
compute_file_hash,
- deprecated,
deprecate_arg,
+ deprecated,
deprecated_args,
issue_deprecation_warning,
- MediaWikiVersion,
merge_unique_dicts,
normalize_username,
remove_last_args,
diff --git a/pywikibot/site/_basesite.py b/pywikibot/site/_basesite.py
index 09bb54d..e84cbef 100644
--- a/pywikibot/site/_basesite.py
+++ b/pywikibot/site/_basesite.py
@@ -7,14 +7,9 @@
import functools
import re
import threading
-
from warnings import warn
import pywikibot
-
-from pywikibot.site._namespace import Namespace, NamespacesDict
-from pywikibot.throttle import Throttle
-
from pywikibot.exceptions import (
Error,
FamilyMaintenanceWarning,
@@ -22,15 +17,16 @@
PageInUseError,
UnknownSiteError,
)
-
+from pywikibot.site._namespace import Namespace, NamespacesDict
+from pywikibot.throttle import Throttle
from pywikibot.tools import (
ComparableMixin,
+ ModuleDeprecationWrapper,
+ SelfCallString,
deprecated,
first_upper,
- ModuleDeprecationWrapper,
normalize_username,
remove_last_args,
- SelfCallString,
)
diff --git a/pywikibot/site/_datasite.py b/pywikibot/site/_datasite.py
index b198f91..dc0c724 100644
--- a/pywikibot/site/_datasite.py
+++ b/pywikibot/site/_datasite.py
@@ -7,18 +7,13 @@
import datetime
import json
import uuid
-
from contextlib import suppress
from typing import Optional
from warnings import warn
import pywikibot
import pywikibot.family
-
from pywikibot.data import api
-from pywikibot.site._apisite import APISite
-from pywikibot.site._decorators import need_right, need_version
-
from pywikibot.exceptions import (
APIError,
EntityTypeUnknownError,
@@ -26,7 +21,8 @@
NoPageError,
NoWikibaseEntityError,
)
-
+from pywikibot.site._apisite import APISite
+from pywikibot.site._decorators import need_right, need_version
from pywikibot.tools import (
deprecated,
deprecated_args,
diff --git a/pywikibot/site/_decorators.py b/pywikibot/site/_decorators.py
index 46ebbce..02f31f8 100644
--- a/pywikibot/site/_decorators.py
+++ b/pywikibot/site/_decorators.py
@@ -5,7 +5,7 @@
# Distributed under the terms of the MIT license.
#
from pywikibot.exceptions import UnknownExtensionError, UserRightsError
-from pywikibot.tools import manage_wrapping, MediaWikiVersion
+from pywikibot.tools import MediaWikiVersion, manage_wrapping
def must_be(group=None):
diff --git a/pywikibot/site/_extensions.py b/pywikibot/site/_extensions.py
index 6e07b40..7675826 100644
--- a/pywikibot/site/_extensions.py
+++ b/pywikibot/site/_extensions.py
@@ -6,17 +6,15 @@
#
import pywikibot
import pywikibot.family
-
from pywikibot.data import api
from pywikibot.echo import Notification
-from pywikibot.site._decorators import need_extension, need_right
-from pywikibot.tools import deprecate_arg, deprecated_args, merge_unique_dicts
-
from pywikibot.exceptions import (
APIError,
InconsistentTitleError,
SiteDefinitionError,
)
+from pywikibot.site._decorators import need_extension, need_right
+from pywikibot.tools import deprecate_arg, deprecated_args, merge_unique_dicts
class EchoMixin:
diff --git a/pywikibot/site/_generators.py b/pywikibot/site/_generators.py
index fb4234c..8ae0b6d 100644
--- a/pywikibot/site/_generators.py
+++ b/pywikibot/site/_generators.py
@@ -7,7 +7,6 @@
import heapq
import itertools
import typing
-
from contextlib import suppress
from itertools import zip_longest
from typing import Any, Optional, Union
@@ -15,20 +14,17 @@
import pywikibot
import pywikibot.family
-
from pywikibot.backports import Dict, List
from pywikibot.data import api
-from pywikibot.site._decorators import need_right, need_version
-
from pywikibot.exceptions import (
APIError,
Error,
InconsistentTitleError,
InvalidTitleError,
NoPageError,
- UserRightsError
+ UserRightsError,
)
-
+from pywikibot.site._decorators import need_right, need_version
from pywikibot.tools import (
deprecated,
deprecated_args,
diff --git a/pywikibot/site/_interwikimap.py b/pywikibot/site/_interwikimap.py
index 026ca0f..50b71e2 100644
--- a/pywikibot/site/_interwikimap.py
+++ b/pywikibot/site/_interwikimap.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot.backports import Set
diff --git a/pywikibot/site/_obsoletesites.py b/pywikibot/site/_obsoletesites.py
index f735be7..f306d5b 100644
--- a/pywikibot/site/_obsoletesites.py
+++ b/pywikibot/site/_obsoletesites.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot.exceptions import NoPageError
from pywikibot.site._apisite import APISite
from pywikibot.site._basesite import BaseSite
diff --git a/pywikibot/site/_siteinfo.py b/pywikibot/site/_siteinfo.py
index 326796d..0c17c3d 100644
--- a/pywikibot/site/_siteinfo.py
+++ b/pywikibot/site/_siteinfo.py
@@ -7,13 +7,11 @@
import copy
import datetime
import re
-
from collections.abc import Container
from contextlib import suppress
from typing import Optional
import pywikibot
-
from pywikibot.exceptions import APIError
from pywikibot.tools import EMPTY_DEFAULT, issue_deprecation_warning
diff --git a/pywikibot/site_detect.py b/pywikibot/site_detect.py
index fcb8d21..84f8243 100644
--- a/pywikibot/site_detect.py
+++ b/pywikibot/site_detect.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import json
-
from contextlib import suppress
from html.parser import HTMLParser
from http import HTTPStatus
@@ -15,7 +14,6 @@
from requests.exceptions import RequestException
import pywikibot
-
from pywikibot.comms.http import fetch
from pywikibot.exceptions import ServerError
from pywikibot.tools import MediaWikiVersion
diff --git a/pywikibot/specialbots/__init__.py b/pywikibot/specialbots/__init__.py
index 7bd2167..bffae00 100644
--- a/pywikibot/specialbots/__init__.py
+++ b/pywikibot/specialbots/__init__.py
@@ -9,6 +9,7 @@
from pywikibot.specialbots._upload import UploadRobot
from pywikibot.tools import ModuleDeprecationWrapper, suppress_warnings
+
with suppress_warnings(category=FutureWarning):
from pywikibot.specialbots._unlink import EditReplacement
diff --git a/pywikibot/specialbots/_unlink.py b/pywikibot/specialbots/_unlink.py
index 60f118c..cc50250 100644
--- a/pywikibot/specialbots/_unlink.py
+++ b/pywikibot/specialbots/_unlink.py
@@ -8,11 +8,6 @@
#
# Distributed under the terms of the MIT license.
#
-from pywikibot.editor import TextEditor
-from pywikibot.exceptions import UnhandledAnswerError
-from pywikibot.textlib import replace_links
-from pywikibot.tools import ModuleDeprecationWrapper
-
from pywikibot.bot import (
AlwaysChoice,
AutomaticTWSummaryBot,
@@ -21,6 +16,10 @@
InteractiveReplace,
NoRedirectPageBot,
)
+from pywikibot.editor import TextEditor
+from pywikibot.exceptions import UnhandledAnswerError
+from pywikibot.textlib import replace_links
+from pywikibot.tools import ModuleDeprecationWrapper
class EditReplacementError(ChoiceException, UnhandledAnswerError):
diff --git a/pywikibot/specialbots/_upload.py b/pywikibot/specialbots/_upload.py
index ea9aed2..c83a7b6 100644
--- a/pywikibot/specialbots/_upload.py
+++ b/pywikibot/specialbots/_upload.py
@@ -9,31 +9,25 @@
# Distributed under the terms of the MIT license.
#
import os
-import requests
import tempfile
-
from contextlib import suppress
from http import HTTPStatus
from pathlib import Path
from typing import Optional, Union
from urllib.parse import urlparse
+import requests
+
import pywikibot
import pywikibot.comms.http as http
import pywikibot.data.api
-
+from pywikibot import config
from pywikibot.backports import List
from pywikibot.bot import BaseBot, QuitKeyboardInterrupt
-from pywikibot import config
-from pywikibot.exceptions import APIError
+from pywikibot.exceptions import APIError, FatalServerError, NoPageError
from pywikibot.tools import deprecated_args
from pywikibot.tools.formatter import color_format
-from pywikibot.exceptions import (
- FatalServerError,
- NoPageError,
-)
-
class UploadRobot(BaseBot):
diff --git a/pywikibot/textlib.py b/pywikibot/textlib.py
index af0cfca..dbcea21 100644
--- a/pywikibot/textlib.py
+++ b/pywikibot/textlib.py
@@ -13,26 +13,25 @@
import datetime
import html
import re
-
-from collections.abc import Sequence
from collections import OrderedDict, namedtuple
+from collections.abc import Sequence
from contextlib import suppress
from html.parser import HTMLParser
from typing import NamedTuple, Optional, Union
import pywikibot
-
-from pywikibot.backports import List, Tuple
+from pywikibot.backports import List
from pywikibot.backports import OrderedDict as OrderedDictType
+from pywikibot.backports import Tuple
from pywikibot.exceptions import InvalidTitleError, SiteDefinitionError
from pywikibot.family import Family
-
from pywikibot.tools import (
- deprecated,
deprecate_arg,
+ deprecated,
issue_deprecation_warning,
)
+
try:
import wikitextparser
except ImportError:
diff --git a/pywikibot/throttle.py b/pywikibot/throttle.py
index 0957469..e2a5672 100644
--- a/pywikibot/throttle.py
+++ b/pywikibot/throttle.py
@@ -7,15 +7,14 @@
import math
import threading
import time
-
from collections import namedtuple
from contextlib import suppress
from typing import Optional, Union
import pywikibot
-
from pywikibot import config
+
_logger = 'wiki.throttle'
FORMAT_LINE = '{pid} {time} {site}\n'
diff --git a/pywikibot/titletranslate.py b/pywikibot/titletranslate.py
index fd0916a..e3e72d5 100644
--- a/pywikibot/titletranslate.py
+++ b/pywikibot/titletranslate.py
@@ -5,9 +5,7 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-from pywikibot import date
-
-from pywikibot import config
+from pywikibot import config, date
from pywikibot.tools import deprecated_args
diff --git a/pywikibot/tools/__init__.py b/pywikibot/tools/__init__.py
index 3538673..33c764b 100644
--- a/pywikibot/tools/__init__.py
+++ b/pywikibot/tools/__init__.py
@@ -10,7 +10,6 @@
import inspect
import itertools
import os
-import pkg_resources
import queue
import re
import stat
@@ -19,9 +18,8 @@
import threading
import time
import types
-
-from collections.abc import Container, Iterable, Iterator, Mapping, Sized
from collections import defaultdict
+from collections.abc import Container, Iterable, Iterator, Mapping, Sized
from contextlib import suppress
from datetime import datetime
from functools import wraps
@@ -32,9 +30,12 @@
from typing import Optional
from warnings import catch_warnings, showwarning, warn
+import pkg_resources
+
from pywikibot.logging import debug
from pywikibot.tools._unidata import _first_upper_exception
+
try:
import bz2
except ImportError as bz2_import_error:
diff --git a/pywikibot/tools/chars.py b/pywikibot/tools/chars.py
index a31ab23..945e70f 100644
--- a/pywikibot/tools/chars.py
+++ b/pywikibot/tools/chars.py
@@ -6,8 +6,9 @@
#
import sys
-from pywikibot.tools._unidata import _category_cf
from pywikibot.tools import LazyRegex
+from pywikibot.tools._unidata import _category_cf
+
# This is a set of all invisible characters
# At the moment we've only added the characters from the Cf category
diff --git a/pywikibot/tools/djvu.py b/pywikibot/tools/djvu.py
index 34713af..5007d9a 100644
--- a/pywikibot/tools/djvu.py
+++ b/pywikibot/tools/djvu.py
@@ -8,11 +8,9 @@
import os
import re
import subprocess
-
from collections import Counter
import pywikibot
-
from pywikibot.tools import deprecated_args
diff --git a/pywikibot/tools/formatter.py b/pywikibot/tools/formatter.py
index def2fdc..67a1435 100644
--- a/pywikibot/tools/formatter.py
+++ b/pywikibot/tools/formatter.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import math
-
from string import Formatter
from typing import Any, Mapping, Sequence
diff --git a/pywikibot/userinterfaces/gui.py b/pywikibot/userinterfaces/gui.py
index 1b32aac..80ff2f1 100644
--- a/pywikibot/userinterfaces/gui.py
+++ b/pywikibot/userinterfaces/gui.py
@@ -9,12 +9,11 @@
# Distributed under the terms of the MIT license.
#
import tkinter
-from tkinter.scrolledtext import ScrolledText
from tkinter import simpledialog as tkSimpleDialog
+from tkinter.scrolledtext import ScrolledText
from typing import Optional
import pywikibot
-
from pywikibot import __url__
from pywikibot.backports import Tuple
from pywikibot.tools import PYTHON_VERSION
@@ -22,15 +21,13 @@
# T164163: Fix idlelib import in Python 3.6
if PYTHON_VERSION >= (3, 6):
- from idlelib import (
- search as SearchDialog,
- replace as ReplaceDialog,
- )
+ from idlelib import replace as ReplaceDialog
+ from idlelib import search as SearchDialog
from idlelib.config import idleConf
from idlelib.configdialog import ConfigDialog
from idlelib.multicall import MultiCallCreator
else:
- from idlelib import SearchDialog, ReplaceDialog
+ from idlelib import ReplaceDialog, SearchDialog
from idlelib.configDialog import ConfigDialog
from idlelib.configHandler import idleConf
from idlelib.MultiCall import MultiCallCreator
diff --git a/pywikibot/userinterfaces/terminal_interface.py
b/pywikibot/userinterfaces/terminal_interface.py
index 7efca34..b57c151 100644
--- a/pywikibot/userinterfaces/terminal_interface.py
+++ b/pywikibot/userinterfaces/terminal_interface.py
@@ -10,6 +10,7 @@
#
import sys
+
if sys.platform == 'win32':
from pywikibot.userinterfaces.terminal_interface_win32 import Win32UI as UI
else:
diff --git a/pywikibot/userinterfaces/terminal_interface_base.py
b/pywikibot/userinterfaces/terminal_interface_base.py
index c38d39d..106edbf 100755
--- a/pywikibot/userinterfaces/terminal_interface_base.py
+++ b/pywikibot/userinterfaces/terminal_interface_base.py
@@ -9,16 +9,11 @@
import re
import sys
import threading
-
from typing import Any, Optional, Union
import pywikibot
from pywikibot import config2 as config
-
from pywikibot.backports import Sequence
-from pywikibot.logging import VERBOSE, INFO, STDOUT, INPUT, WARNING
-from pywikibot.userinterfaces import transliteration
-
from pywikibot.bot_choice import (
ChoiceException,
Option,
@@ -26,6 +21,8 @@
QuitKeyboardInterrupt,
StandardOption,
)
+from pywikibot.logging import INFO, INPUT, STDOUT, VERBOSE, WARNING
+from pywikibot.userinterfaces import transliteration
transliterator = transliteration.transliterator(config.console_encoding)
diff --git a/pywikibot/userinterfaces/terminal_interface_unix.py
b/pywikibot/userinterfaces/terminal_interface_unix.py
index 12caad7..a23ce78 100755
--- a/pywikibot/userinterfaces/terminal_interface_unix.py
+++ b/pywikibot/userinterfaces/terminal_interface_unix.py
@@ -8,6 +8,7 @@
from pywikibot.userinterfaces import terminal_interface_base
+
unixColors = {
'default': chr(27) + '[0m', # Unix end tag to switch back to
default
'black': chr(27) + '[30m', # Black start tag
diff --git a/pywikibot/userinterfaces/terminal_interface_win32.py
b/pywikibot/userinterfaces/terminal_interface_win32.py
index 292ee34..05b62eb 100755
--- a/pywikibot/userinterfaces/terminal_interface_win32.py
+++ b/pywikibot/userinterfaces/terminal_interface_win32.py
@@ -8,6 +8,7 @@
from pywikibot.userinterfaces import terminal_interface_base, win32_unicode
+
windowsColors = {
'default': 7,
'black': 0,
diff --git a/pywikibot/userinterfaces/win32_unicode.py
b/pywikibot/userinterfaces/win32_unicode.py
index 9654a87..975def5 100755
--- a/pywikibot/userinterfaces/win32_unicode.py
+++ b/pywikibot/userinterfaces/win32_unicode.py
@@ -23,12 +23,13 @@
################################################
import codecs
import sys
-
from contextlib import suppress
-from ctypes import Structure, byref, create_unicode_buffer, sizeof
+from ctypes import Structure, byref
from ctypes import c_void_p as LPVOID
+from ctypes import create_unicode_buffer, sizeof
from io import IOBase, UnsupportedOperation
+
OSWIN32 = (sys.platform == 'win32')
stdin = sys.stdin
@@ -39,9 +40,17 @@
original_stderr = sys.stderr
if OSWIN32:
- from ctypes import WINFUNCTYPE, windll, POINTER, WinError
- from ctypes.wintypes import (BOOL, DWORD, HANDLE, LPWSTR,
- SHORT, ULONG, UINT, WCHAR)
+ from ctypes import POINTER, WINFUNCTYPE, WinError, windll
+ from ctypes.wintypes import (
+ BOOL,
+ DWORD,
+ HANDLE,
+ LPWSTR,
+ SHORT,
+ UINT,
+ ULONG,
+ WCHAR,
+ )
try:
ReadConsoleW = WINFUNCTYPE(BOOL, HANDLE, LPVOID, DWORD, POINTER(DWORD),
diff --git a/pywikibot/version.py b/pywikibot/version.py
index 5052060..d62f977 100644
--- a/pywikibot/version.py
+++ b/pywikibot/version.py
@@ -14,7 +14,6 @@
import sysconfig
import time
import xml.dom.minidom
-
from contextlib import closing, suppress
from importlib import import_module
from io import BytesIO
@@ -22,12 +21,11 @@
from warnings import warn
import pywikibot
-
+from pywikibot import config2 as config
from pywikibot.backports import cache
from pywikibot.comms.http import fetch
-from pywikibot import config2 as config
from pywikibot.exceptions import VersionParseError
-from pywikibot.tools import deprecated, ModuleDeprecationWrapper
+from pywikibot.tools import ModuleDeprecationWrapper, deprecated
_logger = 'version'
@@ -330,6 +328,7 @@
def getversion_onlinerepo(path='branches/master'):
"""Retrieve current framework git hash from Gerrit."""
from pywikibot.comms import http
+
# Gerrit API responses include )]}' at the beginning,
# make sure to strip it out
buf = http.fetch(
diff --git a/pywikibot/xmlreader.py b/pywikibot/xmlreader.py
index 1213355..0a0a132 100644
--- a/pywikibot/xmlreader.py
+++ b/pywikibot/xmlreader.py
@@ -15,7 +15,6 @@
import re
import threading
import xml.sax
-
from xml.etree.ElementTree import iterparse
from pywikibot.tools import open_archive
diff --git a/scripts/add_text.py b/scripts/add_text.py
index cd5c769..3588f11 100755
--- a/scripts/add_text.py
+++ b/scripts/add_text.py
@@ -58,17 +58,12 @@
import codecs
import re
import sys
-
from typing import Optional, Union
import pywikibot
-
+from pywikibot import config, i18n, pagegenerators, textlib
from pywikibot.backports import Tuple
from pywikibot.bot_choice import QuitKeyboardInterrupt
-from pywikibot import config, i18n, pagegenerators, textlib
-from pywikibot.tools.formatter import color_format
-from pywikibot.tools import issue_deprecation_warning
-
from pywikibot.exceptions import (
ArgumentDeprecationWarning,
EditConflictError,
@@ -79,6 +74,9 @@
ServerError,
SpamblacklistError,
)
+from pywikibot.tools import issue_deprecation_warning
+from pywikibot.tools.formatter import color_format
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/blockpageschecker.py b/scripts/archive/blockpageschecker.py
index 84af1fc..d5d8582 100755
--- a/scripts/archive/blockpageschecker.py
+++ b/scripts/archive/blockpageschecker.py
@@ -49,10 +49,7 @@
import webbrowser
import pywikibot
-
from pywikibot import config, i18n, pagegenerators
-from pywikibot.tools.formatter import color_format
-
from pywikibot.exceptions import (
EditConflictError,
Error,
@@ -63,6 +60,8 @@
ServerError,
SpamblacklistError,
)
+from pywikibot.tools.formatter import color_format
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
diff --git a/scripts/archive/capitalize_redirects.py
b/scripts/archive/capitalize_redirects.py
index 176279a..2319e7d 100755
--- a/scripts/archive/capitalize_redirects.py
+++ b/scripts/archive/capitalize_redirects.py
@@ -30,10 +30,8 @@
# Automatically converted from compat branch by compat2core.py script
#
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.backports import Tuple
-
from pywikibot.bot import (
ExistingPageBot,
FollowRedirectPageBot,
diff --git a/scripts/archive/casechecker.py b/scripts/archive/casechecker.py
index ec9a4e8..417a654 100755
--- a/scripts/archive/casechecker.py
+++ b/scripts/archive/casechecker.py
@@ -9,18 +9,14 @@
import os
import re
import sys
-
from itertools import chain, combinations
from string import ascii_letters
import pywikibot
-
from pywikibot import i18n
-
from pywikibot.data import api
from pywikibot.exceptions import LockedPageError, PageSaveRelatedError
from pywikibot.tools import first_lower, first_upper, formatter
-
from scripts.category import CategoryMoveRobot as CategoryMoveBot
diff --git a/scripts/archive/catall.py b/scripts/archive/catall.py
index d86fee7..6988307 100755
--- a/scripts/archive/catall.py
+++ b/scripts/archive/catall.py
@@ -25,7 +25,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import i18n, textlib
from pywikibot.backports import List, Tuple
from pywikibot.bot import QuitKeyboardInterrupt
diff --git a/scripts/archive/commons_link.py b/scripts/archive/commons_link.py
index 982de3d..5161d1a 100755
--- a/scripts/archive/commons_link.py
+++ b/scripts/archive/commons_link.py
@@ -32,10 +32,8 @@
import re
import pywikibot
-
-from pywikibot import textlib, pagegenerators, i18n, Bot
+from pywikibot import Bot, i18n, pagegenerators, textlib
from pywikibot.backports import Tuple
-
from pywikibot.exceptions import (
EditConflictError,
IsRedirectPageError,
diff --git a/scripts/archive/compat2core.py b/scripts/archive/compat2core.py
index f9ee6bc..1b2638e 100755
--- a/scripts/archive/compat2core.py
+++ b/scripts/archive/compat2core.py
@@ -36,6 +36,7 @@
import pywikibot
+
# be careful with replacement order!
replacements = (
# doc strings
diff --git a/scripts/archive/create_categories.py b/scripts/archive/create_categories.py
index 0444d92..b89a8b1 100755
--- a/scripts/archive/create_categories.py
+++ b/scripts/archive/create_categories.py
@@ -35,7 +35,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import pagegenerators
from pywikibot.backports import Tuple
from pywikibot.bot import AutomaticTWSummaryBot, SingleSiteBot
diff --git a/scripts/archive/data_ingestion.py b/scripts/archive/data_ingestion.py
index 55be0ab..7a17fc5 100755
--- a/scripts/archive/data_ingestion.py
+++ b/scripts/archive/data_ingestion.py
@@ -104,12 +104,10 @@
import io
import os
import posixpath
-
from urllib.parse import urlparse
from warnings import warn
import pywikibot
-
from pywikibot import pagegenerators
from pywikibot.backports import Tuple
from pywikibot.comms.http import fetch
diff --git a/scripts/archive/disambredir.py b/scripts/archive/disambredir.py
index 73f358d..244272c 100755
--- a/scripts/archive/disambredir.py
+++ b/scripts/archive/disambredir.py
@@ -15,15 +15,13 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
-from pywikibot import textlib, pagegenerators
-from pywikibot.exceptions import Error, SectionError
-
+from pywikibot import pagegenerators, textlib
from pywikibot.bot import (
AutomaticTWSummaryBot,
InteractiveReplace,
MultipleSitesBot,
)
+from pywikibot.exceptions import Error, SectionError
class DisambiguationRedirectBot(MultipleSitesBot, AutomaticTWSummaryBot):
diff --git a/scripts/archive/editarticle.py b/scripts/archive/editarticle.py
index 4b1c56b..79dc506 100755
--- a/scripts/archive/editarticle.py
+++ b/scripts/archive/editarticle.py
@@ -33,9 +33,7 @@
import tempfile
import pywikibot
-
from pywikibot import i18n
-
from pywikibot.backports import Tuple
from pywikibot.editor import TextEditor
from pywikibot.exceptions import EditConflictError, NoPageError
diff --git a/scripts/archive/flickrripper.py b/scripts/archive/flickrripper.py
index 57ba5bd..01628de 100755
--- a/scripts/archive/flickrripper.py
+++ b/scripts/archive/flickrripper.py
@@ -26,24 +26,22 @@
import hashlib
import io
import re
-
from contextlib import suppress
from urllib.parse import urlencode
import pywikibot
-
-from pywikibot import textlib
-from pywikibot import config2 as config
+from pywikibot import config, textlib
from pywikibot.comms.http import fetch
from pywikibot.specialbots import UploadRobot
+
try:
from pywikibot.userinterfaces.gui import Tkdialog
except ImportError as _tk_error:
Tkdialog = _tk_error
try:
- import flickrapi # see:
https://stuvel.eu/software/flickrapi/
+ import flickrapi
except ImportError as e:
flickrapi = e
diff --git a/scripts/archive/followlive.py b/scripts/archive/followlive.py
index f9c4a32..d304a7b 100755
--- a/scripts/archive/followlive.py
+++ b/scripts/archive/followlive.py
@@ -20,16 +20,15 @@
import datetime
import pywikibot
-
-from pywikibot import i18n, pagegenerators, editor
-from pywikibot.bot import SingleSiteBot, CurrentPageBot, QuitKeyboardInterrupt
-
+from pywikibot import editor, i18n, pagegenerators
+from pywikibot.bot import CurrentPageBot, QuitKeyboardInterrupt, SingleSiteBot
from pywikibot.exceptions import (
EditConflictError,
IsRedirectPageError,
NoPageError,
)
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/imagecopy.py b/scripts/archive/imagecopy.py
index ba69c6b..8dab194 100755
--- a/scripts/archive/imagecopy.py
+++ b/scripts/archive/imagecopy.py
@@ -64,20 +64,18 @@
import re
import threading
import webbrowser
-
from os import path
from requests.exceptions import RequestException
import pywikibot
-
from pywikibot import config, i18n, pagegenerators
from pywikibot.comms.http import fetch
from pywikibot.specialbots import UploadRobot
from pywikibot.tools import remove_last_args
-
from scripts.image import ImageRobot
+
try:
from pywikibot.userinterfaces.gui import Tkdialog, Tkinter
except ImportError as _tk_error:
diff --git a/scripts/archive/imagecopy_self.py b/scripts/archive/imagecopy_self.py
index bc790c6..c493062 100755
--- a/scripts/archive/imagecopy_self.py
+++ b/scripts/archive/imagecopy_self.py
@@ -38,18 +38,16 @@
import re
import threading
import webbrowser
-
from datetime import datetime
from queue import Queue
from textwrap import fill
import pywikibot
-
-from pywikibot import pagegenerators, i18n
+from pywikibot import i18n, pagegenerators
from pywikibot.specialbots import UploadRobot
from pywikibot.textlib import removeCategoryLinks
+from scripts import image, imagerecat
-from scripts import imagerecat, image
try:
from pywikibot.userinterfaces.gui import Tkdialog, Tkinter
diff --git a/scripts/archive/imageharvest.py b/scripts/archive/imageharvest.py
index 219e46f..75052e5 100755
--- a/scripts/archive/imageharvest.py
+++ b/scripts/archive/imageharvest.py
@@ -22,15 +22,14 @@
# Distributed under the terms of the MIT license.
#
import os
-
from urllib.parse import urljoin
import pywikibot
-
from pywikibot.bot import QuitKeyboardInterrupt
from pywikibot.comms.http import fetch
from pywikibot.specialbots import UploadRobot
+
try:
from bs4 import BeautifulSoup
except ImportError as e:
diff --git a/scripts/archive/imagerecat.py b/scripts/archive/imagerecat.py
index 09bd397..9b0476e 100755
--- a/scripts/archive/imagerecat.py
+++ b/scripts/archive/imagerecat.py
@@ -16,7 +16,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import pagegenerators, textlib
diff --git a/scripts/archive/imageuncat.py b/scripts/archive/imageuncat.py
index b33586c..8166f4f 100755
--- a/scripts/archive/imageuncat.py
+++ b/scripts/archive/imageuncat.py
@@ -18,15 +18,14 @@
from datetime import timedelta
import pywikibot
-
from pywikibot import pagegenerators
-from pywikibot.tools import issue_deprecation_warning
-
from pywikibot.exceptions import (
ArgumentDeprecationWarning,
EditConflictError,
LockedPageError,
)
+from pywikibot.tools import issue_deprecation_warning
+
docuReplacements = {
'¶ms;': pagegenerators.parameterHelp,
diff --git a/scripts/archive/isbn.py b/scripts/archive/isbn.py
index e2171ef..3d92b43 100755
--- a/scripts/archive/isbn.py
+++ b/scripts/archive/isbn.py
@@ -39,15 +39,11 @@
# Distributed under the terms of the MIT license.
#
import re
-
from contextlib import suppress
from functools import partial
import pywikibot
-
-from pywikibot import i18n, pagegenerators, textlib, Bot, WikidataBot
-from pywikibot.tools import has_module
-
+from pywikibot import Bot, WikidataBot, i18n, pagegenerators, textlib
from pywikibot.exceptions import (
EditConflictError,
Error,
@@ -56,6 +52,8 @@
NoPageError,
SpamblacklistError,
)
+from pywikibot.tools import has_module
+
try:
import stdnum.isbn
diff --git a/scripts/archive/lonelypages.py b/scripts/archive/lonelypages.py
index 6e632aa..d764291 100755
--- a/scripts/archive/lonelypages.py
+++ b/scripts/archive/lonelypages.py
@@ -29,11 +29,11 @@
import sys
import pywikibot
-
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import suggest_help, SingleSiteBot
+from pywikibot.bot import SingleSiteBot, suggest_help
from pywikibot.exceptions import IsRedirectPageError, NoPageError
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/makecat.py b/scripts/archive/makecat.py
index 01cff3a..a74f234 100755
--- a/scripts/archive/makecat.py
+++ b/scripts/archive/makecat.py
@@ -53,8 +53,7 @@
from textwrap import fill
import pywikibot
-
-from pywikibot import pagegenerators, i18n, textlib
+from pywikibot import i18n, pagegenerators, textlib
from pywikibot.bot import NoRedirectPageBot, SingleSiteBot
from pywikibot.exceptions import Error
from pywikibot.tools import DequeGenerator
diff --git a/scripts/archive/match_images.py b/scripts/archive/match_images.py
index 1fe1b14..25c270c 100755
--- a/scripts/archive/match_images.py
+++ b/scripts/archive/match_images.py
@@ -29,10 +29,10 @@
import io
import pywikibot
-
from pywikibot.bot import suggest_help
from pywikibot.comms import http
+
try:
from PIL import Image
except ImportError as e:
diff --git a/scripts/archive/ndashredir.py b/scripts/archive/ndashredir.py
index 68f9c15..0fe3d33 100755
--- a/scripts/archive/ndashredir.py
+++ b/scripts/archive/ndashredir.py
@@ -30,15 +30,10 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import i18n, pagegenerators
+from pywikibot.bot import ExistingPageBot, MultipleSitesBot, NoRedirectPageBot
from pywikibot.tools.formatter import color_format
-from pywikibot.bot import (
- ExistingPageBot,
- MultipleSitesBot,
- NoRedirectPageBot,
-)
# This is required for the text that is shown when you run this script
# with the parameter -help.
diff --git a/scripts/archive/piper.py b/scripts/archive/piper.py
index 37ec7ea..d9da3cb 100755
--- a/scripts/archive/piper.py
+++ b/scripts/archive/piper.py
@@ -39,9 +39,7 @@
import tempfile
import pywikibot
-
from pywikibot import pagegenerators
-
from pywikibot.bot import (
AutomaticTWSummaryBot,
ExistingPageBot,
@@ -49,6 +47,7 @@
NoRedirectPageBot,
)
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/selflink.py b/scripts/archive/selflink.py
index 62e0b37..ca9352d 100755
--- a/scripts/archive/selflink.py
+++ b/scripts/archive/selflink.py
@@ -17,11 +17,11 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot.bot import Choice, MultipleSitesBot
from pywikibot.pagegenerators import GeneratorFactory, parameterHelp
from pywikibot.specialbots import BaseUnlinkBot
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
docuReplacements = {'¶ms;': parameterHelp} # noqa: N816
diff --git a/scripts/archive/spamremove.py b/scripts/archive/spamremove.py
index 30d548b..08b4689 100755
--- a/scripts/archive/spamremove.py
+++ b/scripts/archive/spamremove.py
@@ -33,17 +33,16 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import pagegenerators
-from pywikibot.editor import TextEditor
-from pywikibot.tools.formatter import color_format
-
from pywikibot.bot import (
AutomaticTWSummaryBot,
ExistingPageBot,
NoRedirectPageBot,
SingleSiteBot,
)
+from pywikibot.editor import TextEditor
+from pywikibot.tools.formatter import color_format
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/standardize_interwiki.py
b/scripts/archive/standardize_interwiki.py
index 240eb4c..4c70381 100755
--- a/scripts/archive/standardize_interwiki.py
+++ b/scripts/archive/standardize_interwiki.py
@@ -12,7 +12,6 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import i18n, textlib
from pywikibot.exceptions import IsRedirectPageError, LockedPageError
diff --git a/scripts/archive/states_redirect.py b/scripts/archive/states_redirect.py
index 538c14c..99b6279 100755
--- a/scripts/archive/states_redirect.py
+++ b/scripts/archive/states_redirect.py
@@ -22,11 +22,11 @@
import re
import pywikibot
-
from pywikibot import i18n
from pywikibot.bot import SingleSiteBot, suggest_help
from pywikibot.exceptions import IsNotRedirectPageError, NoPageError
+
try:
import pycountry
except ImportError as e:
diff --git a/scripts/archive/surnames_redirects.py
b/scripts/archive/surnames_redirects.py
index a914709..504902c 100755
--- a/scripts/archive/surnames_redirects.py
+++ b/scripts/archive/surnames_redirects.py
@@ -24,9 +24,9 @@
from difflib import SequenceMatcher
import pywikibot
-
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import FollowRedirectPageBot, ExistingPageBot
+from pywikibot.bot import ExistingPageBot, FollowRedirectPageBot
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/archive/table2wiki.py b/scripts/archive/table2wiki.py
index b01d8d6..4523de1 100755
--- a/scripts/archive/table2wiki.py
+++ b/scripts/archive/table2wiki.py
@@ -51,17 +51,16 @@
import re
import pywikibot
-
from pywikibot import config, i18n, pagegenerators, xmlreader
-from pywikibot.textlib import replaceExcept
-
from pywikibot.bot import (
ExistingPageBot,
- input_yn,
NoRedirectPageBot,
SingleSiteBot,
+ input_yn,
suggest_help,
)
+from pywikibot.textlib import replaceExcept
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
diff --git a/scripts/archive/unlink.py b/scripts/archive/unlink.py
index 944bcb2..0d73d0c 100755
--- a/scripts/archive/unlink.py
+++ b/scripts/archive/unlink.py
@@ -28,7 +28,6 @@
#
import pywikibot
-
from pywikibot.bot import SingleSiteBot
from pywikibot.specialbots import BaseUnlinkBot
diff --git a/scripts/archive/wikisourcetext.py b/scripts/archive/wikisourcetext.py
index ae1759a..883d779 100755
--- a/scripts/archive/wikisourcetext.py
+++ b/scripts/archive/wikisourcetext.py
@@ -64,7 +64,6 @@
import time
import pywikibot
-
from pywikibot import i18n
from pywikibot.bot import SingleSiteBot
from pywikibot.exceptions import Error
diff --git a/scripts/archivebot.py b/scripts/archivebot.py
index aaea77f..e88ef2c 100755
--- a/scripts/archivebot.py
+++ b/scripts/archivebot.py
@@ -99,27 +99,25 @@
import re
import time
import types
-
-from collections import defaultdict, OrderedDict
+from collections import OrderedDict, defaultdict
from hashlib import md5
from math import ceil
from typing import Any, Optional, Pattern
from warnings import warn
import pywikibot
-
from pywikibot import i18n
from pywikibot.backports import List, Set, Tuple
from pywikibot.date import apply_month_delta
from pywikibot.exceptions import Error, NoPageError
-from pywikibot.tools import issue_deprecation_warning
-
from pywikibot.textlib import (
+ TimeStripper,
extract_sections,
findmarker,
- TimeStripper,
to_local_digits,
)
+from pywikibot.tools import issue_deprecation_warning
+
ShouldArchive = Tuple[str, str]
Size = Tuple[int, str]
diff --git a/scripts/basic.py b/scripts/basic.py
index 750af4b..a07d961 100755
--- a/scripts/basic.py
+++ b/scripts/basic.py
@@ -47,10 +47,8 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
-from pywikibot.backports import Tuple
from pywikibot import pagegenerators
-
+from pywikibot.backports import Tuple
from pywikibot.bot import (
AutomaticTWSummaryBot,
ConfigParserBot,
diff --git a/scripts/category.py b/scripts/category.py
index 547feda..f94e437 100755
--- a/scripts/category.py
+++ b/scripts/category.py
@@ -121,20 +121,14 @@
import os
import pickle
import re
-
from contextlib import suppress
from operator import methodcaller
from textwrap import fill
from typing import Optional
import pywikibot
-
from pywikibot import config, i18n, pagegenerators, textlib
from pywikibot.backports import Set, Tuple
-from pywikibot.cosmetic_changes import moved_links
-from pywikibot.tools import deprecated_args, open_archive
-from pywikibot.tools.formatter import color_format
-
from pywikibot.bot import (
BaseBot,
Bot,
@@ -144,13 +138,16 @@
StandardOption,
suggest_help,
)
-
+from pywikibot.cosmetic_changes import moved_links
from pywikibot.exceptions import (
Error,
NoPageError,
NoUsernameError,
PageSaveRelatedError,
)
+from pywikibot.tools import deprecated_args, open_archive
+from pywikibot.tools.formatter import color_format
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
diff --git a/scripts/category_redirect.py b/scripts/category_redirect.py
index 625f439..eddfbdd 100755
--- a/scripts/category_redirect.py
+++ b/scripts/category_redirect.py
@@ -31,16 +31,13 @@
import pickle
import re
import time
-
from contextlib import suppress
from datetime import timedelta
import pywikibot
-
from pywikibot import config, i18n, pagegenerators
from pywikibot.backports import Tuple
from pywikibot.bot import SingleSiteBot
-
from pywikibot.exceptions import (
CircularRedirectError,
Error,
diff --git a/scripts/change_pagelang.py b/scripts/change_pagelang.py
index a323715..530e398 100755
--- a/scripts/change_pagelang.py
+++ b/scripts/change_pagelang.py
@@ -22,12 +22,11 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import pagegenerators
-
from pywikibot.bot import SingleSiteBot
from pywikibot.tools.formatter import color_format
+
docuReplacements = { # noqa: N816
'¶ms;': pagegenerators.parameterHelp,
}
diff --git a/scripts/checkimages.py b/scripts/checkimages.py
index 389fbd9..e211d47 100755
--- a/scripts/checkimages.py
+++ b/scripts/checkimages.py
@@ -84,22 +84,16 @@
import collections
import re
import time
-
from typing import Generator
import pywikibot
-
+from pywikibot import config, i18n
+from pywikibot import pagegenerators as pg
from pywikibot.backports import List, Tuple
from pywikibot.bot import suggest_help
-from pywikibot import config2 as config
-from pywikibot.family import Family
-from pywikibot import i18n
-from pywikibot import pagegenerators as pg
-from pywikibot.site import Namespace
-
from pywikibot.exceptions import (
- Error,
EditConflictError,
+ Error,
IsRedirectPageError,
LockedPageError,
NoPageError,
@@ -107,6 +101,9 @@
PageRelatedError,
TranslationError,
)
+from pywikibot.family import Family
+from pywikibot.site import Namespace
+
###############################################################################
# <--------------------------- Change only below! --------------------------->#
diff --git a/scripts/claimit.py b/scripts/claimit.py
index e928602..da651f6 100755
--- a/scripts/claimit.py
+++ b/scripts/claimit.py
@@ -51,7 +51,8 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-from pywikibot import pagegenerators, WikidataBot
+from pywikibot import WikidataBot, pagegenerators
+
# This is required for the text that is shown when you run this script
# with the parameter -help or without parameters.
diff --git a/scripts/clean_sandbox.py b/scripts/clean_sandbox.py
index bcf4777..aa6e239 100755
--- a/scripts/clean_sandbox.py
+++ b/scripts/clean_sandbox.py
@@ -46,7 +46,6 @@
import time
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.backports import Tuple
from pywikibot.bot import Bot, ConfigParserBot
diff --git a/scripts/commons_information.py b/scripts/commons_information.py
index 945fa1e..91de4de 100755
--- a/scripts/commons_information.py
+++ b/scripts/commons_information.py
@@ -8,12 +8,12 @@
import copy
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.backports import Tuple
-from pywikibot.bot import SingleSiteBot, ExistingPageBot
+from pywikibot.bot import ExistingPageBot, SingleSiteBot
from pywikibot.tools.formatter import color_format
+
try:
import mwparserfromhell
except ImportError as e:
diff --git a/scripts/commonscat.py b/scripts/commonscat.py
index e965ed1..32ddc64 100755
--- a/scripts/commonscat.py
+++ b/scripts/commonscat.py
@@ -41,12 +41,11 @@
import re
import pywikibot
-
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import SingleSiteBot, ExistingPageBot, NoRedirectPageBot
-
+from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
from scripts.add_text import add_text
+
docuReplacements = {
'¶ms;': pagegenerators.parameterHelp
}
diff --git a/scripts/coordinate_import.py b/scripts/coordinate_import.py
index 4cdd1c4..e9271cb 100755
--- a/scripts/coordinate_import.py
+++ b/scripts/coordinate_import.py
@@ -43,8 +43,7 @@
from typing import Optional
import pywikibot
-
-from pywikibot import pagegenerators, WikidataBot
+from pywikibot import WikidataBot, pagegenerators
from pywikibot.backports import Tuple
from pywikibot.exceptions import CoordinateGlobeUnknownError
diff --git a/scripts/cosmetic_changes.py b/scripts/cosmetic_changes.py
index 07ec18c..5aa6159 100755
--- a/scripts/cosmetic_changes.py
+++ b/scripts/cosmetic_changes.py
@@ -32,11 +32,9 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import config, i18n, pagegenerators
from pywikibot.backports import Tuple
-from pywikibot.bot import MultipleSitesBot, ExistingPageBot, NoRedirectPageBot
-
+from pywikibot.bot import ExistingPageBot, MultipleSitesBot, NoRedirectPageBot
from pywikibot.cosmetic_changes import (
CANCEL_ALL,
CANCEL_MATCH,
diff --git a/scripts/delete.py b/scripts/delete.py
index 777fc82..8f6c646 100755
--- a/scripts/delete.py
+++ b/scripts/delete.py
@@ -58,10 +58,9 @@
import collections
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.backports import DefaultDict, Set, Tuple
-from pywikibot.bot import MultipleSitesBot, CurrentPageBot
+from pywikibot.bot import CurrentPageBot, MultipleSitesBot
from pywikibot.page import Page
from pywikibot.site import Namespace
from pywikibot.tools import islice_with_ellipsis
diff --git a/scripts/djvutext.py b/scripts/djvutext.py
index cd5ac07..41cb414 100755
--- a/scripts/djvutext.py
+++ b/scripts/djvutext.py
@@ -32,13 +32,10 @@
# Distributed under the terms of the MIT license.
#
import os.path
-
from typing import Optional
import pywikibot
-
from pywikibot import i18n
-
from pywikibot.backports import Tuple
from pywikibot.bot import SingleSiteBot
from pywikibot.exceptions import NoPageError
diff --git a/scripts/download_dump.py b/scripts/download_dump.py
index 9ba08e7..58df38d 100755
--- a/scripts/download_dump.py
+++ b/scripts/download_dump.py
@@ -19,14 +19,12 @@
#
import binascii
import os.path
-
from http import HTTPStatus
from os import remove, replace, symlink, urandom
import pywikibot
-
-from pywikibot.backports import Tuple
from pywikibot import Bot
+from pywikibot.backports import Tuple
from pywikibot.comms.http import fetch
diff --git a/scripts/fixing_redirects.py b/scripts/fixing_redirects.py
index a7f9f68..fc7341f 100755
--- a/scripts/fixing_redirects.py
+++ b/scripts/fixing_redirects.py
@@ -14,15 +14,10 @@
# Distributed under the terms of the MIT license.
#
import re
-
from contextlib import suppress
import pywikibot
from pywikibot import pagegenerators
-from pywikibot.textlib import does_text_contain_section, isDisabled
-from pywikibot.tools import first_lower, first_upper as firstcap
-from pywikibot.tools.formatter import color_format
-
from pywikibot.bot import (
AutomaticTWSummaryBot,
ExistingPageBot,
@@ -30,13 +25,17 @@
SingleSiteBot,
suggest_help,
)
-
from pywikibot.exceptions import (
CircularRedirectError,
InterwikiRedirectPageError,
InvalidTitleError,
NoMoveTargetError,
)
+from pywikibot.textlib import does_text_contain_section, isDisabled
+from pywikibot.tools import first_lower
+from pywikibot.tools import first_upper as firstcap
+from pywikibot.tools.formatter import color_format
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
diff --git a/scripts/harvest_template.py b/scripts/harvest_template.py
index 4b9605c..4c586c5 100755
--- a/scripts/harvest_template.py
+++ b/scripts/harvest_template.py
@@ -93,14 +93,13 @@
#
import signal
import sys
-
from typing import Any, Optional
import pywikibot
-
-from pywikibot import pagegenerators as pg, textlib
+from pywikibot import pagegenerators as pg
+from pywikibot import textlib
from pywikibot.backports import List
-from pywikibot.bot import WikidataBot, OptionHandler
+from pywikibot.bot import OptionHandler, WikidataBot
from pywikibot.exceptions import InvalidTitleError, NoPageError
diff --git a/scripts/illustrate_wikidata.py b/scripts/illustrate_wikidata.py
index b73853b..9bc5db4 100755
--- a/scripts/illustrate_wikidata.py
+++ b/scripts/illustrate_wikidata.py
@@ -18,8 +18,8 @@
# Distributed under the terms of MIT License.
#
import pywikibot
+from pywikibot import WikidataBot, pagegenerators
-from pywikibot import pagegenerators, WikidataBot
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/image.py b/scripts/image.py
index aeb6f82..628e205 100755
--- a/scripts/image.py
+++ b/scripts/image.py
@@ -42,15 +42,11 @@
# Distributed under the terms of the MIT license.
#
import re
-
from typing import Optional
import pywikibot
-
from pywikibot import i18n, pagegenerators
-
from pywikibot.bot import SingleSiteBot
-
from scripts.replace import ReplaceRobot as ReplaceBot
diff --git a/scripts/imagetransfer.py b/scripts/imagetransfer.py
index 12d97e4..edf9287 100755
--- a/scripts/imagetransfer.py
+++ b/scripts/imagetransfer.py
@@ -37,7 +37,6 @@
import sys
import pywikibot
-
from pywikibot import config, i18n, pagegenerators, textlib
from pywikibot.bot import SingleSiteBot
from pywikibot.exceptions import IsRedirectPageError, NoPageError
diff --git a/scripts/interwiki.py b/scripts/interwiki.py
index 6cd6970..9e6e317 100755
--- a/scripts/interwiki.py
+++ b/scripts/interwiki.py
@@ -337,35 +337,38 @@
import re
import socket
import sys
-
-from collections import defaultdict, Counter
+from collections import Counter, defaultdict
from contextlib import suppress
from textwrap import fill
import pywikibot
-
-from pywikibot import config, i18n, pagegenerators, textlib, interwiki_graph
-from pywikibot import titletranslate
-
-from pywikibot.bot import OptionHandler, ListOption, StandardOption
+from pywikibot import (
+ config,
+ i18n,
+ interwiki_graph,
+ pagegenerators,
+ textlib,
+ titletranslate,
+)
+from pywikibot.bot import ListOption, OptionHandler, StandardOption
from pywikibot.cosmetic_changes import moved_links
-from pywikibot.tools import first_upper, SizedKeyCollection
-from pywikibot.tools.formatter import color_format
-
from pywikibot.exceptions import (
EditConflictError,
Error,
InvalidTitleError,
+ LockedPageError,
NoCreateError,
NoPageError,
NoUsernameError,
- LockedPageError,
PageSaveRelatedError,
ServerError,
SiteDefinitionError,
SpamblacklistError,
UnknownSiteError,
)
+from pywikibot.tools import SizedKeyCollection, first_upper
+from pywikibot.tools.formatter import color_format
+
docuReplacements = {
'¶ms;': pagegenerators.parameterHelp
diff --git a/scripts/interwikidata.py b/scripts/interwikidata.py
index 0a6d679..acc8de9 100755
--- a/scripts/interwikidata.py
+++ b/scripts/interwikidata.py
@@ -32,8 +32,7 @@
import pywikibot.data.api
import pywikibot.i18n
import pywikibot.textlib
-
-from pywikibot import pagegenerators, output, warning
+from pywikibot import output, pagegenerators, warning
from pywikibot.backports import Set
from pywikibot.bot import ExistingPageBot, SingleSiteBot, suggest_help
from pywikibot.exceptions import APIError, NoPageError
diff --git a/scripts/listpages.py b/scripts/listpages.py
index ca1e4f2..4cd0db1 100755
--- a/scripts/listpages.py
+++ b/scripts/listpages.py
@@ -95,11 +95,11 @@
import re
import pywikibot
-
-from pywikibot import config2 as config, i18n
+from pywikibot import config, i18n
from pywikibot.exceptions import Error
from pywikibot.pagegenerators import GeneratorFactory, parameterHelp
+
docuReplacements = {'¶ms;': parameterHelp} # noqa: N816
diff --git a/scripts/login.py b/scripts/login.py
index 90ce3b7..50b0609 100755
--- a/scripts/login.py
+++ b/scripts/login.py
@@ -45,9 +45,8 @@
#
import pywikibot
import pywikibot.bot
-
-from pywikibot.backports import Tuple
from pywikibot import config
+from pywikibot.backports import Tuple
from pywikibot.exceptions import SiteDefinitionError
from pywikibot.login import OauthLoginManager
diff --git a/scripts/maintenance/cache.py b/scripts/maintenance/cache.py
index 08023cb..7c6d78b 100755
--- a/scripts/maintenance/cache.py
+++ b/scripts/maintenance/cache.py
@@ -75,14 +75,12 @@
import sys
import pywikibot
-
from pywikibot.data import api
# The follow attributes are used by eval()
from pywikibot.login import LoginStatus # noqa: F401
from pywikibot.page import User # noqa: F401
from pywikibot.site import APISite, ClosedSite, DataSite # noqa: F401
-
from pywikibot.tools import PYTHON_VERSION
diff --git a/scripts/maintenance/colors.py b/scripts/maintenance/colors.py
index 270d25a..5ddef82 100755
--- a/scripts/maintenance/colors.py
+++ b/scripts/maintenance/colors.py
@@ -6,9 +6,8 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
-from pywikibot.tools.formatter import color_format
from pywikibot.tools import itergroup
+from pywikibot.tools.formatter import color_format
from pywikibot.userinterfaces.terminal_interface_base import colors
diff --git a/scripts/maintenance/make_i18n_dict.py
b/scripts/maintenance/make_i18n_dict.py
index 33b7a9a..647171c 100755
--- a/scripts/maintenance/make_i18n_dict.py
+++ b/scripts/maintenance/make_i18n_dict.py
@@ -29,9 +29,9 @@
# Distributed under the terms of the MIT license.
#
import codecs
-from importlib import import_module
import json
import os
+from importlib import import_module
from pywikibot import config
diff --git a/scripts/maintenance/preload_sites.py b/scripts/maintenance/preload_sites.py
index f44aad3..df4446b 100755
--- a/scripts/maintenance/preload_sites.py
+++ b/scripts/maintenance/preload_sites.py
@@ -24,9 +24,9 @@
from datetime import datetime
import pywikibot
-
from pywikibot.family import Family
+
# supported families by this script
families_list = [
'wikibooks',
diff --git a/scripts/maintenance/sorting_order.py b/scripts/maintenance/sorting_order.py
index 8ab2106..68ea584 100755
--- a/scripts/maintenance/sorting_order.py
+++ b/scripts/maintenance/sorting_order.py
@@ -9,9 +9,9 @@
import re
import pywikibot
-
from pywikibot.family import Family
+
# MediaWiki page names for interwiki sorting order
pages = {
'alphabetic':
diff --git a/scripts/maintenance/update_linktrails.py
b/scripts/maintenance/update_linktrails.py
index 4fd92bf..aeaae00 100755
--- a/scripts/maintenance/update_linktrails.py
+++ b/scripts/maintenance/update_linktrails.py
@@ -15,12 +15,10 @@
import codecs
import re
-
from contextlib import closing
from os.path import join
import pywikibot
-
from pywikibot.family import CODE_CHARACTERS
from pywikibot.tools import suppress_warnings
diff --git a/scripts/maintenance/wikimedia_sites.py
b/scripts/maintenance/wikimedia_sites.py
index 299cf69..b527f96 100755
--- a/scripts/maintenance/wikimedia_sites.py
+++ b/scripts/maintenance/wikimedia_sites.py
@@ -15,10 +15,10 @@
import re
import pywikibot
-
from pywikibot.data import wikistats
from pywikibot.family import Family
+
# supported families by this script
families_list = [
'wikibooks',
diff --git a/scripts/misspelling.py b/scripts/misspelling.py
index 8b5412d..3f2d863 100755
--- a/scripts/misspelling.py
+++ b/scripts/misspelling.py
@@ -29,12 +29,11 @@
from typing import Generator, Tuple
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.tools.formatter import color_format
-
from scripts.solve_disambiguation import DisambiguationRobot as BaseDisambigBot
+
HELP_MSG = """\n
misspelling.py does not support site {site}.
diff --git a/scripts/movepages.py b/scripts/movepages.py
index 544d017..88fd54f 100755
--- a/scripts/movepages.py
+++ b/scripts/movepages.py
@@ -38,7 +38,6 @@
import re
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.bot import CurrentPageBot, MultipleSitesBot
from pywikibot.exceptions import PageRelatedError
diff --git a/scripts/newitem.py b/scripts/newitem.py
index 0aa50eb..ce18d11 100755
--- a/scripts/newitem.py
+++ b/scripts/newitem.py
@@ -28,12 +28,9 @@
from textwrap import fill
import pywikibot
-
from pywikibot import pagegenerators
-
from pywikibot.backports import Set
from pywikibot.bot import NoRedirectPageBot, WikidataBot
-
from pywikibot.exceptions import (
LockedPageError,
NoCreateError,
diff --git a/scripts/noreferences.py b/scripts/noreferences.py
index 7fa543b..330e3e6 100755
--- a/scripts/noreferences.py
+++ b/scripts/noreferences.py
@@ -34,17 +34,16 @@
# Distributed under the terms of the MIT license.
#
import re
-
from functools import partial
import pywikibot
-
from pywikibot import i18n, pagegenerators, textlib
from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
from pywikibot.exceptions import LockedPageError
from pywikibot.pagegenerators import XMLDumpPageGenerator
from pywikibot.tools import remove_last_args
+
# This is required for the text that is shown when you run this script
# with the parameter -help.
docuReplacements = {
diff --git a/scripts/nowcommons.py b/scripts/nowcommons.py
index 6798394..a0975b4 100755
--- a/scripts/nowcommons.py
+++ b/scripts/nowcommons.py
@@ -50,8 +50,8 @@
#
# Distributed under the terms of the MIT license.
#
-from itertools import chain
import sys
+from itertools import chain
import pywikibot
from pywikibot import Bot, i18n
@@ -59,9 +59,9 @@
from pywikibot.exceptions import IsRedirectPageError, NoPageError
from pywikibot.tools import filter_unique
from pywikibot.tools.formatter import color_format
-
from scripts.image import ImageRobot as ImageBot
+
nowcommons = {
'_default': [
'NowCommons'
diff --git a/scripts/pagefromfile.py b/scripts/pagefromfile.py
index a48868e..dde70d0 100755
--- a/scripts/pagefromfile.py
+++ b/scripts/pagefromfile.py
@@ -67,11 +67,9 @@
import codecs
import os
import re
-
from typing import Generator
import pywikibot
-
from pywikibot import config, i18n
from pywikibot.backports import Tuple
from pywikibot.bot import CurrentPageBot, OptionHandler, SingleSiteBot
diff --git a/scripts/parser_function_count.py b/scripts/parser_function_count.py
index 9348187..dff8971 100755
--- a/scripts/parser_function_count.py
+++ b/scripts/parser_function_count.py
@@ -55,13 +55,11 @@
import codecs
import re
-
from collections import Counter
import pywikibot
-
-from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
from pywikibot import pagegenerators
+from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
class ParserFunctionCountBot(SingleSiteBot,
diff --git a/scripts/patrol.py b/scripts/patrol.py
index fe15dfc..50d77cf 100755
--- a/scripts/patrol.py
+++ b/scripts/patrol.py
@@ -47,17 +47,15 @@
# Distributed under the terms of the MIT license.
#
import time
-
from collections import defaultdict
from contextlib import suppress
import pywikibot
-
from pywikibot import pagegenerators
-
from pywikibot.backports import removeprefix
from pywikibot.bot import BaseBot, suggest_help
+
try:
import mwparserfromhell
except ImportError as e:
diff --git a/scripts/protect.py b/scripts/protect.py
index 4913f07..aa41093 100755
--- a/scripts/protect.py
+++ b/scripts/protect.py
@@ -58,9 +58,8 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import SingleSiteBot, CurrentPageBot
+from pywikibot.bot import CurrentPageBot, SingleSiteBot
# This is required for the text that is shown when you run this script
diff --git a/scripts/redirect.py b/scripts/redirect.py
index 685469f..0cb4157 100755
--- a/scripts/redirect.py
+++ b/scripts/redirect.py
@@ -71,24 +71,19 @@
# Distributed under the terms of the MIT license.
#
import datetime
-
from contextlib import suppress
from typing import Any, Generator, Optional, Union
import pywikibot
import pywikibot.data
-
from pywikibot import i18n, pagegenerators, xmlreader
from pywikibot.backports import Dict, List, Set, Tuple
-from pywikibot.textlib import extract_templates_and_params_regex_simple
-
from pywikibot.bot import (
ExistingPageBot,
MultipleSitesBot,
OptionHandler,
RedirectPageBot,
)
-
from pywikibot.exceptions import (
CircularRedirectError,
InterwikiRedirectPageError,
@@ -102,6 +97,8 @@
SiteDefinitionError,
UnsupportedPageError,
)
+from pywikibot.textlib import extract_templates_and_params_regex_simple
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/reflinks.py b/scripts/reflinks.py
index 3925663..2104cca 100755
--- a/scripts/reflinks.py
+++ b/scripts/reflinks.py
@@ -46,31 +46,27 @@
import socket
import subprocess
import tempfile
-
from contextlib import suppress
from functools import partial
from http import HTTPStatus
from textwrap import shorten
import pywikibot
-
+from pywikibot import comms, config, i18n, pagegenerators, textlib
from pywikibot.backports import removeprefix
from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
-from pywikibot import comms, i18n, pagegenerators, textlib
-from pywikibot import config2 as config
-from pywikibot.pagegenerators import (
- XMLDumpPageGenerator as _XMLDumpPageGenerator,
-)
-from pywikibot.textlib import replaceExcept
-from pywikibot.tools.formatter import color_format
-
-from scripts import noreferences
-
from pywikibot.exceptions import (
FatalServerError,
Server414Error,
Server504Error,
)
+from pywikibot.pagegenerators import (
+ XMLDumpPageGenerator as _XMLDumpPageGenerator,
+)
+from pywikibot.textlib import replaceExcept
+from pywikibot.tools.formatter import color_format
+from scripts import noreferences
+
docuReplacements = {
'¶ms;': pagegenerators.parameterHelp
diff --git a/scripts/replace.py b/scripts/replace.py
index be485e3..9da35a2 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -144,14 +144,12 @@
#
import codecs
import re
-
from collections.abc import Sequence
from contextlib import suppress
from queue import Queue
import pywikibot
-
-from pywikibot import fixes, editor, i18n, textlib, pagegenerators
+from pywikibot import editor, fixes, i18n, pagegenerators, textlib
from pywikibot.bot import ExistingPageBot, SingleSiteBot
from pywikibot.exceptions import NoPageError
from pywikibot.tools import chars, deprecated_args
diff --git a/scripts/replicate_wiki.py b/scripts/replicate_wiki.py
index e337ff5..996eb3c 100755
--- a/scripts/replicate_wiki.py
+++ b/scripts/replicate_wiki.py
@@ -43,13 +43,11 @@
# Distributed under the terms of the MIT license.
#
import sys
-
from argparse import ArgumentParser
from collections import defaultdict
import pywikibot
-
-from pywikibot import config, Page
+from pywikibot import Page, config
from pywikibot.exceptions import IsRedirectPageError, NoPageError
diff --git a/scripts/revertbot.py b/scripts/revertbot.py
index 28128b8..bc850fc 100755
--- a/scripts/revertbot.py
+++ b/scripts/revertbot.py
@@ -43,10 +43,9 @@
from typing import Union
import pywikibot
-
+from pywikibot import i18n
from pywikibot.bot import OptionHandler
from pywikibot.exceptions import APIError, Error
-from pywikibot import i18n
from pywikibot.tools import deprecate_arg
from pywikibot.tools.formatter import color_format
diff --git a/scripts/solve_disambiguation.py b/scripts/solve_disambiguation.py
index ff42420..4b22ac3 100755
--- a/scripts/solve_disambiguation.py
+++ b/scripts/solve_disambiguation.py
@@ -82,18 +82,15 @@
import codecs
import os
import re
-
from contextlib import suppress
from itertools import chain
from typing import Generator, Optional, Tuple
import pywikibot
-
-from pywikibot.backports import List
-from pywikibot import config, i18n, pagegenerators
+from pywikibot import config
from pywikibot import editor as editarticle
-from pywikibot.tools.formatter import SequenceOutputter
-
+from pywikibot import i18n, pagegenerators
+from pywikibot.backports import List
from pywikibot.bot import (
HighlightContextOption,
ListOption,
@@ -101,7 +98,6 @@
SingleSiteBot,
StandardOption,
)
-
from pywikibot.exceptions import (
Error,
IsNotRedirectPageError,
@@ -110,13 +106,13 @@
NoPageError,
PageSaveRelatedError,
)
-
from pywikibot.tools import (
deprecated,
first_lower,
first_upper,
issue_deprecation_warning,
)
+from pywikibot.tools.formatter import SequenceOutputter
# Disambiguation Needed template
diff --git a/scripts/speedy_delete.py b/scripts/speedy_delete.py
index 3e10610..4752527 100755
--- a/scripts/speedy_delete.py
+++ b/scripts/speedy_delete.py
@@ -25,11 +25,9 @@
# Distributed under the terms of the MIT license.
#
import time
-
from textwrap import fill, wrap
import pywikibot
-
from pywikibot import i18n, pagegenerators
from pywikibot.bot import ExistingPageBot, SingleSiteBot
from pywikibot.exceptions import Error
diff --git a/scripts/template.py b/scripts/template.py
index 0984554..bc2b8ad 100755
--- a/scripts/template.py
+++ b/scripts/template.py
@@ -110,11 +110,9 @@
# Distributed under the terms of the MIT license.
#
import re
-
from itertools import chain
import pywikibot
-
from pywikibot import i18n, pagegenerators, textlib
from pywikibot.bot import SingleSiteBot
from pywikibot.pagegenerators import XMLDumpPageGenerator
diff --git a/scripts/templatecount.py b/scripts/templatecount.py
index 64a4e4c..0aff7fd4f 100755
--- a/scripts/templatecount.py
+++ b/scripts/templatecount.py
@@ -38,11 +38,9 @@
# Distributed under the terms of the MIT license.
#
import datetime
-
from typing import Generator
import pywikibot
-
from pywikibot.backports import Dict, List, Tuple
diff --git a/scripts/touch.py b/scripts/touch.py
index 4a219b9..cbb6ccc 100755
--- a/scripts/touch.py
+++ b/scripts/touch.py
@@ -28,11 +28,8 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from pywikibot import pagegenerators
-
from pywikibot.bot import MultipleSitesBot
-
from pywikibot.exceptions import (
LockedPageError,
NoCreateError,
@@ -40,6 +37,7 @@
PageSaveRelatedError,
)
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/transferbot.py b/scripts/transferbot.py
index 110a357..0b8850b 100755
--- a/scripts/transferbot.py
+++ b/scripts/transferbot.py
@@ -50,10 +50,10 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
+from pywikibot import pagegenerators
from pywikibot.bot import suggest_help
from pywikibot.i18n import twtranslate
-from pywikibot import pagegenerators
+
docuReplacements = {'¶ms;': pagegenerators.parameterHelp} # noqa: N816
diff --git a/scripts/unusedfiles.py b/scripts/unusedfiles.py
index ef0e5c3..d3a75f0 100755
--- a/scripts/unusedfiles.py
+++ b/scripts/unusedfiles.py
@@ -20,12 +20,12 @@
import re
import pywikibot
-
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import SingleSiteBot, AutomaticTWSummaryBot, ExistingPageBot
+from pywikibot.bot import AutomaticTWSummaryBot, ExistingPageBot, SingleSiteBot
from pywikibot.exceptions import Error, NoPageError, TranslationError
from pywikibot.flow import Board
+
template_to_the_image = {
'meta': '{{Orphan file}}',
'test': '{{Orphan file}}',
diff --git a/scripts/upload.py b/scripts/upload.py
index e1f607f..6fba731 100755
--- a/scripts/upload.py
+++ b/scripts/upload.py
@@ -60,7 +60,6 @@
import re
import pywikibot
-
from pywikibot.bot import suggest_help
from pywikibot.specialbots import UploadRobot
diff --git a/scripts/version.py b/scripts/version.py
index 6e00b0c..c0da3e8 100755
--- a/scripts/version.py
+++ b/scripts/version.py
@@ -10,8 +10,8 @@
import sys
import pywikibot
+from pywikibot.version import get_toolforge_hostname, getversion
-from pywikibot.version import getversion, get_toolforge_hostname
try:
import requests
diff --git a/scripts/watchlist.py b/scripts/watchlist.py
index e667e22..68fff12 100755
--- a/scripts/watchlist.py
+++ b/scripts/watchlist.py
@@ -27,7 +27,6 @@
import os
import pywikibot
-
from pywikibot import config
from pywikibot.data.api import CachedRequest
from pywikibot.exceptions import InvalidTitleError
diff --git a/scripts/weblinkchecker.py b/scripts/weblinkchecker.py
index 90e3e68..15f9b25 100755
--- a/scripts/weblinkchecker.py
+++ b/scripts/weblinkchecker.py
@@ -114,7 +114,6 @@
import re
import threading
import time
-
from contextlib import suppress
from functools import partial
from http import HTTPStatus
@@ -122,22 +121,19 @@
import requests
import pywikibot
-
-from pywikibot import comms, i18n, pagegenerators, textlib
-from pywikibot import config2 as config
-
+from pywikibot import comms, config, i18n, pagegenerators, textlib
from pywikibot.bot import ExistingPageBot, SingleSiteBot, suggest_help
-from pywikibot.pagegenerators import (
- XMLDumpPageGenerator as _XMLDumpPageGenerator,
-)
-from pywikibot.tools.formatter import color_format
-from pywikibot.tools import ThreadList
-
from pywikibot.exceptions import (
IsRedirectPageError,
NoPageError,
SpamblacklistError,
)
+from pywikibot.pagegenerators import (
+ XMLDumpPageGenerator as _XMLDumpPageGenerator,
+)
+from pywikibot.tools import ThreadList
+from pywikibot.tools.formatter import color_format
+
try:
import memento_client
diff --git a/scripts/welcome.py b/scripts/welcome.py
index 73bd4f9..e2c14b9 100755
--- a/scripts/welcome.py
+++ b/scripts/welcome.py
@@ -165,7 +165,6 @@
import pickle
import re
import time
-
from contextlib import suppress
from datetime import timedelta
from enum import Enum
@@ -174,7 +173,6 @@
from typing import Generator
import pywikibot
-
from pywikibot import config, i18n
from pywikibot.backports import List
from pywikibot.bot import SingleSiteBot
diff --git a/setup.py b/setup.py
index 2ae5ca7..e521b49 100644
--- a/setup.py
+++ b/setup.py
@@ -35,6 +35,7 @@
from pkg_resources import parse_version, safe_version
from setuptools import setup
+
PYTHON_VERSION = sys.version_info[:3]
VERSIONS_REQUIRED_MESSAGE = """
@@ -80,6 +81,7 @@
'flake8-comprehensions>=2.2.0',
'flake8-docstrings>=1.3.1',
'flake8-future-import',
+ 'flake8-isort;python_version>="3.6"',
'flake8-mock>=0.3',
'flake8-print>=2.0.1',
'flake8-quotes>=2.0.1',
@@ -167,7 +169,7 @@
# validate version for sdist
from contextlib import suppress
- from subprocess import run, PIPE
+ from subprocess import PIPE, run
try:
tags = run(['git', 'tag'], check=True, stdout=PIPE,
universal_newlines=True).stdout.splitlines()
diff --git a/tests/__init__.py b/tests/__init__.py
index e0ac4b6..6e47787 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -15,7 +15,6 @@
import os
import unittest
import warnings
-
from contextlib import suppress
from itertools import chain
from unittest import mock # noqa: F401
@@ -29,12 +28,12 @@
import requests # noqa: F401
import pywikibot.data.api
-
from pywikibot import config
from pywikibot.data.api import CachedRequest
from pywikibot.data.api import Request as _original_Request
from pywikibot.tools import PYTHON_VERSION
+
_root_dir = os.path.split(os.path.split(__file__)[0])[0]
# common warn() clauses...
diff --git a/tests/add_text_tests.py b/tests/add_text_tests.py
index a396064..fca8331 100644
--- a/tests/add_text_tests.py
+++ b/tests/add_text_tests.py
@@ -7,9 +7,7 @@
import unittest
import pywikibot
-
from scripts.add_text import add_text, get_text
-
from tests.aspects import TestCase
diff --git a/tests/api_tests.py b/tests/api_tests.py
index 7852ec1..f4413c3 100644
--- a/tests/api_tests.py
+++ b/tests/api_tests.py
@@ -6,7 +6,6 @@
#
import datetime
import types
-
from collections import defaultdict
from contextlib import suppress
@@ -14,21 +13,18 @@
import pywikibot.login
import pywikibot.page
import pywikibot.site
-
from pywikibot.data import api
from pywikibot.exceptions import APIError, NoUsernameError
from pywikibot.throttle import Throttle
from pywikibot.tools import suppress_warnings
-
from tests import patch
-from tests.utils import FakeLoginManager
-
from tests.aspects import (
- unittest,
- TestCase,
- DefaultSiteTestCase,
DefaultDrySiteTestCase,
+ DefaultSiteTestCase,
+ TestCase,
+ unittest,
)
+from tests.utils import FakeLoginManager
class TestApiFunctions(DefaultSiteTestCase):
diff --git a/tests/archive/compat2core_tests.py b/tests/archive/compat2core_tests.py
index a10b080..bed2e9a 100644
--- a/tests/archive/compat2core_tests.py
+++ b/tests/archive/compat2core_tests.py
@@ -7,7 +7,6 @@
import unittest
import scripts.maintenance.compat2core as c2c
-
from tests.aspects import TestCase
diff --git a/tests/archive/data_ingestion_tests.py
b/tests/archive/data_ingestion_tests.py
index 1d1e560..5e8c0da 100644
--- a/tests/archive/data_ingestion_tests.py
+++ b/tests/archive/data_ingestion_tests.py
@@ -8,9 +8,8 @@
import unittest
from scripts import data_ingestion
-
from tests import join_data_path, join_images_path
-from tests.aspects import TestCase, ScriptMainTestCase
+from tests.aspects import ScriptMainTestCase, TestCase
from tests.utils import empty_sites
diff --git a/tests/archive/disambredir_tests.py b/tests/archive/disambredir_tests.py
index 86736a9..7e118e0 100644
--- a/tests/archive/disambredir_tests.py
+++ b/tests/archive/disambredir_tests.py
@@ -9,13 +9,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from scripts import disambredir
-
from tests.bot_tests import FakeSaveBotTestCase, TWNBotTestCase
from tests.utils import fixed_generator
diff --git a/tests/archive/imagecopy_tests.py b/tests/archive/imagecopy_tests.py
index a98dbf6..c958da4 100644
--- a/tests/archive/imagecopy_tests.py
+++ b/tests/archive/imagecopy_tests.py
@@ -7,7 +7,6 @@
import re
from scripts.imagecopy import pageTextPost
-
from tests import join_data_path, unittest
from tests.aspects import TestCase
diff --git a/tests/archive/isbn_tests.py b/tests/archive/isbn_tests.py
index f978851..ae9fc0e 100644
--- a/tests/archive/isbn_tests.py
+++ b/tests/archive/isbn_tests.py
@@ -5,28 +5,27 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
+from pywikibot import Bot, Claim, ItemPage
+from pywikibot.cosmetic_changes import CANCEL_MATCH, CosmeticChangesToolkit
+from pywikibot.tools import has_module
+from scripts.isbn import InvalidIsbnException as IsbnExc
+from scripts.isbn import convertIsbn10toIsbn13, hyphenateIsbnNumbers, main
+from tests.aspects import (
+ DefaultDrySiteTestCase,
+ ScriptMainTestCase,
+ TestCase,
+ WikibaseTestCase,
+ unittest,
+)
+from tests.bot_tests import TWNBotTestCase
+from tests.utils import empty_sites
+
try:
from stdnum.exceptions import ValidationError as StdNumValidationError
except ImportError:
StdNumValidationError = None
-from pywikibot import Bot, Claim, ItemPage
-from pywikibot.cosmetic_changes import CosmeticChangesToolkit, CANCEL_MATCH
-from pywikibot.tools import has_module
-
-from scripts.isbn import (
- InvalidIsbnException as IsbnExc,
- hyphenateIsbnNumbers, convertIsbn10toIsbn13,
- main
-)
-
-from tests.aspects import (
- unittest, TestCase, DefaultDrySiteTestCase,
- WikibaseTestCase, ScriptMainTestCase,
-)
-from tests.bot_tests import TWNBotTestCase
-from tests.utils import empty_sites
if StdNumValidationError:
AnyIsbnValidationException = (StdNumValidationError, IsbnExc)
diff --git a/tests/archivebot_tests.py b/tests/archivebot_tests.py
index 4eeb423..9bf1e36 100644
--- a/tests/archivebot_tests.py
+++ b/tests/archivebot_tests.py
@@ -5,19 +5,15 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from datetime import datetime, timedelta
import pywikibot
import pywikibot.page
-
from pywikibot.exceptions import Error
from pywikibot.textlib import TimeStripper
from pywikibot.tools import suppress_warnings
-
from scripts import archivebot
-
from tests.aspects import TestCase
diff --git a/tests/aspects.py b/tests/aspects.py
index 1fa6cea..6e725f0 100644
--- a/tests/aspects.py
+++ b/tests/aspects.py
@@ -17,40 +17,36 @@
import time
import unittest
import warnings
-
-from contextlib import contextmanager, suppress
from collections.abc import Sized
+from contextlib import contextmanager, suppress
from http import HTTPStatus
from unittest.util import safe_repr
import pywikibot
-
import pywikibot.config2 as config
-
+from pywikibot import Site
from pywikibot.backports import removeprefix
from pywikibot.comms import http
from pywikibot.data.api import Request as _original_Request
-from pywikibot.exceptions import ServerError, NoUsernameError
+from pywikibot.exceptions import NoUsernameError, ServerError
from pywikibot.family import WikimediaFamily
-from pywikibot import Site
from pywikibot.site import BaseSite
from pywikibot.tools import suppress_warnings
-
from tests import (
- patch_request,
- unpatch_request,
- unittest_print,
WARN_SITE_CODE,
+ patch_request,
+ unittest_print,
+ unpatch_request,
)
-
from tests.utils import (
AssertAPIErrorContextManager,
DryRequest,
DrySite,
- execute_pwb,
WarningSourceSkipContextManager,
+ execute_pwb,
)
+
try:
import pytest_httpbin
optional_pytest_httpbin_cls_decorator = (
diff --git a/tests/basepage.py b/tests/basepage.py
index ccfd315..7b1b01a 100644
--- a/tests/basepage.py
+++ b/tests/basepage.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot.page import BasePage
-
from tests.aspects import TestCase
diff --git a/tests/basesite_tests.py b/tests/basesite_tests.py
index 06bb125..ed316b2 100644
--- a/tests/basesite_tests.py
+++ b/tests/basesite_tests.py
@@ -7,12 +7,11 @@
from contextlib import suppress
import pywikibot
-
from pywikibot.exceptions import Error
from pywikibot.tools import suppress_warnings
-
from tests.aspects import DefaultSiteTestCase, TestCase, unittest
+
WARN_SELF_CALL = (r'Referencing this attribute like a function '
r'is deprecated for .*; use it directly instead')
diff --git a/tests/bot_tests.py b/tests/bot_tests.py
index 650bdd4..04a414a 100644
--- a/tests/bot_tests.py
+++ b/tests/bot_tests.py
@@ -5,15 +5,12 @@
# Distributed under the terms of the MIT license.
#
import sys
-
from contextlib import suppress
import pywikibot
import pywikibot.bot
-
from pywikibot import i18n
from pywikibot.tools import suppress_warnings
-
from tests.aspects import (
DefaultSiteTestCase,
SiteAttributeTestCase,
diff --git a/tests/cache_tests.py b/tests/cache_tests.py
index 749dc48..4767907 100644
--- a/tests/cache_tests.py
+++ b/tests/cache_tests.py
@@ -6,12 +6,10 @@
#
import unittest
-from pywikibot.site import BaseSite
-
import scripts.maintenance.cache as cache
-
-from tests.aspects import TestCase
+from pywikibot.site import BaseSite
from tests import join_cache_path
+from tests.aspects import TestCase
class RequestCacheTests(TestCase):
diff --git a/tests/category_bot_tests.py b/tests/category_bot_tests.py
index 0a9f10c..98926a7 100644
--- a/tests/category_bot_tests.py
+++ b/tests/category_bot_tests.py
@@ -5,15 +5,12 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
from pywikibot import BaseSite
-
-from scripts.category import CategoryPreprocess, CategoryMoveRobot
-
-from tests import patch, Mock
+from scripts.category import CategoryMoveRobot, CategoryPreprocess
+from tests import Mock, patch
from tests.aspects import DefaultSiteTestCase, TestCase
diff --git a/tests/category_tests.py b/tests/category_tests.py
index 8bf1750..e94fabc 100644
--- a/tests/category_tests.py
+++ b/tests/category_tests.py
@@ -5,14 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
import pywikibot.page
-
from pywikibot.exceptions import IsNotRedirectPageError
-
from tests.aspects import TestCase
diff --git a/tests/checkimages_tests.py b/tests/checkimages_tests.py
index b2def76..9fd489d 100644
--- a/tests/checkimages_tests.py
+++ b/tests/checkimages_tests.py
@@ -8,7 +8,6 @@
import unittest
from scripts import checkimages
-
from tests.aspects import TestCase
diff --git a/tests/collections_tests.py b/tests/collections_tests.py
index f401cea..2bfec55 100644
--- a/tests/collections_tests.py
+++ b/tests/collections_tests.py
@@ -5,17 +5,15 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
-from tests.aspects import WikidataTestCase
-
from pywikibot.page import (
AliasesDict,
ClaimCollection,
LanguageDict,
SiteLinkCollection,
)
+from tests.aspects import WikidataTestCase
class DataCollectionTestCase(WikidataTestCase):
diff --git a/tests/cosmetic_changes_tests.py b/tests/cosmetic_changes_tests.py
index 521f17b..61d1996 100644
--- a/tests/cosmetic_changes_tests.py
+++ b/tests/cosmetic_changes_tests.py
@@ -5,13 +5,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import Page
-
from pywikibot.cosmetic_changes import CosmeticChangesToolkit
-
from tests.aspects import TestCase
diff --git a/tests/datasite_tests.py b/tests/datasite_tests.py
index c8ae749..595e5e8 100644
--- a/tests/datasite_tests.py
+++ b/tests/datasite_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from tests.aspects import DefaultWikidataClientTestCase, WikidataTestCase
diff --git a/tests/date_tests.py b/tests/date_tests.py
index 98cf216..c71837d 100644
--- a/tests/date_tests.py
+++ b/tests/date_tests.py
@@ -5,12 +5,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from datetime import datetime
from pywikibot import date
-
from tests.aspects import MetaTestCaseClass, TestCase
diff --git a/tests/deletionbot_tests.py b/tests/deletionbot_tests.py
index 9ba451f..e985b7c 100644
--- a/tests/deletionbot_tests.py
+++ b/tests/deletionbot_tests.py
@@ -5,14 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
import pywikibot.page
-
from scripts import delete
-
from tests.aspects import ScriptMainTestCase
from tests.utils import empty_sites
diff --git a/tests/deprecation_tests.py b/tests/deprecation_tests.py
index 4e3ad91..80df7ca 100644
--- a/tests/deprecation_tests.py
+++ b/tests/deprecation_tests.py
@@ -5,18 +5,16 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
-from tests.aspects import DeprecationTestCase
-
from pywikibot.tools import (
add_full_name,
- deprecated,
deprecate_arg,
+ deprecated,
deprecated_args,
remove_last_args,
)
+from tests.aspects import DeprecationTestCase
@add_full_name
diff --git a/tests/diff_tests.py b/tests/diff_tests.py
index 262a908..950dfa3 100644
--- a/tests/diff_tests.py
+++ b/tests/diff_tests.py
@@ -6,8 +6,7 @@
# Distributed under the terms of the MIT license.
from contextlib import suppress
-from pywikibot.diff import cherry_pick, html_comparator, PatchManager
-
+from pywikibot.diff import PatchManager, cherry_pick, html_comparator
from tests import join_html_data_path, patch
from tests.aspects import TestCase, require_modules, unittest
diff --git a/tests/djvu_tests.py b/tests/djvu_tests.py
index d5d9058..1ca4bab 100644
--- a/tests/djvu_tests.py
+++ b/tests/djvu_tests.py
@@ -9,14 +9,13 @@
import os
import subprocess
import unittest
-
from contextlib import suppress
from pywikibot.tools.djvu import DjVuFile
-
-from tests import join_data_path, create_path_func
+from tests import create_path_func, join_data_path
from tests.aspects import TestCase
+
join_djvu_data_path = create_path_func(join_data_path, 'djvu')
diff --git a/tests/dry_api_tests.py b/tests/dry_api_tests.py
index f72a281..ca677b4 100644
--- a/tests/dry_api_tests.py
+++ b/tests/dry_api_tests.py
@@ -7,28 +7,24 @@
import datetime
import pywikibot
-
-from pywikibot.exceptions import Error
-from pywikibot.family import Family
-from pywikibot.login import LoginStatus
-from pywikibot.tools import suppress_warnings
-
-from tests import join_images_path, patch
-from tests.utils import DummySiteinfo
-
from pywikibot.data.api import (
CachedRequest,
ParamInfo,
QueryGenerator,
Request,
)
-
+from pywikibot.exceptions import Error
+from pywikibot.family import Family
+from pywikibot.login import LoginStatus
+from pywikibot.tools import suppress_warnings
+from tests import join_images_path, patch
from tests.aspects import (
DefaultDrySiteTestCase,
SiteAttributeTestCase,
TestCase,
unittest,
)
+from tests.utils import DummySiteinfo
class DryCachedRequestTests(SiteAttributeTestCase):
diff --git a/tests/dry_site_tests.py b/tests/dry_site_tests.py
index 3b2ba4d..76a8c62 100644
--- a/tests/dry_site_tests.py
+++ b/tests/dry_site_tests.py
@@ -7,9 +7,7 @@
import unittest
import pywikibot
-
from pywikibot.comms.http import user_agent
-
from tests.aspects import DefaultDrySiteTestCase
diff --git a/tests/echo_tests.py b/tests/echo_tests.py
index e6e5060..6ede4fe 100644
--- a/tests/echo_tests.py
+++ b/tests/echo_tests.py
@@ -5,14 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot.echo import Notification
from pywikibot.tools import suppress_warnings
-
from tests.aspects import DefaultDrySiteTestCase
diff --git a/tests/edit_failure_tests.py b/tests/edit_failure_tests.py
index 30508fe..fa7997d 100644
--- a/tests/edit_failure_tests.py
+++ b/tests/edit_failure_tests.py
@@ -12,16 +12,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot import config
-
-from tests import patch
-from tests.aspects import TestCase, WikibaseTestCase
-
from pywikibot.exceptions import (
Error,
LockedPageError,
@@ -33,6 +27,8 @@
SpamblacklistError,
TitleblacklistError,
)
+from tests import patch
+from tests.aspects import TestCase, WikibaseTestCase
class TestSaveFailure(TestCase):
diff --git a/tests/edit_tests.py b/tests/edit_tests.py
index bc8702e..152747d 100644
--- a/tests/edit_tests.py
+++ b/tests/edit_tests.py
@@ -6,17 +6,15 @@
#
import time
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot import config, page_put_queue
from pywikibot.exceptions import Error
-
from tests.aspects import TestCase
from tests.oauth_tests import OAuthSiteTestCase
+
called_back = False
diff --git a/tests/eventstreams_tests.py b/tests/eventstreams_tests.py
index f9f6e8d..1f0c905 100644
--- a/tests/eventstreams_tests.py
+++ b/tests/eventstreams_tests.py
@@ -6,16 +6,13 @@
#
import json
import unittest
-
from contextlib import suppress
-from tests import mock
-
from pywikibot import config
-from pywikibot.comms.eventstreams import EventStreams, EventSource
+from pywikibot.comms.eventstreams import EventSource, EventStreams
from pywikibot.family import WikimediaFamily
-
-from tests.aspects import TestCase, DefaultSiteTestCase, require_modules
+from tests import mock
+from tests.aspects import DefaultSiteTestCase, TestCase, require_modules
@mock.patch('pywikibot.comms.eventstreams.EventSource', new=mock.MagicMock())
diff --git a/tests/family_tests.py b/tests/family_tests.py
index f756adc..d82d723 100644
--- a/tests/family_tests.py
+++ b/tests/family_tests.py
@@ -8,11 +8,9 @@
from contextlib import suppress
import pywikibot.site
-
from pywikibot.exceptions import UnknownFamilyError
from pywikibot.family import Family, SingleSiteFamily
from pywikibot.tools import suppress_warnings
-
from tests.aspects import PatchingTestCase, TestCase, unittest
from tests.utils import DrySite
diff --git a/tests/file_tests.py b/tests/file_tests.py
index 106c90a..2a4fb9f 100644
--- a/tests/file_tests.py
+++ b/tests/file_tests.py
@@ -7,15 +7,12 @@
import os
import re
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot.exceptions import NoPageError, PageRelatedError
-
-from tests.aspects import TestCase
from tests import join_images_path
+from tests.aspects import TestCase
class TestShareFiles(TestCase):
diff --git a/tests/fixes_tests.py b/tests/fixes_tests.py
index 2f8c355..a4a49e9 100644
--- a/tests/fixes_tests.py
+++ b/tests/fixes_tests.py
@@ -5,13 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import fixes
-
-from tests.aspects import TestCase
from tests import join_data_path
+from tests.aspects import TestCase
class TestFixes(TestCase):
diff --git a/tests/fixing_redirects_tests.py b/tests/fixing_redirects_tests.py
index 58f68c6..2fd1b72 100644
--- a/tests/fixing_redirects_tests.py
+++ b/tests/fixing_redirects_tests.py
@@ -5,9 +5,7 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from scripts.fixing_redirects import FixingRedirectBot
-
from tests.aspects import TestCase, unittest
diff --git a/tests/flow_edit_tests.py b/tests/flow_edit_tests.py
index bf83c30..1560f74 100644
--- a/tests/flow_edit_tests.py
+++ b/tests/flow_edit_tests.py
@@ -5,12 +5,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import contextmanager, suppress
from pywikibot.exceptions import LockedPageError
-from pywikibot.flow import Board, Topic, Post
-
+from pywikibot.flow import Board, Post, Topic
from tests.aspects import TestCase
diff --git a/tests/flow_tests.py b/tests/flow_tests.py
index eb9a2e6..01eb922 100644
--- a/tests/flow_tests.py
+++ b/tests/flow_tests.py
@@ -5,17 +5,14 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot.exceptions import NoPageError
-from pywikibot.flow import Board, Topic, Post
-
+from pywikibot.flow import Board, Post, Topic
from tests.aspects import TestCase
-
from tests.basepage import (
- BasePageMethodsTestBase,
BasePageLoadRevisionsCachingTestBase,
+ BasePageMethodsTestBase,
)
diff --git a/tests/flow_thanks_tests.py b/tests/flow_thanks_tests.py
index bf90ff1..57c6f93 100644
--- a/tests/flow_thanks_tests.py
+++ b/tests/flow_thanks_tests.py
@@ -7,7 +7,6 @@
import unittest
from pywikibot.flow import Topic
-
from tests.aspects import TestCase
diff --git a/tests/generate_family_file_tests.py b/tests/generate_family_file_tests.py
index e2a5858..8248aa6 100644
--- a/tests/generate_family_file_tests.py
+++ b/tests/generate_family_file_tests.py
@@ -5,16 +5,13 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from random import sample
from urllib.parse import urlparse
-from pywikibot import Site
-
-from tests.aspects import DefaultSiteTestCase
-
import generate_family_file
+from pywikibot import Site
+from tests.aspects import DefaultSiteTestCase
class FamilyTestGenerator(generate_family_file.FamilyFileGenerator):
diff --git a/tests/generate_user_files_tests.py b/tests/generate_user_files_tests.py
index 9cf64d3..b24af84 100644
--- a/tests/generate_user_files_tests.py
+++ b/tests/generate_user_files_tests.py
@@ -7,9 +7,8 @@
import re
import unittest
-from tests.aspects import TestCase
-
import generate_user_files as guf
+from tests.aspects import TestCase
class TestGenerateUserFiles(TestCase):
diff --git a/tests/http_tests.py b/tests/http_tests.py
index 0505a3e..fed76e2 100644
--- a/tests/http_tests.py
+++ b/tests/http_tests.py
@@ -7,28 +7,18 @@
import json
import re
import warnings
-
from contextlib import suppress
from http import HTTPStatus
import requests
import pywikibot
-
from pywikibot import config2 as config
-
from pywikibot.comms import http
from pywikibot.exceptions import FatalServerError, Server504Error
from pywikibot.tools import PYTHON_VERSION, suppress_warnings
-
from tests import join_images_path, patch
-
-from tests.aspects import (
- unittest,
- TestCase,
- HttpbinTestCase,
- require_modules,
-)
+from tests.aspects import HttpbinTestCase, TestCase, require_modules, unittest
class HttpTestCase(TestCase):
diff --git a/tests/i18n_tests.py b/tests/i18n_tests.py
index b8ac407..f37dd06 100644
--- a/tests/i18n_tests.py
+++ b/tests/i18n_tests.py
@@ -7,10 +7,8 @@
from contextlib import suppress
import pywikibot
-
from pywikibot import bot, config, i18n, plural
from pywikibot.exceptions import TranslationError
-
from tests.aspects import (
AutoDeprecationTestCase,
DefaultSiteTestCase,
diff --git a/tests/interwiki_graph_tests.py b/tests/interwiki_graph_tests.py
index 765a360..406c20d 100644
--- a/tests/interwiki_graph_tests.py
+++ b/tests/interwiki_graph_tests.py
@@ -6,12 +6,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import interwiki_graph
-
-from tests.aspects import require_modules, SiteAttributeTestCase
+from tests.aspects import SiteAttributeTestCase, require_modules
from tests.utils import DryPage
diff --git a/tests/interwiki_link_tests.py b/tests/interwiki_link_tests.py
index d227f50..196c80e 100644
--- a/tests/interwiki_link_tests.py
+++ b/tests/interwiki_link_tests.py
@@ -7,15 +7,10 @@
from contextlib import suppress
from pywikibot import config2 as config
-
from pywikibot.exceptions import InvalidTitleError
from pywikibot.page import Link
-
-from tests.aspects import (
- AlteredDefaultSiteTestCase as LinkTestCase,
- TestCase,
- unittest,
-)
+from tests.aspects import AlteredDefaultSiteTestCase as LinkTestCase
+from tests.aspects import TestCase, unittest
class TestPartiallyQualifiedLinkDifferentCodeParser(LinkTestCase):
diff --git a/tests/interwikidata_tests.py b/tests/interwikidata_tests.py
index 3b5805f..a2bbeba 100644
--- a/tests/interwikidata_tests.py
+++ b/tests/interwikidata_tests.py
@@ -5,15 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot import Link
-
from scripts import interwikidata
-
from tests.aspects import SiteAttributeTestCase
from tests.utils import empty_sites
diff --git a/tests/interwikimap_tests.py b/tests/interwikimap_tests.py
index 1da509c..47fae45 100644
--- a/tests/interwikimap_tests.py
+++ b/tests/interwikimap_tests.py
@@ -7,11 +7,9 @@
import unittest
import pywikibot
-
from pywikibot.tools import suppress_warnings
-
-from tests.aspects import TestCase
from tests import WARN_SITE_CODE
+from tests.aspects import TestCase
class TestInterwikiMap(TestCase):
diff --git a/tests/l10n_tests.py b/tests/l10n_tests.py
index 1e6eda3..c14354c 100644
--- a/tests/l10n_tests.py
+++ b/tests/l10n_tests.py
@@ -6,16 +6,14 @@
#
import os
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot import i18n
from pywikibot.textlib import extract_templates_and_params_regex_simple
-
from tests.aspects import MetaTestCaseClass, TestCase
+
PACKAGES = (
'redirect-broken-redirect-template', # speedy deletion template
'archivebot-archiveheader', # archive header template
diff --git a/tests/link_tests.py b/tests/link_tests.py
index 3cb701c..e9a0530 100644
--- a/tests/link_tests.py
+++ b/tests/link_tests.py
@@ -5,23 +5,20 @@
# Distributed under the terms of the MIT license.
#
import re
-
from contextlib import suppress
import pywikibot
-
-from pywikibot import config2 as config
from pywikibot import Site
+from pywikibot import config2 as config
+from pywikibot.exceptions import InvalidTitleError, SiteDefinitionError
from pywikibot.page import Link, Page, SiteLink
from pywikibot.site import Namespace
-from pywikibot.exceptions import InvalidTitleError, SiteDefinitionError
-
+from tests.aspects import AlteredDefaultSiteTestCase as LinkTestCase
from tests.aspects import (
- AlteredDefaultSiteTestCase as LinkTestCase,
DefaultDrySiteTestCase,
TestCase,
- unittest,
WikimediaDefaultSiteTestCase,
+ unittest,
)
diff --git a/tests/linter_tests.py b/tests/linter_tests.py
index fd721fa..24ad328 100644
--- a/tests/linter_tests.py
+++ b/tests/linter_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from tests.aspects import DefaultSiteTestCase
diff --git a/tests/logentries_tests.py b/tests/logentries_tests.py
index 6c25736..ae33472 100644
--- a/tests/logentries_tests.py
+++ b/tests/logentries_tests.py
@@ -6,27 +6,18 @@
#
import datetime
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot.exceptions import HiddenKeyError, NoMoveTargetError
from pywikibot.family import AutoFamily
-
-from tests import unittest_print
-
from pywikibot.logentries import (
LogEntryFactory,
OtherLogEntry,
UserTargetLogEntry,
)
-
-from tests.aspects import (
- DeprecationTestCase,
- MetaTestCaseClass,
- TestCase,
-)
+from tests import unittest_print
+from tests.aspects import DeprecationTestCase, MetaTestCaseClass, TestCase
class TestLogentriesBase(TestCase):
diff --git a/tests/login_tests.py b/tests/login_tests.py
index 7c802d9..c1f60dd 100644
--- a/tests/login_tests.py
+++ b/tests/login_tests.py
@@ -13,13 +13,8 @@
from pywikibot.exceptions import NoUsernameError
from pywikibot.login import LoginManager
-
from tests import mock
-
-from tests.aspects import (
- DefaultDrySiteTestCase,
- unittest,
-)
+from tests.aspects import DefaultDrySiteTestCase, unittest
class FakeFamily:
diff --git a/tests/mediawikiversion_tests.py b/tests/mediawikiversion_tests.py
index 1913f82..3096057 100644
--- a/tests/mediawikiversion_tests.py
+++ b/tests/mediawikiversion_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot.tools import MediaWikiVersion
-
from tests.aspects import TestCase
diff --git a/tests/mysql_tests.py b/tests/mysql_tests.py
index 3ed689c..aeb986f 100644
--- a/tests/mysql_tests.py
+++ b/tests/mysql_tests.py
@@ -4,12 +4,10 @@
#
# Distributed under the terms of the MIT license.
#
+import unittest
from contextlib import suppress
from types import GeneratorType
-import unittest
-
-
from tests.aspects import TestCase, require_modules
diff --git a/tests/namespace_tests.py b/tests/namespace_tests.py
index b6ea9ac..177e8ff 100644
--- a/tests/namespace_tests.py
+++ b/tests/namespace_tests.py
@@ -9,9 +9,9 @@
from pywikibot.site import Namespace, NamespacesDict
from pywikibot.site._namespace import BuiltinNamespace
-
from tests.aspects import TestCase, unittest
+
# Default namespaces which should work in any MW wiki
_base_builtin_ns = {
'Media': -2,
diff --git a/tests/noreferences_tests.py b/tests/noreferences_tests.py
index 390688c..eec24fe 100644
--- a/tests/noreferences_tests.py
+++ b/tests/noreferences_tests.py
@@ -5,9 +5,7 @@
# Distributed under the terms of the MIT license.
#
import pywikibot
-
from scripts.noreferences import NoReferencesBot
-
from tests.aspects import TestCase, unittest
diff --git a/tests/oauth_tests.py b/tests/oauth_tests.py
index 88ef440..e1c924e 100644
--- a/tests/oauth_tests.py
+++ b/tests/oauth_tests.py
@@ -5,15 +5,13 @@
# Distributed under the terms of the MIT license.
#
import os
-
from contextlib import suppress
from pywikibot.login import OauthLoginManager
-
from tests.aspects import (
DefaultSiteTestCase,
- require_modules,
TestCase,
+ require_modules,
unittest,
)
diff --git a/tests/page_tests.py b/tests/page_tests.py
index 3b7cfbe..f63cdab 100644
--- a/tests/page_tests.py
+++ b/tests/page_tests.py
@@ -6,26 +6,21 @@
#
import pickle
import re
-
from contextlib import suppress
import pywikibot
import pywikibot.page
-
from pywikibot import config
-from pywikibot.tools import suppress_warnings
-
-from tests import mock, WARN_SITE_CODE
-
from pywikibot.exceptions import (
Error,
+ InvalidTitleError,
IsNotRedirectPageError,
IsRedirectPageError,
- InvalidTitleError,
NoPageError,
UnknownExtensionError,
)
-
+from pywikibot.tools import suppress_warnings
+from tests import WARN_SITE_CODE, mock
from tests.aspects import (
DefaultDrySiteTestCase,
DefaultSiteTestCase,
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index ae6f386..2829055 100644
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -9,26 +9,20 @@
import logging
import sys
import unittest
-
from contextlib import suppress
from typing import Optional
import pywikibot
-
-from pywikibot import pagegenerators, date
+from pywikibot import date, pagegenerators
from pywikibot.exceptions import ServerError, UnknownExtensionError
-from pywikibot.tools import has_module, suppress_warnings
-
-from tests import join_data_path, mock
-from tests.thread_tests import GeneratorIntersectTestCase
-
from pywikibot.pagegenerators import (
CategorizedPageGenerator,
PagesFromTitlesGenerator,
PreloadingGenerator,
WikibaseItemFilterPageGenerator,
)
-
+from pywikibot.tools import has_module, suppress_warnings
+from tests import join_data_path, mock
from tests.aspects import (
DefaultSiteTestCase,
DeprecationTestCase,
@@ -36,6 +30,8 @@
TestCase,
WikidataTestCase,
)
+from tests.thread_tests import GeneratorIntersectTestCase
+
LINKSEARCH_MSG = (r'.*pywikibot\.pagegenerators\.LinksearchPageGenerator .*'
r'is deprecated for .*; use Site\.exturlusage')
diff --git a/tests/paraminfo_tests.py b/tests/paraminfo_tests.py
index 6b1a2cb..55824f2 100644
--- a/tests/paraminfo_tests.py
+++ b/tests/paraminfo_tests.py
@@ -7,13 +7,12 @@
from pywikibot.family import WikimediaFamily
from pywikibot.page import Claim, Property
from pywikibot.site import DataSite
-
from tests.aspects import (
DefaultSiteTestCase,
DefaultWikibaseClientTestCase,
TestCaseBase,
- unittest,
WikimediaDefaultSiteTestCase,
+ unittest,
)
diff --git a/tests/patrolbot_tests.py b/tests/patrolbot_tests.py
index 864a3fb..8c11421 100644
--- a/tests/patrolbot_tests.py
+++ b/tests/patrolbot_tests.py
@@ -7,8 +7,7 @@
from contextlib import suppress
from scripts.patrol import PatrolBot
-
-from tests.aspects import require_modules, unittest, DefaultDrySiteTestCase
+from tests.aspects import DefaultDrySiteTestCase, require_modules, unittest
DUMMY_PAGE_TUPLES = """
diff --git a/tests/plural_tests.py b/tests/plural_tests.py
index 502d7c9..daa1c7b 100644
--- a/tests/plural_tests.py
+++ b/tests/plural_tests.py
@@ -5,12 +5,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import plural
-
-from tests.aspects import TestCase, MetaTestCaseClass
+from tests.aspects import MetaTestCaseClass, TestCase
class MetaPluralRulesTest(MetaTestCaseClass):
diff --git a/tests/proofreadpage_tests.py b/tests/proofreadpage_tests.py
index eb76f5e..2636c0c 100644
--- a/tests/proofreadpage_tests.py
+++ b/tests/proofreadpage_tests.py
@@ -7,21 +7,18 @@
import difflib
import json
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot.data import api
from pywikibot.exceptions import UnknownExtensionError
from pywikibot.proofreadpage import IndexPage, ProofreadPage
from pywikibot.tools import has_module
-
from tests import unittest_print
-from tests.aspects import require_modules, TestCase
+from tests.aspects import TestCase, require_modules
from tests.basepage import (
- BasePageMethodsTestBase,
BasePageLoadRevisionsCachingTestBase,
+ BasePageMethodsTestBase,
)
diff --git a/tests/protectbot_tests.py b/tests/protectbot_tests.py
index 8122881..b1cde94 100644
--- a/tests/protectbot_tests.py
+++ b/tests/protectbot_tests.py
@@ -5,14 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
import pywikibot.page
-
from scripts import protect
-
from tests.aspects import ScriptMainTestCase
diff --git a/tests/pwb/print_locals.py b/tests/pwb/print_locals.py
index 8ce9be2..4e2df8e 100644
--- a/tests/pwb/print_locals.py
+++ b/tests/pwb/print_locals.py
@@ -7,6 +7,7 @@
#
import os.path
+
if __name__ == '__main__':
for k, v in sorted(locals().copy().items()):
# Skip a few items that Python 3 adds and are not emulated in pwb.
diff --git a/tests/pwb/print_unicode.py b/tests/pwb/print_unicode.py
index 9f97da1..220c8a3 100644
--- a/tests/pwb/print_unicode.py
+++ b/tests/pwb/print_unicode.py
@@ -7,6 +7,7 @@
#
import pywikibot
+
if __name__ == '__main__':
pywikibot.output('Häuser')
print('Häuser')
diff --git a/tests/pwb_tests.py b/tests/pwb_tests.py
index f542a67..feacd38 100644
--- a/tests/pwb_tests.py
+++ b/tests/pwb_tests.py
@@ -14,9 +14,10 @@
import sys
import unittest
-from tests import join_tests_path, create_path_func
-from tests.utils import execute, execute_pwb
+from tests import create_path_func, join_tests_path
from tests.aspects import PwbTestCase
+from tests.utils import execute, execute_pwb
+
join_pwb_tests_path = create_path_func(join_tests_path, 'pwb')
diff --git a/tests/redirect_bot_tests.py b/tests/redirect_bot_tests.py
index cd04426..d8fb021 100644
--- a/tests/redirect_bot_tests.py
+++ b/tests/redirect_bot_tests.py
@@ -5,14 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
from pywikibot import Page, i18n
-
from scripts.redirect import RedirectRobot
-
from tests import Mock, patch
from tests.aspects import DefaultSiteTestCase
diff --git a/tests/reflinks_tests.py b/tests/reflinks_tests.py
index c8c2c9d..7b2642e 100644
--- a/tests/reflinks_tests.py
+++ b/tests/reflinks_tests.py
@@ -6,12 +6,10 @@
#
import unittest
-from scripts.reflinks import XmlDumpPageGenerator, ReferencesRobot, main
-
from pywikibot.tools import suppress_warnings
-
+from scripts.reflinks import ReferencesRobot, XmlDumpPageGenerator, main
from tests import WARN_SITE_OBJ, join_xml_data_path
-from tests.aspects import TestCase, ScriptMainTestCase
+from tests.aspects import ScriptMainTestCase, TestCase
from tests.utils import empty_sites
diff --git a/tests/replacebot_tests.py b/tests/replacebot_tests.py
index 5d473d1..6e706b9 100644
--- a/tests/replacebot_tests.py
+++ b/tests/replacebot_tests.py
@@ -5,20 +5,17 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from pywikibot import fixes
from pywikibot.tools import suppress_warnings
-
from scripts import replace
-
from tests import WARN_SITE_OBJ, join_data_path
from tests.bot_tests import TWNBotTestCase
from tests.utils import empty_sites
+
# Load only the custom fixes
fixes.fixes.clear()
fixes._load_file(join_data_path('fixes.py'))
diff --git a/tests/script_tests.py b/tests/script_tests.py
index 6072601..b2feaa5 100644
--- a/tests/script_tests.py
+++ b/tests/script_tests.py
@@ -7,19 +7,13 @@
import os
import sys
import unittest
-
from contextlib import suppress
from pywikibot.tools import has_module
-
from tests import join_root_path, unittest_print
+from tests.aspects import DefaultSiteTestCase, MetaTestCaseClass, PwbTestCase
from tests.utils import execute_pwb
-from tests.aspects import (
- DefaultSiteTestCase,
- MetaTestCaseClass,
- PwbTestCase,
-)
scripts_path = join_root_path('scripts')
diff --git a/tests/site_decorators_tests.py b/tests/site_decorators_tests.py
index 66be88d..4ff9dbf 100644
--- a/tests/site_decorators_tests.py
+++ b/tests/site_decorators_tests.py
@@ -7,9 +7,8 @@
import unittest
from pywikibot.exceptions import UserRightsError
-from pywikibot.tools import deprecated
from pywikibot.site._decorators import must_be, need_right, need_version
-
+from pywikibot.tools import deprecated
from tests.aspects import DebugOnlyTestCase, DeprecationTestCase
diff --git a/tests/site_detect_tests.py b/tests/site_detect_tests.py
index 6e4d254..f7e266d 100644
--- a/tests/site_detect_tests.py
+++ b/tests/site_detect_tests.py
@@ -5,7 +5,6 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from http import HTTPStatus
from urllib.parse import urlparse
@@ -13,12 +12,10 @@
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import pywikibot
-
from pywikibot.exceptions import ServerError
from pywikibot.site_detect import MWSite
-
from tests import unittest_print
-from tests.aspects import TestCase, PatchingTestCase
+from tests.aspects import PatchingTestCase, TestCase
from tests.utils import DrySite
diff --git a/tests/site_tests.py b/tests/site_tests.py
index f7c015f..d01741f 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -9,21 +9,14 @@
import threading
import time
import unittest
-
from collections.abc import Iterable, Mapping
from contextlib import suppress
from http import HTTPStatus
import pywikibot
-
-from pywikibot.comms import http
from pywikibot import config
+from pywikibot.comms import http
from pywikibot.data import api
-from pywikibot.tools import suppress_warnings
-
-from tests import WARN_SITE_CODE, patch, unittest_print
-from tests.basepage import BasePageLoadRevisionsCachingTestBase
-
from pywikibot.exceptions import (
APIError,
Error,
@@ -34,7 +27,8 @@
UnknownExtensionError,
UnknownSiteError,
)
-
+from pywikibot.tools import suppress_warnings
+from tests import WARN_SITE_CODE, patch, unittest_print
from tests.aspects import (
AlteredDefaultSiteTestCase,
DefaultDrySiteTestCase,
@@ -43,6 +37,7 @@
TestCase,
WikimediaDefaultSiteTestCase,
)
+from tests.basepage import BasePageLoadRevisionsCachingTestBase
class TestSiteObjectDeprecatedFunctions(DefaultSiteTestCase,
diff --git a/tests/siteinfo_tests.py b/tests/siteinfo_tests.py
index c3350ee..51136ee 100644
--- a/tests/siteinfo_tests.py
+++ b/tests/siteinfo_tests.py
@@ -6,18 +6,13 @@
#
import re
import unittest
-
from contextlib import suppress
from datetime import datetime
import pywikibot
-
from pywikibot import async_request, page_put_queue
-
-from tests import patch, MagicMock
-from tests.aspects import (
- DefaultSiteTestCase, DefaultDrySiteTestCase,
-)
+from tests import MagicMock, patch
+from tests.aspects import DefaultDrySiteTestCase, DefaultSiteTestCase
from tests.utils import entered_loop
diff --git a/tests/sparql_tests.py b/tests/sparql_tests.py
index 2c510cf..1cc9914 100644
--- a/tests/sparql_tests.py
+++ b/tests/sparql_tests.py
@@ -5,13 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot.data.sparql as sparql
-
-from tests.aspects import TestCase, WikidataTestCase
from tests import patch
+from tests.aspects import TestCase, WikidataTestCase
# See:
https://www.w3.org/TR/2013/REC-sparql11-results-json-20130321/
diff --git a/tests/template_bot_tests.py b/tests/template_bot_tests.py
index c5de6ed..7328486 100644
--- a/tests/template_bot_tests.py
+++ b/tests/template_bot_tests.py
@@ -7,12 +7,10 @@
import unittest
import pywikibot
-
from pywikibot.pagegenerators import XMLDumpPageGenerator
from pywikibot.textlib import _MultiTemplateMatchBuilder
-
-from tests.aspects import TestCase
from tests import join_xml_data_path
+from tests.aspects import TestCase
class TestXMLPageGenerator(TestCase):
diff --git a/tests/tests_tests.py b/tests/tests_tests.py
index e34bc46..4f46030 100644
--- a/tests/tests_tests.py
+++ b/tests/tests_tests.py
@@ -5,7 +5,6 @@
#
# Distributed under the terms of the MIT license.
import unittest
-
from contextlib import suppress
from tests.aspects import TestCase
diff --git a/tests/textlib_tests.py b/tests/textlib_tests.py
index 51fc5a2..0abb8a5 100644
--- a/tests/textlib_tests.py
+++ b/tests/textlib_tests.py
@@ -9,28 +9,25 @@
import os
import re
import unittest
-
from collections import OrderedDict
from contextlib import suppress
import pywikibot
-
+from pywikibot import textlib
from pywikibot.backports import nullcontext
from pywikibot.exceptions import UnknownSiteError
from pywikibot.site._interwikimap import _IWEntry
-from pywikibot import textlib
from pywikibot.textlib import _MultiTemplateMatchBuilder, extract_sections
from pywikibot.tools import suppress_warnings
-
from tests import mock
-
from tests.aspects import (
DefaultDrySiteTestCase,
- require_modules,
SiteAttributeTestCase,
TestCase,
+ require_modules,
)
+
files = {}
dirname = os.path.join(os.path.dirname(__file__), 'pages')
diff --git a/tests/thanks_tests.py b/tests/thanks_tests.py
index c5b9267..fd385db 100644
--- a/tests/thanks_tests.py
+++ b/tests/thanks_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot.page import Page, User
-
from tests.aspects import TestCase
diff --git a/tests/thread_tests.py b/tests/thread_tests.py
index 112540d..b4c667f 100644
--- a/tests/thread_tests.py
+++ b/tests/thread_tests.py
@@ -5,13 +5,11 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from collections import Counter
from contextlib import suppress
-from tests.aspects import TestCase
-
from pywikibot.tools import ThreadedGenerator, intersect_generators
+from tests.aspects import TestCase
class BasicThreadedGeneratorTestCase(TestCase):
diff --git a/tests/timestamp_tests.py b/tests/timestamp_tests.py
index 790a58e..18b8bd7 100644
--- a/tests/timestamp_tests.py
+++ b/tests/timestamp_tests.py
@@ -8,11 +8,9 @@
import datetime
import re
import unittest
-
from contextlib import suppress
from pywikibot import Timestamp
-
from tests.aspects import TestCase
diff --git a/tests/timestripper_tests.py b/tests/timestripper_tests.py
index ea5ae53..05fc8d7 100644
--- a/tests/timestripper_tests.py
+++ b/tests/timestripper_tests.py
@@ -6,15 +6,11 @@
#
import datetime
import re
-
from contextlib import suppress
from pywikibot.textlib import TimeStripper, tzoneFixedOffset
+from tests.aspects import TestCase, unittest
-from tests.aspects import (
- TestCase,
- unittest,
-)
MatchObject = type(re.search('', ''))
diff --git a/tests/titletranslate_tests.py b/tests/titletranslate_tests.py
index 361130f..2a722bb 100644
--- a/tests/titletranslate_tests.py
+++ b/tests/titletranslate_tests.py
@@ -7,7 +7,6 @@
import unittest
from pywikibot.titletranslate import translate
-
from tests.aspects import TestCase
diff --git a/tests/tk_tests.py b/tests/tk_tests.py
index eb3b13d..6696c9f 100644
--- a/tests/tk_tests.py
+++ b/tests/tk_tests.py
@@ -6,15 +6,15 @@
#
import os
import unittest
-
from contextlib import suppress
import pywikibot
-from tests.aspects import TestCase, DefaultSiteTestCase
+from tests.aspects import DefaultSiteTestCase, TestCase
if os.environ.get('PYWIKIBOT_TEST_GUI', '0') == '1':
import tkinter
+
from pywikibot.userinterfaces.gui import EditBoxWindow, Tkdialog
diff --git a/tests/token_tests.py b/tests/token_tests.py
index 879b523..b2e56b8 100644
--- a/tests/token_tests.py
+++ b/tests/token_tests.py
@@ -8,13 +8,7 @@
from pywikibot.exceptions import APIError, Error
from pywikibot.site import TokenWallet
-
-from tests.aspects import (
- DefaultSiteTestCase,
- TestCase,
- TestCaseBase,
- unittest,
-)
+from tests.aspects import DefaultSiteTestCase, TestCase, TestCaseBase, unittest
class TestSiteTokens(DefaultSiteTestCase):
diff --git a/tests/tools_chars_tests.py b/tests/tools_chars_tests.py
index 719292d..abe9f51 100644
--- a/tests/tools_chars_tests.py
+++ b/tests/tools_chars_tests.py
@@ -6,11 +6,9 @@
# Distributed under the terms of the MIT license.
import unicodedata
import unittest
-
from contextlib import suppress
from pywikibot.tools import chars
-
from tests.aspects import TestCase
diff --git a/tests/tools_formatter_tests.py b/tests/tools_formatter_tests.py
index c97f03d..046f830 100644
--- a/tests/tools_formatter_tests.py
+++ b/tests/tools_formatter_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot.tools import formatter
-
from tests.aspects import TestCase
diff --git a/tests/tools_ip_tests.py b/tests/tools_ip_tests.py
index 95742c0..0ed9d5c 100644
--- a/tests/tools_ip_tests.py
+++ b/tests/tools_ip_tests.py
@@ -5,13 +5,10 @@
#
# Distributed under the terms of the MIT license.
import unittest
-
from contextlib import suppress
-from pywikibot.tools import is_IP, PYTHON_VERSION
-
+from pywikibot.tools import PYTHON_VERSION, is_IP
from tests import unittest_print
-
from tests.aspects import TestCase
from tests.utils import expected_failure_if
diff --git a/tests/tools_tests.py b/tests/tools_tests.py
index e2c7e98..d890247 100644
--- a/tests/tools_tests.py
+++ b/tests/tools_tests.py
@@ -9,17 +9,15 @@
import subprocess
import tempfile
import unittest
-
-from collections.abc import Mapping
from collections import OrderedDict
+from collections.abc import Mapping
from contextlib import suppress
from importlib import import_module
from pywikibot import tools
from pywikibot.tools import classproperty, has_module, suppress_warnings
-
from tests import join_xml_data_path, mock
-from tests.aspects import require_modules, TestCase
+from tests.aspects import TestCase, require_modules
class OpenArchiveTestCase(TestCase):
diff --git a/tests/ui_options_tests.py b/tests/ui_options_tests.py
index 4dd89c0..a9804ee 100644
--- a/tests/ui_options_tests.py
+++ b/tests/ui_options_tests.py
@@ -5,14 +5,13 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import bot, bot_choice
from pywikibot.bot_choice import ChoiceException, QuitKeyboardInterrupt
-
from tests.aspects import TestCase
+
message = bot.Option.formatted
diff --git a/tests/ui_tests.py b/tests/ui_tests.py
index 40f2884..c6c9cad 100644
--- a/tests/ui_tests.py
+++ b/tests/ui_tests.py
@@ -29,14 +29,9 @@
import subprocess
import sys
import time
-
from contextlib import suppress
import pywikibot
-
-from tests.aspects import TestCase, TestCaseBase
-from tests.utils import unittest, FakeModule
-
from pywikibot.bot import (
CRITICAL,
DEBUG,
@@ -44,20 +39,22 @@
INFO,
INPUT,
STDOUT,
- ui,
VERBOSE,
WARNING,
+ ui,
)
-
from pywikibot.userinterfaces import (
terminal_interface_base,
terminal_interface_unix,
terminal_interface_win32,
)
+from tests.aspects import TestCase, TestCaseBase
+from tests.utils import FakeModule, unittest
+
if os.name == 'nt':
- from multiprocessing.managers import BaseManager
import threading
+ from multiprocessing.managers import BaseManager
try:
import win32api
diff --git a/tests/upload_tests.py b/tests/upload_tests.py
index 8eecbd9..73ab52a 100644
--- a/tests/upload_tests.py
+++ b/tests/upload_tests.py
@@ -9,13 +9,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
import pywikibot
-
from tests import join_images_path
-
from tests.aspects import TestCase
diff --git a/tests/uploadbot_tests.py b/tests/uploadbot_tests.py
index 2257855..e18d6ff 100644
--- a/tests/uploadbot_tests.py
+++ b/tests/uploadbot_tests.py
@@ -10,13 +10,11 @@
#
import os
import unittest
-
from contextlib import suppress
from pywikibot.specialbots import UploadRobot
-
from tests import join_images_path
-from tests.aspects import TestCase, DefaultSiteTestCase
+from tests.aspects import DefaultSiteTestCase, TestCase
class TestUploadbot(TestCase):
diff --git a/tests/uploadscript_tests.py b/tests/uploadscript_tests.py
index 453b7ee..07c09cc 100644
--- a/tests/uploadscript_tests.py
+++ b/tests/uploadscript_tests.py
@@ -5,11 +5,9 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from scripts.upload import CHUNK_SIZE_REGEX, get_chunk_size
-
from tests.aspects import TestCase
diff --git a/tests/user_tests.py b/tests/user_tests.py
index 25b34d5..62e3e50 100644
--- a/tests/user_tests.py
+++ b/tests/user_tests.py
@@ -7,11 +7,9 @@
from contextlib import suppress
import pywikibot
-
from pywikibot import Page, Timestamp, User
from pywikibot.exceptions import AutoblockUserError
from pywikibot.tools import suppress_warnings
-
from tests import patch
from tests.aspects import DefaultSiteTestCase, TestCase, unittest
diff --git a/tests/utils.py b/tests/utils.py
index 5d71c5f..d140270 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -8,13 +8,11 @@
import os
import sys
import warnings
-
from contextlib import contextmanager
from subprocess import PIPE, Popen, TimeoutExpired
from types import ModuleType
import pywikibot
-
from pywikibot import config
from pywikibot.data.api import CachedRequest
from pywikibot.data.api import Request as _original_Request
@@ -23,6 +21,7 @@
from pywikibot.site import Namespace
from tests import _pwb_py, unittest
+
try:
from cryptography import __version__ as cryptography_version
cryptography_version = list(map(int, cryptography_version.split('.')))
diff --git a/tests/weblinkchecker_tests.py b/tests/weblinkchecker_tests.py
index 6acd51a..6345d3b 100644
--- a/tests/weblinkchecker_tests.py
+++ b/tests/weblinkchecker_tests.py
@@ -6,13 +6,13 @@
#
import datetime
import unittest
-
from contextlib import suppress
-from requests.exceptions import ConnectionError as RequestsConnectionError
from urllib.parse import urlparse
+from requests.exceptions import ConnectionError as RequestsConnectionError
+
from scripts import weblinkchecker
-from tests.aspects import require_modules, TestCase
+from tests.aspects import TestCase, require_modules
@require_modules('memento_client')
@@ -21,8 +21,7 @@
"""Test memento client."""
def _get_archive_url(self, url, date_string=None):
- from memento_client.memento_client import \
- MementoClientException
+ from memento_client.memento_client import MementoClientException
if date_string is None:
when = datetime.datetime.now()
diff --git a/tests/wikibase_edit_tests.py b/tests/wikibase_edit_tests.py
index 44b0899..9d5b69b 100644
--- a/tests/wikibase_edit_tests.py
+++ b/tests/wikibase_edit_tests.py
@@ -11,11 +11,9 @@
#
import time
import unittest
-
from contextlib import suppress
import pywikibot
-
from tests.aspects import WikibaseTestCase
diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index 69b41db..395c123 100644
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -7,32 +7,27 @@
import copy
import json
import unittest
-
from contextlib import suppress
from decimal import Decimal
import pywikibot
-
-from pywikibot.exceptions import WikiBaseError
-from pywikibot.page import ItemPage, Page, PropertyPage, WikibasePage
from pywikibot import pagegenerators
-from pywikibot.site import Namespace, NamespacesDict
-from pywikibot.tools import MediaWikiVersion, suppress_warnings
-
-from tests import WARN_SITE_CODE, join_pages_path, mock
-from tests.aspects import TestCase, WikidataTestCase
-
from pywikibot.exceptions import (
+ InvalidTitleError,
IsNotRedirectPageError,
IsRedirectPageError,
- InvalidTitleError,
NoPageError,
UnknownExtensionError,
+ WikiBaseError,
)
-
+from pywikibot.page import ItemPage, Page, PropertyPage, WikibasePage
+from pywikibot.site import Namespace, NamespacesDict
+from pywikibot.tools import MediaWikiVersion, suppress_warnings
+from tests import WARN_SITE_CODE, join_pages_path, mock
+from tests.aspects import TestCase, WikidataTestCase
from tests.basepage import (
- BasePageMethodsTestBase,
BasePageLoadRevisionsCachingTestBase,
+ BasePageMethodsTestBase,
)
diff --git a/tests/wikistats_tests.py b/tests/wikistats_tests.py
index f166f1d..6cc91be 100644
--- a/tests/wikistats_tests.py
+++ b/tests/wikistats_tests.py
@@ -6,11 +6,9 @@
#
import sys
import unittest
-
from contextlib import suppress
from pywikibot.data.wikistats import WikiStats
-
from tests.aspects import TestCase
diff --git a/tests/xmlreader_tests.py b/tests/xmlreader_tests.py
index ccd7eb7..4d503bf 100644
--- a/tests/xmlreader_tests.py
+++ b/tests/xmlreader_tests.py
@@ -5,13 +5,10 @@
# Distributed under the terms of the MIT license.
#
import unittest
-
from contextlib import suppress
from pywikibot import xmlreader
-
from tests import join_xml_data_path
-
from tests.aspects import TestCase
diff --git a/tox.ini b/tox.ini
index 6eaa93a..6500f3c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -85,7 +85,8 @@
# FI1: __future__ import "x" missing
# H101: TODO format
# H238: Old style class
-# H301: Do not import more than one module per line; Pywikibot uses H306 (Alphabetically
order your imports by the full module path)
+# H301: Do not import more than one module per line
+# H306: Alphabetically order your imports by the full module path
# H404: docstring multiline start
# H405: docstring summary line
# H903: Use only UNIX style newlines, not Windows style
@@ -99,7 +100,7 @@
# D412: No blank lines allowed between a section header and its content
# D413: Missing blank line after last section
-ignore =
B007,C103,D105,D211,D401,D413,D412,FI1,H101,H238,H301,H404,H405,H903,P101,P102,P103,P205,W503
+ignore =
B007,C103,D105,D211,D401,D413,D412,FI1,H101,H238,H301,H306,H404,H405,H903,P101,P102,P103,P205,W503
enable-extensions = H203,H204,H205
exclude = .tox,.git,./*.egg,build,scripts/archive/*,./scripts/i18n/*,./tests/archive/*
classmethod-decorators = classmethod,classproperty
@@ -214,6 +215,15 @@
tests/wikibase_tests.py: N802
tests/xmlreader_tests.py: N802
+[isort]
+atomic = true
+ensure_newline_before_comments = true
+force_grid_wrap = 0
+include_trailing_comma = true
+lines_after_imports = 2
+multi_line_output = 3
+use_parentheses = true
+
[pycodestyle]
exclude = .tox,.git,./*.egg,build,scripts/archive/*,./scripts/i18n/*
# see explanations above
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/683782
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I93853e4e3e420d6de4c81e24193efa9ebdbb1d66
Gerrit-Change-Number: 683782
Gerrit-PatchSet: 2
Gerrit-Owner: JJMC89 <JJMC89.Wikimedia(a)gmail.com>
Gerrit-Reviewer: JJMC89 <JJMC89.Wikimedia(a)gmail.com>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged