Skip to main content

Easily create a CLI and JSON-RPC interface from a common API definition.

Project description

Easily create a CLI and JSON-RPC interface from a common API definition.

Installation

pip install apigen

Example API definition

import apigen
from decimal import Decimal


class Calculator(apigen.Definition): # programm name taken from class name
    """example programm""" # programm help text taken from class doc string.

    @apigen.command()
    def add(self, a, b): # command name and args taken from method definition
        """adds two numbers""" # help text taken from method doc string
        result = Decimal(a) + Decimal(b)
        print result # cli interface uses stdout and errout
        return result # rpc interface uses value returned by method


if __name__ == "__main__":
    apigen.run(Calculator) # run cli interface

Generated cli interface (uses argparse)

Program, command and arguments order.

program [program arguments] <command> [command arguments]

Argument format.

program positionalargvalue --optionalarg=value --flag

Example programm help text.

$ python examples/basicexample.py --help
usage: example.py [-h] <command> ...

example programm

optional arguments:
  -h, --help  show this help message and exit

commands:
  <command>
    add       adds two numbers
    jsonrpc   Start json-rpc service.

Example command help text

$ python examples/basicexample.py jsonrpc --help
usage: basicexample.py jsonrpc [-h] [--hostname HOSTNAME] [--port PORT]

optional arguments:
  -h, --help           show this help message and exit
  --hostname HOSTNAME  optional default=localhost
  --port PORT          optional default=8080

Generated json-rpc interface (uses python-jsonrpc)

Starting the jsonrpc service from the command line.

$ python examples/basicexample.py jsonrpc
Starting Calculator json-rpc service at http://localhost:8080

Client site jsonrpc usage with python-jsonrpc.

import pyjsonrpc
rpc = pyjsonrpc.HttpClient(url = "http://localhost:8080")
print rpc.add(1, 2)

Starting the jsonrpc service from within python.

import basicexample
api = basicexample.Calculator()
api.jsonrpc()

Getting a pyjsonrpc.HttpRequestHandler for further use.

import basicexample
api = basicexample.Calculator()
api.get_http_request_handler()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apigen-0.1.2.tar.gz (3.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page