reddel-server 0.2.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

reddelserver 0.2.0

Table of Contents

Installation
Usage
Documentation
Bugs/Requests
Development
License
Changelog

0.2.0 (2017-01-02)
0.1.0 (2016-11-17)




Python EPC server component for
reddel.
It provides an easy way to send (python) source code from Emacs to the server,
inspect or transform it via Redbaron and send the result back.
An example on how to expose a simple function to add arguments:
# file: myprovidermod.py
import reddel_server

class MyProvider(reddel_server.ProviderBase)
@reddel_server.red_src()
@reddel_server.red_validate([reddel_server.OptionalRegionValidator(),
reddel_server.SingleNodeValidator(),
reddel_server.TypeValidator(["def"])])
def add_arg(self, red, start, end, index, arg):
red.arguments.insert(index, arg)
return red
Start the reddel server from Emacs:
>>> (require 'epc)

>>> (defvar my-epc (epc:start-epc "reddel" nil))

>>> ;; make sure myprovidermod is in a directory within the PYTHONPATH
>>> (epc:call-sync my-epc 'add_provider '("myprovidermod.MyProvider"))

>>> (message (epc:call-sync my-epc 'add_arg '("def foo(arg1, arg3): pass" nil nil 1 "arg2")))
"def foo(arg1, arg2, arg3): pass"
Redbaron provides a lossless format, so even formatting and comments are preserved.

Installation
At the command line:
pip install reddel-server


Usage
You can start a reddel server from within Emacs like shown above or start it from the command line.
A executable reddel is provided by this project, which should suitable for most use cases.
$ reddel --help
Usage: reddel [OPTIONS]

Options:
--address TEXT address to bind the server to
--port INTEGER address to bind the server to
-p, --provider TEXT dotted path to a provider class
-v, --verbosity LVL Either CRITICAL, ERROR, WARNING, INFO or DEBUG
--debug Show tracebacks when erroring.
--help Show this message and exit.


--address TEXT
Default is localhost. Can be an IP or domain name.

--port INTEGER
Defaults to a random free port.

-p, --provider TEXT
Example: mypkg.mymod.MyProviderClass
You can provide this multiple times.
Defines additional providers that are available from the start.
More providers can be added at runtime via reddel_server.ChainedProvider.add_provider.

-v, --verbosity LVL
Define the logging level.

--debug
By default all expected exceptions are only logged without the traceback.
If this flag is set, the traceback is printed as well.

--help
Show the help message and exit.



Calling a function from within Emacs is very simple thanks to epc:
>>> (progn
... (require 'epc)
... (defvar my-epc (epc:start-epc "reddel" nil))
... ;; list all methods compatible with the given source
... (message (epc:call-sync my-epc 'list_methods '("def foo(arg1, arg3): pass"))))
(epc:start-epc "reddel" nil) starts the server by executing reddel without any arguments (nil).
Then you can make calls to that server by referring to the manager returned from epc:start-epc.
To execute a call, you can use (epc:call-sync <manager> <method> <arguments>),
where <manager> is the manager returned by epc:start-epc, <method> is the function
and <arguments> is a list of arguments passed to <method>.
The Builtin Functions section in the documentation provides a guide through all functions that ship with this package.
If you need advanced features check the reference documentation for help on how to write your own server.


Documentation
https://reddel-server.readthedocs.io/


Bugs/Requests
Please use the GitHub issue tracker to submit bugs or request features.


Development
To run the all tests run:
tox
Note, to combine the coverage data from all the tox environments run:






Windows
set PYTEST_ADDOPTS=--cov-append
tox


Other
PYTEST_ADDOPTS=--cov-append tox






License
Copyright David Zuber, 2016.
Distributed under the terms of the GNU General Public License version 3,
reddel-server is free and open source software.


Changelog

0.2.0 (2017-01-02)

You can optionally specify regions for methods that take in source code.
Restructure the validators into several small classes.



0.1.0 (2016-11-17)

First release on PyPI.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.