The directory src/python_api
contains a definition for a Pedro client class in the file pedroclient.py
.
This directory also contains a program pedro_gui.py
that uses this API
and provides an interface to subscriptions and notifications.
Below is a simple example using this class withing the python interpreter.
>>> from pedroclient import * >>> me = PedroClient() >>> me.subscribe('f(X)') 1 >>> me.notify('f(a)') 1 >>> me.get_notification() ('f(a)', 0) >>> me.notify('f(g(12, "hi"))') 1 >>> print me.get_term()[0] f(g(12, "hi")) >>>
PedroClient(machine='localhost', port=4550, async = True)
hostname
using the port port
. If async
is true a thread is created to
process Pedro messages. If not, a call to notification_ready
will
process any Pedro messages. If the main program has its own event loop (e.g. in pygame) then the program runs faster setting async
to False
and
adding notification_ready
to the loop.
disconnect()
connect()
notify(term)
term
as a notification to the Pedro server.
subscribe(term, goal = 'true', rock = 0)
unsubscribe(ID)
register(name)
deregister()
p2p(toaddr, term)
term
to the address toaddr
using the peer-to-peer support. The machine part of the address can be elided if it is to a
process on the same machine. Do not use localhost
as the
name of the machine.
get_notification()
async == True
and
returns None
if async == false
.
get_term()
get_notification
except that the
notification is parsed into a Prolog term.
parse_string(string)
string
into a Prolog term.
notification_ready()
PedroParser()
parse(string)
,
parses string
to a Prolog term. If a parse error occurs, a ParserError
exception is thrown that contains the position of the error.