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
pywikibot-commits@lists.wikimedia.org