summaryrefslogtreecommitdiffstats
path: root/external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO
diff options
context:
space:
mode:
Diffstat (limited to 'external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO')
-rw-r--r--external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO460
1 files changed, 0 insertions, 460 deletions
diff --git a/external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO b/external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO
deleted file mode 100644
index 5dce6b1c..00000000
--- a/external_libs/python/jsonrpclib-pelix-0.2.5/PKG-INFO
+++ /dev/null
@@ -1,460 +0,0 @@
-Metadata-Version: 1.1
-Name: jsonrpclib-pelix
-Version: 0.2.5
-Summary: This project is an implementation of the JSON-RPC v2.0 specification (backwards-compatible) as a client library, for Python 2.6+ and Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote services.
-Home-page: http://github.com/tcalmant/jsonrpclib/
-Author: Thomas Calmant
-Author-email: thomas.calmant+github@gmail.com
-License: Apache License 2.0
-Description: JSONRPClib (patched for Pelix)
- ##############################
-
- .. image:: https://pypip.in/license/jsonrpclib-pelix/badge.svg
- :target: https://pypi.python.org/pypi/jsonrpclib-pelix/
-
- .. image:: https://travis-ci.org/tcalmant/jsonrpclib.svg?branch=master
- :target: https://travis-ci.org/tcalmant/jsonrpclib
-
- .. image:: https://coveralls.io/repos/tcalmant/jsonrpclib/badge.svg?branch=master
- :target: https://coveralls.io/r/tcalmant/jsonrpclib?branch=master
-
-
- This library is an implementation of the JSON-RPC specification.
- It supports both the original 1.0 specification, as well as the
- new (proposed) 2.0 specification, which includes batch submission, keyword
- arguments, etc.
-
- It is licensed under the Apache License, Version 2.0
- (http://www.apache.org/licenses/LICENSE-2.0.html).
-
-
- About this version
- ******************
-
- This is a patched version of the original ``jsonrpclib`` project by
- Josh Marshall, available at https://github.com/joshmarshall/jsonrpclib.
-
- The suffix *-pelix* only indicates that this version works with Pelix Remote
- Services, but it is **not** a Pelix specific implementation.
-
- * This version adds support for Python 3, staying compatible with Python 2.
- * It is now possible to use the dispatch_method argument while extending
- the SimpleJSONRPCDispatcher, to use a custom dispatcher.
- This allows to use this package by Pelix Remote Services.
- * It can use thread pools to control the number of threads spawned to handle
- notification requests and clients connections.
- * The modifications added in other forks of this project have been added:
-
- * From https://github.com/drdaeman/jsonrpclib:
-
- * Improved JSON-RPC 1.0 support
- * Less strict error response handling
-
- * From https://github.com/tuomassalo/jsonrpclib:
-
- * In case of a non-pre-defined error, raise an AppError and give access to
- *error.data*
-
- * From https://github.com/dejw/jsonrpclib:
-
- * Custom headers can be sent with request and associated tests
-
- * The support for Unix sockets has been removed, as it is not trivial to convert
- to Python 3 (and I don't use them)
- * This version cannot be installed with the original ``jsonrpclib``, as it uses
- the same package name.
-
-
- Summary
- *******
-
- This library implements the JSON-RPC 2.0 proposed specification in pure Python.
- It is designed to be as compatible with the syntax of ``xmlrpclib`` as possible
- (it extends where possible), so that projects using ``xmlrpclib`` could easily
- be modified to use JSON and experiment with the differences.
-
- It is backwards-compatible with the 1.0 specification, and supports all of the
- new proposed features of 2.0, including:
-
- * Batch submission (via MultiCall)
- * Keyword arguments
- * Notifications (both in a batch and 'normal')
- * Class translation using the ``__jsonclass__`` key.
-
- I've added a "SimpleJSONRPCServer", which is intended to emulate the
- "SimpleXMLRPCServer" from the default Python distribution.
-
-
- Requirements
- ************
-
- It supports ``cjson`` and ``simplejson``, and looks for the parsers in that
- order (searching first for ``cjson``, then for the *built-in* ``json`` in 2.6+,
- and then the ``simplejson`` external library).
- One of these must be installed to use this library, although if you have a
- standard distribution of 2.6+, you should already have one.
- Keep in mind that ``cjson`` is supposed to be the quickest, I believe, so if
- you are going for full-on optimization you may want to pick it up.
-
- Since library uses ``contextlib`` module, you should have at least Python 2.5
- installed.
-
-
- Installation
- ************
-
- You can install this from PyPI with one of the following commands (sudo
- may be required):
-
- .. code-block:: console
-
- easy_install jsonrpclib-pelix
- pip install jsonrpclib-pelix
-
- Alternatively, you can download the source from the GitHub repository
- at http://github.com/tcalmant/jsonrpclib and manually install it
- with the following commands:
-
- .. code-block:: console
-
- git clone git://github.com/tcalmant/jsonrpclib.git
- cd jsonrpclib
- python setup.py install
-
-
- SimpleJSONRPCServer
- *******************
-
- This is identical in usage (or should be) to the SimpleXMLRPCServer in the
- Python standard library. Some of the differences in features are that it
- obviously supports notification, batch calls, class translation (if left on),
- etc.
- Note: The import line is slightly different from the regular SimpleXMLRPCServer,
- since the SimpleJSONRPCServer is distributed within the ``jsonrpclib`` library.
-
- .. code-block:: python
-
- from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
-
- server = SimpleJSONRPCServer(('localhost', 8080))
- server.register_function(pow)
- server.register_function(lambda x,y: x+y, 'add')
- server.register_function(lambda x: x, 'ping')
- server.serve_forever()
-
- To start protect the server with SSL, use the following snippet:
-
- .. code-block:: python
-
- from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
-
- # Setup the SSL socket
- server = SimpleJSONRPCServer(('localhost', 8080), bind_and_activate=False)
- server.socket = ssl.wrap_socket(server.socket, certfile='server.pem',
- server_side=True)
- server.server_bind()
- server.server_activate()
-
- # ... register functions
- # Start the server
- server.serve_forever()
-
-
- Notification Thread Pool
- ========================
-
- By default, notification calls are handled in the request handling thread.
- It is possible to use a thread pool to handle them, by giving it to the server
- using the ``set_notification_pool()`` method:
-
- .. code-block:: python
-
- from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
- from jsonrpclib.threadpool import ThreadPool
-
- # Setup the thread pool: between 0 and 10 threads
- pool = ThreadPool(max_threads=10, min_threads=0)
-
- # Don't forget to start it
- pool.start()
-
- # Setup the server
- server = SimpleJSONRPCServer(('localhost', 8080), config)
- server.set_notification_pool(pool)
-
- # Register methods
- server.register_function(pow)
- server.register_function(lambda x,y: x+y, 'add')
- server.register_function(lambda x: x, 'ping')
-
- try:
- server.serve_forever()
- finally:
- # Stop the thread pool (let threads finish their current task)
- pool.stop()
- server.set_notification_pool(None)
-
-
- Threaded server
- ===============
-
- It is also possible to use a thread pool to handle clients requests, using the
- ``PooledJSONRPCServer`` class.
- By default, this class uses pool of 0 to 30 threads. A custom pool can be given
- with the ``thread_pool`` parameter of the class constructor.
-
- The notification pool and the request pool are different: by default, a server
- with a request pool doesn't have a notification pool.
-
- .. code-block:: python
-
- from jsonrpclib.SimpleJSONRPCServer import PooledJSONRPCServer
- from jsonrpclib.threadpool import ThreadPool
-
- # Setup the notification and request pools
- nofif_pool = ThreadPool(max_threads=10, min_threads=0)
- request_pool = ThreadPool(max_threads=50, min_threads=10)
-
- # Don't forget to start them
- nofif_pool.start()
- request_pool.start()
-
- # Setup the server
- server = PooledJSONRPCServer(('localhost', 8080), config,
- thread_pool=request_pool)
- server.set_notification_pool(nofif_pool)
-
- # Register methods
- server.register_function(pow)
- server.register_function(lambda x,y: x+y, 'add')
- server.register_function(lambda x: x, 'ping')
-
- try:
- server.serve_forever()
- finally:
- # Stop the thread pools (let threads finish their current task)
- request_pool.stop()
- nofif_pool.stop()
- server.set_notification_pool(None)
-
- Client Usage
- ************
-
- This is (obviously) taken from a console session.
-
- .. code-block:: python
-
- >>> import jsonrpclib
- >>> server = jsonrpclib.ServerProxy('http://localhost:8080')
- >>> server.add(5,6)
- 11
- >>> server.add(x=5, y=10)
- 15
- >>> server._notify.add(5,6)
- # No result returned...
- >>> batch = jsonrpclib.MultiCall(server)
- >>> batch.add(5, 6)
- >>> batch.ping({'key':'value'})
- >>> batch._notify.add(4, 30)
- >>> results = batch()
- >>> for result in results:
- >>> ... print(result)
- 11
- {'key': 'value'}
- # Note that there are only two responses -- this is according to spec.
-
- # Clean up
- >>> server('close')()
-
- # Using client history
- >>> history = jsonrpclib.history.History()
- >>> server = jsonrpclib.ServerProxy('http://localhost:8080', history=history)
- >>> server.add(5,6)
- 11
- >>> print(history.request)
- {"id": "f682b956-c8e1-4506-9db4-29fe8bc9fcaa", "jsonrpc": "2.0",
- "method": "add", "params": [5, 6]}
- >>> print(history.response)
- {"id": "f682b956-c8e1-4506-9db4-29fe8bc9fcaa", "jsonrpc": "2.0",
- "result": 11}
-
- # Clean up
- >>> server('close')()
-
- If you need 1.0 functionality, there are a bunch of places you can pass that in,
- although the best is just to give a specific configuration to
- ``jsonrpclib.ServerProxy``:
-
- .. code-block:: python
-
- >>> import jsonrpclib
- >>> jsonrpclib.config.DEFAULT.version
- 2.0
- >>> config = jsonrpclib.config.Config(version=1.0)
- >>> history = jsonrpclib.history.History()
- >>> server = jsonrpclib.ServerProxy('http://localhost:8080', config=config,
- history=history)
- >>> server.add(7, 10)
- 17
- >>> print(history.request)
- {"id": "827b2923-5b37-49a5-8b36-e73920a16d32",
- "method": "add", "params": [7, 10]}
- >>> print(history.response)
- {"id": "827b2923-5b37-49a5-8b36-e73920a16d32", "error": null, "result": 17}
- >>> server('close')()
-
- The equivalent ``loads`` and ``dumps`` functions also exist, although with minor
- modifications. The ``dumps`` arguments are almost identical, but it adds three
- arguments: ``rpcid`` for the 'id' key, ``version`` to specify the JSON-RPC
- compatibility, and ``notify`` if it's a request that you want to be a
- notification.
-
- Additionally, the ``loads`` method does not return the params and method like
- ``xmlrpclib``, but instead a.) parses for errors, raising ProtocolErrors, and
- b.) returns the entire structure of the request / response for manual parsing.
-
-
- Additional headers
- ******************
-
- If your remote service requires custom headers in request, you can pass them
- as as a ``headers`` keyword argument, when creating the ``ServerProxy``:
-
- .. code-block:: python
-
- >>> import jsonrpclib
- >>> server = jsonrpclib.ServerProxy("http://localhost:8080",
- headers={'X-Test' : 'Test'})
-
- You can also put additional request headers only for certain method invocation:
-
- .. code-block:: python
-
- >>> import jsonrpclib
- >>> server = jsonrpclib.Server("http://localhost:8080")
- >>> with server._additional_headers({'X-Test' : 'Test'}) as test_server:
- ... test_server.ping(42)
- ...
- >>> # X-Test header will be no longer sent in requests
-
- Of course ``_additional_headers`` contexts can be nested as well.
-
-
- Class Translation
- *****************
-
- I've recently added "automatic" class translation support, although it is
- turned off by default. This can be devastatingly slow if improperly used, so
- the following is just a short list of things to keep in mind when using it.
-
- * Keep It (the object) Simple Stupid. (for exceptions, keep reading.)
- * Do not require init params (for exceptions, keep reading)
- * Getter properties without setters could be dangerous (read: not tested)
-
- If any of the above are issues, use the _serialize method. (see usage below)
- The server and client must BOTH have use_jsonclass configuration item on and
- they must both have access to the same libraries used by the objects for
- this to work.
-
- If you have excessively nested arguments, it would be better to turn off the
- translation and manually invoke it on specific objects using
- ``jsonrpclib.jsonclass.dump`` / ``jsonrpclib.jsonclass.load`` (since the default
- behavior recursively goes through attributes and lists / dicts / tuples).
-
- Sample file: *test_obj.py*
-
- .. code-block:: python
-
- # This object is /very/ simple, and the system will look through the
- # attributes and serialize what it can.
- class TestObj(object):
- foo = 'bar'
-
- # This object requires __init__ params, so it uses the _serialize method
- # and returns a tuple of init params and attribute values (the init params
- # can be a dict or a list, but the attribute values must be a dict.)
- class TestSerial(object):
- foo = 'bar'
- def __init__(self, *args):
- self.args = args
- def _serialize(self):
- return (self.args, {'foo':self.foo,})
-
- * Sample usage
-
- .. code-block:: python
-
- >>> import jsonrpclib
- >>> import test_obj
-
- # History is used only to print the serialized form of beans
- >>> history = jsonrpclib.history.History()
- >>> testobj1 = test_obj.TestObj()
- >>> testobj2 = test_obj.TestSerial()
- >>> server = jsonrpclib.Server('http://localhost:8080', history=history)
-
- # The 'ping' just returns whatever is sent
- >>> ping1 = server.ping(testobj1)
- >>> ping2 = server.ping(testobj2)
-
- >>> print(history.request)
- {"id": "7805f1f9-9abd-49c6-81dc-dbd47229fe13", "jsonrpc": "2.0",
- "method": "ping", "params": [{"__jsonclass__":
- ["test_obj.TestSerial", []], "foo": "bar"}
- ]}
- >>> print(history.response)
- {"id": "7805f1f9-9abd-49c6-81dc-dbd47229fe13", "jsonrpc": "2.0",
- "result": {"__jsonclass__": ["test_obj.TestSerial", []], "foo": "bar"}}
-
- This behavior is turned by default. To deactivate it, just set the
- ``use_jsonclass`` member of a server ``Config`` to False.
- If you want to use a per-class serialization method, set its name in the
- ``serialize_method`` member of a server ``Config``.
- Finally, if you are using classes that you have defined in the implementation
- (as in, not a separate library), you'll need to add those (on BOTH the server
- and the client) using the ``config.classes.add()`` method.
-
- Feedback on this "feature" is very, VERY much appreciated.
-
- Why JSON-RPC?
- *************
-
- In my opinion, there are several reasons to choose JSON over XML for RPC:
-
- * Much simpler to read (I suppose this is opinion, but I know I'm right. :)
- * Size / Bandwidth - Main reason, a JSON object representation is just much smaller.
- * Parsing - JSON should be much quicker to parse than XML.
- * Easy class passing with ``jsonclass`` (when enabled)
-
- In the interest of being fair, there are also a few reasons to choose XML
- over JSON:
-
- * Your server doesn't do JSON (rather obvious)
- * Wider XML-RPC support across APIs (can we change this? :))
- * Libraries are more established, i.e. more stable (Let's change this too.)
-
- Tests
- *****
-
- Tests are an almost-verbatim drop from the JSON-RPC specification 2.0 page.
- They can be run using *unittest* or *nosetest*:
-
- .. code-block:: console
-
- python -m unittest discover tests
- python3 -m unittest discover tests
- nosetests tests
-
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.0
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4