Move documentation to Read the Docs instead of distributing directly.

This commit is contained in:
Anthony Tuininga 2014-05-19 22:26:58 -06:00
parent 4838055084
commit 9515b93b35
39 changed files with 405 additions and 7805 deletions

View File

@ -1,36 +0,0 @@
Copyright © 2007-2012, Anthony Tuininga.
Copyright © 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta, Canada.
All rights reserved.
License for cx_Oracle
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions, and the disclaimer that follows.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the names of the copyright holders nor the names of any
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
DISCLAIMER:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *AS IS*
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Computronix® is a registered trademark of Computronix (Canada) Ltd.

View File

@ -69,3 +69,7 @@ samples in the samples directory. You can also look at the scripts in the
cx_OracleTools (http://cx-oracletools.sourceforge.net) and the modules in the
cx_PyOracleLib (http://cx-pyoraclelib.sourceforge.net) projects.
For further information see
http://cx_oracle.readthedocs.org

View File

@ -1,58 +1,34 @@
.. cx_Oracle documentation master file
.. include:: <isonum.txt>
Welcome to cx_Oracle's documentation!
=====================================
*************
cx_Oracle
*************
:Author: Anthony Tuininga
:Date: |today|
.. |release| replace:: HEAD
.. % date of release
.. % software release
.. % empty for final release
.. % major.minor only for software
.. _front:
************
Front Matter
************
Copyright |copy| 2007-2012 Anthony Tuininga. All rights reserved.
Copyright |copy| 2001-2007 Computronix. All rights reserved.
See :ref:`license` for complete license and permissions information.
.. topic:: Abstract
cx_Oracle is a Python extension module that allows access to Oracle and
conforms to the Python database API 2.0 specifications with a few
exceptions. See http://www.python.org/topics/database/DatabaseAPI-2.0.html
for more information on the Python database API specification.
**cx_Oracle** is a module that enables access to Oracle databases and conforms
to the Python database API specification. This module is currently built
against Oracle 11.2 and 12.1 and works for both Python 2.x and 3.x.
**cx_Oracle** is distributed under an open-source :ref:`license <license>`
(the PSF license).
Contents:
.. toctree::
:maxdepth: 2
:maxdepth: 2
module
connection
cursor
variable
session_pool
subscription
lob
license
module.rst
connection.rst
cursor.rst
variable.rst
session_pool.rst
subscription.rst
lob.rst
releasenotes.rst
license.rst
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@ -8,7 +8,7 @@ License
.. centered:: **LICENSE AGREEMENT FOR CX_ORACLE**
Copyright |copy| 2007-2012, Anthony Tuininga. All rights reserved.
Copyright |copy| 2007-2014, Anthony Tuininga. All rights reserved.
Copyright |copy| 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta,
Canada. All rights reserved.

View File

@ -1,78 +1,120 @@
Changes from 5.1.1 to 5.1.2
1) Added support for LONG_UNICODE which is a type used to handle long unicode
Release notes
=============
5.x releases
############
Version 5.1.3
-------------
1) Added support for Oracle 12c.
2) Added support for Python 3.4.
3) Added support for query result set change notification. Thanks to Glen
Walker for the patch.
4) Ensure that in Python 3.x that NCHAR and NVARCHAR2 and NCLOB columns are
retrieved properly without conversion issues. Thanks to Joakim Andersson
for pointing out the issue and the possible solution.
5) Fix bug when an exception is caught and then another exception is raised
while handling that exception in Python 3.x. Thanks to Shai Berger for
pointing out the issue and providing a test case.
6) Enhance performance returning integers between 10 and 18 digits on 64-bit
platforms that support it. Thanks for Shai Berger for the initial patch.
7) Fixed two memory leaks.
8) Fix to stop current_schema from throwing a MemoryError on 64-bit platforms
on occasion. Thanks to Andrew Horton for the fix.
9) Class name of cursors changed to real name cx_Oracle.Cursor.
Version 5.1.2
-------------
1) Added support for LONG_UNICODE which is a type used to handle long unicode
strings. These are not explicitly supported in Oracle but can be used to
bind to NCLOB, for example, without getting the error "unimplemented or
unreasonable conversion requested".
2) Set the row number in a cursor when executing PL/SQL blocks as requested
2) Set the row number in a cursor when executing PL/SQL blocks as requested
by Robert Ritchie.
3) Added support for setting the module, action and client_info attributes
3) Added support for setting the module, action and client_info attributes
during connection so that logon triggers will see the supplied values, as
requested by Rodney Barnett.
Changes from 5.1 to 5.1.1
1) Simplify management of threads for callbacks performed by database change
Version 5.1.1
-------------
1) Simplify management of threads for callbacks performed by database change
notification and eliminate a crash that occurred under high load in
certain situations. Thanks to Calvin S. for noting the issue and suggesting
a solution and testing the patch.
2) Force server detach on close so that the connection is completely closed
2) Force server detach on close so that the connection is completely closed
and not just the session as before.
3) Force use of OCI_UTF16ID for NCLOBs as using the default character set
3) Force use of OCI_UTF16ID for NCLOBs as using the default character set
would result in ORA-03127 with Oracle 11.2.0.2 and UTF8 character set.
4) Avoid attempting to clear temporary LOBs a second time when destroying the
4) Avoid attempting to clear temporary LOBs a second time when destroying the
variable as in certain situations this results in spurious errors.
5) Added additional parameter service_name to makedsn() which can be used to
5) Added additional parameter service_name to makedsn() which can be used to
use the service_name rather than the SID in the DSN string that is
generated.
6) Fix cursor description in test suite to take into account the number of
6) Fix cursor description in test suite to take into account the number of
bytes per character.
7) Added tests for NCLOBS to the test suite.
8) Removed redundant code in setup.py for calculating the library path.
7) Added tests for NCLOBS to the test suite.
8) Removed redundant code in setup.py for calculating the library path.
Changes from 5.0.4 to 5.1
1) Remove support for UNICODE mode and permit Unicode to be passed through in
Version 5.1
-----------
1) Remove support for UNICODE mode and permit Unicode to be passed through in
everywhere a string may be passed in. This means that strings will be
passed through to Oracle using the value of the NLS_LANG environment
variable in Python 3.x as well. Doing this eliminated a bunch of problems
that were discovered by using UNICODE mode and also removed an unnecessary
restriction in Python 2.x that Unicode could not be used in connect strings
or SQL statements, for example.
2) Added support for creating an empty object variable via a named type, the
2) Added support for creating an empty object variable via a named type, the
first step to adding full object support.
3) Added support for Python 3.2.
4) Account for lib64 used on x86_64 systems. Thanks to Alex Wood for supplying
3) Added support for Python 3.2.
4) Account for lib64 used on x86_64 systems. Thanks to Alex Wood for supplying
the patch.
5) Clear up potential problems when calling cursor.close() ahead of the
5) Clear up potential problems when calling cursor.close() ahead of the
cursor being freed by going out of scope.
6) Avoid compilation difficulties on AIX5 as OCIPing does not appear to be
6) Avoid compilation difficulties on AIX5 as OCIPing does not appear to be
available on that platform under Oracle 10g Release 2. Thanks to
Pierre-Yves Fontaniere for the patch.
7) Free temporary LOBs prior to each fetch in order to avoid leaking them.
7) Free temporary LOBs prior to each fetch in order to avoid leaking them.
Thanks to Uwe Hoffmann for the initial patch.
Changes from 5.0.3 to 5.0.4
1) Added support for Python 2.7.
2) Added support for new parameter (port) for subscription() call which allows
Version 5.0.4
-------------
1) Added support for Python 2.7.
2) Added support for new parameter (port) for subscription() call which allows
the client to specify the listening port for callback notifications from
the database server. Thanks to Geoffrey Weber for the initial patch.
3) Fixed compilation under Oracle 9i.
4) Fixed a few error messages.
3) Fixed compilation under Oracle 9i.
4) Fixed a few error messages.
Changes from 5.0.2 to 5.0.3
1) Added support for 64-bit Windows.
2) Added support for Python 3.1 and dropped support for Python 3.0.
3) Added support for keyword arguments in cursor.callproc() and
Version 5.0.3
-------------
1) Added support for 64-bit Windows.
2) Added support for Python 3.1 and dropped support for Python 3.0.
3) Added support for keyword arguments in cursor.callproc() and
cursor.callfunc().
4) Added documentation for the UNICODE and FIXED_UNICODE variable types.
5) Added extra link arguments required for Mac OS X as suggested by Jason
4) Added documentation for the UNICODE and FIXED_UNICODE variable types.
5) Added extra link arguments required for Mac OS X as suggested by Jason
Woodward.
6) Added additional error codes to the list of error codes that raise
6) Added additional error codes to the list of error codes that raise
OperationalError rather than DatabaseError.
7) Fixed calculation of display size for strings with national database
7) Fixed calculation of display size for strings with national database
character sets that are not the default AL16UTF16.
8) Moved the resetting of the setinputsizes flag before the binding takes
8) Moved the resetting of the setinputsizes flag before the binding takes
place so that if an error takes place and a new statement is prepared
subsequently, spurious errors will not occur.
9) Fixed compilation with Oracle 10g Release 1.
9) Fixed compilation with Oracle 10g Release 1.
10) Tweaked documentation based on feedback from a number of people.
11) Added support for running the test suite using "python setup.py test"
12) Added support for setting the CLIENT_IDENTIFIER value in the v$session
@ -83,50 +125,59 @@ Changes from 5.0.2 to 5.0.3
the locale decimal point was not a period. Thanks to Amaury Forgeot d'Arc
for the solution to this problem.
Changes from 5.0.1 to 5.0.2
1) Fix creation of temporary NCLOB values and the writing of NCLOB values in
non Unicode mode.
2) Re-enabled parsing of non select statements as requested by Roy Terrill.
3) Implemented a parse error offset as requested by Catherine Devlin.
4) Removed lib subdirectory when forcing RPATH now that the library directory
is being calculated exactly in setup.py.
5) Added an additional cast in order to support compiling by Microsoft
Visual C++ 2008 as requested by Marco de Paoli.
6) Added additional include directory to setup.py in order to support
compiling by Microsoft Visual Studio was requested by Jason Coombs.
7) Fixed a few documentation issues.
Changes from 5.0 to 5.0.1
1) Added support for database change notification available in Oracle 10g
Version 5.0.2
-------------
1) Fix creation of temporary NCLOB values and the writing of NCLOB values in
non Unicode mode.
2) Re-enabled parsing of non select statements as requested by Roy Terrill.
3) Implemented a parse error offset as requested by Catherine Devlin.
4) Removed lib subdirectory when forcing RPATH now that the library directory
is being calculated exactly in setup.py.
5) Added an additional cast in order to support compiling by Microsoft
Visual C++ 2008 as requested by Marco de Paoli.
6) Added additional include directory to setup.py in order to support
compiling by Microsoft Visual Studio was requested by Jason Coombs.
7) Fixed a few documentation issues.
Version 5.0.1
-------------
1) Added support for database change notification available in Oracle 10g
Release 2 and higher.
2) Fix bug where NCLOB data would be corrupted upon retrieval (non Unicode
2) Fix bug where NCLOB data would be corrupted upon retrieval (non Unicode
mode) or would generate exception ORA-24806 (LOB form mismatch). Oracle
insists upon differentiating between CLOB and NCLOB no matter which
character set is being used for retrieval.
3) Add new attributes size, bufferSize and numElements to variable objects,
3) Add new attributes size, bufferSize and numElements to variable objects,
deprecating allocelems (replaced by numElements) and maxlength (replaced
by bufferSize)
4) Avoid increasing memory allocation for strings when using variable width
4) Avoid increasing memory allocation for strings when using variable width
character sets and increasing the number of elements in a variable during
executemany().
5) Tweaked code in order to ensure that cx_Oracle can compile with Python
5) Tweaked code in order to ensure that cx_Oracle can compile with Python
3.0.1.
Changes from 4.4.1 to 5.0
1) Added support for Python 3.0 with much help from Amaury Forgeot d'Arc.
2) Removed support for Python 2.3 and Oracle 8i.
3) Added support for full unicode mode in Python 2.x where all strings are
Version 5.0
-----------
1) Added support for Python 3.0 with much help from Amaury Forgeot d'Arc.
2) Removed support for Python 2.3 and Oracle 8i.
3) Added support for full unicode mode in Python 2.x where all strings are
passed in and returned as unicode (module must be built in this mode)
rather than encoded strings
4) nchar and nvarchar columns now return unicode instead of encoded strings
5) Added support for an output type handler and/or an input type handler to be
4) nchar and nvarchar columns now return unicode instead of encoded strings
5) Added support for an output type handler and/or an input type handler to be
specified at the connection and cursor levels.
6) Added support for specifying both input and output converters for variables
7) Added support for specifying the array size of variables that are created
6) Added support for specifying both input and output converters for variables
7) Added support for specifying the array size of variables that are created
using the cursor.var() method
8) Added support for events mode and database resident connection pooling
8) Added support for events mode and database resident connection pooling
(DRCP) in Oracle 11g.
9) Added support for changing the password during construction of a new
9) Added support for changing the password during construction of a new
connection object as well as after the connection object has been created
10) Added support for the interval day to second data type in Oracle,
represented as datetime.timedelta objects in Python.
@ -142,27 +193,33 @@ Changes from 4.4.1 to 5.0
15) Fixed handling of environment handles in session pools in order to allow
session pools to fetch objects without exceptions taking place.
Changes from 4.4 to 4.4.1
1) Make the bind variables and fetch variables accessible although they need
Older releases
##############
Version 4.4.1
-------------
1) Make the bind variables and fetch variables accessible although they need
to be treated carefully since they are used internally; support added for
forward compatibility with version 5.x.
2) Include the "cannot insert null value" in the list of errors that are
2) Include the "cannot insert null value" in the list of errors that are
treated as integrity errors as requested by Matt Boersma.
3) Use a cx_Oracle.Error instance rather than a string to hold the error when
3) Use a cx_Oracle.Error instance rather than a string to hold the error when
truncation (ORA-1406) takes place as requested by Helge Tesdal.
4) Added support for fixed char, old style varchar and timestamp attribute
4) Added support for fixed char, old style varchar and timestamp attribute
values in objects.
5) Tweaked setup.py to check for the Oracle version up front rather than
5) Tweaked setup.py to check for the Oracle version up front rather than
during the build in order to produce more meaningful errors and simplify
the code.
6) In setup.py added proper detection for the instant client on Mac OS X as
6) In setup.py added proper detection for the instant client on Mac OS X as
recommended by Martijn Pieters.
7) In setup.py, avoided resetting the extraLinkArgs on Mac OS X as doing so
7) In setup.py, avoided resetting the extraLinkArgs on Mac OS X as doing so
prevents simple modification where desired as expressed by Christian
Zagrodnick.
8) Added documentation on exception handling as requested by Andreas Mock, who
8) Added documentation on exception handling as requested by Andreas Mock, who
also graciously provided an initial patch.
9) Modified documentation indicating that the password attribute on connection
9) Modified documentation indicating that the password attribute on connection
objects can be written.
10) Added documentation warning that parameters not passed in during subsequent
executions of a statement will retain their original values as requested by
@ -174,31 +231,34 @@ Changes from 4.4 to 4.4.1
client.
13) Added additional link arguments for Cygwin as requested by Rob Gillen.
Changes from 4.3.3 to 4.4
1) Fix setup.py to handle the Oracle instant client and Oracle XE on both
Version 4.4
-----------
1) Fix setup.py to handle the Oracle instant client and Oracle XE on both
Linux and Windows as pointed out by many. Thanks also to the many people
who also provided patches.
2) Set the default array size to 50 instead of 1 as the DB API suggests
2) Set the default array size to 50 instead of 1 as the DB API suggests
because the performance difference is so drastic and many people have
recommended that the default be changed.
3) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS around each blocking
3) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS around each blocking
call for LOBs as requested by Jason Conroy who also provided an initial
patch and performed a number of tests that demonstrate the new code is much
more responsive.
4) Add support for acquiring cursor.description after a parse.
5) Defer type assignment when performing executemany() until the last possible
4) Add support for acquiring cursor.description after a parse.
5) Defer type assignment when performing executemany() until the last possible
moment if the value being bound in is null as suggested by Dragos Dociu.
6) When dropping a connection from the pool, ignore any errors that occur
6) When dropping a connection from the pool, ignore any errors that occur
during the rollback; unfortunately, Oracle decides to commit data even when
dropping a connection from the pool instead of rolling it back so the
attempt still has to be made.
7) Added support for setting CLIENT_DRIVER in V$SESSION_CONNECT_INFO in Oracle
7) Added support for setting CLIENT_DRIVER in V$SESSION_CONNECT_INFO in Oracle
11g and higher.
8) Use cx_Oracle.InterfaceError rather than the builtin RuntimeError when
8) Use cx_Oracle.InterfaceError rather than the builtin RuntimeError when
unable to create the Oracle environment object as requested by Luke Mewburn
since the error is specific to Oracle and someone attempting to catch any
exception cannot simply use cx_Oracle.Error.
9) Translated some error codes to OperationalError as requested by Matthew
9) Translated some error codes to OperationalError as requested by Matthew
Harriger; translated if/elseif/else logic to switch statement to make it
more readable and to allow for additional translation if desired.
10) Transformed documentation to new format using restructured text. Thanks to
@ -214,124 +274,142 @@ Changes from 4.3.3 to 4.4
14) Specify that the version of Oracle 10 that is now primarily used is 10.2,
not 10.1.
Changes from 4.3.2 to 4.3.3
1) Added method ping() on connections which can be used to test whether or not
Version 4.3.3
-------------
1) Added method ping() on connections which can be used to test whether or not
a connection is still active (available in Oracle 10g R2).
2) Added method cx_Oracle.clientversion() which returns a 5-tuple giving the
2) Added method cx_Oracle.clientversion() which returns a 5-tuple giving the
version of the client that is in use (available in Oracle 10g R2).
3) Added methods startup() and shutdown() on connections which can be used to
3) Added methods startup() and shutdown() on connections which can be used to
startup and shutdown databases (available in Oracle 10g R2).
4) Added support for Oracle 11g.
5) Added samples directory which contains a handful of scripts containing
4) Added support for Oracle 11g.
5) Added samples directory which contains a handful of scripts containing
sample code for more advanced techniques. More will follow in future
releases.
6) Prevent error "ORA-24333: zero iteration count" when calling executemany()
6) Prevent error "ORA-24333: zero iteration count" when calling executemany()
with zero rows as requested by Andreas Mock.
7) Added methods __enter__() and __exit__() on connections to support using
7) Added methods __enter__() and __exit__() on connections to support using
connections as context managers in Python 2.5 and higher. The context
managed is the transaction state. Upon exit the transaction is either
rolled back or committed depending on whether an exception took place or
not.
8) Make the search for the lib32 and lib64 directories automatic for all
8) Make the search for the lib32 and lib64 directories automatic for all
platforms.
9) Tweak the setup configuration script to include all of the metadata and
9) Tweak the setup configuration script to include all of the metadata and
allow for building the module within another setup configuration script
10) Include the Oracle version in addition to the Python version in the build
directories that are created and in the names of the binary packages that
are created.
11) Remove unnecessary dependency on win32api to build module on Windows.
Changes from 4.3.1 to 4.3.2
1) Added methods open(), close(), isopen() and getchunksize() in order to
Version 4.3.2
-------------
1) Added methods open(), close(), isopen() and getchunksize() in order to
improve performance of reading/writing LOB values in chunks.
2) Fixed support for native doubles and floats in Oracle 10g; added new type
2) Fixed support for native doubles and floats in Oracle 10g; added new type
NATIVE_FLOAT to allow specification of a variable of that specific type
where desired. Thanks to D.R. Boxhoorn for pointing out the fact that this
was not working properly when the arraysize was anything other than 1.
3) When calling connection.begin(), only create a new tranasction handle if
3) When calling connection.begin(), only create a new tranasction handle if
one is not already associated with the connection. Thanks to Andreas Mock
for discovering this and for Amaury Forgeot d'Arc for diagnosing the
problem and pointing the way to a solution.
4) Added attribute cursor.rowfactory which allows a method to be called for
4) Added attribute cursor.rowfactory which allows a method to be called for
each row that is returned; this is about 20% faster than calling the method
in Python using the idiom [method(*r) for r in cursor].
5) Attempt to locate an Oracle installation by looking at the PATH if the
5) Attempt to locate an Oracle installation by looking at the PATH if the
environment variable ORACLE_HOME is not set; this is of primary use on
Windows where this variable should not normally be set.
6) Added support for autocommit mode as requested by Ian Kelly.
7) Added support for connection.stmtcachesize which allows for both reading
6) Added support for autocommit mode as requested by Ian Kelly.
7) Added support for connection.stmtcachesize which allows for both reading
and writing the size of the statement cache size. This parameter can make a
huge difference with the length of time taken to prepare statements. Added
support for setting the statement tag when preparing a statement. Both of
these were requested by Bjorn Sandberg who also provided an initial patch.
8) When copying the value of a variable, copy the return code as well.
8) When copying the value of a variable, copy the return code as well.
Changes from 4.3 to 4.3.1
1) Ensure that if the client buffer size exceeds 4000 bytes that the server
Version 4.3.1
-------------
1) Ensure that if the client buffer size exceeds 4000 bytes that the server
buffer size does not as strings may only contain 4000 bytes; this allows
handling of multibyte character sets on the server as well as the client.
2) Added support for using buffer objects to populate binary data and made the
2) Added support for using buffer objects to populate binary data and made the
Binary() constructor the buffer type as requested by Ken Mason.
3) Fix potential crash when using full optimization with some compilers.
3) Fix potential crash when using full optimization with some compilers.
Thanks to Aris Motas for noticing this and providing the initial patch and
to Amaury Forgeot d'Arc for providing an even simpler solution.
4) Pass the correct charset form in to the write call in order to support
4) Pass the correct charset form in to the write call in order to support
writing to national character set LOB values properly. Thanks to Ian Kelly
for noticing this discrepancy.
Changes from 4.2.1 to 4.3
1) Added preliminary support for fetching Oracle objects (SQL types) as
Version 4.3
-----------
1) Added preliminary support for fetching Oracle objects (SQL types) as
requested by Kristof Beyls (who kindly provided an initial patch).
Additional work needs to be done to support binding and updating objects
but the basic structure is now in place.
2) Added connection.maxBytesPerCharacter which indicates the maximum number of
2) Added connection.maxBytesPerCharacter which indicates the maximum number of
bytes each character can use; use this value to also determine the size of
local buffers in order to handle discrepancies between the client character
set and the server character set. Thanks to Andreas Mock for providing the
initial patch and working with me to resolve this issue.
3) Added support for querying native floats in Oracle 10g as requested by
3) Added support for querying native floats in Oracle 10g as requested by
Danny Boxhoorn.
4) Add support for temporary LOB variables created via PL/SQL instead of only
4) Add support for temporary LOB variables created via PL/SQL instead of only
directly by cx_Oracle; thanks to Henning von Bargen for discovering this
problem.
5) Added support for specifying variable types using the builtin types int,
5) Added support for specifying variable types using the builtin types int,
float, str and datetime.date which allows for finer control of what type of
Python object is returned from cursor.callfunc() for example.
6) Added support for passing booleans to callproc() and callfunc() as
6) Added support for passing booleans to callproc() and callfunc() as
requested by Anana Aiyer.
7) Fixed support for 64-bit environments in Python 2.5.
8) Thanks to Filip Ballegeer and a number of his co-workers, an intermittent
7) Fixed support for 64-bit environments in Python 2.5.
8) Thanks to Filip Ballegeer and a number of his co-workers, an intermittent
crash was tracked down; specifically, if a connection is closed, then the
call to OCIStmtRelease() will free memory twice. Preventing the call when
the connection is closed solves the problem.
Changes from 4.2 to 4.2.1
1) Added additional type (NCLOB) to handle CLOBs that use the national
character set as requested by Chris Dunscombe.
2) Added support for returning cursors from functions as requested by Daniel
Steinmann.
3) Added support for getting/setting the "get" mode on session pools as
requested by Anand Aiyer.
4) Added support for binding subclassed cursors.
5) Fixed binding of decimal objects with absolute values less than 0.1.
Changes from 4.1.2 to 4.2
1) Added support for parsing an Oracle statement as requested by Patrick
Version 4.2.1
-------------
1) Added additional type (NCLOB) to handle CLOBs that use the national
character set as requested by Chris Dunscombe.
2) Added support for returning cursors from functions as requested by Daniel
Steinmann.
3) Added support for getting/setting the "get" mode on session pools as
requested by Anand Aiyer.
4) Added support for binding subclassed cursors.
5) Fixed binding of decimal objects with absolute values less than 0.1.
Version 4.2
-----------
1) Added support for parsing an Oracle statement as requested by Patrick
Blackwill.
2) Added support for BFILEs at the request of Matthew Cahn.
3) Added support for binding decimal.Decimal objects to cursors.
4) Added support for reading from NCLOBs as requested by Chris Dunscombe.
5) Added connection attributes encoding and nencoding which return the IANA
2) Added support for BFILEs at the request of Matthew Cahn.
3) Added support for binding decimal.Decimal objects to cursors.
4) Added support for reading from NCLOBs as requested by Chris Dunscombe.
5) Added connection attributes encoding and nencoding which return the IANA
character set name for the character set and national character set in use
by the client.
6) Rework module initialization to use the techniques recommended by the
6) Rework module initialization to use the techniques recommended by the
Python documentation as one user was experiencing random segfaults due
to the use of the module dictionary after the initialization was complete.
7) Removed support for the OPT_Threading attribute. Use the threaded keyword
7) Removed support for the OPT_Threading attribute. Use the threaded keyword
when creating connections and session pools instead.
8) Removed support for the OPT_NumbersAsStrings attribute. Use the
8) Removed support for the OPT_NumbersAsStrings attribute. Use the
numbersAsStrings attribute on cursors instead.
9) Use type long rather than type int in order to support long integers on
9) Use type long rather than type int in order to support long integers on
64-bit machines as reported by Uwe Hoffmann.
10) Add cursor attribute "bindarraysize" which is defaulted to 1 and is used
to determine the size of the arrays created for bind variables.
@ -352,77 +430,89 @@ Changes from 4.1.2 to 4.2
Forgeot d'Arc.
18) Fixed typo in error message.
Changes from 4.1.1 to 4.1.2
1) Restore support of Oracle 9i features when using the Oracle 10g client.
Changes from 4.1 to 4.1.1
1) Add support for dropping a connection from a session pool.
2) Add support for write only attributes "module", "action" and "clientinfo"
Version 4.1.2
-------------
1) Restore support of Oracle 9i features when using the Oracle 10g client.
Version 4.1.1
-------------
1) Add support for dropping a connection from a session pool.
2) Add support for write only attributes "module", "action" and "clientinfo"
which work only in Oracle 10g as requested by Egor Starostin.
3) Add support for pickling database errors.
4) Use the previously created bind variable as a template if available when
3) Add support for pickling database errors.
4) Use the previously created bind variable as a template if available when
creating a new variable of a larger size. Thanks to Ted Skolnick for the
initial patch.
5) Fixed tests to work properly in the Python 2.4 environment where dates and
5) Fixed tests to work properly in the Python 2.4 environment where dates and
timestamps are different Python types. Thanks to Henning von Bargen for
pointing this out.
6) Added additional directories to search for include files and libraries in
6) Added additional directories to search for include files and libraries in
order to better support the Oracle 10g instant client.
7) Set the internal fetch number to 0 in order to satisfy very picky source
7) Set the internal fetch number to 0 in order to satisfy very picky source
analysis tools as requested by Amaury Fogeot d'Arc.
8) Improve the documentation for building and installing the module from
8) Improve the documentation for building and installing the module from
source as some people are unaware of the standard methods for building
Python modules using distutils.
9) Added note in the documentation indicating that the arraysize attribute
9) Added note in the documentation indicating that the arraysize attribute
can drastically affect performance of queries since this seems to be a
common misunderstanding of first time users of cx_Oracle.
10) Add a comment indicating that on HP-UX Itanium with Oracle 10g the library
ttsh10 must alos be linked against. Thanks to Bernard Delmee for the
information.
Changes from 4.1 beta 1 to 4.1
1) Fixed bug where subclasses of Cursor do not pass the connection in the
Version 4.1
-----------
1) Fixed bug where subclasses of Cursor do not pass the connection in the
constructor causing a segfault.
2) DDL statements must be reparsed before execution as noted by Mihai
2) DDL statements must be reparsed before execution as noted by Mihai
Ibanescu.
3) Add support for setting input sizes by position.
4) Fixed problem with catching an exception during execute and then still
3) Add support for setting input sizes by position.
4) Fixed problem with catching an exception during execute and then still
attempting to perform a fetch afterwards as noted by Leith Parkin.
5) Rename the types so that they can be pickled and unpickled. Thanks to Harri
5) Rename the types so that they can be pickled and unpickled. Thanks to Harri
Pasanen for pointing out the problem.
6) Handle invalid NLS_LANG setting properly (Oracle seems to like to provide a
6) Handle invalid NLS_LANG setting properly (Oracle seems to like to provide a
handle back even though it is invalid) and determine the number of bytes
per character in order to allow for proper support in the future of
multibyte and variable width character sets.
7) Remove date checking from the native case since Python already checks that
7) Remove date checking from the native case since Python already checks that
dates are valid; enhance error message when invalid dates are encountered
so that additional processing can be done.
8) Fix bug executing SQL using numeric parameter names with predefined
8) Fix bug executing SQL using numeric parameter names with predefined
variables (such as what takes place when calling stored procedures with out
parameters).
9) Add support for reading CLOB values using multibyte or variable length
9) Add support for reading CLOB values using multibyte or variable length
character sets.
Changes from 4.0.1 to 4.1 beta 1
1) Added support for Python 2.4. In Python 2.4, the datetime module is used
Version 4.1 beta 1
------------------
1) Added support for Python 2.4. In Python 2.4, the datetime module is used
for both binding and fetching of date and timestamp data. In Python 2.3,
objects from the datetime module can be bound but the internal datetime
objects will be returned from queries.
2) Added pickling support for LOB and datetime data.
3) Fully qualified the table name that was missing in an alter table
2) Added pickling support for LOB and datetime data.
3) Fully qualified the table name that was missing in an alter table
statement in the setup test script as noted by Marc Gehling.
4) Added a section allowing for the setting of the RPATH linker directive in
4) Added a section allowing for the setting of the RPATH linker directive in
setup.py as requested by Iustin Pop.
5) Added code to raise a programming error exception when an attempt is made
5) Added code to raise a programming error exception when an attempt is made
to access a LOB locator variable in a subsequent fetch.
6) The username, password and dsn (tnsentry) are stored on the connection
6) The username, password and dsn (tnsentry) are stored on the connection
object when specified, regardless of whether or not a standard connection
takes place.
7) Added additional module level constant called "LOB" as requested by Joseph
7) Added additional module level constant called "LOB" as requested by Joseph
Canedo.
8) Changed exception type to IntegrityError for constraint violations as
8) Changed exception type to IntegrityError for constraint violations as
requested by Joseph Canedo.
9) If scale and precision are not specified, an attempt is made to return a
9) If scale and precision are not specified, an attempt is made to return a
long integer as requested by Joseph Canedo.
10) Added workaround for Oracle bug which returns an invalid handle when the
prepare call fails. Thanks to alantam@hsbc.com for providing the code that
@ -446,56 +536,62 @@ Changes from 4.0.1 to 4.1 beta 1
similar to method used in the datetime module.
18) Added support for binary_float and binary_double columns in Oracle 10g.
Changes from 4.0 to 4.0.1
1) Fixed bugs on 64-bit platforms that caused segmentation faults and bus
Version 4.0.1
-------------
1) Fixed bugs on 64-bit platforms that caused segmentation faults and bus
errors in session pooling and determining the bind variables associated
with a statement.
2) Modified test suite so that 64-bit platforms are tested properly.
3) Added missing commit statements in the test setup scripts. Thanks to Keith
2) Modified test suite so that 64-bit platforms are tested properly.
3) Added missing commit statements in the test setup scripts. Thanks to Keith
Lyon for pointing this out.
4) Fix setup.py for Cygwin environments. Thanks to Doug Henderson for
4) Fix setup.py for Cygwin environments. Thanks to Doug Henderson for
providing the necessary fix.
5) Added support for compiling cx_Oracle without thread support. Thanks to
5) Added support for compiling cx_Oracle without thread support. Thanks to
Andre Reitz for pointing this out.
6) Added support for a new keyword parameter called threaded on connections
6) Added support for a new keyword parameter called threaded on connections
and session pools. This parameter defaults to False and indicates whether
threaded mode ought to be used. It replaces the module level attribute
OPT_Threading although examining the attribute will be retained until the
next release at least.
7) Added support for a new keyword parameter called twophase on connections.
7) Added support for a new keyword parameter called twophase on connections.
This parameter defaults to False and indicates whether support for two
phase (distributed or global) transactions ought to be present. Note that
support for distributed transactions is buggy when crossing major version
boundaries (Oracle 8i to Oracle 9i for example).
8) Ensure that the rowcount attribute is set properly when an exception is
8) Ensure that the rowcount attribute is set properly when an exception is
raised during execution. Thanks to Gary Aviv for pointing out this problem
and its solution.
Changes from 3.1 to 4.0
1) Added support for subclassing connections, cursors and session pools. The
Version 4.0
-----------
1) Added support for subclassing connections, cursors and session pools. The
changes involved made it necessary to drop support for Python 2.1 and
earlier although a branch exists in CVS to allow for support of Python 2.1
and earlier if needed.
2) Connections and session pools can now be created with keyword parameters,
2) Connections and session pools can now be created with keyword parameters,
not just sequential parameters.
3) Queries now return integers whenever possible and long integers if the
3) Queries now return integers whenever possible and long integers if the
number will overflow a simple integer. Floats are only returned when it is
known that the number is a floating point number or the integer conversion
fails.
4) Added initial support for user callbacks on OCI functions. See the
4) Added initial support for user callbacks on OCI functions. See the
documentation for more details.
5) Add support for retrieving the bind variable names associated with a
5) Add support for retrieving the bind variable names associated with a
cursor with a new method bindnames().
6) Add support for temporary LOB variables. This means that setinputsizes()
6) Add support for temporary LOB variables. This means that setinputsizes()
can be used with the values CLOB and BLOB to create these temporary LOB
variables and allow for the equivalent of empty_clob() and empty_blob()
since otherwise Oracle will treat empty strings as NULL values.
7) Automatically switch to long strings when the data size exceeds the
7) Automatically switch to long strings when the data size exceeds the
maximum string size that Oracle allows (4000 characters) and raise an
error if an attempt is made to set a string variable to a size that it
does not support. This avoids truncation errors as reported by Jon Franz.
8) Add support for global (distributed) transactions and two phase commit.
9) Force the NLS settings for the session so that test tables are populated
8) Add support for global (distributed) transactions and two phase commit.
9) Force the NLS settings for the session so that test tables are populated
correctly in all circumstances; problems were noted by Ralf Braun and
Allan Poulsen.
10) Display error messages using the environment handle when the error handle
@ -510,26 +606,29 @@ Changes from 3.1 to 4.0
14) Removed module method attach(). This can be replaced with a call to
Connection(handle=) if needed.
Changes from 3.0a to 3.1
1) Added support for connecting with SYSDBA and SYSOPER access which is
Version 3.1
-----------
1) Added support for connecting with SYSDBA and SYSOPER access which is
needed for connecting as sys in Oracle 9i.
2) Only check the dictionary size if the variable is not NULL; otherwise, an
2) Only check the dictionary size if the variable is not NULL; otherwise, an
error takes place which is not caught or cleared; this eliminates a
spurious "Objects/dictobject.c:1258: bad argument to internal function" in
Python 2.3.
3) Add support for session pooling. This is only support for Oracle 9i but
3) Add support for session pooling. This is only support for Oracle 9i but
is amazingly fast -- about 100 times faster than connecting.
4) Add support for statement caching when pooling sessions, this reduces the
4) Add support for statement caching when pooling sessions, this reduces the
parse time considerably. Unfortunately, the Oracle OCI does not allow this
to be easily turned on for normal sessions.
5) Add method trim() on CLOB and BLOB variables for trimming the size.
6) Add support for externally identified users; to use this feature leave the
5) Add method trim() on CLOB and BLOB variables for trimming the size.
6) Add support for externally identified users; to use this feature leave the
username and password fields empty when connecting.
7) Add method cancel() on connection objects to cancel long running queries.
7) Add method cancel() on connection objects to cancel long running queries.
Note that this only works on non-Windows platforms.
8) Add method callfunc() on cursor objects to allow calling a function
8) Add method callfunc() on cursor objects to allow calling a function
without using an anonymous PL/SQL block.
9) Added documentation on objects that were not documented. At this point all
9) Added documentation on objects that were not documented. At this point all
objects, methods and constants in cx_Oracle have been documented.
10) Added support for timestamp columns in Oracle 9i.
11) Added module level method makedsn() which creates a data source name given
@ -541,47 +640,53 @@ Changes from 3.0a to 3.1
new bind taking place. This is more consistent with the DB API although
it does imply a performance penalty when used.
Changes from 3.0 to 3.0a
1) Fixed bug where zero length PL/SQL arrays were being mishandled
2) Fixed support for the data type "float" in Oracle; added one to the
Version 3.0a
------------
1) Fixed bug where zero length PL/SQL arrays were being mishandled
2) Fixed support for the data type "float" in Oracle; added one to the
display size to allow for the sign of the number, if necessary; changed
the display size of unconstrained numbers to 127, which is the largest
number that Oracle can handle
3) Added support for retrieving the description of a bound cursor before
3) Added support for retrieving the description of a bound cursor before
fetching it
4) Fixed a couple of build issues on Mac OS X, AIX and Solaris (64-bit)
5) Modified documentation slightly based on comments from several people
6) Included files in MANIFEST that are needed to generate the binaries
7) Modified test suite to work within the test environment at Computronix
4) Fixed a couple of build issues on Mac OS X, AIX and Solaris (64-bit)
5) Modified documentation slightly based on comments from several people
6) Included files in MANIFEST that are needed to generate the binaries
7) Modified test suite to work within the test environment at Computronix
as well as within the packages that are distributed
Changes from 2.5a to 3.0
1) Removed support for connection to Oracle7 databases; it is entirely
Version 3.0
-----------
1) Removed support for connection to Oracle7 databases; it is entirely
possible that it will still work but I no longer have any way of testing
and Oracle has dropped any meaningful support for Oracle7 anyway
2) Fetching of strings is now done with predefined memory areas rather than
2) Fetching of strings is now done with predefined memory areas rather than
dynamic memory areas; dynamic fetching of strings was causing problems
with Oracle 9i in some instances and databases using a different character
set other than US ASCII
3) Fixed bug where segfault would occur if the '/' character preceded the '@'
3) Fixed bug where segfault would occur if the '/' character preceded the '@'
character in a connect string
4) Added two new cursor methods var() and arrayvar() in order to eliminate
4) Added two new cursor methods var() and arrayvar() in order to eliminate
the need for setinputsizes() when defining PL/SQL arrays and as a generic
method of acquiring bind variables directly when needed
5) Fixed support for binding cursors and added support for fetching cursors
5) Fixed support for binding cursors and added support for fetching cursors
(these are known as ref cursors in PL/SQL).
6) Eliminated discrepancy between the array size used internally and the
6) Eliminated discrepancy between the array size used internally and the
array size specified by the interface user; this was done earlier to avoid
bus errors on 64-bit platforms but another way has been found to get
around that issue and a number of people were getting confused because of
the discrepancy
7) Added support for the attribute "connection" on cursors, an optional
7) Added support for the attribute "connection" on cursors, an optional
DB API extension
8) Added support for passing a dictionary as the second parameter for the
8) Added support for passing a dictionary as the second parameter for the
cursor.execute() method in order to comply with the DB API more closely;
the method of passing parameters with keyword arguments is still supported
and is in fact preferred
9) Added support for the attribute "statement" on cursors which is a
9) Added support for the attribute "statement" on cursors which is a
reference to the last SQL statement prepared or executed
10) Added support for passing any sequence to callproc() rather than just
lists as before
@ -597,29 +702,35 @@ Changes from 2.5a to 3.0
17) Added documentation in HTML format similar to the documentation for the
core Python library
Changes from 2.5 to 2.5a
1) Fix problem with Oracle 9i and retrieving strings; it seems that Oracle 9i
Version 2.5a
------------
1) Fix problem with Oracle 9i and retrieving strings; it seems that Oracle 9i
uses the correct method for dynamic callback but Oracle 8i will not work
with that method so an #ifdef was added to check for the existence of an
Oracle 9i feature; thanks to Paul Denize for discovering this problem
Changes from 2.4 to 2.5
1) Added flag OPT_NoOracle7 which, if set, assumes that connections are being
Version 2.5
-----------
1) Added flag OPT_NoOracle7 which, if set, assumes that connections are being
made to Oracle8 or higher databases; this allows for eliminating the
overhead in performing this check at connect time
2) Added flag OPT_NumbersAsStrings which, if set, returns all numbers as
2) Added flag OPT_NumbersAsStrings which, if set, returns all numbers as
strings rather than integers or floats; this flag is used when defined
variables are created (during select statements only)
3) Added flag OPT_Threading which, if set, uses OCI threading mode; there is a
3) Added flag OPT_Threading which, if set, uses OCI threading mode; there is a
significant performance degradation in this mode (about 15-20%) but it does
allow threads to share connections (threadsafety level 2 according to the
Python Database API 2.0); note that in order to support this, Oracle 8i or
higher is now required
4) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS pairs where
4) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS pairs where
applicable to support threading during blocking OCI calls
5) Added global method attach() to cx_Oracle to support attaching to an
5) Added global method attach() to cx_Oracle to support attaching to an
existing database handle (as provided by PowerBuilder, for example)
6) Eliminated the cursor method fetchbinds() which was used for returning the
6) Eliminated the cursor method fetchbinds() which was used for returning the
list of bind variables after execution to get the values of out variables;
the cursor method setinputsizes() was modified to return the list of bind
variables and the cursor method execute() was modified to return the list
@ -628,10 +739,10 @@ Changes from 2.4 to 2.5
get the value of a variable, setvalue(<pos>, <value>) to set its value and
copy(<var>, <src_pos>, <targ_pos>) to copy the value from a variable in a
more efficient manner than setvalue(getvalue())
7) Implemented cursor method executemany() which expects a list of
7) Implemented cursor method executemany() which expects a list of
dictionaries for the arguments
8) Implemented cursor method callproc()
9) Added cursr method prepare() which parses (prepares) the statement for
8) Implemented cursor method callproc()
9) Added cursor method prepare() which parses (prepares) the statement for
execution; subsequent execute() or executemany() calls can pass None as the
statement which will imply use of the previously prepared statement; used
for high performance only
@ -652,61 +763,67 @@ Changes from 2.4 to 2.5
16) Integrated patch from Benjamin Kearns to setup.py to support compilation
on Cygwin
Changes from 2.3 to 2.4
1) String variables can now be made any length (previously restricted to the
64K limit imposed by Oracle for default binding); use the type
cx_Oracle.LONG_STRING as the argument to setinputsizes() for binding in
string values larger than 4000 bytes.
2) Raw and long raw columns are now supported; use the types cx_Oracle.BINARY
and cx_Oracle.LONG_BINARY as the argument to setinputsizes() for binding in
values of these types.
3) Functions DateFromTicks(), TimeFromTicks() and TimestampFromTicks()
are now implemented.
4) Function cursor.setoutputsize() implemented
5) Added the ability to bind arrays as out parameters to procedures; use the
format [cx_Oracle.<DataType>, <NumElems>] as the input to the function
setinputsizes() for binding arrays
6) Discovered from the Oracle 8.1.6 version of the documentation of the OCI
libraries, that the size of the memory location required for the precision
variable is larger than the printed documentation says; this was causing a
problem with the code on the Sun platform.
7) Now support building RPMs for Linux.
Version 2.4
-----------
Changes from 2.2 to 2.3
1) String variables can now be made any length (previously restricted to the
64K limit imposed by Oracle for default binding); use the type
cx_Oracle.LONG_STRING as the argument to setinputsizes() for binding in
string values larger than 4000 bytes.
2) Raw and long raw columns are now supported; use the types cx_Oracle.BINARY
and cx_Oracle.LONG_BINARY as the argument to setinputsizes() for binding in
values of these types.
3) Functions DateFromTicks(), TimeFromTicks() and TimestampFromTicks()
are now implemented.
4) Function cursor.setoutputsize() implemented
5) Added the ability to bind arrays as out parameters to procedures; use the
format [cx_Oracle.<DataType>, <NumElems>] as the input to the function
setinputsizes() for binding arrays
6) Discovered from the Oracle 8.1.6 version of the documentation of the OCI
libraries, that the size of the memory location required for the precision
variable is larger than the printed documentation says; this was causing a
problem with the code on the Sun platform.
7) Now support building RPMs for Linux.
1) Incremental performance enhancements (dealing with reusing cursors and
Version 2.3
-----------
1) Incremental performance enhancements (dealing with reusing cursors and
bind handles)
2) Ensured that arrays of integers with a single float in them are all
2) Ensured that arrays of integers with a single float in them are all
treated as floats, as suggested by Martin Koch.
3) Fixed code dealing with scale and precision for both defining a numeric
3) Fixed code dealing with scale and precision for both defining a numeric
variable and for providing the cursor description; this eliminates the
problem of an underflow error (OCI-22054) when retrieving data with
non-zero scale.
Changes from 2.1 to 2.2
1) Upgraded thread safety to level 1 (according to the Python DB API 2.0) as
Version 2.2
-----------
1) Upgraded thread safety to level 1 (according to the Python DB API 2.0) as
an internal project required the ability to share the module between
threads.
2) Added ability to bind ref cursors to PL/SQL blocks as requested by
2) Added ability to bind ref cursors to PL/SQL blocks as requested by
Brad Powell.
3) Added function write(Value, [Offset]) to LOB variables as requested by
3) Added function write(Value, [Offset]) to LOB variables as requested by
Matthias Kirst.
4) Procedure execute() on Cursor objects now permits a value None for the
4) Procedure execute() on Cursor objects now permits a value None for the
statement which means that the previously prepared statement will be
executed and any input sizes set earlier will be retained. This was done to
improve the performance of scripts that execute one statement many times.
5) Modified module global constants BINARY and DATETIME to point to the
5) Modified module global constants BINARY and DATETIME to point to the
external representations of those types so that the expression
type(var) == cx_Oracle.DATETIME will work as expected.
6) Added global constant version to provide means of determining the current
6) Added global constant version to provide means of determining the current
version of the module.
7) Modified error checking routine to distinguish between an Oracle error and
7) Modified error checking routine to distinguish between an Oracle error and
invalid handles.
8) Added error checking to avoid setting the value of a bind variable to a
8) Added error checking to avoid setting the value of a bind variable to a
value that it cannot support and raised an exception to indicate this fact.
9) Added extra compile arguments for the AIX platform as suggested by Jehwan
9) Added extra compile arguments for the AIX platform as suggested by Jehwan
Ryu.
10) Added section to the README to indicate the method for a binary
installation as suggested by Steve Holden.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

View File

@ -1,540 +0,0 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
}
div.sphinxsidebar #searchbox input[type="submit"] {
width: 30px;
}
img {
border: 0;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- general body styles --------------------------------------------------- */
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- other body styles ----------------------------------------------------- */
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;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, .highlighted {
background-color: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.refcount {
color: #060;
}
.optional {
font-size: 1.3em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
tt.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
tt.descclassname {
background-color: transparent;
}
tt.xref, a tt {
background-color: transparent;
font-weight: bold;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -1,256 +0,0 @@
/*
* default.css_t
* ~~~~~~~~~~~~~
*
* Sphinx stylesheet -- default theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: sans-serif;
font-size: 100%;
background-color: #11303d;
color: #000;
margin: 0;
padding: 0;
}
div.document {
background-color: #1c4e63;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 230px;
}
div.body {
background-color: #ffffff;
color: #000000;
padding: 0 20px 30px 20px;
}
div.footer {
color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #ffffff;
text-decoration: underline;
}
div.related {
background-color: #133f52;
line-height: 30px;
color: #ffffff;
}
div.related a {
color: #ffffff;
}
div.sphinxsidebar {
}
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
}
div.sphinxsidebar h3 a {
color: #ffffff;
}
div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
padding: 0;
}
div.sphinxsidebar p {
color: #ffffff;
}
div.sphinxsidebar p.topless {
margin: 5px 10px 10px 10px;
}
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
color: #ffffff;
}
div.sphinxsidebar a {
color: #98dbcc;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
/* -- hyperlink styles ------------------------------------------------------ */
a {
color: #355f7c;
text-decoration: none;
}
a:visited {
color: #355f7c;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* -- body styles ----------------------------------------------------------- */
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Trebuchet MS', sans-serif;
background-color: #f2f2f2;
font-weight: normal;
color: #20435c;
border-bottom: 1px solid #ccc;
margin: 20px -20px 10px -20px;
padding: 3px 0 3px 10px;
}
div.body h1 { margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 160%; }
div.body h3 { font-size: 140%; }
div.body h4 { font-size: 120%; }
div.body h5 { font-size: 110%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
text-align: justify;
line-height: 130%;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.admonition p {
margin-bottom: 5px;
}
div.admonition pre {
margin-bottom: 5px;
}
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 5px;
background-color: #eeffcc;
color: #333333;
line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
}
tt {
background-color: #ecf0f3;
padding: 0 1px 0 1px;
font-size: 0.95em;
}
th {
background-color: #ede;
}
.warning tt {
background: #efc2c2;
}
.note tt {
background: #d6d6d6;
}
.viewcode-back {
font-family: sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

View File

@ -1,247 +0,0 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
}
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s == 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* small function to check if an array contains
* a given item.
*/
jQuery.contains = function(arr, item) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item)
return true;
}
return false;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node) {
if (node.nodeType == 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
var span = document.createElement("span");
span.className = className;
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this);
});
}
}
return this.each(function() {
highlight(this);
});
};
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
LOCALE : 'unknown',
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated == 'undefined')
return string;
return (typeof translated == 'string') ? translated : translated[0];
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated == 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) == 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
},
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this == '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

154
html/_static/jquery.js vendored
View File

@ -1,154 +0,0 @@
/*!
* jQuery JavaScript Library v1.4.2
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Sat Feb 13 22:33:48 2010 -0500
*/
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

View File

@ -1,62 +0,0 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #303030 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0040D0 } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

View File

@ -1,560 +0,0 @@
/*
* searchtools.js_t
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilties for the full-text search.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words, hlwords is the list of normal, unstemmed
* words. the first one is used to find the occurance, the
* latter for highlighting it.
*/
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
var i = textLower.indexOf(this.toLowerCase());
if (i > -1)
start = i;
});
start = Math.max(start - 120, 0);
var excerpt = ((start > 0) ? '...' : '') +
$.trim(text.substr(start, 240)) +
((start + 240 - text.length) ? '...' : '');
var rv = $('<div class="context"></div>').text(excerpt);
$.each(hlwords, function() {
rv = rv.highlightText(this, 'highlighted');
});
return rv;
}
/**
* Porter Stemmer
*/
var Stemmer = function() {
var step2list = {
ational: 'ate',
tional: 'tion',
enci: 'ence',
anci: 'ance',
izer: 'ize',
bli: 'ble',
alli: 'al',
entli: 'ent',
eli: 'e',
ousli: 'ous',
ization: 'ize',
ation: 'ate',
ator: 'ate',
alism: 'al',
iveness: 'ive',
fulness: 'ful',
ousness: 'ous',
aliti: 'al',
iviti: 'ive',
biliti: 'ble',
logi: 'log'
};
var step3list = {
icate: 'ic',
ative: '',
alize: 'al',
iciti: 'ic',
ical: 'ic',
ful: '',
ness: ''
};
var c = "[^aeiou]"; // consonant
var v = "[aeiouy]"; // vowel
var C = c + "[^aeiouy]*"; // consonant sequence
var V = v + "[aeiou]*"; // vowel sequence
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
var s_v = "^(" + C + ")?" + v; // vowel in stem
this.stemWord = function (w) {
var stem;
var suffix;
var firstch;
var origword = w;
if (w.length < 3)
return w;
var re;
var re2;
var re3;
var re4;
firstch = w.substr(0,1);
if (firstch == "y")
w = firstch.toUpperCase() + w.substr(1);
// Step 1a
re = /^(.+?)(ss|i)es$/;
re2 = /^(.+?)([^s])s$/;
if (re.test(w))
w = w.replace(re,"$1$2");
else if (re2.test(w))
w = w.replace(re2,"$1$2");
// Step 1b
re = /^(.+?)eed$/;
re2 = /^(.+?)(ed|ing)$/;
if (re.test(w)) {
var fp = re.exec(w);
re = new RegExp(mgr0);
if (re.test(fp[1])) {
re = /.$/;
w = w.replace(re,"");
}
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1];
re2 = new RegExp(s_v);
if (re2.test(stem)) {
w = stem;
re2 = /(at|bl|iz)$/;
re3 = new RegExp("([^aeiouylsz])\\1$");
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re2.test(w))
w = w + "e";
else if (re3.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
else if (re4.test(w))
w = w + "e";
}
}
// Step 1c
re = /^(.+?)y$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(s_v);
if (re.test(stem))
w = stem + "i";
}
// Step 2
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step2list[suffix];
}
// Step 3
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step3list[suffix];
}
// Step 4
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
re2 = /^(.+?)(s|t)(ion)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
if (re.test(stem))
w = stem;
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1] + fp[2];
re2 = new RegExp(mgr1);
if (re2.test(stem))
w = stem;
}
// Step 5
re = /^(.+?)e$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
re2 = new RegExp(meq1);
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
w = stem;
}
re = /ll$/;
re2 = new RegExp(mgr1);
if (re.test(w) && re2.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
// and turn initial Y back to y
if (firstch == "y")
w = firstch.toLowerCase() + w.substr(1);
return w;
}
}
/**
* Search Module
*/
var Search = {
_index : null,
_queued_query : null,
_pulse_status : -1,
init : function() {
var params = $.getQueryParameters();
if (params.q) {
var query = params.q[0];
$('input[name="q"]')[0].value = query;
this.performSearch(query);
}
},
loadIndex : function(url) {
$.ajax({type: "GET", url: url, data: null, success: null,
dataType: "script", cache: true});
},
setIndex : function(index) {
var q;
this._index = index;
if ((q = this._queued_query) !== null) {
this._queued_query = null;
Search.query(q);
}
},
hasIndex : function() {
return this._index !== null;
},
deferQuery : function(query) {
this._queued_query = query;
},
stopPulse : function() {
this._pulse_status = 0;
},
startPulse : function() {
if (this._pulse_status >= 0)
return;
function pulse() {
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
for (var i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
};
pulse();
},
/**
* perform a search for something
*/
performSearch : function(query) {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p style="display: none"></p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
this.startPulse();
// index already loaded, the browser was quick!
if (this.hasIndex())
this.query(query);
else
this.deferQuery(query);
},
query : function(query) {
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
// Stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
var tmp = query.split(/\s+/);
var objectterms = [];
for (var i = 0; i < tmp.length; i++) {
if (tmp[i] != "") {
objectterms.push(tmp[i].toLowerCase());
}
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
tmp[i] == "") {
// skip this "word"
continue;
}
// stem the word
var word = stemmer.stemWord(tmp[i]).toLowerCase();
// select the correct list
if (word[0] == '-') {
var toAppend = excluded;
word = word.substr(1);
}
else {
var toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
}
// only add if not already in the list
if (!$.contains(toAppend, word))
toAppend.push(word);
};
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
// console.info('required: ', searchterms);
// console.info('excluded: ', excluded);
// prepare search
var filenames = this._index.filenames;
var titles = this._index.titles;
var terms = this._index.terms;
var fileMap = {};
var files = null;
// different result priorities
var importantResults = [];
var objectResults = [];
var regularResults = [];
var unimportantResults = [];
$('#search-progress').empty();
// lookup as object
for (var i = 0; i < objectterms.length; i++) {
var others = [].concat(objectterms.slice(0,i),
objectterms.slice(i+1, objectterms.length))
var results = this.performObjectSearch(objectterms[i], others);
// Assume first word is most likely to be the object,
// other words more likely to be in description.
// Therefore put matches for earlier words first.
// (Results are eventually used in reverse order).
objectResults = results[0].concat(objectResults);
importantResults = results[1].concat(importantResults);
unimportantResults = results[2].concat(unimportantResults);
}
// perform the search on the required terms
for (var i = 0; i < searchterms.length; i++) {
var word = searchterms[i];
// no match but word was a required one
if ((files = terms[word]) == null)
break;
if (files.length == undefined) {
files = [files];
}
// create the mapping
for (var j = 0; j < files.length; j++) {
var file = files[j];
if (file in fileMap)
fileMap[file].push(word);
else
fileMap[file] = [word];
}
}
// now check if the files don't contain excluded terms
for (var file in fileMap) {
var valid = true;
// check if all requirements are matched
if (fileMap[file].length != searchterms.length)
continue;
// ensure that none of the excluded terms is in the
// search result.
for (var i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file ||
$.contains(terms[excluded[i]] || [], file)) {
valid = false;
break;
}
}
// if we have still a valid result we can add it
// to the result list
if (valid)
regularResults.push([filenames[file], titles[file], '', null]);
}
// delete unused variables in order to not waste
// memory until list is retrieved completely
delete filenames, titles, terms;
// now sort the regular results descending by title
regularResults.sort(function(a, b) {
var left = a[1].toLowerCase();
var right = b[1].toLowerCase();
return (left > right) ? -1 : ((left < right) ? 1 : 0);
});
// combine all results
var results = unimportantResults.concat(regularResults)
.concat(objectResults).concat(importantResults);
// print the results
var resultCount = results.length;
function displayNextItem() {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
var listItem = $('<li style="display:none"></li>');
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
listItem.append($('<a/>').attr('href',
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
highlightstring + item[2]).html(item[1]));
} else {
// normal html builders
listItem.append($('<a/>').attr('href',
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
highlightstring + item[2]).html(item[1]));
}
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
item[0] + '.txt', function(data) {
if (data != '') {
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
Search.output.append(listItem);
}
listItem.slideDown(5, function() {
displayNextItem();
});
}, "text");
} else {
// no source available, just display title
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
}
}
// search finished, update title and status message
else {
Search.stopPulse();
Search.title.text(_('Search Results'));
if (!resultCount)
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
else
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
Search.status.fadeIn(500);
}
}
displayNextItem();
},
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
var importantResults = [];
var objectResults = [];
var unimportantResults = [];
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
if (fullname.toLowerCase().indexOf(object) > -1) {
var match = objects[prefix][name];
var objname = objnames[match[1]][2];
var title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
if (otherterms.length > 0) {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
for (var i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
}
}
if (!allfound) {
continue;
}
}
var descr = objname + _(', in ') + title;
anchor = match[3];
if (anchor == '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
result = [filenames[match[0]], fullname, '#'+anchor, descr];
switch (match[2]) {
case 1: objectResults.push(result); break;
case 0: importantResults.push(result); break;
case 2: unimportantResults.push(result); break;
}
}
}
}
// sort results descending
objectResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
importantResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
unimportantResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
return [importantResults, objectResults, unimportantResults]
}
}
$(document).ready(function() {
Search.init();
});

View File

@ -1,151 +0,0 @@
/*
* sidebar.js
* ~~~~~~~~~~
*
* This script makes the Sphinx sidebar collapsible.
*
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
* used to collapse and expand the sidebar.
*
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
* and the width of the sidebar and the margin-left of the document
* are decreased. When the sidebar is expanded the opposite happens.
* This script saves a per-browser/per-session cookie used to
* remember the position of the sidebar among the pages.
* Once the browser is closed the cookie is deleted and the position
* reset to the default (expanded).
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
$(function() {
// global elements used by the functions.
// the 'sidebarbutton' element is defined as global after its
// creation, in the add_sidebar_button function
var bodywrapper = $('.bodywrapper');
var sidebar = $('.sphinxsidebar');
var sidebarwrapper = $('.sphinxsidebarwrapper');
// for some reason, the document has no sidebar; do not run into errors
if (!sidebar.length) return;
// original margin-left of the bodywrapper and width of the sidebar
// with the sidebar expanded
var bw_margin_expanded = bodywrapper.css('margin-left');
var ssb_width_expanded = sidebar.width();
// margin-left of the bodywrapper and width of the sidebar
// with the sidebar collapsed
var bw_margin_collapsed = '.8em';
var ssb_width_collapsed = '.8em';
// colors used by the current theme
var dark_color = $('.related').css('background-color');
var light_color = $('.document').css('background-color');
function sidebar_is_collapsed() {
return sidebarwrapper.is(':not(:visible)');
}
function toggle_sidebar() {
if (sidebar_is_collapsed())
expand_sidebar();
else
collapse_sidebar();
}
function collapse_sidebar() {
sidebarwrapper.hide();
sidebar.css('width', ssb_width_collapsed);
bodywrapper.css('margin-left', bw_margin_collapsed);
sidebarbutton.css({
'margin-left': '0',
'height': bodywrapper.height()
});
sidebarbutton.find('span').text('»');
sidebarbutton.attr('title', _('Expand sidebar'));
document.cookie = 'sidebar=collapsed';
}
function expand_sidebar() {
bodywrapper.css('margin-left', bw_margin_expanded);
sidebar.css('width', ssb_width_expanded);
sidebarwrapper.show();
sidebarbutton.css({
'margin-left': ssb_width_expanded-12,
'height': bodywrapper.height()
});
sidebarbutton.find('span').text('«');
sidebarbutton.attr('title', _('Collapse sidebar'));
document.cookie = 'sidebar=expanded';
}
function add_sidebar_button() {
sidebarwrapper.css({
'float': 'left',
'margin-right': '0',
'width': ssb_width_expanded - 28
});
// create the button
sidebar.append(
'<div id="sidebarbutton"><span>&laquo;</span></div>'
);
var sidebarbutton = $('#sidebarbutton');
light_color = sidebarbutton.css('background-color');
// find the height of the viewport to center the '<<' in the page
var viewport_height;
if (window.innerHeight)
viewport_height = window.innerHeight;
else
viewport_height = $(window).height();
sidebarbutton.find('span').css({
'display': 'block',
'margin-top': (viewport_height - sidebar.position().top - 20) / 2
});
sidebarbutton.click(toggle_sidebar);
sidebarbutton.attr('title', _('Collapse sidebar'));
sidebarbutton.css({
'color': '#FFFFFF',
'border-left': '1px solid ' + dark_color,
'font-size': '1.2em',
'cursor': 'pointer',
'height': bodywrapper.height(),
'padding-top': '1px',
'margin-left': ssb_width_expanded - 12
});
sidebarbutton.hover(
function () {
$(this).css('background-color', dark_color);
},
function () {
$(this).css('background-color', light_color);
}
);
}
function set_position_from_cookie() {
if (!document.cookie)
return;
var items = document.cookie.split(';');
for(var k=0; k<items.length; k++) {
var key_val = items[k].split('=');
var key = key_val[0];
if (key == 'sidebar') {
var value = key_val[1];
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
collapse_sidebar();
else if ((value == 'expanded') && (sidebar_is_collapsed()))
expand_sidebar();
}
}
}
add_sidebar_button();
var sidebarbutton = $('#sidebarbutton');
set_position_from_cookie();
});

View File

@ -1,23 +0,0 @@
// Underscore.js 0.5.5
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the terms of the MIT license.
// Portions of Underscore are inspired by or borrowed from Prototype.js,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore/
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

View File

@ -1,808 +0,0 @@
/*
* websupport.js
* ~~~~~~~~~~~~~
*
* sphinx.websupport utilties for all documentation.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
(function($) {
$.fn.autogrow = function() {
return this.each(function() {
var textarea = this;
$.fn.autogrow.resize(textarea);
$(textarea)
.focus(function() {
textarea.interval = setInterval(function() {
$.fn.autogrow.resize(textarea);
}, 500);
})
.blur(function() {
clearInterval(textarea.interval);
});
});
};
$.fn.autogrow.resize = function(textarea) {
var lineHeight = parseInt($(textarea).css('line-height'), 10);
var lines = textarea.value.split('\n');
var columns = textarea.cols;
var lineCount = 0;
$.each(lines, function() {
lineCount += Math.ceil(this.length / columns) || 1;
});
var height = lineHeight * (lineCount + 1);
$(textarea).css('height', height);
};
})(jQuery);
(function($) {
var comp, by;
function init() {
initEvents();
initComparator();
}
function initEvents() {
$('a.comment-close').live("click", function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
});
$('a.vote').live("click", function(event) {
event.preventDefault();
handleVote($(this));
});
$('a.reply').live("click", function(event) {
event.preventDefault();
openReply($(this).attr('id').substring(2));
});
$('a.close-reply').live("click", function(event) {
event.preventDefault();
closeReply($(this).attr('id').substring(2));
});
$('a.sort-option').live("click", function(event) {
event.preventDefault();
handleReSort($(this));
});
$('a.show-proposal').live("click", function(event) {
event.preventDefault();
showProposal($(this).attr('id').substring(2));
});
$('a.hide-proposal').live("click", function(event) {
event.preventDefault();
hideProposal($(this).attr('id').substring(2));
});
$('a.show-propose-change').live("click", function(event) {
event.preventDefault();
showProposeChange($(this).attr('id').substring(2));
});
$('a.hide-propose-change').live("click", function(event) {
event.preventDefault();
hideProposeChange($(this).attr('id').substring(2));
});
$('a.accept-comment').live("click", function(event) {
event.preventDefault();
acceptComment($(this).attr('id').substring(2));
});
$('a.delete-comment').live("click", function(event) {
event.preventDefault();
deleteComment($(this).attr('id').substring(2));
});
$('a.comment-markup').live("click", function(event) {
event.preventDefault();
toggleCommentMarkupBox($(this).attr('id').substring(2));
});
}
/**
* Set comp, which is a comparator function used for sorting and
* inserting comments into the list.
*/
function setComparator() {
// If the first three letters are "asc", sort in ascending order
// and remove the prefix.
if (by.substring(0,3) == 'asc') {
var i = by.substring(3);
comp = function(a, b) { return a[i] - b[i]; };
} else {
// Otherwise sort in descending order.
comp = function(a, b) { return b[by] - a[by]; };
}
// Reset link styles and format the selected sort option.
$('a.sel').attr('href', '#').removeClass('sel');
$('a.by' + by).removeAttr('href').addClass('sel');
}
/**
* Create a comp function. If the user has preferences stored in
* the sortBy cookie, use those, otherwise use the default.
*/
function initComparator() {
by = 'rating'; // Default to sort by rating.
// If the sortBy cookie is set, use that instead.
if (document.cookie.length > 0) {
var start = document.cookie.indexOf('sortBy=');
if (start != -1) {
start = start + 7;
var end = document.cookie.indexOf(";", start);
if (end == -1) {
end = document.cookie.length;
by = unescape(document.cookie.substring(start, end));
}
}
}
setComparator();
}
/**
* Show a comment div.
*/
function show(id) {
$('#ao' + id).hide();
$('#ah' + id).show();
var context = $.extend({id: id}, opts);
var popup = $(renderTemplate(popupTemplate, context)).hide();
popup.find('textarea[name="proposal"]').hide();
popup.find('a.by' + by).addClass('sel');
var form = popup.find('#cf' + id);
form.submit(function(event) {
event.preventDefault();
addComment(form);
});
$('#s' + id).after(popup);
popup.slideDown('fast', function() {
getComments(id);
});
}
/**
* Hide a comment div.
*/
function hide(id) {
$('#ah' + id).hide();
$('#ao' + id).show();
var div = $('#sc' + id);
div.slideUp('fast', function() {
div.remove();
});
}
/**
* Perform an ajax request to get comments for a node
* and insert the comments into the comments tree.
*/
function getComments(id) {
$.ajax({
type: 'GET',
url: opts.getCommentsURL,
data: {node: id},
success: function(data, textStatus, request) {
var ul = $('#cl' + id);
var speed = 100;
$('#cf' + id)
.find('textarea[name="proposal"]')
.data('source', data.source);
if (data.comments.length === 0) {
ul.html('<li>No comments yet.</li>');
ul.data('empty', true);
} else {
// If there are comments, sort them and put them in the list.
var comments = sortComments(data.comments);
speed = data.comments.length * 100;
appendComments(comments, ul);
ul.data('empty', false);
}
$('#cn' + id).slideUp(speed + 200);
ul.slideDown(speed);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem retrieving the comments.');
},
dataType: 'json'
});
}
/**
* Add a comment via ajax and insert the comment into the comment tree.
*/
function addComment(form) {
var node_id = form.find('input[name="node"]').val();
var parent_id = form.find('input[name="parent"]').val();
var text = form.find('textarea[name="comment"]').val();
var proposal = form.find('textarea[name="proposal"]').val();
if (text == '') {
showError('Please enter a comment.');
return;
}
// Disable the form that is being submitted.
form.find('textarea,input').attr('disabled', 'disabled');
// Send the comment to the server.
$.ajax({
type: "POST",
url: opts.addCommentURL,
dataType: 'json',
data: {
node: node_id,
parent: parent_id,
text: text,
proposal: proposal
},
success: function(data, textStatus, error) {
// Reset the form.
if (node_id) {
hideProposeChange(node_id);
}
form.find('textarea')
.val('')
.add(form.find('input'))
.removeAttr('disabled');
var ul = $('#cl' + (node_id || parent_id));
if (ul.data('empty')) {
$(ul).empty();
ul.data('empty', false);
}
insertComment(data.comment);
var ao = $('#ao' + node_id);
ao.find('img').attr({'src': opts.commentBrightImage});
if (node_id) {
// if this was a "root" comment, remove the commenting box
// (the user can get it back by reopening the comment popup)
$('#ca' + node_id).slideUp();
}
},
error: function(request, textStatus, error) {
form.find('textarea,input').removeAttr('disabled');
showError('Oops, there was a problem adding the comment.');
}
});
}
/**
* Recursively append comments to the main comment list and children
* lists, creating the comment tree.
*/
function appendComments(comments, ul) {
$.each(comments, function() {
var div = createCommentDiv(this);
ul.append($(document.createElement('li')).html(div));
appendComments(this.children, div.find('ul.comment-children'));
// To avoid stagnating data, don't store the comments children in data.
this.children = null;
div.data('comment', this);
});
}
/**
* After adding a new comment, it must be inserted in the correct
* location in the comment tree.
*/
function insertComment(comment) {
var div = createCommentDiv(comment);
// To avoid stagnating data, don't store the comments children in data.
comment.children = null;
div.data('comment', comment);
var ul = $('#cl' + (comment.node || comment.parent));
var siblings = getChildren(ul);
var li = $(document.createElement('li'));
li.hide();
// Determine where in the parents children list to insert this comment.
for(i=0; i < siblings.length; i++) {
if (comp(comment, siblings[i]) <= 0) {
$('#cd' + siblings[i].id)
.parent()
.before(li.html(div));
li.slideDown('fast');
return;
}
}
// If we get here, this comment rates lower than all the others,
// or it is the only comment in the list.
ul.append(li.html(div));
li.slideDown('fast');
}
function acceptComment(id) {
$.ajax({
type: 'POST',
url: opts.acceptCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
$('#cm' + id).fadeOut('fast');
$('#cd' + id).removeClass('moderate');
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem accepting the comment.');
}
});
}
function deleteComment(id) {
$.ajax({
type: 'POST',
url: opts.deleteCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
var div = $('#cd' + id);
if (data == 'delete') {
// Moderator mode: remove the comment and all children immediately
div.slideUp('fast', function() {
div.remove();
});
return;
}
// User mode: only mark the comment as deleted
div
.find('span.user-id:first')
.text('[deleted]').end()
.find('div.comment-text:first')
.text('[deleted]').end()
.find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
.remove();
var comment = div.data('comment');
comment.username = '[deleted]';
comment.text = '[deleted]';
div.data('comment', comment);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem deleting the comment.');
}
});
}
function showProposal(id) {
$('#sp' + id).hide();
$('#hp' + id).show();
$('#pr' + id).slideDown('fast');
}
function hideProposal(id) {
$('#hp' + id).hide();
$('#sp' + id).show();
$('#pr' + id).slideUp('fast');
}
function showProposeChange(id) {
$('#pc' + id).hide();
$('#hc' + id).show();
var textarea = $('#pt' + id);
textarea.val(textarea.data('source'));
$.fn.autogrow.resize(textarea[0]);
textarea.slideDown('fast');
}
function hideProposeChange(id) {
$('#hc' + id).hide();
$('#pc' + id).show();
var textarea = $('#pt' + id);
textarea.val('').removeAttr('disabled');
textarea.slideUp('fast');
}
function toggleCommentMarkupBox(id) {
$('#mb' + id).toggle();
}
/** Handle when the user clicks on a sort by link. */
function handleReSort(link) {
var classes = link.attr('class').split(/\s+/);
for (var i=0; i<classes.length; i++) {
if (classes[i] != 'sort-option') {
by = classes[i].substring(2);
}
}
setComparator();
// Save/update the sortBy cookie.
var expiration = new Date();
expiration.setDate(expiration.getDate() + 365);
document.cookie= 'sortBy=' + escape(by) +
';expires=' + expiration.toUTCString();
$('ul.comment-ul').each(function(index, ul) {
var comments = getChildren($(ul), true);
comments = sortComments(comments);
appendComments(comments, $(ul).empty());
});
}
/**
* Function to process a vote when a user clicks an arrow.
*/
function handleVote(link) {
if (!opts.voting) {
showError("You'll need to login to vote.");
return;
}
var id = link.attr('id');
if (!id) {
// Didn't click on one of the voting arrows.
return;
}
// If it is an unvote, the new vote value is 0,
// Otherwise it's 1 for an upvote, or -1 for a downvote.
var value = 0;
if (id.charAt(1) != 'u') {
value = id.charAt(0) == 'u' ? 1 : -1;
}
// The data to be sent to the server.
var d = {
comment_id: id.substring(2),
value: value
};
// Swap the vote and unvote links.
link.hide();
$('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
.show();
// The div the comment is displayed in.
var div = $('div#cd' + d.comment_id);
var data = div.data('comment');
// If this is not an unvote, and the other vote arrow has
// already been pressed, unpress it.
if ((d.value !== 0) && (data.vote === d.value * -1)) {
$('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
$('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
}
// Update the comments rating in the local data.
data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
data.vote = d.value;
div.data('comment', data);
// Change the rating text.
div.find('.rating:first')
.text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
// Send the vote information to the server.
$.ajax({
type: "POST",
url: opts.processVoteURL,
data: d,
error: function(request, textStatus, error) {
showError('Oops, there was a problem casting that vote.');
}
});
}
/**
* Open a reply form used to reply to an existing comment.
*/
function openReply(id) {
// Swap out the reply link for the hide link
$('#rl' + id).hide();
$('#cr' + id).show();
// Add the reply li to the children ul.
var div = $(renderTemplate(replyTemplate, {id: id})).hide();
$('#cl' + id)
.prepend(div)
// Setup the submit handler for the reply form.
.find('#rf' + id)
.submit(function(event) {
event.preventDefault();
addComment($('#rf' + id));
closeReply(id);
})
.find('input[type=button]')
.click(function() {
closeReply(id);
});
div.slideDown('fast', function() {
$('#rf' + id).find('textarea').focus();
});
}
/**
* Close the reply form opened with openReply.
*/
function closeReply(id) {
// Remove the reply div from the DOM.
$('#rd' + id).slideUp('fast', function() {
$(this).remove();
});
// Swap out the hide link for the reply link
$('#cr' + id).hide();
$('#rl' + id).show();
}
/**
* Recursively sort a tree of comments using the comp comparator.
*/
function sortComments(comments) {
comments.sort(comp);
$.each(comments, function() {
this.children = sortComments(this.children);
});
return comments;
}
/**
* Get the children comments from a ul. If recursive is true,
* recursively include childrens' children.
*/
function getChildren(ul, recursive) {
var children = [];
ul.children().children("[id^='cd']")
.each(function() {
var comment = $(this).data('comment');
if (recursive)
comment.children = getChildren($(this).find('#cl' + comment.id), true);
children.push(comment);
});
return children;
}
/** Create a div to display a comment in. */
function createCommentDiv(comment) {
if (!comment.displayed && !opts.moderator) {
return $('<div class="moderate">Thank you! Your comment will show up '
+ 'once it is has been approved by a moderator.</div>');
}
// Prettify the comment rating.
comment.pretty_rating = comment.rating + ' point' +
(comment.rating == 1 ? '' : 's');
// Make a class (for displaying not yet moderated comments differently)
comment.css_class = comment.displayed ? '' : ' moderate';
// Create a div for this comment.
var context = $.extend({}, opts, comment);
var div = $(renderTemplate(commentTemplate, context));
// If the user has voted on this comment, highlight the correct arrow.
if (comment.vote) {
var direction = (comment.vote == 1) ? 'u' : 'd';
div.find('#' + direction + 'v' + comment.id).hide();
div.find('#' + direction + 'u' + comment.id).show();
}
if (opts.moderator || comment.text != '[deleted]') {
div.find('a.reply').show();
if (comment.proposal_diff)
div.find('#sp' + comment.id).show();
if (opts.moderator && !comment.displayed)
div.find('#cm' + comment.id).show();
if (opts.moderator || (opts.username == comment.username))
div.find('#dc' + comment.id).show();
}
return div;
}
/**
* A simple template renderer. Placeholders such as <%id%> are replaced
* by context['id'] with items being escaped. Placeholders such as <#id#>
* are not escaped.
*/
function renderTemplate(template, context) {
var esc = $(document.createElement('div'));
function handle(ph, escape) {
var cur = context;
$.each(ph.split('.'), function() {
cur = cur[this];
});
return escape ? esc.text(cur || "").html() : cur;
}
return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
return handle(arguments[2], arguments[1] == '%' ? true : false);
});
}
/** Flash an error message briefly. */
function showError(message) {
$(document.createElement('div')).attr({'class': 'popup-error'})
.append($(document.createElement('div'))
.attr({'class': 'error-message'}).text(message))
.appendTo('body')
.fadeIn("slow")
.delay(2000)
.fadeOut("slow");
}
/** Add a link the user uses to open the comments popup. */
$.fn.comment = function() {
return this.each(function() {
var id = $(this).attr('id').substring(1);
var count = COMMENT_METADATA[id];
var title = count + ' comment' + (count == 1 ? '' : 's');
var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
var addcls = count == 0 ? ' nocomment' : '';
$(this)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-open' + addcls,
id: 'ao' + id
})
.append($(document.createElement('img')).attr({
src: image,
alt: 'comment',
title: title
}))
.click(function(event) {
event.preventDefault();
show($(this).attr('id').substring(2));
})
)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-close hidden',
id: 'ah' + id
})
.append($(document.createElement('img')).attr({
src: opts.closeCommentImage,
alt: 'close',
title: 'close'
}))
.click(function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
})
);
});
};
var opts = {
processVoteURL: '/_process_vote',
addCommentURL: '/_add_comment',
getCommentsURL: '/_get_comments',
acceptCommentURL: '/_accept_comment',
deleteCommentURL: '/_delete_comment',
commentImage: '/static/_static/comment.png',
closeCommentImage: '/static/_static/comment-close.png',
loadingImage: '/static/_static/ajax-loader.gif',
commentBrightImage: '/static/_static/comment-bright.png',
upArrow: '/static/_static/up.png',
downArrow: '/static/_static/down.png',
upArrowPressed: '/static/_static/up-pressed.png',
downArrowPressed: '/static/_static/down-pressed.png',
voting: false,
moderator: false
};
if (typeof COMMENT_OPTIONS != "undefined") {
opts = jQuery.extend(opts, COMMENT_OPTIONS);
}
var popupTemplate = '\
<div class="sphinx-comments" id="sc<%id%>">\
<p class="sort-options">\
Sort by:\
<a href="#" class="sort-option byrating">best rated</a>\
<a href="#" class="sort-option byascage">newest</a>\
<a href="#" class="sort-option byage">oldest</a>\
</p>\
<div class="comment-header">Comments</div>\
<div class="comment-loading" id="cn<%id%>">\
loading comments... <img src="<%loadingImage%>" alt="" /></div>\
<ul id="cl<%id%>" class="comment-ul"></ul>\
<div id="ca<%id%>">\
<p class="add-a-comment">Add a comment\
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
<div class="comment-markup-box" id="mb<%id%>">\
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
<tt>``code``</tt>, \
code blocks: <tt>::</tt> and an indented block after blank line</div>\
<form method="post" id="cf<%id%>" class="comment-form" action="">\
<textarea name="comment" cols="80"></textarea>\
<p class="propose-button">\
<a href="#" id="pc<%id%>" class="show-propose-change">\
Propose a change &#9657;\
</a>\
<a href="#" id="hc<%id%>" class="hide-propose-change">\
Propose a change &#9663;\
</a>\
</p>\
<textarea name="proposal" id="pt<%id%>" cols="80"\
spellcheck="false"></textarea>\
<input type="submit" value="Add comment" />\
<input type="hidden" name="node" value="<%id%>" />\
<input type="hidden" name="parent" value="" />\
</form>\
</div>\
</div>';
var commentTemplate = '\
<div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
<div class="vote">\
<div class="arrow">\
<a href="#" id="uv<%id%>" class="vote" title="vote up">\
<img src="<%upArrow%>" />\
</a>\
<a href="#" id="uu<%id%>" class="un vote" title="vote up">\
<img src="<%upArrowPressed%>" />\
</a>\
</div>\
<div class="arrow">\
<a href="#" id="dv<%id%>" class="vote" title="vote down">\
<img src="<%downArrow%>" id="da<%id%>" />\
</a>\
<a href="#" id="du<%id%>" class="un vote" title="vote down">\
<img src="<%downArrowPressed%>" />\
</a>\
</div>\
</div>\
<div class="comment-content">\
<p class="tagline comment">\
<span class="user-id"><%username%></span>\
<span class="rating"><%pretty_rating%></span>\
<span class="delta"><%time.delta%></span>\
</p>\
<div class="comment-text comment"><#text#></div>\
<p class="comment-opts comment">\
<a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
<a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
<a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
<a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
<a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
<span id="cm<%id%>" class="moderation hidden">\
<a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
</span>\
</p>\
<pre class="proposal" id="pr<%id%>">\
<#proposal_diff#>\
</pre>\
<ul class="comment-children" id="cl<%id%>"></ul>\
</div>\
<div class="clearleft"></div>\
</div>\
</div>';
var replyTemplate = '\
<li>\
<div class="reply-div" id="rd<%id%>">\
<form id="rf<%id%>">\
<textarea name="comment" cols="80"></textarea>\
<input type="submit" value="Add reply" />\
<input type="button" value="Cancel" />\
<input type="hidden" name="parent" value="<%id%>" />\
<input type="hidden" name="node" value="" />\
</form>\
</div>\
</li>';
$(document).ready(function() {
init();
});
})(jQuery);
$(document).ready(function() {
// add comment anchors for all paragraphs that are commentable
$('.sphinx-has-comment').comment();
// highlight search words in search results
$("div.context").each(function() {
var params = $.getQueryParameters();
var terms = (params.q) ? params.q[0].split(/\s+/) : [];
var result = $(this);
$.each(terms, function() {
result.highlightText(this.toLowerCase(), 'highlighted');
});
});
// directly open comment window if requested
var anchor = document.location.hash;
if (anchor.substring(0, 9) == '#comment-') {
$('#ao' + anchor.substring(9)).click();
document.location.hash = '#s' + anchor.substring(9);
}
});

View File

@ -1,516 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Connection Object &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="Cursor Object" href="cursor.html" />
<link rel="prev" title="Module Interface" href="module.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="cursor.html" title="Cursor Object"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="module.html" title="Module Interface"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="connection-object">
<span id="connobj"></span><h1>Connection Object<a class="headerlink" href="#connection-object" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Any outstanding changes will be rolled back when the connection object
is destroyed or closed.</p>
</div>
<dl class="method">
<dt id="Connection.__enter__">
<tt class="descclassname">Connection.</tt><tt class="descname">__enter__</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.__enter__" title="Permalink to this definition"></a></dt>
<dd><p>The entry point for the connection as a context manager, a feature available
in Python 2.5 and higher. It returns itself.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.__exit__">
<tt class="descclassname">Connection.</tt><tt class="descname">__exit__</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.__exit__" title="Permalink to this definition"></a></dt>
<dd><p>The exit point for the connection as a context manager, a feature available
in Python 2.5 and higher. In the event of an exception, the transaction is
rolled back; otherwise, the transaction is committed.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.action">
<tt class="descclassname">Connection.</tt><tt class="descname">action</tt><a class="headerlink" href="#Connection.action" title="Permalink to this definition"></a></dt>
<dd><p>This write-only attribute sets the action column in the v$session table and
is only available in Oracle 10g.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.autocommit">
<tt class="descclassname">Connection.</tt><tt class="descname">autocommit</tt><a class="headerlink" href="#Connection.autocommit" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute determines whether autocommit mode is on or off.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.begin">
<tt class="descclassname">Connection.</tt><tt class="descname">begin</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.begin" title="Permalink to this definition"></a></dt>
<dt>
<tt class="descclassname">Connection.</tt><tt class="descname">begin</tt><big>(</big><span class="optional">[</span><em>formatId</em>, <em>transactionId</em>, <em>branchId</em><span class="optional">]</span><big>)</big></dt>
<dd><p>Explicitly begin a new transaction. Without parameters, this explicitly
begins a local transaction; otherwise, this explicitly begins a distributed
(global) transaction with the given parameters. See the Oracle documentation
for more details.</p>
<p>Note that in order to make use of global (distributed) transactions, the
twophase argument to the Connection constructor must be a true value. See
the comments on the Connection constructor for more information
(<a class="reference internal" href="module.html#module"><em>Module Interface</em></a>).</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.cancel">
<tt class="descclassname">Connection.</tt><tt class="descname">cancel</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.cancel" title="Permalink to this definition"></a></dt>
<dd><p>Cancel a long-running transaction.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.changepassword">
<tt class="descclassname">Connection.</tt><tt class="descname">changepassword</tt><big>(</big><em>oldpassword</em>, <em>newpassword</em><big>)</big><a class="headerlink" href="#Connection.changepassword" title="Permalink to this definition"></a></dt>
<dd><p>Change the password of the logon. This method also modifies the attribute
<a class="reference internal" href="#Connection.password" title="Connection.password"><tt class="xref py py-data docutils literal"><span class="pre">Connection.password</span></tt></a> upon successful completion.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.client_identifier">
<tt class="descclassname">Connection.</tt><tt class="descname">client_identifier</tt><a class="headerlink" href="#Connection.client_identifier" title="Permalink to this definition"></a></dt>
<dd><p>This write-only attribute sets the client_identifier column in the
v$session table.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.clientinfo">
<tt class="descclassname">Connection.</tt><tt class="descname">clientinfo</tt><a class="headerlink" href="#Connection.clientinfo" title="Permalink to this definition"></a></dt>
<dd><p>This write-only attribute sets the client_info column in the v$session table
and is only available in Oracle 10g.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.close">
<tt class="descclassname">Connection.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.close" title="Permalink to this definition"></a></dt>
<dd><p>Close the connection now, rather than whenever __del__ is called. The
connection will be unusable from this point forward; an Error exception will
be raised if any operation is attempted with the connection. The same
applies to any cursor objects trying to use the connection.</p>
</dd></dl>
<dl class="method">
<dt id="Connection.commit">
<tt class="descclassname">Connection.</tt><tt class="descname">commit</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.commit" title="Permalink to this definition"></a></dt>
<dd><p>Commit any pending transactions to the database.</p>
</dd></dl>
<dl class="attribute">
<dt id="Connection.current_schema">
<tt class="descclassname">Connection.</tt><tt class="descname">current_schema</tt><a class="headerlink" href="#Connection.current_schema" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute sets the current schema attribute for the session.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.cursor">
<tt class="descclassname">Connection.</tt><tt class="descname">cursor</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.cursor" title="Permalink to this definition"></a></dt>
<dd><p>Return a new Cursor object (<a class="reference internal" href="cursor.html#cursorobj"><em>Cursor Object</em></a>) using the connection.</p>
</dd></dl>
<dl class="attribute">
<dt id="Connection.dsn">
<tt class="descclassname">Connection.</tt><tt class="descname">dsn</tt><a class="headerlink" href="#Connection.dsn" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the TNS entry of the database to which a
connection has been established.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.encoding">
<tt class="descclassname">Connection.</tt><tt class="descname">encoding</tt><a class="headerlink" href="#Connection.encoding" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the IANA character set name of the
character set in use by the Oracle client.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition and is only
available in Python 2.x when not built in unicode mode.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.inputtypehandler">
<tt class="descclassname">Connection.</tt><tt class="descname">inputtypehandler</tt><a class="headerlink" href="#Connection.inputtypehandler" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies a method called for each value that is
bound to a statement executed on any cursor associated with this connection.
The method signature is handler(cursor, value, arraysize) and the return
value is expected to be a variable object or None in which case a default
variable object will be created. If this attribute is None, the default
behavior will take place for all values bound to statements.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.maxBytesPerCharacter">
<tt class="descclassname">Connection.</tt><tt class="descname">maxBytesPerCharacter</tt><a class="headerlink" href="#Connection.maxBytesPerCharacter" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the maximum number of bytes each character
can use for the client character set.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.module">
<tt class="descclassname">Connection.</tt><tt class="descname">module</tt><a class="headerlink" href="#Connection.module" title="Permalink to this definition"></a></dt>
<dd><p>This write-only attribute sets the module column in the v$session table and
is only available in Oracle 10g. The maximum length for this string is 48
and if you exceed this length you will get ORA-24960.</p>
</dd></dl>
<dl class="attribute">
<dt id="Connection.nencoding">
<tt class="descclassname">Connection.</tt><tt class="descname">nencoding</tt><a class="headerlink" href="#Connection.nencoding" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the IANA character set name of the national
character set in use by the Oracle client.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition and is only
available in Python 2.x when not built in unicode mode.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.outputtypehandler">
<tt class="descclassname">Connection.</tt><tt class="descname">outputtypehandler</tt><a class="headerlink" href="#Connection.outputtypehandler" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies a method called for each value that is
to be fetched from any cursor associated with this connection. The method
signature is handler(cursor, name, defaultType, length, precision, scale)
and the return value is expected to be a variable object or None in which
case a default variable object will be created. If this attribute is None,
the default behavior will take place for all values fetched from cursors.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.password">
<tt class="descclassname">Connection.</tt><tt class="descname">password</tt><a class="headerlink" href="#Connection.password" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute initially contains the password of the user which
established the connection to the database.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.ping">
<tt class="descclassname">Connection.</tt><tt class="descname">ping</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.ping" title="Permalink to this definition"></a></dt>
<dd><p>Ping the server which can be used to test if the connection is still active.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition and is only
available in Oracle 10g R2 and higher.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.prepare">
<tt class="descclassname">Connection.</tt><tt class="descname">prepare</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.prepare" title="Permalink to this definition"></a></dt>
<dd><p>Prepare the distributed (global) transaction for commit. Return a boolean
indicating if a transaction was actually prepared in order to avoid the
error ORA-24756 (transaction does not exist).</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.register">
<tt class="descclassname">Connection.</tt><tt class="descname">register</tt><big>(</big><em>code</em>, <em>when</em>, <em>function</em><big>)</big><a class="headerlink" href="#Connection.register" title="Permalink to this definition"></a></dt>
<dd><p>Register the function as an OCI callback. The code is one of the function
codes defined in the Oracle documentation of which the most common ones are
defined as constants in this module. The when parameter is one of
<tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_ENTRY</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_EXIT</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_REPLACE</span></tt>. The
function is a Python function which will accept the parameters that the OCI
function accepts, modified as needed to return Python objects that are of
some use. Note that this is a highly experimental method and can cause
cx_Oracle to crash if not used properly. In particular, the OCI does not
provide sizing information to the callback so attempts to access a variable
beyond the allocated size will crash cx_Oracle. Use with caution.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.rollback">
<tt class="descclassname">Connection.</tt><tt class="descname">rollback</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.rollback" title="Permalink to this definition"></a></dt>
<dd><p>Rollback any pending transactions.</p>
</dd></dl>
<dl class="method">
<dt id="Connection.shutdown">
<tt class="descclassname">Connection.</tt><tt class="descname">shutdown</tt><big>(</big><span class="optional">[</span><em>mode</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Connection.shutdown" title="Permalink to this definition"></a></dt>
<dd><p>Shutdown the database. In order to do this the connection must connected as
<tt class="xref py py-data docutils literal"><span class="pre">SYSDBA</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">SYSOPER</span></tt>. First shutdown using one of the
DBSHUTDOWN constants defined in the constants (<a class="reference internal" href="module.html#constants"><em>Constants</em></a>) section.
Next issue the SQL statements required to close the database (&#8220;alter
database close normal&#8221;) and dismount the database (&#8220;alter database
dismount&#8221;) followed by a second call to this method with the
<tt class="xref py py-data docutils literal"><span class="pre">DBSHUTDOWN_FINAL</span></tt> mode.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition and is only
available in Oracle 10g R2 and higher.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.startup">
<tt class="descclassname">Connection.</tt><tt class="descname">startup</tt><big>(</big><em>force=False</em>, <em>restrict=False</em><big>)</big><a class="headerlink" href="#Connection.startup" title="Permalink to this definition"></a></dt>
<dd><p>Startup the database. This is equivalent to the SQL*Plus command &#8220;startup
nomount&#8221;. The connection must be connected as <tt class="xref py py-data docutils literal"><span class="pre">SYSDBA</span></tt> or
<tt class="xref py py-data docutils literal"><span class="pre">SYSOPER</span></tt> with the <tt class="xref py py-data docutils literal"><span class="pre">PRELIM_AUTH</span></tt> option specified for this to
work. Once this method has completed, connect again without the
<tt class="xref py py-data docutils literal"><span class="pre">PRELIM_AUTH</span></tt> option and issue the statements required to mount
(&#8220;alter database mount&#8221;) and open (&#8220;alter database open&#8221;) the database.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition and is only
available in Oracle 10g R2 and higher.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.stmtcachesize">
<tt class="descclassname">Connection.</tt><tt class="descname">stmtcachesize</tt><a class="headerlink" href="#Connection.stmtcachesize" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies the size of the statement cache. This
value can make a significant difference in performance (up to 100x) if you
have a small number of statements that you execute repeatedly.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.subscribe">
<tt class="descclassname">Connection.</tt><tt class="descname">subscribe</tt><big>(</big><em>namespace=cx_Oracle.SUBSCR_NAMESPACE_DBCHANGE</em>, <em>protocol=cx_Oracle.SUBSCR_PROTO_OCI</em>, <em>callback=None</em>, <em>timeout=0</em>, <em>operations=OPCODE_ALLOPS</em>, <em>rowids=False</em>, <em>port=0</em><big>)</big><a class="headerlink" href="#Connection.subscribe" title="Permalink to this definition"></a></dt>
<dd><p>Return a new Subscription object (<a class="reference internal" href="subscription.html#subscrobj"><em>Subscription Object</em></a>) using the connection.
Currently the namespace and protocol arguments cannot have any other
meaningful values. The callback is expected to be a callable that accepts
a single argument which is a message object. The timeout value specifies
that the subscription expires after the given time in seconds. The default
value of 0 indicates that the subscription does not expire. The operations
argument enables filtering of the messages that are sent (insert, update,
delete). The rowids flag specifies whether the rowids of affected rows
should be included in the messages that are sent. The port specifies the
listening port for callback notifications from the database server.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition and is only
available in Oracle 10g R2 and higher.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Do not close the connection before the subscription object is deleted or
the subscription object will not be deregistered in the database. This is
done automatically if connection.close() is never called.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.tnsentry">
<tt class="descclassname">Connection.</tt><tt class="descname">tnsentry</tt><a class="headerlink" href="#Connection.tnsentry" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the TNS entry of the database to which a
connection has been established.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Connection.unregister">
<tt class="descclassname">Connection.</tt><tt class="descname">unregister</tt><big>(</big><em>code</em>, <em>when</em><big>)</big><a class="headerlink" href="#Connection.unregister" title="Permalink to this definition"></a></dt>
<dd><p>Unregister the function as an OCI callback. The code is one of the function
codes defined in the Oracle documentation of which the most common ones are
defined as constants in this module. The when parameter is one of
<tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_ENTRY</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_EXIT</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_REPLACE</span></tt>.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.username">
<tt class="descclassname">Connection.</tt><tt class="descname">username</tt><a class="headerlink" href="#Connection.username" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the name of the user which established the
connection to the database.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Connection.version">
<tt class="descclassname">Connection.</tt><tt class="descname">version</tt><a class="headerlink" href="#Connection.version" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the version of the database to which a
connection has been established.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="module.html"
title="previous chapter">Module Interface</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="cursor.html"
title="next chapter">Cursor Object</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="cursor.html" title="Cursor Object"
>next</a> |</li>
<li class="right" >
<a href="module.html" title="Module Interface"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,533 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cursor Object &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="Variable Objects" href="variable.html" />
<link rel="prev" title="Connection Object" href="connection.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="variable.html" title="Variable Objects"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="connection.html" title="Connection Object"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="cursor-object">
<span id="cursorobj"></span><h1>Cursor Object<a class="headerlink" href="#cursor-object" title="Permalink to this headline"></a></h1>
<dl class="attribute">
<dt id="Cursor.arraysize">
<tt class="descclassname">Cursor.</tt><tt class="descname">arraysize</tt><a class="headerlink" href="#Cursor.arraysize" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies the number of rows to fetch at a time
internally and is the default number of rows to fetch with the
<a class="reference internal" href="#Cursor.fetchmany" title="Cursor.fetchmany"><tt class="xref py py-meth docutils literal"><span class="pre">fetchmany()</span></tt></a> call. It defaults to 50 meaning to fetch 50
rows at a time. Note that this attribute can drastically affect the
performance of a query since it directly affects the number of network round
trips that need to be performed. This is the reason for setting it to 50
instead of the 1 that the DB API recommends.</p>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.bindarraysize">
<tt class="descclassname">Cursor.</tt><tt class="descname">bindarraysize</tt><a class="headerlink" href="#Cursor.bindarraysize" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies the number of rows to bind at a time and
is used when creating variables via setinputsizes() or var(). It defaults to
1 meaning to bind a single row at a time.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.arrayvar">
<tt class="descclassname">Cursor.</tt><tt class="descname">arrayvar</tt><big>(</big><em>dataType</em>, <em>value</em><span class="optional">[</span>, <em>size</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.arrayvar" title="Permalink to this definition"></a></dt>
<dd><p>Create an array variable associated with the cursor of the given type and
size and return a variable object (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>). The value is either an
integer specifying the number of elements to allocate or it is a list and
the number of elements allocated is drawn from the size of the list. If the
value is a list, the variable is also set with the contents of the list. If
the size is not specified and the type is a string or binary, 4000 bytes
(maximum allowable by Oracle) is allocated. This is needed for passing
arrays to PL/SQL (in cases where the list might be empty and the type cannot
be determined automatically) or returning arrays from PL/SQL.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.bindnames">
<tt class="descclassname">Cursor.</tt><tt class="descname">bindnames</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.bindnames" title="Permalink to this definition"></a></dt>
<dd><p>Return the list of bind variable names bound to the statement. Note that the
statement must have been prepared first.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.bindvars">
<tt class="descclassname">Cursor.</tt><tt class="descname">bindvars</tt><a class="headerlink" href="#Cursor.bindvars" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute specifies the bind variables used for the last
execute. The value will be either a list or a dictionary depending on
whether binding was done by position or name. Care should be taken when
referencing this attribute. In particular, elements should not be removed.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.callfunc">
<tt class="descclassname">Cursor.</tt><tt class="descname">callfunc</tt><big>(</big><em>name</em>, <em>returnType</em>, <em>parameters=</em><span class="optional">[</span><span class="optional">]</span>, <em>keywordParameters = {}</em><big>)</big><a class="headerlink" href="#Cursor.callfunc" title="Permalink to this definition"></a></dt>
<dd><p>Call a function with the given name. The return type is specified in the
same notation as is required by setinputsizes(). The sequence of parameters
must contain one entry for each argument that the function expects. Any
keyword parameters will be included after the positional parameters. The
result of the call is the return value of the function.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If you intend to call setinputsizes() on the cursor prior to making this
call, then note that the first item in the argument list refers to the
return value of the function.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.callproc">
<tt class="descclassname">Cursor.</tt><tt class="descname">callproc</tt><big>(</big><em>name</em>, <em>parameters=</em><span class="optional">[</span><span class="optional">]</span>, <em>keyewordParameters = {}</em><big>)</big><a class="headerlink" href="#Cursor.callproc" title="Permalink to this definition"></a></dt>
<dd><p>Call a procedure with the given name. The sequence of parameters must
contain one entry for each argument that the procedure expects. The result
of the call is a modified copy of the input sequence. Input parameters are
left untouched; output and input/output parameters are replaced with
possibly new values. Keyword parameters will be included after the
positional parameters and are not returned as part of the output sequence.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not allow for keyword parameters.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.close">
<tt class="descclassname">Cursor.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.close" title="Permalink to this definition"></a></dt>
<dd><p>Close the cursor now, rather than whenever __del__ is called. The cursor
will be unusable from this point forward; an Error exception will be raised
if any operation is attempted with the cursor.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.connection">
<tt class="descclassname">Cursor.</tt><tt class="descname">connection</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.connection" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns a reference to the connection object on
which the cursor was created.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition but it is
mentioned in PEP 249 as an optional extension.</p>
</div>
</dd></dl>
<dl class="data">
<dt id="Cursor.description">
<tt class="descclassname">Cursor.</tt><tt class="descname">description</tt><a class="headerlink" href="#Cursor.description" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute is a sequence of 7-item sequences. Each of these
sequences contains information describing one result column: (name, type,
display_size, internal_size, precision, scale, null_ok). This attribute will
be None for operations that do not return rows or if the cursor has not had
an operation invoked via the execute() method yet.</p>
<p>The type will be one of the type objects defined at the module level.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.execute">
<tt class="descclassname">Cursor.</tt><tt class="descname">execute</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>parameters</em><span class="optional">]</span>, <em>**keywordParameters</em><big>)</big><a class="headerlink" href="#Cursor.execute" title="Permalink to this definition"></a></dt>
<dd><p>Execute a statement against the database. Parameters may be passed as a
dictionary or sequence or as keyword arguments. If the arguments are a
dictionary, the values will be bound by name and if the arguments are a
sequence the values will be bound by position.</p>
<p>A reference to the statement will be retained by the cursor. If None or the
same string object is passed in again, the cursor will execute that
statement again without performing a prepare or rebinding and redefining.
This is most effective for algorithms where the same statement is used, but
different parameters are bound to it (many times). Note that parameters that
are not passed in during subsequent executions will retain the value passed
in during the last execution that contained them.</p>
<p>For maximum efficiency when reusing an statement, it is best to use the
setinputsizes() method to specify the parameter types and sizes ahead of
time; in particular, None is assumed to be a string of length 1 so any
values that are later bound as numbers or dates will raise a TypeError
exception.</p>
<p>If the statement is a query, a list of variable objects (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>) will
be returned corresponding to the list of variables into which data will be
fetched with the <a class="reference internal" href="#Cursor.fetchone" title="Cursor.fetchone"><tt class="xref py py-meth docutils literal"><span class="pre">fetchone()</span></tt></a>, <a class="reference internal" href="#Cursor.fetchmany" title="Cursor.fetchmany"><tt class="xref py py-meth docutils literal"><span class="pre">fetchmany()</span></tt></a> and
<a class="reference internal" href="#Cursor.fetchall" title="Cursor.fetchall"><tt class="xref py py-meth docutils literal"><span class="pre">fetchall()</span></tt></a> methods; otherwise, <tt class="docutils literal"><span class="pre">None</span></tt> will be returned.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.executemany">
<tt class="descclassname">Cursor.</tt><tt class="descname">executemany</tt><big>(</big><em>statement</em>, <em>parameters</em><big>)</big><a class="headerlink" href="#Cursor.executemany" title="Permalink to this definition"></a></dt>
<dd><p>Prepare a statement for execution against a database and then execute it
against all parameter mappings or sequences found in the sequence
parameters. The statement is managed in the same way as the execute()
method manages it.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.executemanyprepared">
<tt class="descclassname">Cursor.</tt><tt class="descname">executemanyprepared</tt><big>(</big><em>numIters</em><big>)</big><a class="headerlink" href="#Cursor.executemanyprepared" title="Permalink to this definition"></a></dt>
<dd><p>Execute the previously prepared and bound statement the given number of
times. The variables that are bound must have already been set to their
desired value before this call is made. This method was designed for the
case where optimal performance is required as it comes at the expense of
compatibility with the DB API.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.fetchall">
<tt class="descclassname">Cursor.</tt><tt class="descname">fetchall</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.fetchall" title="Permalink to this definition"></a></dt>
<dd><p>Fetch all (remaining) rows of a query result, returning them as a list of
tuples. An empty list is returned if no more rows are available. Note that
the cursor&#8217;s arraysize attribute can affect the performance of this
operation, as internally reads from the database are done in batches
corresponding to the arraysize.</p>
<p>An exception is raised if the previous call to execute() did not produce any
result set or no call was issued yet.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.fetchmany">
<tt class="descclassname">Cursor.</tt><tt class="descname">fetchmany</tt><big>(</big><span class="optional">[</span><em>numRows=cursor.arraysize</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.fetchmany" title="Permalink to this definition"></a></dt>
<dd><p>Fetch the next set of rows of a query result, returning a list of tuples. An
empty list is returned if no more rows are available. Note that the cursor&#8217;s
arraysize attribute can affect the performance of this operation.</p>
<p>The number of rows to fetch is specified by the parameter. If it is not
given, the cursor&#8217;s arrysize attribute determines the number of rows to be
fetched. If the number of rows available to be fetched is fewer than the
amount requested, fewer rows will be returned.</p>
<p>An exception is raised if the previous call to execute() did not produce any
result set or no call was issued yet.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.fetchone">
<tt class="descclassname">Cursor.</tt><tt class="descname">fetchone</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.fetchone" title="Permalink to this definition"></a></dt>
<dd><p>Fetch the next row of a query result set, returning a single tuple or None
when no more data is available.</p>
<p>An exception is raised if the previous call to execute() did not produce any
result set or no call was issued yet.</p>
</dd></dl>
<dl class="method">
<dt id="Cursor.fetchraw">
<tt class="descclassname">Cursor.</tt><tt class="descname">fetchraw</tt><big>(</big><span class="optional">[</span><em>numRows=cursor.arraysize</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.fetchraw" title="Permalink to this definition"></a></dt>
<dd><p>Fetch the next set of rows of a query result into the internal buffers of
the defined variables for the cursor. The number of rows actually fetched is
returned. This method was designed for the case where optimal performance
is required as it comes at the expense of compatibility with the DB API.</p>
<p>An exception is raised if the previous call to execute() did not produce any
result set or no call was issued yet.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.fetchvars">
<tt class="descclassname">Cursor.</tt><tt class="descname">fetchvars</tt><a class="headerlink" href="#Cursor.fetchvars" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute specifies the list of variables created for the
last query that was executed on the cursor. Care should be taken when
referencing this attribute. In particular, elements should not be removed.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.inputtypehandler">
<tt class="descclassname">Cursor.</tt><tt class="descname">inputtypehandler</tt><a class="headerlink" href="#Cursor.inputtypehandler" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies a method called for each value that is
bound to a statement executed on the cursor and overrides the attribute with
the same name on the connection if specified. The method signature is
handler(cursor, value, arraysize) and the return value is expected to be a
variable object or None in which case a default variable object will be
created. If this attribute is None, the value of the attribute with the same
name on the connection is used.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.__iter__">
<tt class="descclassname">Cursor.</tt><tt class="descname">__iter__</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.__iter__" title="Permalink to this definition"></a></dt>
<dd><p>Returns the cursor itself to be used as an iterator.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition but it is
mentioned in PEP 249 as an optional extension.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.next">
<tt class="descclassname">Cursor.</tt><tt class="descname">next</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.next" title="Permalink to this definition"></a></dt>
<dd><p>Fetch the next row of a query result set, using the same semantics as the
method fetchone().</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This method is an extension to the DB API definition but it is
mentioned in PEP 249 as an optional extension.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.numbersAsStrings">
<tt class="descclassname">Cursor.</tt><tt class="descname">numbersAsStrings</tt><a class="headerlink" href="#Cursor.numbersAsStrings" title="Permalink to this definition"></a></dt>
<dd><p>This integer attribute defines whether or not numbers should be returned as
strings rather than integers or floating point numbers. This is useful to
get around the fact that Oracle floating point numbers have considerably
greater precision than C floating point numbers and not require a change to
the SQL being executed.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.outputtypehandler">
<tt class="descclassname">Cursor.</tt><tt class="descname">outputtypehandler</tt><a class="headerlink" href="#Cursor.outputtypehandler" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies a method called for each value that is
to be fetched from this cursor. The method signature is
handler(cursor, name, defaultType, length, precision, scale) and the return
value is expected to be a variable object or None in which case a default
variable object will be created. If this attribute is None, the value of
the attribute with the same name on the connection is used instead.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is an extension to the DB API definition.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.parse">
<tt class="descclassname">Cursor.</tt><tt class="descname">parse</tt><big>(</big><em>statement</em><big>)</big><a class="headerlink" href="#Cursor.parse" title="Permalink to this definition"></a></dt>
<dd><p>This can be used to parse a statement without actually executing it (this
step is done automatically by Oracle when a statement is executed).</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.prepare">
<tt class="descclassname">Cursor.</tt><tt class="descname">prepare</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>tag</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.prepare" title="Permalink to this definition"></a></dt>
<dd><p>This can be used before a call to execute() to define the statement that
will be executed. When this is done, the prepare phase will not be performed
when the call to execute() is made with None or the same string object as
the statement. If specified (Oracle 9i and higher) the statement will be
returned to the statement cache with the given tag. See the Oracle
documentation for more information about the statement cache.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.rowcount">
<tt class="descclassname">Cursor.</tt><tt class="descname">rowcount</tt><a class="headerlink" href="#Cursor.rowcount" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute specifies the number of rows that have currently
been fetched from the cursor (for select statements) or that have been
affected by the operation (for insert, update and delete statements).</p>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.rowfactory">
<tt class="descclassname">Cursor.</tt><tt class="descname">rowfactory</tt><a class="headerlink" href="#Cursor.rowfactory" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies a method to call for each row that is
retrieved from the database. Ordinarily a tuple is returned for each row but
if this attribute is set, the method is called with the argument tuple that
would normally be returned and the result of the method is returned instead.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.setinputsizes">
<tt class="descclassname">Cursor.</tt><tt class="descname">setinputsizes</tt><big>(</big><em>*args</em>, <em>**keywordArgs</em><big>)</big><a class="headerlink" href="#Cursor.setinputsizes" title="Permalink to this definition"></a></dt>
<dd><p>This can be used before a call to execute(), callfunc() or callproc() to
predefine memory areas for the operation&#8217;s parameters. Each parameter should
be a type object corresponding to the input that will be used or it should
be an integer specifying the maximum length of a string parameter. Use
keyword arguments when binding by name and positional arguments when binding
by position. The singleton None can be used as a parameter when using
positional arguments to indicate that no space should be reserved for that
position.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If you plan to use callfunc() then be aware that the first argument in
the list refers to the return value of the function.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.setoutputsize">
<tt class="descclassname">Cursor.</tt><tt class="descname">setoutputsize</tt><big>(</big><em>size</em><span class="optional">[</span>, <em>column</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.setoutputsize" title="Permalink to this definition"></a></dt>
<dd><p>This can be used before a call to execute() to predefine memory areas for
the long columns that will be fetched. The column is specified as an index
into the result sequence. Not specifying the column will set the default
size for all large columns in the cursor.</p>
</dd></dl>
<dl class="attribute">
<dt id="Cursor.statement">
<tt class="descclassname">Cursor.</tt><tt class="descname">statement</tt><a class="headerlink" href="#Cursor.statement" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute provides the string object that was previously
prepared with prepare() or executed with execute().</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this attribute.</p>
</div>
</dd></dl>
<dl class="method">
<dt id="Cursor.var">
<tt class="descclassname">Cursor.</tt><tt class="descname">var</tt><big>(</big><em>dataType</em><span class="optional">[</span>, <em>size</em>, <em>arraysize</em>, <em>inconverter</em>, <em>outconverter</em>, <em>typename</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.var" title="Permalink to this definition"></a></dt>
<dd><p>Create a variable associated with the cursor of the given type and
characteristics and return a variable object (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>). If the size is
not specified and the type is a string or binary, 4000 bytes (maximum
allowable by Oracle) is allocated; if the size is not specified and the type
is a long string or long binary, 128KB is allocated. If the arraysize is not
specified, the bind array size (usually 1) is used. The inconverter and
outconverter specify methods used for converting values to/from the
database. More information can be found in the section on variable objects.</p>
<p>To create an empty SQL object variable, specify the typename. Additional
support for editing the attributes of this object is not yet available but
will be forthcoming in a future release.</p>
<p>This method was designed for use with PL/SQL in/out variables where the
length or type cannot be determined automatically from the Python object
passed in or for use in input and output type handlers defined on cursors
or connections.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this method.</p>
</div>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="connection.html"
title="previous chapter">Connection Object</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="variable.html"
title="next chapter">Variable Objects</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="variable.html" title="Variable Objects"
>next</a> |</li>
<li class="right" >
<a href="connection.html" title="Connection Object"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,162 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cx_Oracle &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="#" />
<link rel="next" title="Module Interface" href="module.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="module.html" title="Module Interface"
accesskey="N">next</a> |</li>
<li><a href="#">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="cx-oracle">
<h1>cx_Oracle<a class="headerlink" href="#cx-oracle" title="Permalink to this headline"></a></h1>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Author:</th><td class="field-body">Anthony Tuininga</td>
</tr>
<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">July 02, 2012</td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="front-matter">
<span id="front"></span><h1>Front Matter<a class="headerlink" href="#front-matter" title="Permalink to this headline"></a></h1>
<p>Copyright © 2007-2012 Anthony Tuininga. All rights reserved.</p>
<p>Copyright © 2001-2007 Computronix. All rights reserved.</p>
<p>See <a class="reference internal" href="license.html#license"><em>License</em></a> for complete license and permissions information.</p>
<div class="topic">
<p class="topic-title first">Abstract</p>
<p>cx_Oracle is a Python extension module that allows access to Oracle and
conforms to the Python database API 2.0 specifications with a few
exceptions. See <a class="reference external" href="http://www.python.org/topics/database/DatabaseAPI-2.0.html">http://www.python.org/topics/database/DatabaseAPI-2.0.html</a>
for more information on the Python database API specification.</p>
</div>
<p>Contents:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="module.html">Module Interface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="module.html#constants">Constants</a></li>
<li class="toctree-l2"><a class="reference internal" href="module.html#types">Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="module.html#exceptions">Exceptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="module.html#exception-handling">Exception handling</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="connection.html">Connection Object</a></li>
<li class="toctree-l1"><a class="reference internal" href="cursor.html">Cursor Object</a></li>
<li class="toctree-l1"><a class="reference internal" href="variable.html">Variable Objects</a></li>
<li class="toctree-l1"><a class="reference internal" href="session_pool.html">SessionPool Object</a></li>
<li class="toctree-l1"><a class="reference internal" href="subscription.html">Subscription Object</a><ul>
<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-objects">Message Objects</a></li>
<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-table-objects">Message Table Objects</a></li>
<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-row-objects">Message Row Objects</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="lob.html">LOB Objects</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
</ul>
</div>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="#">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">cx_Oracle</a></li>
<li><a class="reference internal" href="#front-matter">Front Matter</a><ul>
</ul>
</li>
</ul>
<h4>Next topic</h4>
<p class="topless"><a href="module.html"
title="next chapter">Module Interface</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="module.html" title="Module Interface"
>next</a> |</li>
<li><a href="#">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,131 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>License &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="prev" title="LOB Objects" href="lob.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="lob.html" title="LOB Objects"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="license">
<span id="id1"></span><h1>License<a class="headerlink" href="#license" title="Permalink to this headline"></a></h1>
<p class="centered">
<strong><strong>LICENSE AGREEMENT FOR CX_ORACLE</strong></strong></p><p>Copyright © 2007-2012, Anthony Tuininga. All rights reserved.</p>
<p>Copyright © 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta,
Canada. All rights reserved.</p>
<p>Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:</p>
<ol class="arabic simple">
<li>Redistributions of source code must retain the above copyright notice, this
list of conditions, and the disclaimer that follows.</li>
<li>Redistributions in binary form must reproduce the above copyright notice,
this list of conditions, and the following disclaimer in the documentation
and/or other materials provided with the distribution.</li>
<li>Neither the names of the copyright holders nor the names of any contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.</li>
</ol>
<p>DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*AS IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
<p>Computronix ® is a registered trademark of Computronix (Canada) Ltd.</p>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="lob.html"
title="previous chapter">LOB Objects</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="lob.html" title="LOB Objects"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,202 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LOB Objects &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="License" href="license.html" />
<link rel="prev" title="Subscription Object" href="subscription.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="license.html" title="License"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="subscription.html" title="Subscription Object"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="lob-objects">
<span id="lobobj"></span><h1>LOB Objects<a class="headerlink" href="#lob-objects" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is an extension the DB API. It is returned whenever Oracle
<tt class="xref py py-data docutils literal"><span class="pre">CLOB</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">BLOB</span></tt> and <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> columns are fetched.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Internally, Oracle uses LOB locators which are allocated based on the
cursor array size. Thus, it is important that the data in the LOB object be
manipulated before another internal fetch takes place. The safest way to do
this is to use the cursor as an iterator. In particular, do not use the
fetchall() method. The exception &#8220;LOB variable no longer valid after
subsequent fetch&#8221; will be raised if an attempt to access a LOB variable
after a subsequent fetch is detected.</p>
</div>
<dl class="method">
<dt id="LOB.close">
<tt class="descclassname">LOB.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.close" title="Permalink to this definition"></a></dt>
<dd><p>Close the <tt class="xref py py-data docutils literal"><span class="pre">LOB</span></tt>. Call this when writing is completed so that the
indexes associated with the LOB can be updated.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.fileexists">
<tt class="descclassname">LOB.</tt><tt class="descname">fileexists</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.fileexists" title="Permalink to this definition"></a></dt>
<dd><p>Return a boolean indicating if the file referenced by the <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt>
type LOB exists.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.getchunksize">
<tt class="descclassname">LOB.</tt><tt class="descname">getchunksize</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.getchunksize" title="Permalink to this definition"></a></dt>
<dd><p>Return the chunk size for the internal LOB. Reading and writing to the LOB
in chunks of multiples of this size will improve performance.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.getfilename">
<tt class="descclassname">LOB.</tt><tt class="descname">getfilename</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.getfilename" title="Permalink to this definition"></a></dt>
<dd><p>Return a two-tuple consisting of the directory alias and file name for a
<tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> type LOB.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.isopen">
<tt class="descclassname">LOB.</tt><tt class="descname">isopen</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.isopen" title="Permalink to this definition"></a></dt>
<dd><p>Return a boolean indicating if the LOB is opened.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.open">
<tt class="descclassname">LOB.</tt><tt class="descname">open</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.open" title="Permalink to this definition"></a></dt>
<dd><p>Open the LOB for writing. This will improve performance when writing to a
LOB in chunks and there are functional or extensible indexes associated with
the LOB.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.read">
<tt class="descclassname">LOB.</tt><tt class="descname">read</tt><big>(</big><span class="optional">[</span><em>offset=1</em><span class="optional">[</span>, <em>amount</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.read" title="Permalink to this definition"></a></dt>
<dd><p>Return a portion (or all) of the data in the LOB object.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.setfilename">
<tt class="descclassname">LOB.</tt><tt class="descname">setfilename</tt><big>(</big><em>dirAlias</em>, <em>name</em><big>)</big><a class="headerlink" href="#LOB.setfilename" title="Permalink to this definition"></a></dt>
<dd><p>Set the directory alias and name of the <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> type LOB.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.size">
<tt class="descclassname">LOB.</tt><tt class="descname">size</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.size" title="Permalink to this definition"></a></dt>
<dd><p>Returns the size of the data in the LOB object.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.trim">
<tt class="descclassname">LOB.</tt><tt class="descname">trim</tt><big>(</big><span class="optional">[</span><em>newSize=0</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.trim" title="Permalink to this definition"></a></dt>
<dd><p>Trim the LOB to the new size.</p>
</dd></dl>
<dl class="method">
<dt id="LOB.write">
<tt class="descclassname">LOB.</tt><tt class="descname">write</tt><big>(</big><em>data</em><span class="optional">[</span>, <em>offset=1</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.write" title="Permalink to this definition"></a></dt>
<dd><p>Write the data to the LOB object at the given offset. Note that if you want
to make the LOB value smaller, you must use the trim() function.</p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="subscription.html"
title="previous chapter">Subscription Object</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="license.html"
title="next chapter">License</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="license.html" title="License"
>next</a> |</li>
<li class="right" >
<a href="subscription.html" title="Subscription Object"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,115 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Python Module Index &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<script type="text/javascript">
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
</script>
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Python Module Index</h1>
<div class="modindex-jumpbox">
<a href="#cap-c"><strong>c</strong></a>
</div>
<table class="indextable modindextable" cellspacing="0" cellpadding="2">
<tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
<tr class="cap" id="cap-c"><td></td><td>
<strong>c</strong></td><td></td></tr>
<tr>
<td></td>
<td>
<a href="module.html#module-cx_Oracle"><tt class="xref">cx_Oracle</tt></a></td><td>
<em></em></td></tr>
</table>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,106 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1 id="search-documentation">Search</h1>
<div id="fallback" class="admonition warning">
<script type="text/javascript">$('#fallback').hide();</script>
<p>
Please activate JavaScript to enable the search
functionality.
</p>
</div>
<p>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
<span id="search-progress" style="padding-left: 10px"></span>
</form>
<div id="search-results">
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,225 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SessionPool Object &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="Subscription Object" href="subscription.html" />
<link rel="prev" title="Variable Objects" href="variable.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="subscription.html" title="Subscription Object"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="variable.html" title="Variable Objects"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="sessionpool-object">
<span id="sesspool"></span><h1>SessionPool Object<a class="headerlink" href="#sessionpool-object" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is an extension the DB API and is only available in Oracle 9i.</p>
</div>
<dl class="method">
<dt id="SessionPool.acquire">
<tt class="descclassname">SessionPool.</tt><tt class="descname">acquire</tt><big>(</big><big>)</big><a class="headerlink" href="#SessionPool.acquire" title="Permalink to this definition"></a></dt>
<dd><p>Acquire a connection from the session pool and return a connection object
(<a class="reference internal" href="connection.html#connobj"><em>Connection Object</em></a>).</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.busy">
<tt class="descclassname">SessionPool.</tt><tt class="descname">busy</tt><a class="headerlink" href="#SessionPool.busy" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of sessions currently acquired.</p>
</dd></dl>
<dl class="method">
<dt id="SessionPool.drop">
<tt class="descclassname">SessionPool.</tt><tt class="descname">drop</tt><big>(</big><em>connection</em><big>)</big><a class="headerlink" href="#SessionPool.drop" title="Permalink to this definition"></a></dt>
<dd><p>Drop the connection from the pool which is useful if the connection is no
longer usable (such as when the session is killed).</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.dsn">
<tt class="descclassname">SessionPool.</tt><tt class="descname">dsn</tt><a class="headerlink" href="#SessionPool.dsn" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the TNS entry of the database to which a
connection has been established.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.homogeneous">
<tt class="descclassname">SessionPool.</tt><tt class="descname">homogeneous</tt><a class="headerlink" href="#SessionPool.homogeneous" title="Permalink to this definition"></a></dt>
<dd><p>This read-write boolean attribute indicates whether the pool is considered
homogeneous or not. If the pool is not homogeneous different authentication
can be used for each connection acquired from the pool.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.increment">
<tt class="descclassname">SessionPool.</tt><tt class="descname">increment</tt><a class="headerlink" href="#SessionPool.increment" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of sessions that will be
established when additional sessions need to be created.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.max">
<tt class="descclassname">SessionPool.</tt><tt class="descname">max</tt><a class="headerlink" href="#SessionPool.max" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the maximum number of sessions that the
session pool can control.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.min">
<tt class="descclassname">SessionPool.</tt><tt class="descname">min</tt><a class="headerlink" href="#SessionPool.min" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of sessions with which the
session pool was created and the minimum number of sessions that will be
controlled by the session pool.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.name">
<tt class="descclassname">SessionPool.</tt><tt class="descname">name</tt><a class="headerlink" href="#SessionPool.name" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the name assigned to the session pool by
Oracle.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.opened">
<tt class="descclassname">SessionPool.</tt><tt class="descname">opened</tt><a class="headerlink" href="#SessionPool.opened" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of sessions currently opened by
the session pool.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.password">
<tt class="descclassname">SessionPool.</tt><tt class="descname">password</tt><a class="headerlink" href="#SessionPool.password" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the password of the user which established
the connection to the database.</p>
</dd></dl>
<dl class="method">
<dt id="SessionPool.release">
<tt class="descclassname">SessionPool.</tt><tt class="descname">release</tt><big>(</big><em>connection</em><big>)</big><a class="headerlink" href="#SessionPool.release" title="Permalink to this definition"></a></dt>
<dd><p>Release the connection back to the pool. This will be done automatically as
well if the connection object is garbage collected.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.timeout">
<tt class="descclassname">SessionPool.</tt><tt class="descname">timeout</tt><a class="headerlink" href="#SessionPool.timeout" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute indicates the time (in seconds) after which idle
sessions will be terminated in order to maintain an optimum number of open
sessions.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.tnsentry">
<tt class="descclassname">SessionPool.</tt><tt class="descname">tnsentry</tt><a class="headerlink" href="#SessionPool.tnsentry" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the TNS entry of the database to which a
connection has been established.</p>
</dd></dl>
<dl class="attribute">
<dt id="SessionPool.username">
<tt class="descclassname">SessionPool.</tt><tt class="descname">username</tt><a class="headerlink" href="#SessionPool.username" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the name of the user which established the
connection to the database.</p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="variable.html"
title="previous chapter">Variable Objects</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="subscription.html"
title="next chapter">Subscription Object</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="subscription.html" title="Subscription Object"
>next</a> |</li>
<li class="right" >
<a href="variable.html" title="Variable Objects"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,276 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Subscription Object &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="LOB Objects" href="lob.html" />
<link rel="prev" title="SessionPool Object" href="session_pool.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="lob.html" title="LOB Objects"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="session_pool.html" title="SessionPool Object"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="subscription-object">
<span id="subscrobj"></span><h1>Subscription Object<a class="headerlink" href="#subscription-object" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is an extension the DB API and is only available in Oracle 10g
Release 2 and higher.</p>
</div>
<dl class="attribute">
<dt id="Subscription.callback">
<tt class="descclassname">Subscription.</tt><tt class="descname">callback</tt><a class="headerlink" href="#Subscription.callback" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the callback that was registered when the
subscription was created.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.connection">
<tt class="descclassname">Subscription.</tt><tt class="descname">connection</tt><a class="headerlink" href="#Subscription.connection" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the connection that was used to register
the subscription when it was created.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.namespace">
<tt class="descclassname">Subscription.</tt><tt class="descname">namespace</tt><a class="headerlink" href="#Subscription.namespace" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the namespace used to register the
subscription when it was created.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.operations">
<tt class="descclassname">Subscription.</tt><tt class="descname">operations</tt><a class="headerlink" href="#Subscription.operations" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the operations that will send notifications
for each table that is registered using this subscription.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.port">
<tt class="descclassname">Subscription.</tt><tt class="descname">port</tt><a class="headerlink" href="#Subscription.port" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the port used for callback notifications
from the database server. If not set during construction, this value is
zero.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.protocol">
<tt class="descclassname">Subscription.</tt><tt class="descname">protocol</tt><a class="headerlink" href="#Subscription.protocol" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the protocol used to register the
subscription when it was created.</p>
</dd></dl>
<dl class="method">
<dt id="Subscription.registerquery">
<tt class="descclassname">Subscription.</tt><tt class="descname">registerquery</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>args</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Subscription.registerquery" title="Permalink to this definition"></a></dt>
<dd><p>Register the query for subsequent notification when tables referenced by the
query are changed. This behaves similarly to cursor.execute() but only
queries are permitted and the arguments must be a sequence or dictionary.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.rowids">
<tt class="descclassname">Subscription.</tt><tt class="descname">rowids</tt><a class="headerlink" href="#Subscription.rowids" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns True or False specifying if rowids will be
included in notifications sent using this subscription.</p>
</dd></dl>
<dl class="attribute">
<dt id="Subscription.timeout">
<tt class="descclassname">Subscription.</tt><tt class="descname">timeout</tt><a class="headerlink" href="#Subscription.timeout" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the timeout (in seconds) used to register
the subscription when it was created. A timeout value of 0 indicates that
there is no timeout.</p>
</dd></dl>
<div class="section" id="message-objects">
<h2>Message Objects<a class="headerlink" href="#message-objects" title="Permalink to this headline"></a></h2>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is created internally when notification is received and passed
to the callback procedure specified when a subscription is created.</p>
</div>
<dl class="attribute">
<dt id="Message.dbname">
<tt class="descclassname">Message.</tt><tt class="descname">dbname</tt><a class="headerlink" href="#Message.dbname" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the name of the database that generated the
notification.</p>
</dd></dl>
<dl class="attribute">
<dt id="Message.tables">
<tt class="descclassname">Message.</tt><tt class="descname">tables</tt><a class="headerlink" href="#Message.tables" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns a list of message table objects that give
information about the tables changed for this notification.</p>
</dd></dl>
<dl class="attribute">
<dt id="Message.type">
<tt class="descclassname">Message.</tt><tt class="descname">type</tt><a class="headerlink" href="#Message.type" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the type of message that has been sent.
See the constants section on database change notification for additional
information.</p>
</dd></dl>
</div>
<div class="section" id="message-table-objects">
<h2>Message Table Objects<a class="headerlink" href="#message-table-objects" title="Permalink to this headline"></a></h2>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is created internally for each table changed when notification
is received and is found in the tables attribute of message objects.</p>
</div>
<dl class="attribute">
<dt id="MessageTable.name">
<tt class="descclassname">MessageTable.</tt><tt class="descname">name</tt><a class="headerlink" href="#MessageTable.name" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the name of the table that was changed.</p>
</dd></dl>
<dl class="attribute">
<dt id="MessageTable.operation">
<tt class="descclassname">MessageTable.</tt><tt class="descname">operation</tt><a class="headerlink" href="#MessageTable.operation" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the operation that took place on the table
that was changed.</p>
</dd></dl>
<dl class="attribute">
<dt id="MessageTable.rows">
<tt class="descclassname">MessageTable.</tt><tt class="descname">rows</tt><a class="headerlink" href="#MessageTable.rows" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns a list of message row objects that give
information about the rows changed on the table. This value is only filled
in if the rowids argument to the Connection.subscribe() method is True.</p>
</dd></dl>
</div>
<div class="section" id="message-row-objects">
<h2>Message Row Objects<a class="headerlink" href="#message-row-objects" title="Permalink to this headline"></a></h2>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This object is created internally for each row changed on a table when
notification is received and is found in the rows attribute of message table
objects.</p>
</div>
<dl class="attribute">
<dt id="MessageRow.operation">
<tt class="descclassname">MessageRow.</tt><tt class="descname">operation</tt><a class="headerlink" href="#MessageRow.operation" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the operation that took place on the row
that was changed.</p>
</dd></dl>
<dl class="attribute">
<dt id="MessageRow.rowid">
<tt class="descclassname">MessageRow.</tt><tt class="descname">rowid</tt><a class="headerlink" href="#MessageRow.rowid" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the rowid of the row that was changed.</p>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Subscription Object</a><ul>
<li><a class="reference internal" href="#message-objects">Message Objects</a></li>
<li><a class="reference internal" href="#message-table-objects">Message Table Objects</a></li>
<li><a class="reference internal" href="#message-row-objects">Message Row Objects</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="session_pool.html"
title="previous chapter">SessionPool Object</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="lob.html"
title="next chapter">LOB Objects</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="lob.html" title="LOB Objects"
>next</a> |</li>
<li class="right" >
<a href="session_pool.html" title="SessionPool Object"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,192 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Variable Objects &mdash; cx_Oracle 5.1.2 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '5.1.2',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: false
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
<link rel="next" title="SessionPool Object" href="session_pool.html" />
<link rel="prev" title="Cursor Object" href="cursor.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="session_pool.html" title="SessionPool Object"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="cursor.html" title="Cursor Object"
accesskey="P">previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="variable-objects">
<span id="varobj"></span><h1>Variable Objects<a class="headerlink" href="#variable-objects" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The DB API definition does not define this object.</p>
</div>
<dl class="attribute">
<dt id="Variable.allocelems">
<tt class="descclassname">Variable.</tt><tt class="descname">allocelems</tt><a class="headerlink" href="#Variable.allocelems" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of elements allocated in an
array, or the number of scalar items that can be fetched into the variable.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is deprecated. Use attribute numElements instead.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Variable.bufferSize">
<tt class="descclassname">Variable.</tt><tt class="descname">bufferSize</tt><a class="headerlink" href="#Variable.bufferSize" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the size of the buffer allocated for each
element in bytes.</p>
</dd></dl>
<dl class="method">
<dt id="Variable.getvalue">
<tt class="descclassname">Variable.</tt><tt class="descname">getvalue</tt><big>(</big><span class="optional">[</span><em>pos=0</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Variable.getvalue" title="Permalink to this definition"></a></dt>
<dd><p>Return the value at the given position in the variable.</p>
</dd></dl>
<dl class="attribute">
<dt id="Variable.inconverter">
<tt class="descclassname">Variable.</tt><tt class="descname">inconverter</tt><a class="headerlink" href="#Variable.inconverter" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies the method used to convert data from
Python to the Oracle database. The method signature is converter(value)
and the expected return value is the value to bind to the database. If this
attribute is None, the value is bound directly without any conversion.</p>
</dd></dl>
<dl class="attribute">
<dt id="Variable.numElements">
<tt class="descclassname">Variable.</tt><tt class="descname">numElements</tt><a class="headerlink" href="#Variable.numElements" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the number of elements allocated in an
array, or the number of scalar items that can be fetched into the variable
or bound to the variable.</p>
</dd></dl>
<dl class="attribute">
<dt id="Variable.maxlength">
<tt class="descclassname">Variable.</tt><tt class="descname">maxlength</tt><a class="headerlink" href="#Variable.maxlength" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the maximum length of the variable.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This attribute is deprecated. Use attribute bufferSize instead.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="Variable.outconverter">
<tt class="descclassname">Variable.</tt><tt class="descname">outconverter</tt><a class="headerlink" href="#Variable.outconverter" title="Permalink to this definition"></a></dt>
<dd><p>This read-write attribute specifies the method used to convert data from
from the Oracle to Python. The method signature is converter(value)
and the expected return value is the value to return to Python. If this
attribute is None, the value is returned directly without any conversion.</p>
</dd></dl>
<dl class="method">
<dt id="Variable.setvalue">
<tt class="descclassname">Variable.</tt><tt class="descname">setvalue</tt><big>(</big><em>pos</em>, <em>value</em><big>)</big><a class="headerlink" href="#Variable.setvalue" title="Permalink to this definition"></a></dt>
<dd><p>Set the value at the given position in the variable.</p>
</dd></dl>
<dl class="attribute">
<dt id="Variable.size">
<tt class="descclassname">Variable.</tt><tt class="descname">size</tt><a class="headerlink" href="#Variable.size" title="Permalink to this definition"></a></dt>
<dd><p>This read-only attribute returns the size of the variable. For strings this
value is the size in characters. For all others, this is same value as the
attribute bufferSize.</p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="cursor.html"
title="previous chapter">Cursor Object</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="session_pool.html"
title="next chapter">SessionPool Object</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="session_pool.html" title="SessionPool Object"
>next</a> |</li>
<li class="right" >
<a href="cursor.html" title="Cursor Object"
>previous</a> |</li>
<li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Anthony Tuininga.
Last updated on Jul 02, 2012.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>