Package: reddel-server
Table of ContentsInstallationUsageDocumentationBugs/RequestsDevelopmentLicenseChangelog0.2.0 (2017-01-02)0.1.0 (2016-11-17)Python EPC server componentforreddel.
It provides an easy way to send (python) source code from Emacs to the server,
inspect or transform it viaRedbaronand 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 redStart 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.InstallationAt the command line:pip install reddel-serverUsageYou can start a reddel server from within Emacs like shown above or start it from the command line.
A executablereddelis 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.--addressTEXTDefault islocalhost. Can be an IP or domain name.--portINTEGERDefaults to a random free port.-p,--providerTEXTExample:mypkg.mymod.MyProviderClassYou can provide this multiple times.
Defines additional providers that are available from the start.
More providers can be added at runtime viareddel_server.ChainedProvider.add_provider.-v,--verbosityLVLDefine the logging level.--debugBy default all expected exceptions are only logged without the traceback.
If this flag is set, the traceback is printed as well.--helpShow the help message and exit.Calling a function from within Emacs is very simple thanks toepc:>>> (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 executingreddelwithout any arguments (nil).
Then you can make calls to that server by referring to the manager returned fromepc:start-epc.
To execute a call, you can use(epc:call-sync<manager> <method> <arguments>),
where<manager>is the manager returned byepc: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.Documentationhttps://reddel-server.readthedocs.io/Bugs/RequestsPlease use theGitHub issue trackerto submit bugs or request features.DevelopmentTo run the all tests run:toxNote, to combine the coverage data from all the tox environments run:Windowsset PYTEST_ADDOPTS=--cov-append
toxOtherPYTEST_ADDOPTS=--cov-append toxLicenseCopyright David Zuber, 2016.Distributed under the terms of theGNU General Public License version 3,
reddel-server is free and open source software.Changelog0.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.