We need a bit of a plan for how pywikibot should report the version on the console.
Most cmdline tools have a --version , which in pwb land would be -version, however that doesnt work as it is a global argument
$ python pwb.py --version Traceback (most recent call last): File "pwb.py", line 219, in <module> if not main(): File "pwb.py", line 186, in main raise OSError("%s not found!" % filename) OSError: --version.py not found! <type 'exceptions.OSError'> CRITICAL: Closing network session. $ python pwb.py -version Traceback (most recent call last): File "pwb.py", line 219, in <module> if not main(): File "pwb.py", line 186, in main raise OSError("%s not found!" % filename) OSError: -version.py not found! <type 'exceptions.OSError'> CRITICAL: Closing network session. $ python pwb.py replace --version ERROR: Incomplete command line pattern replacement pair. $ python pwb.py replace -version ERROR: Incomplete command line pattern replacement pair.
Pywikibot provides this information via a script
$ python pwb.py version Pywikibot: [ssh] pywikibot-core.git (1bba780, g5711, 2015/06/09, 19:51:38, OUTDATED) Release version: 2.0b3 requests version: 2.2.1 cacerts: /usr/lib/python2.7/site-packages/requests/cacert.pem certificate test: ok Python: 2.7.5 (default, Apr 10 2015, 08:09:05) [GCC 4.8.3 20140911 (Red Hat 4.8.3-7)] unicode test: ok PYWIKIBOT2_DIR: Not set PYWIKIBOT2_DIR_PWB: PYWIKIBOT2_NO_USER_CONFIG: Not set Config base dir: /home/jayvdb/.pywikibot Usernames for family "wikipedia": test: JVbot-test (John Vandenberg) en: JVbot-test (no sysop configured)
Due to the fact we support nightlies, svn, git, and now a package, and provide support to shared environments like the labs, it is important to have a script which can be run even when the 'pywikibot' package cant be found, and when other dependencies cant be found. Enter a patch that does this: https://gerrit.wikimedia.org/r/#/c/216876/
However 'scripts/version.py' is not packaged as part of the official package.
If we are going to have some of this information available via a --version global command line argument, where does it go, and how is it displayed when the pywikibot package cant be loaded.
Some initial thoughts:
- the usernames listings are a prettier edition of the output of 'python pwb.py pywikibot/config2.py modified' - however running that command is not documented anywhere as far as I know, and it is a bit odd.
- pwb.py is where we typically place startup debugging information, such as failed dependencies. however it exit's on the first error, and we need a command which lists all of the information so it is easier to understand the clients environment remotely.
- the unicode test doesnt need to be included ; we know which versions are broken, so we can and I believe should warn (every startup) when those versions are used, or when the relevant features are accessed.
So, a rough plan is
- move the config usernames code into config2.py, into a new function , using 'print' rather than pywikibot.output as config2.py 's __main__ already does
- move the unicode test into tests/ and replace it with version detection and warn( ) / error messages (see T102461)
- add -debug and -version support to pwb.py and bot.py , so that they output the same thing roughly , with pwb.py not exiting on the first error.