
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
.. image:: http://img.shields.io/travis/danmichaelo/mwtemplates.svg?style=flat :target: https://travis-ci.org/danmichaelo/mwtemplates :alt: Build status
.. image:: http://img.shields.io/coveralls/danmichaelo/mwtemplates.svg?style=flat :target: https://coveralls.io/r/danmichaelo/mwtemplates :alt: Test coverage
.. image:: https://pypip.in/version/mwtemplates/badge.svg?style=flat :target: https://pypi.python.org/pypi/mwtemplates/ :alt: Latest Version
.. image:: https://pypip.in/py_versions/mwtemplates/badge.svg?style=flat :target: https://pypi.python.org/pypi/mwtemplates/ :alt: Supported Python versions
.. image:: https://pypip.in/download/mwtemplates/badge.svg?period=month&style=flat :target: https://pypi.python.org/pypi/mwtemplates/ :alt: Downloads
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
The package is on PyPI <https://pypi.python.org/pypi/mwtemplates>
_, so you can install it
using pip
, easy_install
or similar:
.. code-block:: console
$ pip install -U mwtemplates
Or you can grab the latest zip from releases <https://github.com/danmichaelo/mwtemplates/releases>
_.
Let's start by importing TemplateEditor
and giving it some wikitext to eat:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> te.templates['Infobox cheese'][0].parameters['fat'] = 25
>>> print te.wikitext()
{{Infobox cheese
| name = Mozzarella
| protein = 7
| fat = 25
}}
Mozzarella is a cheese…{{tr}}
Updating a page on Wikipedia using mwclient <https://github.com/mwclient/mwclient>
_
.. code-block:: python
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:
.. code-block:: python
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:
.. code-block:: python
from mwtemplates import TemplateEditor
te = TemplateEditor(u"Hello {{mytpl}} world {{mytpl}}")
te.templates['mytpl'][0].remove()
Pull requests are very welcome. Please run tests before submitting:
.. code-block:: console
$ python setup.py test
FAQs
MediaWiki template parser and editor
We found that mwtemplates demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.