Browse Source

More documentation updates

tags/v0.1^2
Ben Kurtovic 12 years ago
parent
commit
c51c83e94e
6 changed files with 72 additions and 62 deletions
  1. +23
    -18
      docs/customizing.rst
  2. +0
    -1
      docs/index.rst
  3. +18
    -17
      docs/installation.rst
  4. +1
    -1
      docs/setup.rst
  5. +28
    -23
      docs/tips.rst
  6. +2
    -2
      docs/toolset.rst

+ 23
- 18
docs/customizing.rst View File

@@ -26,14 +26,16 @@ The most useful attributes are:


- :py:attr:`~earwigbot.bot.Bot.commands`: the bot's - :py:attr:`~earwigbot.bot.Bot.commands`: the bot's
:py:class:`~earwigbot.managers.CommandManager`, which is used internally to :py:class:`~earwigbot.managers.CommandManager`, which is used internally to
run IRC commands (through :py:meth:`bot.commands.call`, which you shouldn't
have to use); you can safely reload all commands with
:py:meth:`~earwigbot.bot.Bot.commands.load`.
run IRC commands (through
:py:meth:`commands.call() <earwigbot.managers.CommandManager.call>`, which
you shouldn't have to use); you can safely reload all commands with
:py:meth:`commands.load() <earwigbot.bot.Bot.commands.load>`.


- :py:attr:`~earwigbot.bot.Bot.tasks`: the bot's - :py:attr:`~earwigbot.bot.Bot.tasks`: the bot's
:py:class:`~earwigbot.managers.TaskManager`, which can be used to start tasks :py:class:`~earwigbot.managers.TaskManager`, which can be used to start tasks
with :py:attr:`~earwigbot.bot.Bot.tasks.start(task_name, **kwargs)`.
:py:meth:`~earwigbot.bot.Bot.tasks.load` can be used to safely reload all
with :py:meth:`tasks.start(task_name, **kwargs)
<earwigbot.managers.TaskManager.start>`. :py:meth:`tasks.load()
<earwigbot.managers.TaskManager.load>` can be used to safely reload all
tasks. tasks.


- :py:attr:`~earwigbot.bot.Bot.frontend` / - :py:attr:`~earwigbot.bot.Bot.frontend` /
@@ -41,8 +43,8 @@ The most useful attributes are:
:py:class:`earwigbot.irc.Frontend` and :py:class:`earwigbot.irc.Watcher`, :py:class:`earwigbot.irc.Frontend` and :py:class:`earwigbot.irc.Watcher`,
respectively, which represent the bot's connections to these two servers; you respectively, which represent the bot's connections to these two servers; you
can, for example, send a message to the frontend with can, for example, send a message to the frontend with
:py:attr:`~earwigbot.bot.Bot.frontend.say(chan, msg)` (more on communicating
with IRC below).
:py:meth:`frontend.say(chan, msg) <earwigbot.irc.IRConnection.say>` (more on
communicating with IRC below).


- :py:attr:`~earwigbot.bot.Bot.wiki`: interface with the - :py:attr:`~earwigbot.bot.Bot.wiki`: interface with the
:doc:`Wiki Toolset <toolset>`. :doc:`Wiki Toolset <toolset>`.
@@ -113,12 +115,14 @@ these are the basics:
:py:class:`~earwigbot.commands.BaseCommand`'s :py:class:`~earwigbot.commands.BaseCommand`'s
:py:meth:`~earwigbot.commands.BaseCommand.__init__` method for the full list. :py:meth:`~earwigbot.commands.BaseCommand.__init__` method for the full list.


The most common ones are :py:attr:`self.say(chan_or_user, msg)`,
:py:attr:`self.reply(data, msg)` (convenience function; sends a reply to the
The most common ones are :py:meth:`say(chan_or_user, msg)
<bot.irc.IRCConnection.say>`, :py:meth:`reply(data, msg)
<bot.irc.IRCConnection.reply>` (convenience function; sends a reply to the
issuer of the command in the channel it was received), issuer of the command in the channel it was received),
:py:attr:`self.action(chan_or_user, msg)`,
:py:attr:`self.notice(chan_or_user, msg)`, :py:attr:`self.join(chan)`, and
:py:attr:`self.part(chan)`.
:py:meth:`action(chan_or_user, msg) <bot.irc.IRCConnection.action>`,
:py:meth:`notice(chan_or_user, msg) <bot.irc.IRCConnection.notice>`,
:py:meth:`join(chan) <bot.irc.IRCConnection.join>`, and
:py:meth:`part(chan) <bot.irc.IRCConnection.part>`.


It's important to name the command class :py:class:`Command` within the file, It's important to name the command class :py:class:`Command` within the file,
or else the bot might not recognize it as a command. The name of the file or else the bot might not recognize it as a command. The name of the file
@@ -149,9 +153,9 @@ are the basics:
generated with :py:meth:`~earwigbot.tasks.BaseTask.make_summary`). For generated with :py:meth:`~earwigbot.tasks.BaseTask.make_summary`). For
example, EarwigBot's :py:attr:`config.wiki["summary"]` is example, EarwigBot's :py:attr:`config.wiki["summary"]` is
``"([[WP:BOT|Bot]]; [[User:EarwigBot#Task $1|Task $1]]): $2"``, which the ``"([[WP:BOT|Bot]]; [[User:EarwigBot#Task $1|Task $1]]): $2"``, which the
task class's :py:attr:`~earwigbot.tasks.BaseTask.make_summary(comment)`
method will take and replace ``$1`` with the task number and ``$2`` with the
details of the edit.
task class's :py:meth:`make_summary(comment)
<earwigbot.tasks.BaseTask.make_summary>` method will take and replace
``$1`` with the task number and ``$2`` with the details of the edit.
Additionally, :py:meth:`~earwigbot.tasks.BaseTask.shutoff_enabled` (which Additionally, :py:meth:`~earwigbot.tasks.BaseTask.shutoff_enabled` (which
checks whether the bot has been told to stop on-wiki by checking the content checks whether the bot has been told to stop on-wiki by checking the content
@@ -175,9 +179,10 @@ are the basics:


- Method :py:meth:`~earwigbot.tasks.BaseTask.run` is called with any number of - Method :py:meth:`~earwigbot.tasks.BaseTask.run` is called with any number of
keyword arguments every time the task is executed (by keyword arguments every time the task is executed (by
:py:attr:`bot.tasks.start(task_name, **kwargs)`, usually). This is where the
bulk of the task's code goes. For interfacing with MediaWiki sites, read up
on the :doc:`Wiki Toolset <toolset>`.
:py:meth:`tasks.start(task_name, **kwargs)
<earwigbot.managers.TaskManager.start>`, usually). This is where the bulk of
the task's code goes. For interfacing with MediaWiki sites, read up on the
:doc:`Wiki Toolset <toolset>`.


Tasks have access to :py:attr:`config.tasks[task_name]` for config information, Tasks have access to :py:attr:`config.tasks[task_name]` for config information,
which is a node in :file:`config.yml` like every other attribute of which is a node in :file:`config.yml` like every other attribute of


+ 0
- 1
docs/index.rst View File

@@ -45,4 +45,3 @@ Indices and tables
* :ref:`genindex` * :ref:`genindex`
* :ref:`modindex` * :ref:`modindex`
* :ref:`search` * :ref:`search`


+ 18
- 17
docs/installation.rst View File

@@ -1,23 +1,23 @@
Installation Installation
============ ============


This package contains the core ``earwigbot``, abstracted enough that it should
be usable and customizable by anyone running a bot on a MediaWiki site. Since
it is component-based, the IRC components can be disabled if desired. IRC
This package contains the core :py:mod:`earwigbot`, abstracted enough that it
should be usable and customizable by anyone running a bot on a MediaWiki site.
Since it is component-based, the IRC components can be disabled if desired. IRC
commands and bot tasks specific to `my instance of EarwigBot`_ that I don't commands and bot tasks specific to `my instance of EarwigBot`_ that I don't
feel the average user will need are available from the repository feel the average user will need are available from the repository
`earwigbot-plugins`_. `earwigbot-plugins`_.


It's recommended to run the bot's unit tests before installing. Run ``python
setup.py test`` from the project's root directory. Note that some
tests require an internet connection, and others may take a while to run.
It's recommended to run the bot's unit tests before installing. Run
:command:`python setup.py test` from the project's root directory. Note that
some tests require an internet connection, and others may take a while to run.
Coverage is currently rather incomplete. Coverage is currently rather incomplete.


Latest release (v0.1) Latest release (v0.1)
--------------------- ---------------------


EarwigBot is available from the `Python Package Index`_, so you can install the EarwigBot is available from the `Python Package Index`_, so you can install the
latest release with ``pip install earwigbot`` (`get pip`_).
latest release with :command:`pip install earwigbot` (`get pip`_).


You can also install it from source [1]_ directly:: You can also install it from source [1]_ directly::


@@ -31,11 +31,11 @@ You can also install it from source [1]_ directly::
Development version Development version
------------------- -------------------


You can install the development version of the bot from ``git`` by using
setuptools/distribute's ``develop`` command [1]_, probably on the ``develop``
branch which contains (usually) working code. ``master`` contains the latest
release. EarwigBot uses `git flow`_, so you're free to
browse by tags or by new features (``feature/*`` branches)::
You can install the development version of the bot from :command:`git` by using
setuptools/`distribute`_'s :command:`develop` command [1]_, probably on the
``develop`` branch which contains (usually) working code. ``master`` contains
the latest release. EarwigBot uses `git flow`_, so you're free to browse by
tags or by new features (``feature/*`` branches)::


git clone git://github.com/earwig/earwigbot.git earwigbot git clone git://github.com/earwig/earwigbot.git earwigbot
cd earwigbot cd earwigbot
@@ -46,8 +46,9 @@ browse by tags or by new features (``feature/*`` branches)::
.. [1] ``python setup.py install``/``develop`` may require root, or use the .. [1] ``python setup.py install``/``develop`` may require root, or use the
``--user`` switch to install for the current user only. ``--user`` switch to install for the current user only.


.. _my instance of EarwigBot: http://en.wikipedia.org/wiki/User:EarwigBot
.. _earwigbot-plugins: https://github.com/earwig/earwigbot-plugins
.. _Python Package Index: http://pypi.python.org
.. _get pip: http://pypi.python.org/pypi/pip
.. _git flow: http://nvie.com/posts/a-successful-git-branching-model/
.. _my instance of EarwigBot: http://en.wikipedia.org/wiki/User:EarwigBot
.. _earwigbot-plugins: https://github.com/earwig/earwigbot-plugins
.. _Python Package Index: http://pypi.python.org
.. _get pip: http://pypi.python.org/pypi/pip
.. _distribute: http://pypi.python.org/pypi/distribute
.. _git flow: http://nvie.com/posts/a-successful-git-branching-model/

+ 1
- 1
docs/setup.rst View File

@@ -25,4 +25,4 @@ You can stop the bot at any time with :kbd:`Control-c`, same as you stop a
normal Python program, and it will try to exit safely. You can also use the normal Python program, and it will try to exit safely. You can also use the
"``!quit``" command on IRC. "``!quit``" command on IRC.


.. _explanation of YAML: http://en.wikipedia.org/wiki/YAML
.. _explanation of YAML: http://en.wikipedia.org/wiki/YAML

+ 28
- 23
docs/tips.rst View File

@@ -3,21 +3,24 @@ Tips


- Logging_ is a fantastic way to monitor the bot's progress as it runs. It has - Logging_ is a fantastic way to monitor the bot's progress as it runs. It has
a slew of built-in loggers, and enabling log retention (so logs are saved to a slew of built-in loggers, and enabling log retention (so logs are saved to
``logs/`` in the working directory) is highly recommended. In the normal
:file:`logs/` in the working directory) is highly recommended. In the normal
setup, there are three log files, each of which "rotate" at a specific time setup, there are three log files, each of which "rotate" at a specific time
(``filename.log`` becomes ``filename.log.2012-04-10``, for example). The
``debug.log`` file rotates every hour, and maintains six hours of logs of
every level (``DEBUG`` and up). ``bot.log`` rotates every day at midnight,
and maintains seven days of non-debug logs (``INFO`` and up). Finally,
``error.log`` rotates every Sunday night, and maintains four weeks of logs
indicating unexpected events (``WARNING`` and up).

To use logging in your commands or tasks (recommended), ``BaseCommand`` and
``BaseTask`` provide ``logger`` attributes configured for the specific
command or task. If you're working with other classes, ``bot.logger`` is the
root logger (``logging.getLogger("earwigbot")`` by default), so you can use
``getChild`` to make your logger. For example, task loggers are essentially
``bot.logger.getChild("tasks").getChild(task.name)``.
(:file:`filename.log` becomes :file:`filename.log.2012-04-10`, for example).
The :file:`debug.log` file rotates every hour, and maintains six hours of
logs of every level (``DEBUG`` and up). :file:`bot.log` rotates every day at
midnight, and maintains seven days of non-debug logs (``INFO`` and up).
Finally, :file:`error.log` rotates every Sunday night, and maintains four
weeks of logs indicating unexpected events (``WARNING`` and up).

To use logging in your commands or tasks (recommended),
:py:class:~earwigbot.commands.BaseCommand` and
:py:class:~earwigbot.tasks.BaseTask` provide :py:attr:`logger` attributes
configured for the specific command or task. If you're working with other
classes, :py:attr:`bot.logger` is the root logger
(:py:obj:`logging.getLogger("earwigbot")` by default), so you can use
:py:func:`~logging.Logger.getChild` to make your logger. For example, task
loggers are essentially
:py:attr:`bot.logger.getChild("tasks").getChild(task.name) <bot.logger>`.


- A very useful IRC command is "``!reload``", which reloads all commands and - A very useful IRC command is "``!reload``", which reloads all commands and
tasks without restarting the bot. [1]_ Combined with using the `!git plugin`_ tasks without restarting the bot. [1]_ Combined with using the `!git plugin`_
@@ -25,17 +28,19 @@ Tips
development workflow if the bot runs on an external server and you set up development workflow if the bot runs on an external server and you set up
its working directory as a git repo. its working directory as a git repo.


- You can run a task by itself instead of the entire bot with ``earwigbot
path/to/working/dir --task task_name``.
- You can run a task by itself instead of the entire bot with
:command:`earwigbot path/to/working/dir --task task_name`.


- Questions, comments, or suggestions about the documentation? `Let me know`_
so I can improve it for other people.
- Questions, comments, or suggestions about the documentation? `Let me know`_,
or `create an issue`_ so I can improve it for other people.


.. rubric:: Footnotes .. rubric:: Footnotes


.. [1] In reality, all this does is call ``bot.commands.load()`` and
``bot.tasks.load()``!
.. [1] In reality, all this does is call :py:meth:`bot.commands.load()
<earwigbot.commands.BaseCommand.load>` and
:py:meth:`bot.tasks.load() <earwigbot.tasks.BaseTask.load>`!


.. _logging: http://docs.python.org/library/logging.html
.. _Let me know: ben.kurtovic@verizon.net
.. _!git plugin: https://github.com/earwig/earwigbot-plugins/blob/develop/commands/git.py
.. _logging: http://docs.python.org/library/logging.html
.. _!git plugin: https://github.com/earwig/earwigbot-plugins/blob/develop/commands/git.py
.. _Let me know: ben.kurtovic@verizon.net
.. _create an issue: https://github.com/earwig/earwigbot/issues

+ 2
- 2
docs/toolset.rst View File

@@ -166,5 +166,5 @@ docstrings`_ to learn how to use it in a more hands-on fashion. For reference,
``bot.wiki`` is an instance of ``earwigbot.wiki.SitesDB`` tied to the ``bot.wiki`` is an instance of ``earwigbot.wiki.SitesDB`` tied to the
``sites.db`` file in the bot's working directory. ``sites.db`` file in the bot's working directory.


.. _Pywikipedia framework: http://pywikipediabot.sourceforge.net/
.. _its code and docstrings: https://github.com/earwig/earwigbot/tree/develop/earwigbot/wiki
.. _Pywikipedia framework: http://pywikipediabot.sourceforge.net/
.. _its code and docstrings: https://github.com/earwig/earwigbot/tree/develop/earwigbot/wiki

Loading…
Cancel
Save