gmalib
index
/home/g2/users/dang/work/SourceForge/pyGMA/gmalib.py

Main GMA library
 
Contains all the interdependent main components
needed to make a Python GMA implementation.
 
Classes:
Producer
Consumer
DirectoryService

 
Modules
            
SocketServer
UserDict
UserList
cPickle
exceptions
gmautil
cPickle
socket
time
xmlrpclib
xmlrpcserver

 
Classes
            
SocketServer.BaseRequestHandler
PassiveConsumerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
PassiveProducerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
DataChannel
ActiveDataChannel
DirectoryService
LDAPDirectoryService
exceptions.Exception
Error
gmautil.KnowsParent
ControlHandler(xmlrpcserver.RequestHandler, gmautil.KnowsParent)
ConsumerControlHandler
ProducerControlHandler
PassiveConsumerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
PassiveProducerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
Reply
QueryReply
SubscribeReply
UnsubscribeReply
xmlrpcserver.RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler)
ControlHandler(xmlrpcserver.RequestHandler, gmautil.KnowsParent)
ConsumerControlHandler
ProducerControlHandler
SubscriptionList
gmautil.TimeoutTCPServer(SocketServer.TCPServer, gmautil.KnowsParent)
Consumer
Producer
UserDict.UserDict
Event
UserList.UserList
EventValue

 
class ActiveDataChannel(DataChannel)
       
  
__init__(self, url)
_readEventData(self) from DataChannel
_writeEventData(self, str) from DataChannel
close(self) from DataChannel
getAddr(self) from DataChannel
readNetLoggerEvent(self) from DataChannel
readPickledEvent(self) from DataChannel
writeNetLoggerEvent(self, event) from DataChannel
writePickledEvent(self, event) from DataChannel

 
class Consumer(gmautil.TimeoutTCPServer)
      GMA Consumer
 
  
__del__(self) from gmautil.TimeoutTCPServer
__init__(self, handler, port=6666)
Initialize with a TCP server that will start itself in a
separate thread, but also allow itself to be killed with
a 1-second delay.
_abortServer(self) from gmautil.TimeoutTCPServer
_badArgs(self, port, timeout, handler) from gmautil.TimeoutTCPServer
_maxRequestsReached(self, n) from gmautil.TimeoutTCPServer
_signalStarted(self) from gmautil.TimeoutTCPServer
_startServer(self) from gmautil.TimeoutTCPServer
_waitStarted(self) from gmautil.TimeoutTCPServer
_waitingForData(self, ready) from gmautil.TimeoutTCPServer
close(self) from gmautil.TimeoutTCPServer
close_request(self, request) from SocketServer.TCPServer
connect(self, host, port=5555)
createPassiveDataChannel(self, port=8765, HandlerClass=None, reuse_port=0)
Start up a passive data channel listening on the given port.
 
If a listener already exists and the reuse_port option false,
return 0 otherwise return 1.
fileno(self) from SocketServer.TCPServer
finish_request(self, request, client_address) from SocketServer.BaseServer
getParent(self) from gmautil.KnowsParent
get_request(self) from gmautil.TimeoutTCPServer
handle_error(self, request, client_address) from SocketServer.BaseServer
handle_request(self) from SocketServer.BaseServer
process_request(self, request, client_address) from SocketServer.BaseServer
serve_forever(self) from gmautil.TimeoutTCPServer
server_activate(self) from SocketServer.TCPServer
server_bind(self) from SocketServer.TCPServer
server_close(self) from gmautil.TimeoutTCPServer
setParent(self, new) from gmautil.KnowsParent
verify_request(self, request, client_address) from SocketServer.BaseServer
wrapProxy(self)
Do nothing (for now).

 
class ConsumerControlHandler(ControlHandler)
      Control messages supported only by, or specialized by, the consumer.
 
  
__del__(self) from SocketServer.BaseRequestHandler
__init__(self, request, client_address, server) from ControlHandler
address_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
call(self, method, params) from ControlHandler
date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
do_POST(self) from xmlrpcserver.RequestHandler
end_headers(self) from BaseHTTPServer.BaseHTTPRequestHandler
event(self, id, event)
For handling events sent by a 'callbackSubscribe'
finish(self) from SocketServer.StreamRequestHandler
getParent(self) from ControlHandler
getRequestAddr(self) from ControlHandler
handle(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_error(self, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_message(self, format, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_request(self, code='-', size='-') from BaseHTTPServer.BaseHTTPRequestHandler
parse_request(self) from BaseHTTPServer.BaseHTTPRequestHandler
send_error(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
send_header(self, keyword, value) from BaseHTTPServer.BaseHTTPRequestHandler
send_response(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
setParent(self, new) from ControlHandler
setup(self) from SocketServer.StreamRequestHandler
subscribeActive(self, id, event, data_format, url, security_info) from ControlHandler
subscribeCallback(self, id, event, data_format, security_info) from ControlHandler
subscribePassive(self, id, event, data_format, url, security_info) from ControlHandler
unsubscribe(self, id, security_info) from ControlHandler
version_string(self) from BaseHTTPServer.BaseHTTPRequestHandler

 
class ControlHandler(xmlrpcserver.RequestHandler, gmautil.KnowsParent)
      Interface for handling control messages.
 
Includes methods supported by both producer and consumer.
 
  
__del__(self) from SocketServer.BaseRequestHandler
__init__(self, request, client_address, server)
address_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
call(self, method, params)
Dynamically dispatch RPC calls to proper method in
this class (or subclass).
 
If the method does not exist, return an error.
date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
do_POST(self) from xmlrpcserver.RequestHandler
end_headers(self) from BaseHTTPServer.BaseHTTPRequestHandler
finish(self) from SocketServer.StreamRequestHandler
getParent(self)
Override method in KnowsParent.
getRequestAddr(self)
Get (host,port) tuple of requesting client address.
handle(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_error(self, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_message(self, format, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_request(self, code='-', size='-') from BaseHTTPServer.BaseHTTPRequestHandler
parse_request(self) from BaseHTTPServer.BaseHTTPRequestHandler
send_error(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
send_header(self, keyword, value) from BaseHTTPServer.BaseHTTPRequestHandler
send_response(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
setParent(self, new)
Override method in KnowsParent.
setup(self) from SocketServer.StreamRequestHandler
subscribeActive(self, id, event, data_format, url, security_info)
Subscribe variant.
 
In active mode, the callee 'actively' connects back to the caller.
The caller should create a passive data channel before calling this.
The provided url specifies a host/port to connect to.
subscribeCallback(self, id, event, data_format, security_info)
Subscribe variant.
 
In callback mode, events are delivered by an RPC call to the event()
method defined in the ConsumerControlHandler class.
This is easy, but extremely slow as it has the overhead of connection
setup for every event.
subscribePassive(self, id, event, data_format, url, security_info)
Subscribe variant.
 
In passive mode, the callee 'passively' listens on a socket for
the caller to connect. It is assumed that the caller will not attempt
to connect before receiving a reply to this method.
The provided url specifies a port to listen on.
unsubscribe(self, id, security_info)
Terminate a subscription.
version_string(self) from BaseHTTPServer.BaseHTTPRequestHandler

 
class DataChannel
      Add some GMA Event read/write operations to a socket.
 
  
__init__(self, sock)
Wrap the input socket object.
_readEventData(self)
Read and return raw data for an event.
_writeEventData(self, str)
Write event data to a socket and return the
number of bytes written.
close(self)
Close channel.
getAddr(self)
Return (host,port) of listening socket.
readNetLoggerEvent(self)
Read one NetLogger (ULM) event from the stream.
 
Return an Event instance if successful, otherwise
None.
readPickledEvent(self)
Read one pickled event from the stream.
 
Return an Event instance if successful, otherwise
None.
writeNetLoggerEvent(self, event)
Write one NetLogger event to the stream.
 
Return value is the same as for socket.send()
writePickledEvent(self, event)
Write one pickled event to the stream.
 
Return value is the same as for socket.send()

 
class DirectoryService
      Base class for component that interfaces to a remote
directory service.
 
  
__init__(self, directory_url)
Init and set URL to the directory_url, which
of course could be any sort of string.
registerConsumer(self, info, event, security_info=None)
Register Consumer for the given event, delivery, etc. in the
directory service given by directory_url. As for lookup, security_info
may be used to authenticatge with the directory service.
 
Arguments:
+ info          - Information about the Consumer
+ event         - The event being registered
+ security_info - may be used to authenticate with the DS.
 
Return: 1 if OK, 0 if failure
registerProducer(self, info, event, security_info=None)
Register Producer for the given event, delivery, etc. in the direc-
tory service given by directory_url. As for lookup, security_info may
be used to authenticatge with the directory service.
 
Arguments:
+ info          - Information about the Producer
+ event         - The event being registered
+ security_info - may be used to authenticate with the DS.
 
Return: 1 if OK, 0 if failure
searchForConsumer(self, event_pattern, consumer_info, security_info=None)
Look in the directory given by directory_url for a consumer that
supports one of the provided delivery types and formats, etc., and
that provides event(s) given by the event_pattern.
 
Arguments:
+ event_pattern - Matches an event instance
+ consumer_info - Info about a Consumer
+ security_info - may be used to authenticate with the DS.
 
Return: list of 1+ results, or None if failure.
searchForProducer(self, event_pattern, producer_info, security_info=None)
Look in the directory given by directory_url for a consumer that
supports one of the provided delivery types and formats, etc., and
that provides event(s) given by the event_pattern.
 
Arguments:
+ event_pattern - Matches an event instance
+ consumer_info - Info about a Producer
+ security_info - may be used to authenticate with the DS.
 
Return: list of 1+ results, or None if failure.
setup(self, *args)
Set up the directory service.

 
class Error(exceptions.Exception)
       
  
__getitem__(...) from exceptions.Exception
__init__(...) from exceptions.Exception
__str__(...) from exceptions.Exception

 
class Event(UserDict.UserDict)
      A Grid Performance event.
 
This can be treated like a dictionary, and has additional functions
for getting and setting the event name and timestamp.
Element names starting with '__' are reserved for internal use.
 
  
__cmp__(self, dict) from UserDict.UserDict
__delitem__(self, key) from UserDict.UserDict
__getitem__(self, key) from UserDict.UserDict
__getstate__(self)
For pickling.
__init__(self, from_dict=None)
__len__(self) from UserDict.UserDict
__repr__(self) from UserDict.UserDict
__setitem__(self, key, item) from UserDict.UserDict
__setstate__(self, dict)
For unpickling.
addElement(self, name)
Add a new EventValue object for 'name'.
clear(self) from UserDict.UserDict
copy(self) from UserDict.UserDict
get(self, key, failobj=None) from UserDict.UserDict
getName(self)
Return event name.
getTimestampASCII(self)
Return time as a GMA ASCII string.
getTimestampFloat(self)
Return time as a floating point number.
This is the internal format.
has_key(self, key) from UserDict.UserDict
items(self) from UserDict.UserDict
keys(self) from UserDict.UserDict
popitem(self) from UserDict.UserDict
setName(self, name)
Set event name.
setTimestamp(self, user_time=None)
Accessor.
Use current time if no time is provided.
The user_time must be a floating-point number.
setdefault(self, key, failobj=None) from UserDict.UserDict
update(self, dict) from UserDict.UserDict
values(self) from UserDict.UserDict

 
class EventValue(UserList.UserList)
      Encapsulate the required and optional attributes of an
event's value:
 
+ value - the actual value itself
+ units - string units, something like 'Mb/s'
+ accuracy - string accuracy something like '+-1.23'
+ inout - 1=input, 2=output, 3=input and output
+ relation - which values from the 'range' are specified by this value,
             one of '=','<','>','<=','>=', or '!='
 
  
_UserList__cast = __cast(self, other) from UserList.UserList
__add__(self, other) from UserList.UserList
__cmp__(self, other) from UserList.UserList
__contains__(self, item) from UserList.UserList
__delitem__(self, i) from UserList.UserList
__delslice__(self, i, j) from UserList.UserList
__eq__(self, other) from UserList.UserList
__ge__(self, other) from UserList.UserList
__getitem__(self, i) from UserList.UserList
__getslice__(self, i, j) from UserList.UserList
__getstate__(self)
For pickling.
__gt__(self, other) from UserList.UserList
__iadd__(self, other) from UserList.UserList
__imul__(self, n) from UserList.UserList
__init__(self, from_list=None, value=None, units=None, acc=None, inout=2, rel='=')
Set default values for all unspecified element value
attributes.
__le__(self, other) from UserList.UserList
__len__(self) from UserList.UserList
__lt__(self, other) from UserList.UserList
__mul__(self, n) from UserList.UserList
__ne__(self, other) from UserList.UserList
__radd__(self, other) from UserList.UserList
__repr__(self) from UserList.UserList
__rmul__ = __mul__(self, n) from UserList.UserList
__setitem__(self, i, item) from UserList.UserList
__setslice__(self, i, j, other) from UserList.UserList
__setstate__(self, alist)
For unpickling.
append(self, item) from UserList.UserList
count(self, item) from UserList.UserList
extend(self, other) from UserList.UserList
getAccuracy(self)
getInOut(self)
getRelation(self)
getUnits(self)
getValue(self)
index(self, item) from UserList.UserList
insert(self, i, item) from UserList.UserList
pop(self, i=-1) from UserList.UserList
remove(self, item) from UserList.UserList
reverse(self) from UserList.UserList
setAccuracy(self, v)
setInOut(self, v)
setRelation(self, v)
setUnits(self, v)
setValue(self, v)
sort(self, *args) from UserList.UserList

 
class LDAPDirectoryService(DirectoryService)
      Concrete directory service implementation using _ldap.
 
XXX: INCOMPLETE!!
 
  
__init__(self, url)
Init LDAP server object
anonymousBind(self)
Perform a simple anonymous bind to the server.
 
If a binding already exists, raise an error.
registerConsumer(self, info, event, security_info=None) from DirectoryService
registerProducer(self, info, event, security_info=None) from DirectoryService
searchForConsumer(self, event_pattern, consumer_info, security_info=None) from DirectoryService
searchForProducer(self, event_pattern, producer_info, security_info=None) from DirectoryService
setup(self, *args) from DirectoryService

 
class PassiveConsumerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
      Handle data channel for a Consumer in 'passive' mode.
 
Subclasses should override receiveEvents().
 
  
__del__(self)
__init__(self, request, client_address, server) from SocketServer.BaseRequestHandler
_getConsumer(self)
finish(self) from SocketServer.BaseRequestHandler
getParent(self) from gmautil.KnowsParent
handle(self)
Override method in BaseRequestHandler.
receiveEvents(self, sock, consumer)
Subclasses override this to send events to the socket.
setParent(self, new) from gmautil.KnowsParent
setup(self) from SocketServer.BaseRequestHandler

 
class PassiveProducerDataHandler(SocketServer.BaseRequestHandler, gmautil.KnowsParent)
      Handle data channel for a Producer in 'passive' mode.
 
Subclasses should override sendEvents().
 
  
__del__(self)
__init__(self, request, client_address, server) from SocketServer.BaseRequestHandler
_getProducer(self)
finish(self) from SocketServer.BaseRequestHandler
getParent(self) from gmautil.KnowsParent
handle(self)
Override method in BaseRequestHandler.
sendEvents(self, sock, producer)
Subclasses override this to send events to the socket.
setParent(self, new) from gmautil.KnowsParent
setup(self) from SocketServer.BaseRequestHandler

 
class Producer(gmautil.TimeoutTCPServer)
      GMA Producer.
 
  
__del__(self) from gmautil.TimeoutTCPServer
__init__(self, handler, port=5555)
Initialize with a TCP server that will start itself in a
separate thread, but also allow itself to be killed with
a 1-second delay.
_abortServer(self) from gmautil.TimeoutTCPServer
_badArgs(self, port, timeout, handler) from gmautil.TimeoutTCPServer
_maxRequestsReached(self, n) from gmautil.TimeoutTCPServer
_signalStarted(self) from gmautil.TimeoutTCPServer
_startServer(self) from gmautil.TimeoutTCPServer
_waitStarted(self) from gmautil.TimeoutTCPServer
_waitingForData(self, ready) from gmautil.TimeoutTCPServer
close(self) from gmautil.TimeoutTCPServer
close_request(self, request) from SocketServer.TCPServer
connect(self, host, port=6666)
Connect to consumer, remembering the proxy object
to avoid reconnecting every time.
createPassiveDataChannel(self, port=8765, HandlerClass=None, reuse_port=0)
Start up a passive data channel listening on the given port.
 
If a listener already exists and the reuse_port option false,
return 0 otherwise return 1.
disconnect(self, host, port=6666)
Disconnect a consumer.
fileno(self) from SocketServer.TCPServer
finish_request(self, request, client_address) from SocketServer.BaseServer
getParent(self) from gmautil.KnowsParent
getSubscriptionList(self)
get_request(self) from gmautil.TimeoutTCPServer
handle_error(self, request, client_address) from SocketServer.BaseServer
handle_request(self) from SocketServer.BaseServer
process_request(self, request, client_address) from SocketServer.BaseServer
serve_forever(self) from gmautil.TimeoutTCPServer
server_activate(self) from SocketServer.TCPServer
server_bind(self) from SocketServer.TCPServer
server_close(self) from gmautil.TimeoutTCPServer
setParent(self, new) from gmautil.KnowsParent
verify_request(self, request, client_address) from SocketServer.BaseServer

 
class ProducerControlHandler(ControlHandler)
      Control messages supported only by, or specialized by, the producer.
 
  
__del__(self) from SocketServer.BaseRequestHandler
__init__(self, request, client_address, server) from ControlHandler
address_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
call(self, method, params) from ControlHandler
date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
do_POST(self) from xmlrpcserver.RequestHandler
end_headers(self) from BaseHTTPServer.BaseHTTPRequestHandler
finish(self) from SocketServer.StreamRequestHandler
getParent(self) from ControlHandler
getRequestAddr(self) from ControlHandler
getServer(self)
handle(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_date_time_string(self) from BaseHTTPServer.BaseHTTPRequestHandler
log_error(self, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_message(self, format, *args) from BaseHTTPServer.BaseHTTPRequestHandler
log_request(self, code='-', size='-') from BaseHTTPServer.BaseHTTPRequestHandler
parse_request(self) from BaseHTTPServer.BaseHTTPRequestHandler
query(self, event, security_info)
Query for performance information.
send_error(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
send_header(self, keyword, value) from BaseHTTPServer.BaseHTTPRequestHandler
send_response(self, code, message=None) from BaseHTTPServer.BaseHTTPRequestHandler
setParent(self, new) from ControlHandler
setup(self) from SocketServer.StreamRequestHandler
subscribeActive(self, id, event, data_format, url, security_info) from ControlHandler
subscribeCallback(self, id, event, data_format, security_info) from ControlHandler
subscribePassive(self, id, event, data_format, url, security_info) from ControlHandler
unsubscribe(self, id, security_info) from ControlHandler
version_string(self) from BaseHTTPServer.BaseHTTPRequestHandler

 
class QueryReply(Reply)
      Reply to query request.
 
  
__init__(self, initial_status=1, from_val=None)
_isError(self, raw_reply) from Reply
_setError(self, error_reply) from Reply
_setFromVal(self, val)
bad(self) from Reply
getCode(self) from Reply
getDetail(self) from Reply
getEvent(self)
Return the event.
isbad(self) from Reply
isok(self) from Reply
ok(self) from Reply
setCode(self, new_val) from Reply
setCodeDetail(self, code, detail) from Reply
setDetail(self, new_val) from Reply
setEvent(self, e)
Set the event for the reply.

 
class Reply
      Abstract superclass for Reply objects that represent
the response to a method call.
 
  
__init__(self, initial_status, vals=None)
_isError(self, raw_reply)
_setError(self, error_reply)
_setFromVal(self, vals)
bad(self)
getCode(self)
getDetail(self)
isbad(self)
isok(self)
ok(self)
setCode(self, new_val)
setCodeDetail(self, code, detail)
setDetail(self, new_val)

 
class SubscribeReply(Reply)
      Reply to subscribe request.
 
  
__init__(self, initial_status=1, from_val=None)
_isError(self, raw_reply) from Reply
_setError(self, error_reply) from Reply
_setFromVal(self, val)
Set subscribe reply from a dictionary.
bad(self) from Reply
getCode(self) from Reply
getDetail(self) from Reply
getFullURL(self)
getHost(self)
getID(self)
getPort(self)
getURL(self)
isbad(self) from Reply
isok(self) from Reply
ok(self) from Reply
setCode(self, new_val) from Reply
setCodeDetail(self, code, detail) from Reply
setDetail(self, new_val) from Reply
setHost(self, host)
setID(self, new_val)
setPort(self, port)

 
class SubscriptionList
       
  
add(self, id)
Add new subscription.
Returns 1 if OK, 0 if subscription exists.
clearInfo(self, id)
Clear info for existing subscription.
delete(self, id)
Delete existing subscription.
getID(self, value)
Get mapped subscription ID.
getInfo(self, id)
Get stored information for subscription.
mapID(self, id, value)
Map a subscription ID to some value,e.g. a port.
Returns 1 if OK, 0 if subscription ID does not exist.
setInfo(self, id, key, value)
Set stored information for subscription.

 
class UnsubscribeReply(Reply)
      Reply to unsubscribe request.
This has no information beyond success or failure and a descriptive
message.
 
  
__init__(self, initial_status=1, from_val=None)
_isError(self, raw_reply) from Reply
_setError(self, error_reply) from Reply
_setFromVal(self, vals) from Reply
bad(self) from Reply
getCode(self) from Reply
getDetail(self) from Reply
isbad(self) from Reply
isok(self) from Reply
ok(self) from Reply
setCode(self, new_val) from Reply
setCodeDetail(self, code, detail) from Reply
setDetail(self, new_val) from Reply

 
Data
             BufferType = <type 'buffer'>
BuiltinFunctionType = <type 'builtin_function_or_method'>
BuiltinMethodType = <type 'builtin_function_or_method'>
ClassType = <type 'class'>
CodeType = <type 'code'>
ComplexType = <type 'complex'>
DEFAULT_CONSUMER_PORT = 6666
DEFAULT_PRODUCER_PORT = 5555
DictType = <type 'dictionary'>
DictionaryType = <type 'dictionary'>
EllipsisType = <type 'ellipsis'>
FAILURE = 0
FileType = <type 'file'>
FloatType = <type 'float'>
FrameType = <type 'frame'>
FunctionType = <type 'function'>
GMA_SCHEME = 'ftp'
InstanceType = <type 'instance'>
IntType = <type 'int'>
LambdaType = <type 'function'>
ListType = <type 'list'>
LongType = <type 'long int'>
MethodType = <type 'instance method'>
ModuleType = <type 'module'>
NoneType = <type 'None'>
SUCCESS = 1
SliceType = <type 'slice'>
StringType = <type 'string'>
TracebackType = <type 'traceback'>
TupleType = <type 'tuple'>
TypeType = <type 'type'>
UnboundMethodType = <type 'instance method'>
UnicodeType = <type 'unicode'>
XRangeType = <type 'xrange'>
__file__ = './gmalib.pyc'
__name__ = 'gmalib'
__rcs_info__ = {'author': '$Author: dkgunter $', 'created': '1 June 2001', 'creator': 'Dan Gunter, dkgunter@lbl.gov', 'date': '$Date: 2001/07/13 22:25:23 $', 'module_name': '$RCSfile: gmalib.html,v $', 'project': 'pyGMA', 'rcs_id': '$Id: gmalib.html,v 1.1 2001/07/13 22:25:23 dkgunter Exp $', 'version': '$Revision: 1.1 $'}