1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
Metadata-Version: 1.0
Name: epc
Version: 0.0.5
Summary: EPC (RPC stack for Emacs Lisp) implementation in Python
Home-page: https://github.com/tkf/python-epc
Author: Takafumi Arakaki
Author-email: aka.tkf@gmail.com
License: GNU General Public License v3 (GPLv3)
Description:
EPC (RPC stack for Emacs Lisp) for Python
=========================================
Links:
* `Documentation <http://python-epc.readthedocs.org/>`_ (at Read the Docs)
* `Repository <https://github.com/tkf/python-epc>`_ (at GitHub)
* `Issue tracker <https://github.com/tkf/python-epc/issues>`_ (at GitHub)
* `PyPI <http://pypi.python.org/pypi/epc>`_
* `Travis CI <https://travis-ci.org/#!/tkf/python-epc>`_ |build-status|
Other resources:
* `kiwanami/emacs-epc <https://github.com/kiwanami/emacs-epc>`_
(Client and server implementation in Emacs Lisp and Perl.)
* `tkf/emacs-jedi <https://github.com/tkf/emacs-jedi>`_
(Python completion for Emacs using EPC server.)
.. |build-status|
image:: https://secure.travis-ci.org/tkf/python-epc.png
?branch=master
:target: http://travis-ci.org/tkf/python-epc
:alt: Build Status
What is this?
-------------
EPC is an RPC stack for Emacs Lisp and Python-EPC is its server side
and client side implementation in Python. Using Python-EPC, you can
easily call Emacs Lisp functions from Python and Python functions from
Emacs. For example, you can use Python GUI module to build widgets
for Emacs (see `examples/gtk/server.py`_ for example).
Python-EPC is tested against Python 2.6, 2.7 and 3.2.
Install
-------
To install Python-EPC and its dependency sexpdata_, run the following
command.::
pip install epc
.. _sexpdata: https://github.com/tkf/sexpdata
Usage
-----
Save the following code as ``my-server.py``.
(You can find functionally the same code in `examples/echo/server.py`_)::
from epc.server import EPCServer
server = EPCServer(('localhost', 0))
@server.register_function
def echo(*a):
return a
server.print_port()
server.serve_forever()
And then run the following code from Emacs.
This is a stripped version of `examples/echo/client.el`_ included in
Python-EPC repository_.::
(require 'epc)
(defvar my-epc (epc:start-epc "python" '("my-server.py")))
(deferred:$
(epc:call-deferred my-epc 'echo '(10))
(deferred:nextc it
(lambda (x) (message "Return : %S" x))))
(message "Return : %S" (epc:call-sync my-epc 'echo '(10 40)))
.. _examples/echo/server.py:
https://github.com/tkf/python-epc/blob/master/examples/echo/server.py
.. _examples/echo/client.el:
https://github.com/tkf/python-epc/blob/master/examples/echo/client.el
If you have carton_ installed, you can run the above sample by
simply typing the following commands::
make elpa # install EPC in a separated environment
make run-sample # run examples/echo/client.el
.. _carton: https://github.com/rejeep/carton
For example of bidirectional communication and integration with GTK,
see `examples/gtk/server.py`_. You can run this example by::
make elpa
make run-gtk-sample # run examples/gtk/client.el
.. _examples/gtk/server.py:
https://github.com/tkf/python-epc/blob/master/examples/gtk/server.py
License
-------
Python-EPC is licensed under GPL v3.
See COPYING for details.
Keywords: Emacs,RPC
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Emacs-Lisp
|