Ugrás a tartalomhoz

Szerkesztő:Bináris/Pywikibot dev cheatsheet

A Wikipédiából, a szabad enciklopédiából
Basics
mw:Manual:Pywikibot
https://doc.wikimedia.org/pywikibot/master/ (Page)
mw:Manual:Pywikibot/Development

Install

[szerkesztés]

Versions

[szerkesztés]
  • Supported Python versions and planned deprications are important.
  • Supported MediaWiki versions are less important, unless I want to directly interact with API.
  • Source of information: mw:Manual:Pywikibot/Compatibility
  • Note that Python 3.9+ cannot be used on Windows 7 or earlier.

Styleguides

[szerkesztés]

Documentation: the underlying markup is reStructuredText but sphinx is used to create the final documentation files.

Sample doc:

   .. seealso:: :api:`Logevents`
   .. note:: logevents with `logtype='block'` only logs user blocks
      whereas `site.blocks` iterates all blocks including IP ranges.
   :param logtype: only iterate entries of this type
       (see mediawiki api documentation for available types)
   :param user: only iterate entries that match this user name
   :param page: only iterate entries affecting this page
   :type page: pywikibot.Page or str
   :param namespace: namespace(s) to retrieve logevents from
   :type namespace: int or Namespace or an iterable of them
   :raises KeyError: the namespace identifier was not resolved
   :raises TypeError: the namespace identifier has an inappropriate
       type such as bool, or an iterable with more than one namespace

Standing in core directory, in presence of i18n submodule (will fail without it):

  • python -m unittest discover -v -p "*_tests.py" – all, shortly
  • python -m unittest -v tests.api_tests tests.site_tests – two, detailed
  • python -m unittest -v tests.textlib_tests – one, detailed

Wikidata

[szerkesztés]

Publish

[szerkesztés]

Workflow

[szerkesztés]

General

[szerkesztés]
  • ? Who decides versions, editions and dates?
  • ? What makes a version stable?
  • ? How does a pach get into a version?

Coding

[szerkesztés]
Tasks found on Phabricator
Claim → code → commit
Tasks created by myself
Does every task need a Phabricator ticket? (Obviously not.)
When do I have to previously discuss it with others?
Good first tasks for practicing
https://phabricator.wikimedia.org/maniphest/query/D.pe8.a.NRmY/#R

Commit

[szerkesztés]

Code review

[szerkesztés]

Phabricator tasks

[szerkesztés]

Concepts

[szerkesztés]
Gerrit
mw:Gerrit
Repository and code review tool
Jenkins
mw:Continuous integration/Jenkins
Runs automated tests and checks coding style.
Tox
https://tox.wiki/en/latest/
Test automatization