mwtemplates is a MediaWiki wikitext template parser and editor, based on a Python rewrite of the MediaWiki preprocessorDOM.php. Tested with python 2.7, 3.3, 3.4, 3.5
Installation
The package is on PyPI, so you can install it using pip, easy_install or similar:
$ pip install -U mwtemplates
Or you can grab the latest zip from releases.
Introduction
Let’s start by importing TemplateEditor and giving it some wikitext to eat:
>>> from mwtemplates import TemplateEditor
>>> txt = u"""{{Infobox cheese
... | name = Mozzarella
... | protein = 7
... }}
... Mozzarella is a cheese…{{tr}}"""
>>> te = TemplateEditor(txt)
First, we can see what templates the editor found in the text:
>>> te.templates
[<Template:"Infobox cheese" at line 2>, <Template:"Tr" at line 6>]
Each template is an instance of a Template class. Also notice that template names are normalized by upper-casing the first character. Now, we can try investigating the Infobox cheese template:
>>> te.templates['Infobox cheese']
[<Template:"Infobox cheese" at line 2>]
Since there can be several instances of the same template, an array is always returned, and so we need to ask for te.templates[‘Infobox cheese’][0] to get the actual Template. To get the parameters:
>>> te.templates['Infobox cheese'][0].parameters
<Parameters: name="Mozzarella", protein="10">
Let’s say we want to change the value of the protein parameter from 10 to 7. We then use the wikitext() method to return our new wikitext:
>>> te.templates['Infobox cheese'][0].parameters['protein'] = 7
>>> print te.wikitext()
{{Infobox cheese
| name = Mozzarella
| protein = 10
}}
Mozzarella is a cheese…{{tr}}
Notice that formatting is preserved. We could now go and add a new parameter like so:
>>> te.templates['Infobox cheese'][0].parameters['fat'] = 25
>>> print te.wikitext()
{{Infobox cheese
| name = Mozzarella
| protein = 7
| fat = 25
}}
Mozzarella is a cheese…{{tr}}
Usage with mwclient to edit pages on Wikipedia
Updating a page on Wikipedia using mwclient
from mwclient import Site
from mwtemplates import TemplateEditor
site = Site('en.wikipedia.org')
site.login('USERNAME', 'PASSWORD')
page = site.pages['SOME_PAGE']
te = TemplateEditor(page.text())
if 'SOME_TEMPLATE' in page.templates:
tpl = te.templates['SOME_TEMPLATE'][0]
tpl.parameters['test'] = 'Hello'
page.save(te.wikitext(), summary='...')
Removing a template argument:
from mwtemplates import TemplateEditor
te = TemplateEditor(u"Hello {{mytpl | a=2 | b=3 | c=4 }} world")
te.templates['mytpl'].parameters.remove('b')
Removing the first instance of a template:
from mwtemplates import TemplateEditor
te = TemplateEditor(u"Hello {{mytpl}} world {{mytpl}}")
te.templates['mytpl'][0].remove()
Contributing
Pull requests are very welcome. Please run tests before submitting:
$ python setup.py test
Metadata
Release files for mwtemplates 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mwtemplates-0.4.0.tar.gz | 12.2 kB | Without provenance | Details |
Release files / mwtemplates-0.4.0.tar.gz
| Download URL | mwtemplates-0.4.0.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a265958c469d33d7609f91a263b321dee8afac89ba57d918b03ee59eba2a8a28
|
|
BLAKE2b-256 checksum How to use checksums |
df240fb60d8b32695def78bcd27adf749c178638a42dc3de4ea859a4b15290f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for mwtemplates 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.