Page MenuHomePhabricator

global argument for version information
Open, MediumPublic

Description

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.

Related Objects

Event Timeline

jayvdb created this task.Jun 9 2015, 12:39 PM
jayvdb raised the priority of this task from to Medium.
jayvdb updated the task description. (Show Details)
jayvdb added a project: Pywikibot.
jayvdb added subscribers: jayvdb, XZise.
Restricted Application added subscribers: Aklapper, Unknown Object (MLST). · View Herald TranscriptJun 9 2015, 12:39 PM
jayvdb updated the task description. (Show Details)Jun 9 2015, 12:44 PM
jayvdb set Security to None.
Xqt added a subscriber: Xqt.Jun 16 2015, 5:08 AM
jayvdb updated the task description. (Show Details)Jun 17 2015, 1:08 PM
2526 added a subscriber: 2526.Jan 17 2018, 6:05 PM