Metadata-Version: 2.1 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) 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 Requires-Dist: sexpdata (>=0.0.3) EPC (RPC stack for Emacs Lisp) for Python ========================================= Links: * `Documentation `_ (at Read the Docs) * `Repository `_ (at GitHub) * `Issue tracker `_ (at GitHub) * `PyPI `_ * `Travis CI `_ |build-status| Other resources: * `kiwanami/emacs-epc `_ (Client and server implementation in Emacs Lisp and Perl.) * `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.