Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Simple wrapper for the Mediawiki API

Project Description

A very simple and direct wrapper around the Mediawiki API


This library provides a very simple convenience wrapper around the Mediawiki API. It is meant to closely mirror the interface provided by mw.Api


The library allows you to call Mediawiki APIs without having to deal without dealing with network calls. It also has authentication support and a few convenience methods.

Non Features

This is the anti-mwclient. It does not add another layer for you to understand over the well documented Mediawiki API, and it never will :)



class MWApi
Class representing a single API Session, with a single authenticated user.

Useful Attributes:
tokens - Contains an edittoken & watchtoken (if populateTokens() has been called)
is_authenticated - Boolean indicating if the MWApi is sending authenticated requests

Methods defined here:

__init__(self, host, api_path=’/w/api.php’)
Create a MWApi instance

host - Host to which to connect to. Must include http:// or https:// and no trailing slash
api_path - Url to api.php on the host. Must start with /

get(self, params)
Makes an API request with the GET method

params - Parameters to send to the API. Varies depending on the action to be performed.

login(self, username, password)
Authenticates with the given credentials and logs in the user for the session.
All further requests sent from this MWApi object will be signed as said user.

username - The username of the user to be authenticated
password - The password of the user to be authenticated

Throws an exception with (Message, Response) if Authentication fails

Passwords are sent as plaintext. This is a limitation of the Mediawiki API.
Use a https host if you want your password to be secure

Populates the tokens attribute of the object with edittoken and watchtoken.
Requires that authentication has been performed already with login()

post(self, params)
Makes an API request with the POST method

params - Parameters to send to the API. Varies depending on the action to be performed.

request(self, method, params)
Makes a request to the API and returns a dictionary containing the results

method - GET or POST, depending on which API is being called
params - Parameters to send to the API. Varies depending on the action to be performed.


Support requests and flames can be sent to me via several means.

Email: Twitter: @yuvipanda. IRC: yuvipanda on FreeNode

You can file bugs on Github.

Release History

This version
History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(4.3 kB) Copy SHA256 Hash SHA256
Source None Jan 7, 2013

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Kabu Creative Kabu Creative UX & Design Google Google Cloud Servers Fastly Fastly CDN StatusPage StatusPage Statuspage DigiCert DigiCert EV Certificate