moving docs out of the base lib

This commit is contained in:
enus.linden
2009-04-27 22:55:40 +00:00
committed by Salad Dais
parent ea5c1a62eb
commit 273ee5a6ba
405 changed files with 0 additions and 37570 deletions

View File

@@ -1,187 +0,0 @@
import os, sys
import re
import pyclbr
module_file_ext = ".rst"
modules_dir = os.path.join(os.path.dirname(__file__) + '/modules/')
unit_test_dir = os.path.join(os.path.dirname(__file__) + '/unittest/')
eggs_dir = os.path.join(os.path.dirname(__file__) + '/../../../../eggs/')
lib_dir = os.path.abspath(os.path.dirname(__file__) + '/../../')
# skip files in processing docs
skipfiles = ['build_packet_templates.py']
if not os.path.isdir(modules_dir):
print "Creating modules directory: %s" % (modules_dir)
os.mkdir(modules_dir)
if not os.path.isdir(unit_test_dir):
print "Creating unit test modules directory: %s" % (unit_test_dir)
os.mkdir(unit_test_dir)
sys.path.append(lib_dir)
for directory in os.listdir(eggs_dir):
sys.path.append(os.path.join(eggs_dir + directory))
mock = 0
def remove(mock, dirname, fnames):
if not re.search("/.svn", dirname):
for fname in fnames:
if not re.search(".svn", fname):
print " Removing " + os.path.join(dirname, fname)
os.remove(os.path.join(dirname, fname))
mock += 1
print "Cleaning the sources/modules dir..."
# remove .rst files in source/modules
os.path.walk(modules_dir, remove, mock)
print "Cleaning the sources/unittest dir..."
# remove .rst files in source/unittest
os.path.walk(unit_test_dir, remove, mock)
print "Removed %s module files" % (mock)
store = {}
def callback(store, dirname, fnames):
keepers = []
if not re.search("/.svn", dirname):
for f in fnames:
if (re.search(".py$", f) or re.search(".txt$", f)) and not re.search("__init_", f) and not f in skipfiles:
keepers.append(f)
store[dirname] = keepers
# look for .py files in pyogp.lib.base
os.path.walk(os.path.abspath(os.path.dirname(__file__) + '/../../pyogp/lib/base/'), callback, store)
def get_handle(_dir, fname):
f = open(os.path.join(_dir, fname), 'w')
print " Writing %s" % (fname)
return f
def close_handle(handle):
handle.close()
def write_rst(handle, params, header = ''):
package_root = params[0] # is the root path + directory
module = params[1] # is the full package path
mod_name = params[2] # is the name of the directory within pyogp.lib.base
fname = params[3] # is the root name of the .py file
mod_ext = params[4] # extension of the source file
if header != '':
handle.write(header + "\n")
if mod_ext == "txt":
title = mod_name
handle.write(title + "\n")
handle.write("=" * len(title) + "\n")
handle.write("\n")
handle.write("\n")
handle.write(".. module:: " + module + "\n")
handle.write("\n")
handle.write("This is a doctest, the content here is verbatim from the source file at %s.\n" % (module + "." + mod_ext))
handle.write("\n")
source_handle = open(os.path.join(lib_dir, "/".join(module.split(".")) + "." + mod_ext))
for line in source_handle.readlines():
handle.write(line)
# this is a doctest
else:
title = ":mod:`" + mod_name + "`"
handle.write(title + "\n")
handle.write("=" * len(title) + "\n")
handle.write("\n")
handle.write(".. automodule:: " + module + "\n")
handle.write("\n")
for k in pyclbr.readmodule(module):
# hack to workaround something i cant reckon
if module == 'pyogp.lib.base.groups' and k in ['UUID', 'Vector3', 'Quaternion']:
continue
print " adding %s" % (k)
handle.write(".. autoclass:: " + module + "." + k + "\n")
handle.write(" :members:" + "\n")
handle.write(" :undoc-members:" + "\n")
if not re.search("test_", mod_name):
handle.write(" :inherited-members:" + "\n")
handle.write("" + "\n")
print "Building modules files..."
unit_tests = []
for k in store:
offset = len(os.path.abspath(os.path.dirname(__file__) + '/../..').split("/"))
package_root = '.'.join(k.split("/")[offset:])
for fname in store[k]:
mod_name = fname.split(".")[0]
mod_ext = fname.split(".")[1]
if package_root == "pyogp.lib.base.":
module = package_root + mod_name
else:
module = package_root + "." + mod_name
fname = mod_name + module_file_ext
# skip the sample implementation scripts
if re.search("sample", mod_name) and re.search("pyogp.lib.base.examples", package_root):
continue
# handle unit tests separately
if re.search("test", mod_name) or re.search("test", package_root):
unit_tests.append((package_root, module, mod_name, fname, mod_ext))
continue
handle = get_handle(modules_dir, fname)
write_rst(handle, (package_root, module, mod_name, fname, mod_ext))
close_handle(handle)
print "Building unit test module..."
for params in unit_tests:
handle = get_handle(unit_test_dir, params[3])
write_rst(handle, params)
close_handle(handle)

View File

@@ -1,201 +0,0 @@
# -*- coding: utf-8 -*-
#
# Pyogp documentation build configuration file, created by
# sphinx-quickstart on Tue Apr 14 15:13:09 2009.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.append(os.path.abspath('../../../'))
for directory in os.listdir('../../../../../eggs/'):
sys.path.append(os.path.abspath('../../../../../eggs/' + directory))
# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Pyogp'
copyright = u'2009, Pyogp team'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.1'
# The full version, including alpha/beta/rc tags.
release = '0.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
today_fmt = '%B %d, %Y'
# List of documents that shouldn't be included in the build.
#unused_docs = []
# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
autoclass_content = 'both'
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'sphinxdoc'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['../_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
html_use_modindex = True
# If false, no index is generated.
html_use_index = True
# If true, the index is split into individual pages for each letter.
html_split_index = True
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''
# Output file base name for HTML help builder.
htmlhelp_basename = 'Pyogpdoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'Pyogp.tex', u'Pyogp Documentation',
u'Pyogp team', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_use_modindex = True
def setup(app):
from sphinx.ext.autodoc import cut_lines
app.connect('autodoc-process-docstring', cut_lines(3, what=['module']))

View File

@@ -1,4 +0,0 @@
History
=======
Some day there will be historical information here...

View File

@@ -1,48 +0,0 @@
.. _contents:
Welcome to Pyogp API docs
=========================
(doc set created |today|)
Pyogp is a python library for interacting with virtual world environments like Second Life. Starting as a test framework for new Open Grid Protocol work led by Linden Lab, Pyogp continues as a client library for current and future protocols.
This set of documents is primarily for use as API documentation. Pyogp is still young, and constantly evolving. Help refresh these docs regularly as work continues.
Modules
=======
Doc strings for all library files (modules) and their classes and methods.
.. toctree::
:maxdepth: 1
modules
Unit Tests
==========
Internal unit tests.
.. toctree::
:maxdepth: 1
unittest
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
History
=======
.. toctree::
:maxdepth: 1
history

View File

@@ -1,12 +0,0 @@
Modules
=======
Modules refer to files, which naturally in turn contain classes and methods and functions.
(doc set created |today|. Rebuild the docs to get a current snapshot. View docs/README.txt for guidance.)
.. toctree::
:glob:
modules/*

View File

@@ -1,15 +0,0 @@
:mod:`agent`
============
.. automodule:: pyogp.lib.base.agent
.. autoclass:: pyogp.lib.base.agent.Home
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.agent.Agent
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`agentdomain`
==================
.. automodule:: pyogp.lib.base.agentdomain
.. autoclass:: pyogp.lib.base.agentdomain.AgentDomain
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`agentmanager`
===================
.. automodule:: pyogp.lib.base.agentmanager
.. autoclass:: pyogp.lib.base.agentmanager.AgentManager
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`appearance`
=================
.. automodule:: pyogp.lib.base.appearance
.. autoclass:: pyogp.lib.base.appearance.Appearance
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`callbacks`
================
.. automodule:: pyogp.lib.base.utilities.callbacks
.. autoclass:: pyogp.lib.base.utilities.callbacks.Callbacks
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`caps`
===========
.. automodule:: pyogp.lib.base.caps
.. autoclass:: pyogp.lib.base.caps.Capability
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.caps.SeedCapability
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,25 +0,0 @@
:mod:`circuit`
==============
.. automodule:: pyogp.lib.base.message.circuit
.. autoclass:: pyogp.lib.base.message.circuit.CircuitManager
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.circuit.PackFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.circuit.Host
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.circuit.Circuit
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
:mod:`data_packer`
==================
.. automodule:: pyogp.lib.base.message.data_packer
.. autoclass:: pyogp.lib.base.message.data_packer.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.data_packer.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.data_packer.DataPacker
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
:mod:`data_unpacker`
====================
.. automodule:: pyogp.lib.base.message.data_unpacker
.. autoclass:: pyogp.lib.base.message.data_unpacker.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.data_unpacker.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.data_unpacker.DataUnpacker
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
:mod:`datatypes`
================
.. automodule:: pyogp.lib.base.datatypes
.. autoclass:: pyogp.lib.base.datatypes.Quaternion
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.datatypes.Vector3
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.datatypes.UUID
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,30 +0,0 @@
:mod:`enums`
============
.. automodule:: pyogp.lib.base.utilities.enums
.. autoclass:: pyogp.lib.base.utilities.enums.CompressedUpdateFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.enums.InventoryType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.enums.PCode
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.enums.ImprovedIMDialogue
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.enums.ExtraParam
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
:mod:`event_queue`
==================
.. automodule:: pyogp.lib.base.event_queue
.. autoclass:: pyogp.lib.base.event_queue.EventQueueClient
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.event_queue.EventQueueHandler
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.event_queue.EventQueueReceivedNotifier
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`event_system`
===================
.. automodule:: pyogp.lib.base.event_system
.. autoclass:: pyogp.lib.base.event_system.EventsHandler
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.event_system.EventNotifier
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`events`
=============
.. automodule:: pyogp.lib.base.utilities.events
.. autoclass:: pyogp.lib.base.utilities.events.Event
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,160 +0,0 @@
:mod:`exc`
==========
.. automodule:: pyogp.lib.base.exc
.. autoclass:: pyogp.lib.base.exc.MessageDeserializationError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.AgentDomainError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.UserNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.ResourceNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.DataParsingError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.AgentError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.MessageSerializationError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.DeserializationError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.RegionSeedCapNotAvailable
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.RegionCapNotAvailable
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.MessageTemplateParsingError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.UserNotAuthorized
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.DataUnpackingError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.CircuitNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.ResourceError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.CredentialDeserializerNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.NotImplemented
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.MessageSystemError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.DeserializerNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.LoginError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.SerializationError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.ParseStartLocError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.RegionDomainError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.Error
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.HTTPError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.DeserializationFailed
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.RegionMessageError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.UserRezFailed
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.MessageTemplateNotFound
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.NetworkError
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.exc.MessageBuildingError
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`factory`
==============
.. automodule:: pyogp.lib.base.message.factory
.. autoclass:: pyogp.lib.base.message.factory.MessageFactory
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,40 +0,0 @@
:mod:`groups`
=============
.. automodule:: pyogp.lib.base.groups
.. autoclass:: pyogp.lib.base.groups.ChatterBoxSessionEventReply_Message
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.Group
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.ChatterBoxSessionAgentListUpdates_Message
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.MockChatInterface
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.ChatterBoxSessionStartReply_Message
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.GroupManager
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.groups.ChatterBoxInvitation_Message
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,30 +0,0 @@
:mod:`helpers`
==============
.. automodule:: pyogp.lib.base.utilities.helpers
.. autoclass:: pyogp.lib.base.utilities.helpers.LLSDDeserializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.helpers.ListLLSDSerializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.helpers.Helpers
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.helpers.DictLLSDSerializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.utilities.helpers.Wait
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,30 +0,0 @@
:mod:`inventory`
================
.. automodule:: pyogp.lib.base.inventory
.. autoclass:: pyogp.lib.base.inventory.InventoryFolder
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.inventory.InventoryItem
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.inventory.Inventory
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.inventory.AIS
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.inventory.UDP_Inventory
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,25 +0,0 @@
:mod:`llsd_builder`
===================
.. automodule:: pyogp.lib.base.message.llsd_builder
.. autoclass:: pyogp.lib.base.message.llsd_builder.MsgData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.llsd_builder.MsgVariableData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.llsd_builder.MsgBlockData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.llsd_builder.LLSDMessageBuilder
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,5 +0,0 @@
:mod:`llsd_sender`
==================
.. automodule:: pyogp.lib.base.message.llsd_sender

View File

@@ -1,20 +0,0 @@
:mod:`login`
============
.. automodule:: pyogp.lib.base.login
.. autoclass:: pyogp.lib.base.login.OGPLoginParams
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.login.Login
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.login.LegacyLoginParams
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,30 +0,0 @@
:mod:`message`
==============
.. automodule:: pyogp.lib.base.message.message
.. autoclass:: pyogp.lib.base.message.message.MsgData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.message.Message
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.message.MsgVariableData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.message.MsgBlockData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.message.Block
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`net`
==========
.. automodule:: pyogp.lib.base.network.net
.. autoclass:: pyogp.lib.base.network.net.NetUDPClient
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`objects`
==============
.. automodule:: pyogp.lib.base.objects
.. autoclass:: pyogp.lib.base.objects.Object
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.objects.Objects
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`packet`
=============
.. automodule:: pyogp.lib.base.message.packet
.. autoclass:: pyogp.lib.base.message.packet.PackFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.packet.UDPPacket
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`packethandler`
====================
.. automodule:: pyogp.lib.base.message.packethandler
.. autoclass:: pyogp.lib.base.message.packethandler.PacketHandler
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.packethandler.PacketReceivedNotifier
:members:
:undoc-members:
:inherited-members:

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +0,0 @@
:mod:`parse_packet`
===================
.. automodule:: pyogp.lib.base.utilities.parse_packet
.. autoclass:: pyogp.lib.base.utilities.parse_packet.parsingStats
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
:mod:`permissions`
==================
.. automodule:: pyogp.lib.base.permissions
.. autoclass:: pyogp.lib.base.permissions.PermissionsMask
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.permissions.PermissionsTarget
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.permissions.Permissions
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`region`
=============
.. automodule:: pyogp.lib.base.region
.. autoclass:: pyogp.lib.base.region.Region
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.region.RegionSeedCapability
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`settings`
===============
.. automodule:: pyogp.lib.base.settings
.. autoclass:: pyogp.lib.base.settings.Settings
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`stdlib_client`
====================
.. automodule:: pyogp.lib.base.network.stdlib_client
.. autoclass:: pyogp.lib.base.network.stdlib_client.StdLibClient
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.network.stdlib_client.EventletClient
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,45 +0,0 @@
:mod:`template`
===============
.. automodule:: pyogp.lib.base.message.template
.. autoclass:: pyogp.lib.base.message.template.MsgData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MessageTemplateVariable
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MessageTemplateBlock
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MessageTemplate
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MsgVariableData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template.MsgBlockData
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,35 +0,0 @@
:mod:`template_dict`
====================
.. automodule:: pyogp.lib.base.message.template_dict
.. autoclass:: pyogp.lib.base.message.template_dict.MessageTemplateParser
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_dict.MsgFrequency
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_dict.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_dict.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_dict.TemplateDictionary
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_dict.DataPacker
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,40 +0,0 @@
:mod:`template_parser`
======================
.. automodule:: pyogp.lib.base.message.template_parser
.. autoclass:: pyogp.lib.base.message.template_parser.MsgTrust
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MessageTemplateParser
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MsgDeprecation
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MsgFrequency
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.template_parser.MsgEncoding
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,50 +0,0 @@
:mod:`types`
============
.. automodule:: pyogp.lib.base.message.types
.. autoclass:: pyogp.lib.base.message.types.PackFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgTrust
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgDeprecation
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgFrequency
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.PacketLayout
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.types.MsgEncoding
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,70 +0,0 @@
:mod:`udpdeserializer`
======================
.. automodule:: pyogp.lib.base.message.udpdeserializer
.. autoclass:: pyogp.lib.base.message.udpdeserializer.PackFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.UDPPacketDeserializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.DataUnpacker
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.UDPPacket
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgFrequency
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.PacketLayout
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.TemplateDictionary
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgVariableData
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdeserializer.MsgBlockData
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,75 +0,0 @@
:mod:`udpdispatcher`
====================
.. automodule:: pyogp.lib.base.message.udpdispatcher
.. autoclass:: pyogp.lib.base.message.udpdispatcher.PackFlags
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.UDPPacketDeserializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.DataUnpacker
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.CircuitManager
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.UDPPacketSerializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.UDPPacket
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.MsgFrequency
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.PacketLayout
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.Message
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.UDPDispatcher
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpdispatcher.Block
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,35 +0,0 @@
:mod:`udpserializer`
====================
.. automodule:: pyogp.lib.base.message.udpserializer
.. autoclass:: pyogp.lib.base.message.udpserializer.UDPPacketSerializer
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpserializer.MsgBlockType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpserializer.EndianType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpserializer.MsgType
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpserializer.TemplateDictionary
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.message.udpserializer.DataPacker
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,40 +0,0 @@
Unit Tests
==========
Pyogp unit testing ~ pyogp.lib.base contains internal tests that validate consistency of the library implementation. Using unittest and doctest, along with wsgi and mock objects, these tests simulate interaction with a grid where needed, or use predefined data where possible, to validate methods and such.
Coverage is unfortunately sparse currently, though, enough examples exist and the api is generally stable enough that tests can reliably be created now.
Running Unit Tests
------------------
To run unit tests:
1. navigate to a buildout checkout's root folder
2. run bin/client_unittest
a. useful parameters:
i. vv: enables printing of test names
ii. (module name): run tests contained in a specific file
iii. test-file-pattern=TEST_FILE_PATTERN: run modules where filename matches pattern
iv. list: list all known tests
3. disable logging via setting ENABLE_LOGGING_IN_TESTS to False
Adding Tests
------------
doctest: add a {class}.txt file to pyogp.lib.base.tests.
unittest: add a test_{class}.py file to pyogp.lib.base.tests.
base.py ~ contains the wsgi handlers for certain mock objects (like MockXMLRPC, etc)
Current Tests
-------------
.. toctree::
:glob:
unittest/*

View File

@@ -1,37 +0,0 @@
agent
=====
.. module:: pyogp.lib.base.tests.agent
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.tests.agent.txt.
Agent
~~~~~
The 'agent' login case
~~~~~~~~~~~~~~~~~~~~~~
First, initialize the agent
>>> from pyogp.lib.base.agent import Agent
>>> client = Agent()
For testing, we need to set up the loginhandler and the loginuri
>>> loginuri = 'http://localhost:12345/login.cgi'
Setup test: import of the mock network client handler
>>> from pyogp.lib.base.tests.mock_xmlrpc import MockXMLRPC
>>> from pyogp.lib.base.tests.base import MockXMLRPCLogin
>>> loginhandler = MockXMLRPC(MockXMLRPCLogin(), loginuri)
Now let's log it in
>>> client.login('http://localhost:12345/login.cgi', 'firstname', 'lastname', 'password', start_location = 'start_location', handler = loginhandler, connect_region = False)
Evaluate the login response
>>> client.login_response
{'region_y': '256', 'region_x': '256', 'first_name': '"first"', 'secure_session_id': '00000000-0000-0000-0000-000000000000', 'sim_ip': '127.0.0.1', 'agent_access': 'M', 'circuit_code': '600000000', 'look_at': '[r0.9963859999999999939,r-0.084939700000000006863,r0]', 'session_id': '00000000-0000-0000-0000-000000000000', 'udp_blacklist': 'EnableSimulator,TeleportFinish,CrossedRegion', 'seed_capability': 'https://somesim:12043/cap/00000000-0000-0000-0000-000000000000', 'agent_id': '00000000-0000-0000-0000-000000000000', 'last_name': 'last', 'inventory_host': 'someinvhost', 'start_location': 'last', 'sim_port': '13001', 'message': 'message', 'login': 'true', 'seconds_since_epoch': '1234567890'}

View File

@@ -1,25 +0,0 @@
:mod:`base`
===========
.. automodule:: pyogp.lib.base.tests.base
.. autoclass:: pyogp.lib.base.tests.base.MockAgentDomainLogin
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.tests.base.StdLibClient
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.tests.base.MockAgentDomain
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.tests.base.MockXMLRPCLogin
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,61 +0,0 @@
basics
======
.. module:: pyogp.lib.base.network.tests.basics
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.network.tests.basics.txt.
Networking Basics
~~~~~~~~~~~~~~~~~
The networking layer is basically a replaceable REST client. It is defined as a utility
providing methods such as GET, POST etc.
Let's retrieve the standard utility (this is overridden here in this test to use a mockup network library):
>>> from pyogp.lib.base.exc import HTTPError
>>> from pyogp.lib.base.tests.mockup_client import MockupClient
>>> from pyogp.lib.base.tests.base import StdLibClient
>>> client = MockupClient(StdLibClient())
Now we can use it. Let's post something to our test server:
>>> response = client.GET('http://localhost:12345/network/get')
>>> response.body
'Hello, World'
Let's try a 404:
>>> client.GET('http://localhost:12345/foobar')
Traceback (most recent call last):
...
HTTPError: 404 Not Found
The error object also has some more information in it:
>>> try:
... client.GET('http://localhost:12345/foobar')
... except HTTPError, error:
... pass
Let's check what's available
>>> error.code
404
>>> error.msg
'Not Found'
>>> error.fp.read()
'resource not found.'
POSTing something
~~~~~~~~~~~~~~~~~
>>> response = client.POST('http://localhost:12345/network/post','test me')
>>> response.body
'returned: test me'

View File

@@ -1,132 +0,0 @@
caps
====
.. module:: pyogp.lib.base.tests.caps
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.tests.caps.txt.
The Capabilities component
~~~~~~~~~~~~~~~~~~~~~~~~~~
The Capabilities component basically gives us two objects: a Capability
and a SeedCapability.
We can instantiate a SeedCapability like this:
>>> from pyogp.lib.base.tests.mockup_client import MockupClient
>>> from pyogp.lib.base.caps import SeedCapability, Capability
>>> from pyogp.lib.base.tests.base import MockAgentDomain
>>> client = MockupClient(MockAgentDomain())
>>> seed = SeedCapability('seed', 'http://127.0.0.1:12345/seed_cap', client)
We assume that we got the seed capability URL itself from login or some other service.
We can now ask this SeedCapability object for new capabilities:
>>> caps = seed.get(['some_capability', 'some_other'])
The result is a dictionary object:
>>> len(caps.keys())
2
whose contents are:
>>> caps['some_capability']
<Capability 'some_capability' for http://localhost:12345/cap/some_capability>
>>> caps['some_other']
<Capability 'some_other' for http://localhost:12345/cap/some_other>
Let's store the some_capability cap in a variable:
>>> some_cap = caps['some_capability']
The capability now can be simply called with a payload and returns some data itself.
First we call it:
>>> data = some_cap.POST({'a':'b'})
And now we can check the data:
>>> data['something']
'else'
>>> data['some']
12345
This data here is provided by the mockup server for testing.
Internals
~~~~~~~~~
Each capability stores it's name and public URL which it is instantiated with.
We can access these like this:
>>> some_cap.name
'some_capability'
>>> some_cap.public_url
'http://localhost:12345/cap/some_capability'
As we can see, it's not a secret URL in this mockup case but in production it will be.
We can of course also just instantiate some capability directly:
>>> cap = Capability("cap", "http://localhost:12345/cap/some_capability", client)
and retrieve it via GET:
>>> cap.GET()
{'some': 12345, 'something': 'else'}
or post something to it (the demo will simply update the base dict):
>>> cap.POST({'Tao':'Takashi'})
{'Tao': 'Takashi', 'some': 12345, 'something': 'else'}
Testing errors
~~~~~~~~~~~~~~
Now we can test what happens to our code when the server returns a wrong content type.
In this case it should not find a deserializer and say so::
>>> seed = SeedCapability('seed', 'http://127.0.0.1:12345/seed_cap_wrong_content_type', client)
>>> cap = seed.get(['some_capability'])
Traceback (most recent call last):
...
DeserializerNotFound: deserialization for 'text/foobar' not supported
Try the same for GET:
>>> cap = Capability('test','http://127.0.0.1:12345/cap_wrong_content_type', client)
>>> cap.GET()
Traceback (most recent call last):
...
DeserializerNotFound: deserialization for 'text/foobar' not supported
Now we test if network errors are handled correctly::
>>> cap = Capability('test','http://127.0.0.1:12345/cap/error', client)
>>> cap.POST({'test':'testing'})
Traceback (most recent call last):
...
ResourceError: Error using 'POST' on resource 'http://127.0.0.1:12345/cap/error': Internal Server Error (500)
And some 404:
>>> cap = Capability('test','http://127.0.0.1:12345/cap/unkown', client)
>>> cap.POST({'test':'testing'})
Traceback (most recent call last):
...
ResourceNotFound: http://127.0.0.1:12345/cap/unkown

View File

@@ -1,5 +0,0 @@
:mod:`config`
=============
.. automodule:: pyogp.lib.base.tests.config

View File

@@ -1,105 +0,0 @@
login
=====
.. module:: pyogp.lib.base.tests.login
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.tests.login.txt.
Login
~~~~~
First the 'legacy' login case
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, initialize login and the loginuri
>>> from pyogp.lib.base.login import Login
>>> login = Login()
>>> loginuri = 'http://localhost:12345/login.cgi'
Setup test: import of the mock network client handler
>>> from pyogp.lib.base.tests.mock_xmlrpc import MockXMLRPC
>>> from pyogp.lib.base.tests.base import MockXMLRPCLogin
>>> loginhandler = MockXMLRPC(MockXMLRPCLogin(), loginuri)
Now, set up the login parameters:
>>> from pyogp.lib.base.login import LegacyLoginParams
>>> login_params = LegacyLoginParams('first', 'last', 'secret')
Now, login to the legacy login endpoint (using the mock test object as the endpoint).
The login function returns the response as a dict.
>>> login.login(loginuri, login_params, 'start_location', handler = loginhandler)
{'region_y': '256', 'region_x': '256', 'first_name': '"first"', 'secure_session_id': '00000000-0000-0000-0000-000000000000', 'sim_ip': '127.0.0.1', 'agent_access': 'M', 'circuit_code': '600000000', 'look_at': '[r0.9963859999999999939,r-0.084939700000000006863,r0]', 'session_id': '00000000-0000-0000-0000-000000000000', 'udp_blacklist': 'EnableSimulator,TeleportFinish,CrossedRegion', 'seed_capability': 'https://somesim:12043/cap/00000000-0000-0000-0000-000000000000', 'agent_id': '00000000-0000-0000-0000-000000000000', 'last_name': 'last', 'inventory_host': 'someinvhost', 'start_location': 'last', 'sim_port': '13001', 'message': 'message', 'login': 'true', 'seconds_since_epoch': '1234567890'}
Evaluate the login response stored in the login class
>>> login.response['login']
'true'
>>> login.response['seed_capability']
'https://somesim:12043/cap/00000000-0000-0000-0000-000000000000'
Next, LegacyLoginParams
~~~~~~~~~~~~~~~~~~~~~~~
This is easy, just test it
>>> from pyogp.lib.base.login import LegacyLoginParams
>>> login_params = LegacyLoginParams('first', 'last', 'pass')
>>> login_params = login_params.serialize()
>>> login_params
{'passwd': 'pass', 'last': 'last', 'first': 'first'}
Now, how about testing the 'ogp' case
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, initialize login and the loginuri
>>> from pyogp.lib.base.login import Login
>>> login = Login()
>>> loginuri = 'http://localhost:12345/auth.cgi'
Setup test: import of the mock network client handler
>>> from pyogp.lib.base.network.tests.mockup_client import MockupClient
>>> from pyogp.lib.base.tests.base import MockAgentDomainLogin
>>> loginhandler = MockupClient(MockAgentDomainLogin())
Now, set up the login parameters:
>>> from pyogp.lib.base.login import OGPLoginParams
>>> login_params = OGPLoginParams('first', 'last', 'secret')
Now, login to the ogp login endpoint aka agent domain (using the mock test object as the endpoint).
The login function returns the response as a dict.
>>> login.login(loginuri, login_params, 'start_location', handler = loginhandler)
{'agent_seed_capability': 'http://127.0.0.1:12345/seed_cap', 'authenticated': True}
Evaluate the login response stored in the login class
>>> login.response['authenticated']
True
>>> login.response['agent_seed_capability']
'http://127.0.0.1:12345/seed_cap'
Next, OGPLoginParams
~~~~~~~~~~~~~~~~~~~~
This is easy, just test it
>>> from pyogp.lib.base.login import OGPLoginParams
>>> login_params = OGPLoginParams('first', 'last', 'pass')
>>> login_params.content_type
'application/llsd+xml'
>>> login_params = login_params.serialize()
>>> login_params
'<?xml version="1.0" ?><llsd><map><key>lastname</key><string>last</string><key>password</key><string>pass</string><key>firstname</key><string>first</string></map></llsd>'

View File

@@ -1,10 +0,0 @@
:mod:`mock_xmlrpc`
==================
.. automodule:: pyogp.lib.base.tests.mock_xmlrpc
.. autoclass:: pyogp.lib.base.tests.mock_xmlrpc.MockXMLRPC
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,10 +0,0 @@
:mod:`mockup_client`
====================
.. automodule:: pyogp.lib.base.tests.mockup_client
.. autoclass:: pyogp.lib.base.tests.mockup_client.MockupClient
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,15 +0,0 @@
:mod:`mockup_net`
=================
.. automodule:: pyogp.lib.base.tests.mockup_net
.. autoclass:: pyogp.lib.base.tests.mockup_net.MockupUDPClient
:members:
:undoc-members:
:inherited-members:
.. autoclass:: pyogp.lib.base.tests.mockup_net.MockupUDPServer
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,25 +0,0 @@
network_test
============
.. module:: pyogp.lib.base.network.tests.network_test
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.network.tests.network_test.txt.
"""
Contributors can be viewed at:
http://svn.secondlife.com/svn/linden/projects/2008/pyogp/CONTRIBUTORS.txt
$LicenseInfo:firstyear=2008&license=apachev2$
Copyright 2009, Linden Research, Inc.
Licensed under the Apache License, Version 2.0 (the "License").
You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
or in
http://svn.secondlife.com/svn/linden/projects/2008/pyogp/LICENSE.txt
$/LicenseInfo$
"""

View File

@@ -1,34 +0,0 @@
packet_handler
==============
.. module:: pyogp.lib.base.tests.packet_handler
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.tests.packet_handler.txt.
PacketHandler
~~~~~~~~~~~~~
The basic packet handling event/callbackcase
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, initialize the packet handler
>>> from pyogp.lib.base.message.packethandler import PacketHandler
>>> packet_handler = PacketHandler()
How about a mock callback handler
>>> def callback(packet): print packet
>>> onStartPingCheck_received = packet_handler._register("StartPingCheck")
>>> onStartPingCheck_received.subscribe(callback)
Stage a packet
>>> from pyogp.lib.base.message.packets import StartPingCheckPacket
>>> packet = StartPingCheckPacket()
Fire the event, it returns a packet
Unpossible to include this in the test, the memory ref keeps changing
But, you get the idea...
event_data = packet_handler._handle(packet)
<pyogp.lib.base.message.packets.StartPingCheckPacket object at 0x14da450>

View File

@@ -1,10 +0,0 @@
:mod:`packet_test`
==================
.. automodule:: pyogp.lib.base.message.tests.packet_test
.. autoclass:: pyogp.lib.base.message.tests.packet_test.PacketTest
:members:
:undoc-members:
:inherited-members:

View File

@@ -1,20 +0,0 @@
region
======
.. module:: pyogp.lib.base.tests.region
This is a doctest, the content here is verbatim from the source file at pyogp.lib.base.tests.region.txt.
Region
~~~~~~
The 'region' object creation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, initialize the region
>>> from pyogp.lib.base.region import Region
>>> region = Region()
Not complete...

View File

@@ -1,5 +0,0 @@
:mod:`testDocTests`
===================
.. automodule:: pyogp.lib.base.tests.testDocTests

View File

@@ -1,9 +0,0 @@
:mod:`test_agent`
=================
.. automodule:: pyogp.lib.base.tests.test_agent
.. autoclass:: pyogp.lib.base.tests.test_agent.TestAgent
:members:
:undoc-members:

View File

@@ -1,17 +0,0 @@
:mod:`test_circuits`
====================
.. automodule:: pyogp.lib.base.message.tests.test_circuits
.. autoclass:: pyogp.lib.base.message.tests.test_circuits.TestCircuitManager
:members:
:undoc-members:
.. autoclass:: pyogp.lib.base.message.tests.test_circuits.TestHost
:members:
:undoc-members:
.. autoclass:: pyogp.lib.base.message.tests.test_circuits.TestCircuit
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_datatypes`
=====================
.. automodule:: pyogp.lib.base.tests.test_datatypes
.. autoclass:: pyogp.lib.base.tests.test_datatypes.TestDatatypes
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_event_queue`
=======================
.. automodule:: pyogp.lib.base.tests.test_event_queue
.. autoclass:: pyogp.lib.base.tests.test_event_queue.TestEventQueue
:members:
:undoc-members:

View File

@@ -1,13 +0,0 @@
:mod:`test_event_system`
========================
.. automodule:: pyogp.lib.base.tests.test_event_system
.. autoclass:: pyogp.lib.base.tests.test_event_system.TestEvents
:members:
:undoc-members:
.. autoclass:: pyogp.lib.base.tests.test_event_system.MockEvent
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_events`
==================
.. automodule:: pyogp.lib.base.tests.test_events
.. autoclass:: pyogp.lib.base.tests.test_events.TestEvents
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_helpers`
===================
.. automodule:: pyogp.lib.base.tests.test_helpers
.. autoclass:: pyogp.lib.base.tests.test_helpers.TestHelpers
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_inventory`
=====================
.. automodule:: pyogp.lib.base.tests.test_inventory
.. autoclass:: pyogp.lib.base.tests.test_inventory.TestInventory
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_legacy_login`
========================
.. automodule:: pyogp.lib.base.tests.test_legacy_login
.. autoclass:: pyogp.lib.base.tests.test_legacy_login.TestLegacyLogin
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_llsd_builder`
========================
.. automodule:: pyogp.lib.base.message.tests.test_llsd_builder
.. autoclass:: pyogp.lib.base.message.tests.test_llsd_builder.TestLLSDBuilder
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_message_wrapper`
===========================
.. automodule:: pyogp.lib.base.message.tests.test_message_wrapper
.. autoclass:: pyogp.lib.base.message.tests.test_message_wrapper.TestMessage
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_objects`
===================
.. automodule:: pyogp.lib.base.tests.test_objects
.. autoclass:: pyogp.lib.base.tests.test_objects.TestObjects
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_ogp_login`
=====================
.. automodule:: pyogp.lib.base.tests.test_ogp_login
.. autoclass:: pyogp.lib.base.tests.test_ogp_login.TestOGPLogin
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_packetdata`
======================
.. automodule:: pyogp.lib.base.message.tests.test_packetdata
.. autoclass:: pyogp.lib.base.message.tests.test_packetdata.TestPacketDecode
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_region`
==================
.. automodule:: pyogp.lib.base.tests.test_region
.. autoclass:: pyogp.lib.base.tests.test_region.TestRegion
:members:
:undoc-members:

View File

@@ -1,13 +0,0 @@
:mod:`test_template_parser`
===========================
.. automodule:: pyogp.lib.base.message.tests.test_template_parser
.. autoclass:: pyogp.lib.base.message.tests.test_template_parser.TestTemplates
:members:
:undoc-members:
.. autoclass:: pyogp.lib.base.message.tests.test_template_parser.TestDictionary
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_udp_deserializer`
============================
.. automodule:: pyogp.lib.base.message.tests.test_udp_deserializer
.. autoclass:: pyogp.lib.base.message.tests.test_udp_deserializer.TestDeserializer
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_udp_serializer`
==========================
.. automodule:: pyogp.lib.base.message.tests.test_udp_serializer
.. autoclass:: pyogp.lib.base.message.tests.test_udp_serializer.TestSerializer
:members:
:undoc-members:

View File

@@ -1,9 +0,0 @@
:mod:`test_udpconnection`
=========================
.. automodule:: pyogp.lib.base.message.tests.test_udpconnection
.. autoclass:: pyogp.lib.base.message.tests.test_udpconnection.TestUDPConnection
:members:
:undoc-members: