Xqt submitted this change.

View Change

Approvals: DannyS712: Looks good to me, but someone else must approve Legoktm: Looks good to me, approved Xqt: Verified; Looks good to me, approved
[cleanup] Remove README-conversion.rst

core/rewrite branch started 15 years ago and development of compat branch
has been dropped for 6 years. compat to core support request was never used
and closed last year. Therefore

- remove README-conversion.rst. The content is still available at
Manual:Pywikibot (mediawiki.org)
- remove update_script.py formerly known as compat2core.py and its tests
- update documentation

Change-Id: I1549bb6fbf97524ec3b291d80a35a90f4de8d057
---
M CONTENT.rst
D README-conversion.rst
M scripts/CHANGELOG.md
M scripts/README.rst
D scripts/maintenance/update_script.py
M tests/__init__.py
D tests/update_script_tests.py
7 files changed, 3 insertions(+), 295 deletions(-)

diff --git a/CONTENT.rst b/CONTENT.rst
index 19fa285..d2c2b63 100644
--- a/CONTENT.rst
+++ b/CONTENT.rst
@@ -28,8 +28,6 @@
+---------------------------+-----------------------------------------------------------+
| README.rst | Short info string used by Pywikibot Nightlies |
+---------------------------+-----------------------------------------------------------+
- | README-conversion.txt | Compat to Core branch conversion hints |
- +---------------------------+-----------------------------------------------------------+
| requirements.txt | General PIP requirements file |
+---------------------------+-----------------------------------------------------------+
| ROADMAP.rst | PyPI version roadmap file |
diff --git a/README-conversion.rst b/README-conversion.rst
deleted file mode 100644
index 8560c0c..0000000
--- a/README-conversion.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-Compat to Core Conversion
-=========================
-
-There is a guide to converting bot scripts from version 1 of the
-Pywikibot framework called trunk or compat to the new version 3+,
-so called rewrite or core. Refer `compat-to-core conversion Manual
-<https://www.mediawiki.org/wiki/Manual:Pywikibot/compat-to-core_conversion>`_
-for further instructions.
-
-There is also a helper script which does a lot of changes automatically.
-Just call it::
-
- pwb.py update_script [<script to convert>]
-
-and follow the instructions and hints.
-
-Ask at `compat to core support request <https://phabricator.wikimedia.org/T247105>`_
-for any Pywikibot compat to core migration support.
\ No newline at end of file
diff --git a/scripts/CHANGELOG.md b/scripts/CHANGELOG.md
index b887002..e3d942f 100644
--- a/scripts/CHANGELOG.md
+++ b/scripts/CHANGELOG.md
@@ -13,6 +13,9 @@
* Do not kill threads after generator is exhausted (:phab:`T113139`)
* Use Page.extlinks() to get external links (:phab:`T60812`)

+### update_script
+* update_script script was removed
+

## 7.2.1
*07 May 2022**
diff --git a/scripts/README.rst b/scripts/README.rst
index 519b755..113ab36 100644
--- a/scripts/README.rst
+++ b/scripts/README.rst
@@ -162,9 +162,6 @@
+------------------------+---------------------------------------------------------+
| colors.py | Utility to show pywikibot colors. |
+------------------------+---------------------------------------------------------+
- | update_script.py | Helper script to update scripts and replace deprecated |
- | | code parts. |
- +------------------------+---------------------------------------------------------+
| make_i18n_dict.py | Generate an i18n file from a given script. |
+------------------------+---------------------------------------------------------+
| preload_sites.py | Preload and cache site information for each WikiMedia |
diff --git a/scripts/maintenance/update_script.py b/scripts/maintenance/update_script.py
deleted file mode 100755
index 9c39ada..0000000
--- a/scripts/maintenance/update_script.py
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/usr/bin/python3
-"""
-A helper script to update scripts and replace deprecated parts.
-
-This also convert compat 1.0 scripts to the new core framework.
-
-NOTE: Please be aware that this script is not able to convert your codes
-completely. It may support you with some automatic replacements and it gives
-some warnings and hints for converting. Please refer to the converting guide
-README-conversion.txt in the core framework folder and check your codes
-finally.
-
-The scripts asks for the .py file and converts it to
-<scriptname>-new.py in the same directory. The following option is supported:
-
--warnonly Do not convert the source but show warning messages. This is good
- to check already merged scripts.
-
-usage
-
-to convert a script and show warnings about deprecated methods:
-
- python pwb.py update_script <scriptname>
-
-to show warnings about deprecated methods:
-
- python pwb.py update_script <scriptname> -warnonly
-"""
-#
-# (C) Pywikibot team, 2014-2021
-#
-# Distributed under the terms of the MIT license.
-#
-import codecs
-import os
-import re
-import sys
-
-import pywikibot
-
-
-# be careful with replacement order!
-replacements = (
- #############################
- # compat 2 core replacements
- #############################
- # doc strings
- ('#\r?\n__version__.*\r?\n',
- '#\n'
- '# Automatically ported from compat branch by update_script.py script\n'),
- ('Pywikipedia bot team', 'Pywikibot team'),
- # importing changes
- ('import wikipedia(?: as pywikibot)?', 'import pywikibot'),
- ('(?<!from pywikibot )import (config|pagegenerators)',
- r'from pywikibot import \1'),
- # remove deprecated libs
- ('(?:from pywikibot.compat )?import query', ''),
- ('import catlib\r?\n', ''),
- ('import userlib\r?\n', ''),
- # change wikipedia to pywikibot, exclude URLs
- (r'(?<!\.)wikipedia\.', 'pywikibot.'),
- # site instance call
- (r'pywikibot\.getSite\s*\(\s*', 'pywikibot.Site('),
- # lang is different from code. We should use code in core
- (r'([Ss])ite\.lang(?:uage\(\))?', r'\1ite.code'),
- # change compat library classes to pywikibot intrinsic classes
- (r'catlib\.Category\s*\(\s*', 'pywikibot.Category('),
- (r'catlib\.change_category\s*\((\s*)(?P<article>.+?),\s*(?P<oldcat>.+?),',
- r'\g<article>.change_category(\1\g<oldcat>,'),
- (r'userlib\.User\s*\(\s*', 'pywikibot.User('),
- # change ImagePage to FilePage
- (r'pywikibot\.ImagePage\s*\(\s*', 'pywikibot.FilePage('),
- # deprecated title methods
- (r'\.urlname\s*\(\s*\)', '.title(as_url=True)'),
- (r'\.urlname\s*\(\s*(?:withNamespace\s*=\s*)?(True|False)+\s*\)',
- r'.title(as_url=True, with_ns=\1)'),
- (r'\.titleWithoutNamespace\s*\(\s*\)', '.title(with_ns=False)'),
- (r'\.sectionFreeTitle\s*\(\s*\)', '.title(with_section=False)'),
- (r'\.aslink\s*\(\s*\)', '.title(as_link=True)'),
- # other deprecated methods
- (r'(?<!site)\.encoding\s*\(\s*\)', '.site.encoding()'),
- (r'\.newimages\s*\(\)', ".logevents(logtype='upload')"),
- (r'\.newimages\s*\(([^)])', r".logevents(logtype='upload', \1"),
- (r'\.getRestrictions\s*\(', '.protection('),
- # new core methods and properties
- (r'\.get\s*\(\s*get_redirect\s*=\s*True\s*\)', '.text'),
- (r'(?:pywikibot|wikipedia)\.verbose', 'config.verbose_output'),
- # stopme() is done by the framework itself
- (r'(\s*)try\:\s*\r?\n\s+main\(\)\s*\r?\n\s*finally\:\s*\r?\n'
- r'\s+pywikibot\.stopme\(\)',
- r'\1main()'),
-)
-
-# some warnings which must be changed manually
-warnings = (
- #############################
- # compat 2 core warnings
- #############################
- ('pywikibot.setAction(',
- 'setAction() no longer works; you must pass an explicit edit summary\n'
- 'message to save() or put()'),
- ('.removeImage(',
- 'Page.removeImage() is deprecated and does not work at core'),
- ('.replaceImage(',
- 'Page.replaceImage() is deprecated and does not work at core'),
- ('.getVersionHistory(',
- 'Page.getVersionHistory() was removed. Use Page.revisions() instead.'),
- ('.fullVersionHistory(',
- 'Page.fullVersionHistory() was removed. Use Page.revisions() instead.'),
- ('.contributions(',
- 'User.contributions() returns a pywikibot.Timestamp object instead of a\n'
- 'MediaWiki one'),
- ('.getFileMd5Sum(',
- 'FilePage.getFileMd5Sum() is deprecated should be replaced by '
- 'FilePage.latest_file_info.sha1'),
- (' wikipedia.',
- '"wikipedia" library has been changed to "pywikibot".'),
- ('from wikipedia import',
- '"wikipedia" library has been changed to "pywikibot". Please find the\n'
- 'right way to import your object.'),
- ('from pywikibot.compat import',
- 'compat module has been removed. Please refer README-conversion.txt for\n'
- 'core implementation.'),
- ('query.GetData(',
- 'query.GetData() should be replaced by pywikibot.data.api.Request or\n'
- 'by a direct site request'),
- ('.verbose',
- 'verbose_output need "from pywikibot import config" first'),
- ('templates(',
- 'returns a list of templage page objects, not a list of template titles.'
- '\nPlease refer README-conversion.txt and the documentation.'),
- ('templatesWithParams(',
- 'the first item of each template info is a Page object of the template,\n'
- 'not the title. '
- 'Please refer README-conversion.txt and the documentation.'),
- ('linkedPages(',
- 'returns a PageGenerator of page objects of link targets, not a list\n'
- 'of link target strings. Please refer README-conversion.txt\n'
- 'and the documentation.'),
-)
-
-
-class ConvertBot:
-
- """Script conversion bot."""
-
- def __init__(self, filename=None, warnonly=False):
- """Initializer."""
- self.source = filename
- self.warnonly = warnonly
-
- def run(self):
- """Run the bot."""
- self.get_source()
- self.get_dest()
- if not self.warnonly:
- self.convert()
- self.warning()
-
- def get_source(self):
- """Get source script."""
- while True:
- if self.source is None:
- self.source = pywikibot.input(
- 'Please input the .py file to convert '
- '(no input to leave):')
- if not self.source:
- sys.exit()
- if not self.source.endswith('.py'):
- self.source += '.py'
- if os.path.exists(self.source):
- break
- self.source = os.path.join('scripts', self.source)
- if os.path.exists(self.source):
- break
- pywikibot.output('{} does not exist. Please retry.'
- .format(self.source))
- self.source = None
-
- def get_dest(self):
- """Ask for destination script name."""
- self.dest = '{}-new.{}'.format(*self.source.rsplit('.', 1))
- if not self.warnonly and not pywikibot.input_yn(
- 'Destination file is {}.'.format(self.dest),
- default=True, automatic_quit=False):
- pywikibot.output('Quitting...')
- sys.exit()
-
- def convert(self):
- """Convert script."""
- with codecs.open(self.source, 'r', 'utf-8') as f:
- text = f.read()
- for r in replacements:
- text = re.sub(r[0], r[1], text)
- with codecs.open(self.dest, 'w', 'utf-8') as g:
- g.write(text)
-
- def warning(self):
- """Show warnings and hints."""
- filename = self.source if self.warnonly else self.dest
- with codecs.open(filename, 'r', 'utf-8') as g:
- lines = enumerate(g.readlines(), start=1)
- for i, line in lines:
- for w in warnings:
- if w[0] in line:
- pywikibot.warning(
- 'line {}: {}>>> {}\n'.format(i, line, w[1]))
-
-
-def main():
- """Process command line arguments and invoke bot."""
- filename = None
- warnonly = False
-
- # Parse command line arguments for -help option
- for arg in pywikibot.handle_args():
- if arg.startswith('-warnonly'):
- warnonly = True
- elif not arg.startswith('-'):
- filename = arg
- else:
- pywikibot.warning(arg + ' is not supported')
- bot = ConvertBot(filename, warnonly)
- bot.run()
-
-
-if __name__ == '__main__':
- pywikibot.stopme() # we do not work on any site
- main()
diff --git a/tests/__init__.py b/tests/__init__.py
index c5295ad..6606d55 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -157,7 +157,6 @@
'replacebot',
'script',
'template_bot',
- 'update_script',
'uploadscript',
'weblinkchecker'
}
diff --git a/tests/update_script_tests.py b/tests/update_script_tests.py
deleted file mode 100755
index 539828c..0000000
--- a/tests/update_script_tests.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/python3
-"""update_script.py tests."""
-#
-# (C) Pywikibot team, 2019-2022
-#
-# Distributed under the terms of the MIT license.
-#
-import unittest
-
-import scripts.maintenance.update_script as us
-from tests.aspects import TestCase
-
-
-class Compat2CoreTests(TestCase):
-
- """Validate update_script script."""
-
- net = False
-
- def test_replacements(self):
- """Test update_script replacements."""
- for item in us.replacements:
- self.assertLength(item, 2)
- self.assertIsInstance(item[0], str)
- self.assertIsInstance(item[1], str)
-
- def test_warnings(self):
- """Test update_script warnings."""
- for item in us.warnings:
- self.assertLength(item, 2)
- self.assertIsInstance(item[0], str)
- self.assertIsInstance(item[1], str)
-
- def test_bot(self):
- """Test update_script bot."""
- bot = us.ConvertBot(warnonly=True)
- self.assertIsNone(bot.source)
- self.assertTrue(bot.warnonly)
-
-
-if __name__ == '__main__': # pragma: no cover
- unittest.main()

To view, visit change 793394. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I1549bb6fbf97524ec3b291d80a35a90f4de8d057
Gerrit-Change-Number: 793394
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: DannyS712 <dannys712.wiki@gmail.com>
Gerrit-Reviewer: Legoktm <legoktm@debian.org>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged