PyZ3950/zoom (version 1.0)
index
/home/asl2/src/PyZ2/PyZ3950/PyZ3950/zoom.py

Implements the ZOOM 1.4 API (http://zoom.z3950.org/api)
for Z39.50.
 
Some global notes on the binding (these will only make sense when read
after the API document):
 
Get/Set Option is implemented as member attribute access or
assignment.  Implementations are encouraged to throw an AttributeError
for unsupported (or, possibly, mistyped) attributes.  (Production
applications are encouraged to catch such errors.)
 
All errors are reported as exceptions deriving from ZoomError (or, at
least, it's a bug if they aren't).  Bib1Err is defined as part of the
binding; all the rest are specific to this implementation.
 
ResultSet provides a sequence interface, with standard Python
iteration, indexing, and slicing.  So if rs is a ResultSet, use len
(rs) for Get_Size and rs[i] for Get_Record, or iterate with for r in
rs: foo(r).  Any attempt to access a record for which the server
returned a surrogate diagnostic will raise the appropriate Bib1Err
exception.
 
For Record, Render_Record is implemented as Python __str__.  The
'syntax' member contains the string-format record syntax, and the
'data' member contains the raw data.
 
The following query types are supported:
- "CCL", ISO 8777, (http://www.indexdata.dk/yaz/doc/tools.tkl#CCL)
- "S-CCL", the same, but interpreted on the server side
- "CQL", the Common Query Language, (http://www.loc.gov/z3950/agency/zing/cql/)
- "S-CQL", the same, but interpreted on the server side
- "PQF", Index Data's Prefix Query Format, (http://www.indexdata.dk/yaz/doc/tools.tkl#PQF)
- "C2", Cheshire II query syntax, (http://cheshire.berkeley.edu/cheshire2.html#zfind)
- "ZSQL", Z-SQL, see (http://archive.dstc.edu.au/DDU/projects/Z3950/Z+SQL/)
- "CQL-TREE", a general-purpose escape allowing any object with a toRPN method to be used, e.g. the CQL tree objects
 
ScanSet, like ResultSet, has a sequence interface.  The i-th element
is a dictionary.  See the ScanSet documentation for supported keys.
 
Sample usage:
    from PyZ3950 import zoom
    conn = zoom.Connection ('z3950.loc.gov', 7090)
    conn.databaseName = 'VOYAGER'
    conn.preferredRecordSyntax = 'USMARC'
    query = zoom.Query ('CCL', 'ti="1066 and all that"')
    res = conn.search (query)
    for r in res:
            print str(r)
    conn.close ()
I hope everything else is clear from the docstrings and the abstract
API: let me know if that's wrong, and I'll try to do better.
 
For some purposes (I think the only one is writing Z39.50 servers),
you may want to use the functions in the z3950 module instead.

 
Modules
            
PyZ3950.CQLParser
PyZ3950.SRWDiagnostics
PyZ3950.asn1
PyZ3950.bib1msg
PyZ3950.c2query
PyZ3950.ccl
getopt
PyZ3950.grs1
PyZ3950.oids
PyZ3950.pqf
sys
PyZ3950.z3950
PyZ3950.zmarc
 
Classes
            
exceptions.Exception
ZoomError
Bib1Err
ClientNotImplError
ConnectionError
ProtocolError
UnexpectedCloseError
QuerySyntaxError
ServerNotImplError
UnknownRecSyn
Query
Record
_AttrCheck
Connection(_AttrCheck, _ErrHdlr)
ResultSet(_AttrCheck, _ErrHdlr)
ScanSet(_AttrCheck, _ErrHdlr)
SortKey
_ErrHdlr
SurrogateDiagnostic
_RecordType
 
class Bib1Err(ZoomError)
      Exception for BIB-1 error
 
  
Method resolution order:
Bib1Err
ZoomError
exceptions.Exception

Methods defined here:
__init__(self, condition, message, addtlInfo)
__str__(self)

Data and non-method functions defined here:
__doc__ = 'Exception for BIB-1 error'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
 
class ClientNotImplError(ZoomError)
      Exception for ZOOM client-side functionality not implemented (bug
author)
 
  
Method resolution order:
ClientNotImplError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for ZOOM client-side functionality not implemented (bug\n author)'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class Connection(_AttrCheck, _ErrHdlr)
      Connection object
 
  
Method resolution order:
Connection
_AttrCheck
_ErrHdlr

Methods defined here:
__init__(self, host, port, connect=1, **kw)
Establish connection to hostname:port.  kw contains initial
values for options, and is useful for options which affect
the InitializeRequest.  Currently supported values:
 
user                   Username for authentication
password               Password for authentication
group                  Group for authentication
maximumRecordSize      Maximum size in bytes of one record
preferredMessageSize   Maximum size in bytes for response
lang                   3 letter language code
charset                Character set
implementationId       Id for client implementation
implementationName     Name for client implementation
implementationVersion  Version of client implementation
_make_rsn(self)
Return result set name
close(self)
Close connection
connect(self)
scan(self, query)
# and 'Error Code', 'Error Message', and 'Addt'l Info' methods still
# eeded
search(self, query)
Search, taking Query object, returning ResultSet
sort(self, sets, keys)
 Sort sets by keys, return resultset interface

Data and non-method functions defined here:
__doc__ = 'Connection object'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
_cli = None
_queryTypes = ['S-CQL', 'S-CCL', 'RPN', 'ZSQL']
list() -> new list
list(sequence) -> new list initialized from sequence's items
attrlist = ['smallSetUpperBound', 'largeSetLowerBound', 'mediumSetPresentNumber', 'smallSetElementSetNames', 'mediumSetElementSetNames', 'user', 'password', 'group', 'maximumRecordSize', 'preferredMessageSize', 'lang', 'charset', 'implementationId', 'implementationName', 'implementationVersion', 'stepSize', 'numberOfEntries', 'responsePosition', 'databaseName', 'namedResultSets', ...]
list() -> new list
list(sequence) -> new list initialized from sequence's items
charset = None
databaseName = 'Default'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
elementSetName = 'F'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
group = None
host = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
implementationId = 'PyZ3950'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
implementationName = 'PyZ3950 1.0/ZOOM v1.4'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
implementationVersion = '1.0'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
init_attrs = ['user', 'password', 'group', 'maximumRecordSize', 'preferredMessageSize', 'lang', 'charset', 'implementationId', 'implementationName', 'implementationVersion']
list() -> new list
list(sequence) -> new list initialized from sequence's items
lang = None
maximumRecordSize = 1048576
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
namedResultSets = 1
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
not_implement_attrs = ['piggyback', 'schema', 'proxy', 'async']
list() -> new list
list(sequence) -> new list initialized from sequence's items
numberOfEntries = 20
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
password = None
port = 0
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
preferredMessageSize = 1048576
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
preferredRecordSyntax = 'USMARC'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
presentChunk = 20
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
responsePosition = 1
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
scan_zoom_to_z3950 = {'numberOfEntries': 'numberOfTermsRequested', 'responsePosition': 'preferredPositionInResponse', 'stepSize': 'stepSize'}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v
search_attrs = ['smallSetUpperBound', 'largeSetLowerBound', 'mediumSetPresentNumber', 'smallSetElementSetNames', 'mediumSetElementSetNames']
list() -> new list
list(sequence) -> new list initialized from sequence's items
stepSize = 0
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
user = None

Methods inherited from _AttrCheck:
__setattr__(self, attr, val)
Ensure attr is in attrlist (list of allowed attributes), or
private (begins w/ '_'), or begins with 'X-' (reserved for users)

Methods inherited from _ErrHdlr:
err(self, condition, addtlInfo, oid)
Translate condition + oid to message, save, and raise exception
err_diagrec(self, diagrec)

Data and non-method functions inherited from _ErrHdlr:
err_attrslist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class ConnectionError(ZoomError)
      Exception for TCP error
 
  
Method resolution order:
ConnectionError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for TCP error'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class ProtocolError(ZoomError)
      Exception for malformatted server response
 
  
Method resolution order:
ProtocolError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for malformatted server response'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class Query
       
   Methods defined here:
__init__(self, typ, query)
Creates Query object.
Supported query types:  CCL, S-CCL, CQL, S-CQL, PQF, C2, ZSQL, CQL-TREE

Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class QuerySyntaxError(ZoomError)
      Exception for query not parsable by client
 
  
Method resolution order:
QuerySyntaxError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for query not parsable by client'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class Record
      Represent retrieved record.  'syntax' attribute is a string,
'data' attribute is the data, which is:
 
USMARC   -- raw MARC data
SUTRS    -- a string (possibly in the future unicode)
XML      -- ditto
GRS-1    -- a tree (see grs1.py for details)
EXPLAIN  -- a hard-to-describe format (contact me if you're actually using this)
OPAC     -- ditto
 
Other representations are not yet defined.
 
   Methods defined here:
__init__(self, oid, data, dbname)
Only for use by ResultSet
__str__(self)
Render printably
get_field(self, spec)
Get field
get_fieldcount(self)
Get number of fields
is_surrogate_diag(self)

Data and non-method functions defined here:
__doc__ = "Represent retrieved record. 'syntax' attribute ...\n Other representations are not yet defined."
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class ResultSet(_AttrCheck, _ErrHdlr)
      Cache results, presenting read-only sequence interface.  If
a surrogate diagnostic is returned for the i-th record, an
appropriate exception will be raised on access to the i-th
element (either access by itself or as part of a slice).
 
  
Method resolution order:
ResultSet
_AttrCheck
_ErrHdlr

Methods defined here:
__getattr__(self, key)
Forward attribute access to Connection if appropriate
__getitem__(self, i)
Ensure item is present, and return a Record
__getslice__(self, i, j)
__init__(self, conn, searchResult, resultSetName, ctr)
Only for creation by Connection object
__len__(self)
Get number of records
_check_stale(self)
_ensure_present(self, i)
_ensure_recs(self)
_extract_recs(self, records, lbound)
_get_rec(self, i)
_make_keywords(self)
Set up dict of parms for present request
_pin(self, i)
Handle negative indices
delete(self)
Delete result set
sort(self, keys)

Data and non-method functions defined here:
__doc__ = 'Cache results, presenting read-only sequence int... (either access by itself or as part of a slice).'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
attrlist = ['elementSetName', 'preferredRecordSyntax', 'presentChunk', 'errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
inherited_elts = ['elementSetName', 'preferredRecordSyntax', 'presentChunk']
list() -> new list
list(sequence) -> new list initialized from sequence's items
not_implement_attrs = ['piggyback', 'schema']
list() -> new list
list(sequence) -> new list initialized from sequence's items

Methods inherited from _AttrCheck:
__setattr__(self, attr, val)
Ensure attr is in attrlist (list of allowed attributes), or
private (begins w/ '_'), or begins with 'X-' (reserved for users)

Methods inherited from _ErrHdlr:
err(self, condition, addtlInfo, oid)
Translate condition + oid to message, save, and raise exception
err_diagrec(self, diagrec)

Data and non-method functions inherited from _ErrHdlr:
err_attrslist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class ScanSet(_AttrCheck, _ErrHdlr)
      Hold result of scan.
 
  
Method resolution order:
ScanSet
_AttrCheck
_ErrHdlr

Methods defined here:
__getitem__(self, i)
__getslice__(self, i, j)
__init__(self, scanresp)
For internal use only!
__len__(self)
Return number of entries
_get_rec(self, i)
_pin(self, i)
get_field(self, field, i)
Returns value of field:
term: term
freq: integer
display: string
attrs: currently z3950 structure, should be string of attributes
alt: currently z3950 structure, should be [string of attrs, term] 
other: currently z3950 structure, dunno what the best Python representation would be
get_fields(self, i)
Return a dictionary mapping ZOOM's field names to values
present in the response.  (Like get_field, but for all fields.)
get_term(self, i)
Return term.  Note that get_{term,field,fields} can throw an
exception if the i'th term is a surrogate diagnostic.

Data and non-method functions defined here:
__doc__ = 'Hold result of scan.\n '
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
attrlist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
zoom_to_z3950 = {'alt': 'alternativeTerm', 'attrs': 'suggestedAttributes', 'display': 'displayTerm', 'freq': 'globalOccurrences', 'other': 'otherTermInfo'}
dict() -> new empty dictionary.
dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs.
dict(seq) -> new dictionary initialized as if via:
    d = {}
    for k, v in seq:
        d[k] = v

Methods inherited from _AttrCheck:
__setattr__(self, attr, val)
Ensure attr is in attrlist (list of allowed attributes), or
private (begins w/ '_'), or begins with 'X-' (reserved for users)

Data and non-method functions inherited from _AttrCheck:
not_implement_attrs = []
list() -> new list
list(sequence) -> new list initialized from sequence's items

Methods inherited from _ErrHdlr:
err(self, condition, addtlInfo, oid)
Translate condition + oid to message, save, and raise exception
err_diagrec(self, diagrec)

Data and non-method functions inherited from _ErrHdlr:
err_attrslist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class ServerNotImplError(ZoomError)
      Exception for function not implemented on server
 
  
Method resolution order:
ServerNotImplError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for function not implemented on server'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class SortKey(_AttrCheck)
       
   Methods defined here:
__init__(self, **kw)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
attrlist = ['relation', 'caseInsensitive', 'missingValueAction', 'missingValueData', 'type', 'sequence']
list() -> new list
list(sequence) -> new list initialized from sequence's items
caseInsensitive = 1
int(x[, base]) -> integer
 
Convert a string or number to an integer, if possible.  A floating point
argument will be truncated towards zero (this does not include a string
representation of a floating point number!)  When converting a string, use
the optional base.  It is an error to supply a base when converting a
non-string.
missingValueAction = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
missingValueData = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
relation = 'ascending'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
sequence = ''
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
type = 'accessPoint'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from _AttrCheck:
__setattr__(self, attr, val)
Ensure attr is in attrlist (list of allowed attributes), or
private (begins w/ '_'), or begins with 'X-' (reserved for users)

Data and non-method functions inherited from _AttrCheck:
not_implement_attrs = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class SurrogateDiagnostic(_ErrHdlr)
      Represent surrogate diagnostic.  Raise appropriate exception
on access to syntax or data, or when raise_exn method is called.
Currently, RecordSet relies on the return from is_surrogate_diag (),
and calls raise_exn based on that.
 
   Methods defined here:
__getattr__(self, attr)
__init__(self, diagrec)
is_surrogate_diag(self)
raise_exn(self)

Data and non-method functions defined here:
__doc__ = 'Represent surrogate diagnostic. Raise appropria...e_diag (),\n and calls raise_exn based on that.'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from _ErrHdlr:
err(self, condition, addtlInfo, oid)
Translate condition + oid to message, save, and raise exception
err_diagrec(self, diagrec)

Data and non-method functions inherited from _ErrHdlr:
err_attrslist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class UnexpectedCloseError(ProtocolError)
      Exception for unexpected (z3950, not tcp) close from server
 
  
Method resolution order:
UnexpectedCloseError
ProtocolError
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for unexpected (z3950, not tcp) close from server'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class UnknownRecSyn(ZoomError)
      Exception for unknown record syntax returned from server
 
  
Method resolution order:
UnknownRecSyn
ZoomError
exceptions.Exception

Data and non-method functions defined here:
__doc__ = 'Exception for unknown record syntax returned from server'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class ZoomError(exceptions.Exception)
      Base class for all errors reported from this module
 
   Data and non-method functions defined here:
__doc__ = 'Base class for all errors reported from this module'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class _AttrCheck
      Prevent typos
 
   Methods defined here:
__setattr__(self, attr, val)
Ensure attr is in attrlist (list of allowed attributes), or
private (begins w/ '_'), or begins with 'X-' (reserved for users)

Data and non-method functions defined here:
__doc__ = 'Prevent typos'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
attrlist = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
not_implement_attrs = []
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class _ErrHdlr
      Error-handling services
 
   Methods defined here:
err(self, condition, addtlInfo, oid)
Translate condition + oid to message, save, and raise exception
err_diagrec(self, diagrec)

Data and non-method functions defined here:
__doc__ = 'Error-handling services'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
err_attrslist = ['errCode', 'errMsg', 'addtlInfo']
list() -> new list
list(sequence) -> new list initialized from sequence's items
 
class _RecordType
      Map syntax string to OID and per-syntax utility functions
 
   Methods defined here:
__init__(self, name, oid, renderer=<function <lambda>>, fieldcount=<function <lambda>>, field=None, preproc=<function <lambda>>)
Register syntax

Data and non-method functions defined here:
__doc__ = 'Map syntax string to OID and per-syntax utility functions'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'PyZ3950/zoom'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
Functions
            
_extract_attrs(obj, attrlist)
_oid_to_key(oid)
my_enumerate(l)
render_OPAC(opac_data)
 
Data
             __author__ = 'Aaron Lav (asl2@pobox.com)'
__file__ = './PyZ3950/zoom.pyc'
__name__ = 'PyZ3950/zoom'
__version__ = '1.0'
_record_type_dict = {'EXPLAIN': <PyZ3950/zoom._RecordType instance>, 'GRS-1': <PyZ3950/zoom._RecordType instance>, 'OPAC': <PyZ3950/zoom._RecordType instance>, 'SGML': <PyZ3950/zoom._RecordType instance>, 'SUTRS': <PyZ3950/zoom._RecordType instance>, 'UKMARC': <PyZ3950/zoom._RecordType instance>, 'USMARC': <PyZ3950/zoom._RecordType instance>, 'XML': <PyZ3950/zoom._RecordType instance>}
nested_scopes = _Feature((2, 1, 0, 'beta', 1), (2, 2, 0, 'alpha', 0), 16)
trace_extract = 0
 
Author
             Aaron Lav (asl2@pobox.com)