Browse Source

Docstrings for Category

tags/v0.1^2
Ben Kurtovic 12 years ago
parent
commit
7005a9b21b
1 changed files with 36 additions and 0 deletions
  1. +36
    -0
      earwigbot/wiki/category.py

+ 36
- 0
earwigbot/wiki/category.py View File

@@ -37,6 +37,13 @@ class Category(Page):
the category namespace; :py:meth:`~earwigbot.wiki.site.Site.get_category` the category namespace; :py:meth:`~earwigbot.wiki.site.Site.get_category`
is shorthand, accepting category names without the namespace prefix. is shorthand, accepting category names without the namespace prefix.


*Attributes:*

- :py:attr:`size`: the total number of members in the category
- :py:attr:`pages`: the number of pages in the category
- :py:attr:`files`: the number of files in the category
- :py:attr:`subcats`: the number of subcategories in the category

*Public methods:* *Public methods:*


- :py:meth:`get_members`: iterates over Pages in the category - :py:meth:`get_members`: iterates over Pages in the category
@@ -96,6 +103,7 @@ class Category(Page):
pageid=row[2]) pageid=row[2])


def _get_size_via_api(self, member_type): def _get_size_via_api(self, member_type):
"""Return the size of the category using the API."""
query = "SELECT COUNT(*) FROM categorylinks WHERE cl_to = ?" query = "SELECT COUNT(*) FROM categorylinks WHERE cl_to = ?"
title = self.title.replace(" ", "_").split(":", 1)[1] title = self.title.replace(" ", "_").split(":", 1)[1]
if member_type == "size": if member_type == "size":
@@ -106,12 +114,14 @@ class Category(Page):
return list(result)[0] return list(result)[0]


def _get_size_via_sql(self, member_type): def _get_size_via_sql(self, member_type):
"""Return the size of the category using SQL."""
result = self.site.api_query(action="query", prop="categoryinfo", result = self.site.api_query(action="query", prop="categoryinfo",
cmtitle=self.title) cmtitle=self.title)
info = result["query"]["pages"].values()[0]["categoryinfo"] info = result["query"]["pages"].values()[0]["categoryinfo"]
return info[member_type] return info[member_type]


def _get_size(self, member_type): def _get_size(self, member_type):
"""Return the size of the category."""
services = { services = {
self.site.SERVICE_API: self._size_via_api, self.site.SERVICE_API: self._size_via_api,
self.site.SERVICE_SQL: self._size_via_sql self.site.SERVICE_SQL: self._size_via_sql
@@ -120,18 +130,44 @@ class Category(Page):


@property @property
def size(self): def size(self):
"""The total number of members in the category.

Includes pages, files, and subcats. Equal to :py:attr:`pages` +
:py:attr:`files` + :py:attr:`subcats`. This will use either the API or
SQL depending on which are enabled and the amount of lag on each. This
is handled by :py:meth:`site.delegate()
<earwigbot.wiki.site.Site.delegate>`.
"""
return self._get_size("size") return self._get_size("size")


@property @property
def pages(self): def pages(self):
"""The number of pages in the category.

This will use either the API or SQL depending on which are enabled and
the amount of lag on each. This is handled by :py:meth:`site.delegate()
<earwigbot.wiki.site.Site.delegate>`.
"""
return self._get_size("pages") return self._get_size("pages")


@property @property
def files(self): def files(self):
"""The number of files in the category.

This will use either the API or SQL depending on which are enabled and
the amount of lag on each. This is handled by :py:meth:`site.delegate()
<earwigbot.wiki.site.Site.delegate>`.
"""
return self._get_size("files") return self._get_size("files")


@property @property
def subcats(self): def subcats(self):
"""The number of subcategories in the category.

This will use either the API or SQL depending on which are enabled and
the amount of lag on each. This is handled by :py:meth:`site.delegate()
<earwigbot.wiki.site.Site.delegate>`.
"""
return self._get_size("subcats") return self._get_size("subcats")


def get_members(self, limit=None, follow_redirects=None): def get_members(self, limit=None, follow_redirects=None):


Loading…
Cancel
Save