This avoids:
Traceback (most recent call last):
File "./plugins/rst", line 86, in <module>
proxy.run()
File "/home/wking/src/ikiwiki/plugins/proxy.py", line 316, in run
e, traceback.format_exc(sys.exc_info()[2])))
File "/usr/lib/python3.2/traceback.py", line 269, in format_exc
...
TypeError: unorderable types: int() < traceback()
The syntax for format_exc in Python 2.x is:
traceback.format_exc([limit])
In Python 3.x, it is:
traceback.format_exc(limit=None, chain=True)
Neither of these need any information from sys.exc_info() passed in.
We previously used None as a sentinel to exit, but None is now a proper
value, so now it's the job of an exception-like object (except it isn't
an exception).
Signed-off-by: martin f. krafft <madduck@madduck.net>
Since we might throw sub-class exceptions, the class should be in the
public namespace, meaning its name should not be prefixed with _.
Signed-off-by: martin f. krafft <madduck@madduck.net>
The preprocessor hooks need to specify IDs different from the ID used to
initialise the proxy. Thus, the hook function now takes an optional id
keyword argument and uses the ID used during initialisation if none is
provided.
Signed-off-by: martin f. krafft <madduck@madduck.net>
Add an rpc() method to the proxy to allow users to call remote
procedures, and route the proxy's own import registration via this
function.
Also, implement convenience functions for the RPC calls exported in the
IkiWiki::XML::RPC namespace.
Signed-off-by: martin f. krafft <madduck@madduck.net>
Instead of using the XML-RPC v2 extension <nil/>, which Perl's
XML::RPC::Parser does not (yet) support (Joey's patch is pending), we
agreed on a sentinel: {'null':''}, that is, a hash with a single key
"null" pointing to the empty string.
The Python proxy automatically converts None appropriately and raises an
exception if a hook function should, by weird coincidence, attempt to
return {'null':''}.
Signed-off-by: martin f. krafft <madduck@madduck.net>
The proxy module provides an abstraction to facilitate writing ikiwiki
plugins in Python.
Signed-off-by: martin f. krafft <madduck@madduck.net>
(cherry picked from commit f347e83d82f26cdc59de17b754a78db58a933ea6)