Mercurial > babel > old > mirror
changeset 4:2cada72b40ae
Forgot to check in the doc directory.
author | cmlenz |
---|---|
date | Wed, 30 May 2007 07:37:26 +0000 |
parents | e9eaddab598e |
children | 1b4a4b8ed14a |
files | doc/catalogs.txt doc/cmdline.txt doc/display.txt doc/docutils.conf doc/epydoc.conf doc/formatting.txt doc/index.txt doc/setup.txt doc/style/bkgnd_pattern.png doc/style/docutils.css doc/style/edgewall.css doc/style/epydoc.css doc/style/shadow.gif doc/style/vertbars.png |
diffstat | 14 files changed, 847 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/doc/catalogs.txt @@ -0,0 +1,106 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +============================= +Working with Message Catalogs +============================= + +.. contents:: Contents + :depth: 2 +.. sectnum:: + + +Introduction +============ + +The ``gettext`` translation system enables you to mark any strings used in your +application as subject to localization, by wrapping them in functions such as +``gettext(str)`` and ``ngettext(singular, plural, num)``. For brevity, the +``gettext`` function is often aliased to ``_(str)``, so you can write:: + + print _("Hello") + +instead of just:: + + print "Hello" + +to make the string "Hello" localizable. + +Message catalogs are collections of translations for such localizable messages +used in an application. They are commonly stored in PO (Portable Object) and MO +(Machine Object) files, the formats of which are defined by the GNU `gettext`_ +tools and the GNU `translation project`_. + + .. _`gettext`: http://www.gnu.org/software/gettext/ + .. _`translation project`: http://sourceforge.net/projects/translation + +The general procedure for building message catalogs looks something like this: + + * use a tool (such as ``xgettext``) to extract localizable strings from the + code base and write them to a POT (PO Template) file. + * make a copy of the POT file for a specific locale (for example, "en_US") + and start translating the messages + * use a tool such as ``msgfmt`` to compile the locale PO file into an binary + MO file + * later, when code changes make it necessary to update the translations, you + regenerate the POT file and merge the changes into the various + locale-specific PO files, for example using ``msgmerge`` + +Python provides the `gettext module`_ as part of the standard library, which +enables applications to work with appropriately generated MO files. + + .. _`gettext module`: http://docs.python.org/lib/module-gettext.html + +As ``gettext`` provides a solid and well supported foundation for translating +application messages, Babel does not reinvent the wheel, but rather reuses this +infrastructure, and makes it easier to build message catalogs for Python +applications. + + +Message Extraction +================== + +Babel provides functionality similar to that of the ``xgettext`` program, +except that only extraction from Python source files is built-in, while support +for other file formats can be added using a simple extension mechanism. + +(TODO: more) + + +-------------------------- +Writing Extraction Methods +-------------------------- + +(TODO: write) + +--------------------- +``setup.py`` Commands +--------------------- + +(TODO: overview) + +See `Distutils/Setuptools Integration <setup.html>`_ for more information. + +------------------- +Command-line script +------------------- + +(TODO: overview) + +See `Command-Line Interface <cmdline.html>`_ for more information. + + +Extended ``Translations`` Class +=============================== + +Many web-based applications are composed of a variety of different components +(possibly using some kind of plugin system), and some of those components may +provide their own message catalogs that need to be integrated into the larger +system. + +To support this usage pattern, Babel provides a ``Translations`` class that is +derived from the ``GNUTranslations`` class in the ``gettext`` module. This +class adds a ``merge()`` method that takes another ``Translations`` instance, +and merges its contents into the catalog:: + + translations = Translations.load('main') + translations.merge(Translations.load('plugin1'))
new file mode 100644 --- /dev/null +++ b/doc/cmdline.txt @@ -0,0 +1,37 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +====================== +Command-Line Interface +====================== + +Babel includes a command-line interface for working with message catalogs, +similar to the GNU ``xgettext`` program commonly available on Linux/Unix +systems. + + +.. contents:: Contents + :depth: 2 +.. sectnum:: + + +pygettext +========= + +When properly installed, Babel provides a script called ``pygettext``, which can +be used to extract localized messages from a variety of files:: + + $ pygettext --help + usage: pygettext [options] dirname1 <dirname2> ... + + options: + --version show program's version number and exit + -h, --help show this help message and exit + --charset=CHARSET charset to use in the output + -k KEYWORDS, --keyword=KEYWORDS + keywords to look for in addition to the defaults. You + can specify multiple -k flags on the command line. + --no-location do not include location comments with filename and + line number + --omit-header do not include msgid "" entry in header + -o OUTPUT, --output=OUTPUT + path to the output POT file
new file mode 100644 --- /dev/null +++ b/doc/display.txt @@ -0,0 +1,52 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +==================== +Locale Display Names +==================== + +.. contents:: Contents + :depth: 2 +.. sectnum:: + + +Introduction +============ + +While `message catalogs <catalogs.html>`_ allow you to localize any messages +in your application, there are a number of strings that are used in many +applications for which translations are readily available. + +Imagine for example you have a list of countries that users can choose from, +and you'd like to display the names of those countries in the language the +user prefers. Instead of translating all those country names yourself in your +application, you can make use of the translations provided by the locale data +included with Babel, which is based on the `Common Locale Data Repository +(CLDR) <http://unicode.org/cldr/>`_ developed and maintained by the `Unicode +Consortium <http://unicode.org/>`_. + + +The ``Locale`` Class +==================== + +You normally access such locale data through the `Locale`_ class provided +by Babel:: + + >>> from babel import Locale + >>> locale = Locale('en', 'US') + >>> locale.territories['US'] + u'United States' + >>> locale = Locale('es', 'MX') + >>> locale.territories['US'] + u'Estados Unidos' + +.. _`Locale`: api/babel.core.Locale-class.html + +In addition to country/territory names, the locale data also provides access to +names of languages, scripts, variants, time zones, and more. Some of the data +is closely related to `number and date formatting`_. + +Most of the corresponding ``Locale`` properties return dictionaries, where the +key is a code such as the ISO country and language codes. Consult the API +documentation for references to the relevant specifications. + +.. _`number and date formatting`: formatting.html
new file mode 100644 --- /dev/null +++ b/doc/docutils.conf @@ -0,0 +1,9 @@ +[general] +input_encoding = utf-8 +strip_comments = yes +toc_backlinks = none + +[html4css1 writer] +embed_stylesheet = no +stylesheet = style/edgewall.css +xml_declaration = no
new file mode 100644 --- /dev/null +++ b/doc/epydoc.conf @@ -0,0 +1,24 @@ +[epydoc] + +name: Documentation Index +url: ../index.html +modules: babel +verbosity: 1 + +# Extraction +docformat: restructuredtext +parse: yes +introspect: yes +exclude: .*\.tests.* +inheritance: listed +private: no +imports: no +include-log: no + +# HTML output +output: html +target: doc/api/ +css: doc/style/epydoc.css +top: babel +frames: no +sourcecode: no
new file mode 100644 --- /dev/null +++ b/doc/formatting.txt @@ -0,0 +1,12 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +========================== +Number and Date Formatting +========================== + + +.. contents:: Contents + :depth: 2 +.. sectnum:: + +
new file mode 100644 --- /dev/null +++ b/doc/index.txt @@ -0,0 +1,62 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +===== +Babel +===== + + +--------------------------------------------------- +Simple Internationalization for Python Applications +--------------------------------------------------- + +Babel is an integrated collection of utilities that assist in +internationalizing and localizing Python applications, with an +emphasis on web-based applications. + +* `Working with Message Catalogs <catalogs.html>`_ +* `Locale Display Names <display.html>`_ +* `Number and Date Formatting <formatting.html>`_ +* `Command-Line Interface <cmdline.html>`_ +* `Distutils/Setuptools Integration <setup.html>`_ +* `Generated API Documentation <api/index.html>`_ + +Introduction +------------ + +The functionality Babel provides for internationalization (I18n) and +localization (L10N) can be separated into two different aspects: + + * tools to build and work with ``gettext`` message catalogs, and + * a Python interface to the CLDR (Common Locale Data Repository), providing + access to various locale display names, localized number and date + formatting, etc. + +While the Python standard library includes a +`gettext <http://docs.python.org/lib/module-gettext.html>`_ module that enables +applications to use message catalogs, it requires developers to build these +catalogs using GNU tools such as ``xgettext``, ``msgmerge``, and ``msgfmt``. +And while ``xgettext`` does have support for extracting messages from Python +files, it does not know how to deal with other kinds of files commonly found +in Python web-applications, such as templates, nor does it provide an easy +extensibility mechanism to add such support. + +Babel addresses this by providing a framework where various extraction methods +can be plugged in to a larger message extraction framework, and also removes +the dependency on the GNU ``gettext`` tools for common tasks, as these aren't +necessarily available on all platforms. See `Working with Message Catalogs`_ +for details on this aspect of Babel. + +Furthermore, while the Python standard library does include support for basic +localization with respect to the formatting of numbers and dates (the +`locale <http://docs.python.org/lib/module-locale.html>`_ module, among others), +this support is based on the assumption that there will be only one specific +locale used per process (at least simultaneously.) Also, it doesn't provide +access to other kinds of locale data, such as the localized names of countries, +languages, or time zones, with are frequently needed in web-based applications. + +For these requirements, Babel includes data extracted from the `Common Locale +Data Repository (CLDR) <http://unicode.org/cldr/>`_, and provides a number of +convenient methods for accessing and using this data. See `Locale Display +Names`_ and `Number and Date Formatting`_ for more information on this aspect +of Babel. +
new file mode 100644 --- /dev/null +++ b/doc/setup.txt @@ -0,0 +1,78 @@ +.. -*- mode: rst; encoding: utf-8 -*- + +================================ +Distutils/Setuptools Integration +================================ + +Babel provides commands for integration into ``setup.py`` scripts, based on +either the ``distutils`` package that is part of the Python standard library, +or the third-party ``setuptools`` package. + +These commands are available by default when Babel has been properly installed, +and ``setup.py`` is using ``setuptools``. For projects that use plain old +``distutils``, the commands need to be registered explicitly, for example:: + + from distutils.core import setup + from babel.catalog import frontend as babel + + setup( + ... + cmd_class = {'extract_messages': babel.extract_messages} + ) + + +.. contents:: Contents + :depth: 2 +.. sectnum:: + + +extract_messages +================ + +The ``extract_messages`` command is comparabe to the GNU ``xgettext`` program: +it can extract localizable messages from a variety of difference source files, +and generate a PO (portable object) template file from the collected messages. + +If the command has been correctly installed or registered, another project's +``setup.py`` script should allow you to use the command:: + + $ ./setup.py extract_messages --help + Global options: + --verbose (-v) run verbosely (default) + --quiet (-q) run quietly (turns verbosity off) + --dry-run (-n) don't actually do anything + --help (-h) show detailed help message + + Options for 'extract_messages' command: + --charset charset to use in the output + --keywords (-k) comma-separated list of keywords to look for in addition + to the defaults + --no-location do not write filename/lineno location comments + --output-file filename of the output PO file + +Running the command will produce a PO file:: + + $ ./setup.py extract_messages --output-file webapp/locales/messages.pot + running extract_messages + extracting messages from 'webapp' + extracting messages from 'webparts' + writing PO file to webapp/locales/messages.pot + + +Options +------- + +As shown in the ``--help`` output above, the ``extract_messages`` command +accepts the following options: + +``--charset`` + The character set / encoding to use in the generated PO file. +``--keywords`` + A comma-separated list of keywords (function names) to look for in addition + to the default keywords +``--no-location`` + If this flag is set, location comments will not be included in the generated + PO file. +``--output-file`` or ``-o`` + The path to the PO file that should be generated +
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90e92682135d3f7213332f870f973bd06d6d57ee GIT binary patch literal 112 zc%17D@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+FxOzM<ja$?1EZ14UFl zT^vI=t|to=iYB~>SaRTj#)AV3j$Ayz@Myi$<MK684X4~sFf(*H@+4o{pJfBoz~JfX K=d#Wzp$PzDHzRKV
new file mode 100644 --- /dev/null +++ b/doc/style/docutils.css @@ -0,0 +1,277 @@ +/* +:Author: David Goodger +:Contact: goodger@users.sourceforge.net +:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $ +:Revision: $Revision: 4224 $ +:Copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the HTML output of Docutils. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. +*/ + +/* used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0 } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 ! important } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 ! important } + +.last, .with-subtitle { + margin-bottom: 0 ! important } + +.hidden { + display: none } + +a.toc-backref { + text-decoration: none ; + color: black } + +blockquote.epigraph { + margin: 2em 5em ; } + +dl.docutils dd { + margin-bottom: 0.5em } + +dl.docutils dt { + font-weight: bold } + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ + +div.dedication { + margin: 2em 5em ; + text-align: center ; + font-style: italic } + +div.dedication p.topic-title { + font-weight: bold ; + font-style: normal } + +div.figure { + margin-left: 2em ; + margin-right: 2em } + +div.footer, div.header { + clear: both; + font-size: smaller } + +div.line-block { + display: block ; + margin-top: 1em ; + margin-bottom: 1em } + +div.line-block div.line-block { + margin-top: 0 ; + margin-bottom: 0 ; + margin-left: 1.5em } + +div.sidebar { + margin-left: 1em ; + border: medium outset ; + padding: 1em ; + background-color: #ffffee ; + width: 40% ; + float: right ; + clear: right } + +div.sidebar p.rubric { + font-family: sans-serif ; + font-size: medium } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em } + +h1.title { + text-align: center } + +h2.subtitle { + text-align: center } + +hr.docutils { + width: 75% } + +img.align-left { + clear: left } + +img.align-right { + clear: right } + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.attribution { + text-align: right ; + margin-left: 50% } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.rubric { + font-weight: bold ; + font-size: larger ; + color: maroon ; + text-align: center } + +p.sidebar-title { + font-family: sans-serif ; + font-weight: bold ; + font-size: larger } + +p.sidebar-subtitle { + font-family: sans-serif ; + font-weight: bold } + +p.topic-title { + font-weight: bold } + +pre.address { + margin-bottom: 0 ; + margin-top: 0 ; + font-family: serif ; + font-size: 100% } + +pre.literal-block, pre.doctest-block { + margin-left: 2em ; + margin-right: 2em ; + background-color: #eeeeee } + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option { + white-space: nowrap } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80% } + +table.citation { + border-left: solid 1px gray; + margin-left: 1px } + +table.docinfo { + margin: 2em 4em } + +table.docutils { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +table.footnote { + border-left: solid 1px black; + margin-left: 1px } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap ; + padding-left: 0 } + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100% } + +tt.docutils { + background-color: #eeeeee } + +ul.auto-toc { + list-style-type: none }
new file mode 100644 --- /dev/null +++ b/doc/style/edgewall.css @@ -0,0 +1,59 @@ +@import(docutils.css); + +html, body { height: 100%; margin: 0; padding: 0; } +html, body { background: #4b4d4d url(bkgnd_pattern.png); color: #000; } +body, th, td { + font: normal small Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; +} +pre, code, tt { font-size: medium; } +h1, h2, h3, h4 { + border-bottom: 1px solid #ccc; + font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; + font-weight: bold; letter-spacing: -0.018em; +} +h1 { font-size: 19px; margin: 2em 0 .5em; } +h2 { font-size: 16px; margin: 1.5em 0 .5em; } +h3 { font-size: 14px; margin: 1.2em 0 .5em; } +hr { border: none; border-top: 1px solid #ccb; margin: 2em 0; } +p { margin: 0 0 1em; } + +:link, :visited { text-decoration: none; border-bottom: 1px dotted #bbb; + color: #b00; +} +:link:hover, :visited:hover { background-color: #eee; color: #555; } +:link img, :visited img { border: none } +h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited, +h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited { + color: #000; +} + +div.document { background: #fff url(shadow.gif) right top repeat-y; + border-left: 1px solid #000; margin: 0 auto 0 40px; + min-height: 100%; width: 54em; padding: 0 180px 1px 20px; +} +h1.title, div.document#babel h1 { border: none; color: #666; + font-size: x-large; margin: 0 -20px 1em; padding: 2em 20px 0; +} +h1.title { background: url(vertbars.png) repeat-x; } +div.document#babel h1.title { text-indent: -4000px; } +div.document#babel h1 { text-align: center; } +pre.literal-block { background: #d7d7d7; border: 1px solid #e6e6e6; color: #000; + margin: 1em 1em; padding: .25em; overflow: auto; +} + +div.contents { font-size: 90%; position: absolute; position: fixed; + margin-left: 80px; left: 60em; top: 30px; right: 0; +} +div.contents .topic-title { display: none; } +div.contents ul { list-style: none; padding-left: 0; } +div.contents :link, div.contents :visited { color: #c6c6c6; border: none; + display: block; padding: 3px 5px 3px 10px; +} +div.contents :link:hover, div.contents :visited:hover { background: #000; + color: #fff; +} + +p.admonition-title { font-weight: bold; margin-bottom: 0; } +div.note, div.warning { font-style: italic; margin-left: 2em; + margin-right: 2em; +}
new file mode 100644 --- /dev/null +++ b/doc/style/epydoc.css @@ -0,0 +1,131 @@ +html { background: #4b4d4d url(../style/bkgnd_pattern.png); margin: 0; + padding: 1em 1em 3em; +} +body { background: #fff url(../style/vertbars.png) repeat-x; + border: 1px solid #000; color: #000; margin: 1em 0; padding: 0 1em 1em; +} +body, th, td { + font: normal small Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; +} +h1, h2, h3, h4 { + font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; + font-weight: bold; letter-spacing: -0.018em; +} +h1 { font-size: 19px; margin: 2em 0 .5em; } +h2 { font-size: 16px; margin: 1.5em 0 .5em; } +h3 { font-size: 14px; margin: 1.2em 0 .5em; } +hr { border: none; border-top: 1px solid #ccb; margin: 2em 0; } +p { margin: 0 0 1em; } +:link, :visited { text-decoration: none; border-bottom: 1px dotted #bbb; + color: #b00; +} +:link:hover, :visited:hover { background-color: #eee; color: #555; } + +table { border: none; border-collapse: collapse; } + +table.navbar { background: #000; color: #fff; margin: 2em 0 .33em; } +table.navbar th { border: 1px solid #000; font-weight: bold; padding: 1px; } +table.navbar :link, table.navbar :visited { border: none; color: #fff; } +table.navbar :link:hover, table.navbar :visited:hover { background: none; + text-decoration: underline overline; +} +table.navbar th.navbar-select { background: #fff; color: #000; } +span.breadcrumbs { color: #666; font-size: 95%; } +h1.epydoc { border: none; color: #666; + font-size: x-large; margin: 1em 0 0; padding: 0; +} +pre.base-tree { color: #666; margin: 0; padding: 0; } +pre.base-tree :link, pre.base-tree :visited { border: none; } +pre.py-doctest, pre.variable, pre.rst-literal-block { background: #eee; + border: 1px solid #e6e6e6; color: #000; margin: 1em; padding: .25em; + overflow: auto; +} +pre.variable { margin: 0; } + +/* Summary tables */ + +table.summary { margin: .5em 0; } +table.summary tr.table-header { background: #f7f7f0; } +table.summary td.table-header { color: #666; font-weight: bold; } +table.summary th, table.summary td { border: 1px solid #d7d7d7; } +table.summary th th, table.summary td td { border: none; } +table.summary td.summary table td { color: #666; font-size: 90%; } +table.summary td.summary table br { display: none; } +table.summary td.summary span.summary-type { font-size: 90%; } +table.summary td.summary span.summary-type code { font-size: 110%; } +p.indent-wrapped-lines { color: #999; font-size: 85%; margin: 0; + padding: 0 0 0 7em; text-indent: -7em; +} +p.indent-wrapped-lines code { color: #999; font-size: 115%; } +p.indent-wrapped-lines :link, p.indent-wrapped-lines :visited { border: none; } +.summary-sig { display: block; font-family: monospace; font-size: 120%; + margin-bottom: .5em; +} +.summary-sig-name { font-weight: bold; } +.summary-sig-arg { color: #333; } +.summary-sig :link, .summary-sig :visited { border: none; } +.summary-name { font-family: monospace; font-weight: bold; } + +/* Details tables */ + +table.details { margin: 2em 0 0; } +div table.details { margin-top: 0; } +table.details tr.table-header { background: transparent; } +table.details td.table-header { border-bottom: 1px solid #ccc; padding: 2em 0 0; } +table.details span.table-header { + font: bold 140% Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; + letter-spacing: -0.018em; +} +table.details th, table.details td { border: none; } +table.details th th, table.details td td { border: none; } +table.details td { padding-left: 2em; } +table.details td td { padding-left: 0; } +table.details h3.epydoc { margin-left: -2em; } +table.details h3.epydoc .sig { color: #999; font-family: monospace; } +table.details h3.epydoc .sig-name { color: #000; } +table.details h3.epydoc .sig-arg { color: #666; } +table.details h3.epydoc .sig-default { font-size: 95%; font-weight: normal; } +table.details h3.epydoc .sig-default code { font-weight: normal; } +table.details h3.epydoc .fname { color: #999; font-size: 90%; + font-style: italic; font-weight: normal; line-height: 1.6em; +} + +dl dt { color: #666; margin-top: 1em; } +dl dd { margin: 0; padding-left: 2em; } +dl.fields { margin: 1em 0; padding: 0; } +dl.fields dt { color: #666; margin-top: 1em; } +dl.fields dd ul { margin: 0; padding: 0; } +div.fields { font-size: 90%; margin: 0 0 2em 2em; } +div.fields p { margin-bottom: 0.5em; } + +table td.footer { color: #999; font-size: 85%; margin-top: 3em; + padding: 0 3em 1em; position: absolute; width: 80%; } +table td.footer :link, table td.footer :visited { border: none; color: #999; } +table td.footer :link:hover, table td.footer :visited:hover { + background: transparent; text-decoration: underline; +} + +/* Syntax highlighting */ + +.py-prompt, .py-more, .variable-ellipsis, .variable-op { color: #999; } +.variable-group { color: #666; font-weight: bold; } +.py-string, .variable-string, .variable-quote { color: #093; } +.py-comment { color: #06f; font-style: italic; } +.py-keyword { color: #00f; } +.py-output { background: #f6f6f0; color: #666; font-weight: bold; } + +/* Index */ + +table.link-index { background: #f6f6f0; border: none; margin-top: 1em; } +table.link-index td.link-index { border: none; font-family: monospace; + font-weight: bold; padding: .5em 1em; +} +table.link-index td table, table.link-index td td { border: none; } +table.link-index .index-where { color: #999; + font-family: Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; + font-size: 90%; font-weight: normal; line-height: 1.6em; +} +table.link-index .index-where :link, table.link-index .index-where :visited { + border: none; color: #666; +} +h2.epydoc { color: #999; font-size: 200%; line-height: 10px; }
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..326cd1b37dcd637d2e8b7193fe0011f51cca3ce9 GIT binary patch literal 227 zc${<hbhEHbT)@D^u!sQ!Lc_zoeZ4HLt&EM0|1mOw#TXQSvapIUurla?I3TqQ%quud zlrDZSmDDaVyF7E}b@6Ytvoj_shOWv?&*N&2(|LPsf$hGxedl*76r8xsnPhgyIr50X zd<6}!Q;RpPnW`>y`k~e02bnvp_D$RTJdd?9OQ`;xMNQr6-*0k%)gGDlIK1ArveB)f zy1Birqq{afsXt{x+N6vrS=0I^&YBz=ojG&P!l|<tFPgq&`LYE|*W`4qZ`#nham(gy aPIaAIoocJPH|^MWAiw3{(IdQ^4AuZ)%VDtq
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..42ae3f86d7f1513fd585ad02959afbb37ad476cb GIT binary patch literal 270 zc%17D@N?(olHy`uVBq!ia0vp^0zj<5!2~3yyw0Buq&N#aB8wRqxP?KOkzv*x37{Z* ziKnkC`xPz@COHia{`NUQp|zeajv*GOr}lgD9aa!v`Tf8C>%IowZOI~+1jT1O3(*SY z=AC!{^{#V=egxhBzNNG+Wcfh@o-JZ+A^YdBKeo7Z&60On=AvAqCA)Sc&P(TZUiF#( z^rj1DlCO7NijoNWTO^lr+bufXqg3k6Z@=t^|9Q_@g4NuszNO~8s$076@rDAqInO=8 zN?HUmba__RS@I|KY$^3?e!VMWHqT1EydCdvADZy$5&PrG?DFy^Z!PAn-4+0JID@CF KpUXO@geCwp5oi<u