- Fix the egg-info directory in package.
- Fix file permission on all files.
- Add InvalidParamsError exception, for input validation. Previously the
advice was to `assert` on input values. However, AssertionError was too
generic an exception. Instead, raise InvalidParamsError. Note `assert` will
still work but will be removed in the next major release (5.0).
- Add an ApiError exception; raise it to send an application defined error
response. This covers the line in the JSON-RPC spec, "The remainder of the
space is available for application defined errors."
- A KeyError raised inside methods will no longer send a "method not found"
- Uncaught exceptions raised inside methods will now be logged. We've been
simply responding to the client with a Server Error. Now the traceback will
also be logged server-side.
- Fix a deprecation warning related to collections.abc.
- Add py.typed to indicate this package supports typing. (PEP 561)
Thanks to steinymity for his work on this release.
- Include license in package.
- Use faster method of jsonschema validation
- Use inspect from stdlib, removing the need for funcsigs
- Update dependencies to allow jsonschema version 3.x
- Support Python 3.8
- Fix to allow passing context when no parameters are passed.
- Include exception in ExceptionResponse. Closes 74.
_The 4.x releases will support Python 3.6+ only._
- Dispatch now works only with `Methods` object. No longer accepts a
dictionary or list.
- `dispatch` no longer requires a "methods" argument. If not passed, uses the
global methods object.
- Methods initialiser has a simpler api - Methods(func1, func2, ...) or
Methods(name1=func1, name2=func2, ...).
- No more jsonrpcserver exceptions. Calling code will _always_ get a valid
JSON-RPC response from `dispatch`. The old `InvalidParamsError` is gone
- instead do a regular `assert` on arguments.
- `response.is_notification` renamed to `response.wanted`, which is the
opposite of is_notification. This means the original request was not a
notification, it had an id, and does expect a response.
- Removed "respond to notification errors" option, which broke the
specification. We still respond to invalid json/json-rpc requests, in which
case it's not possible to know if the request is a notification.
- Removed the "config" module. Added external config file, `.jsonrpcserverrc`.
(alternatively configure with arguments to dispatch)
- Removed the "six" dependency, no longer needed.
- Configure logging Pythonically.
- Add type hints
- Move tests to pytest
- Passing a context object to dispatch now sets it as the first positional
argument to the method. `def fruits(ctx, color):`
- Check params with regular asserts.
- Add trim_log_values dispatch param. (65)
- Fix a missing import
- Rewrite of dispatch(), adding parameters to configure the dispatch that were
previously configured by modifying the `config` module. That module is now
deprecated and will be removed in 4.0.
- Allow requests to have any non-None id
- Refactor for Request subclassing
- Include context data in regular (synchronous) methods.dispatch
- Pass some context data through dispatch to the methods.
- Fix not calling notifications in batch requests.
- Add `Response.is_notification` attribute
- Fix `convert_camel_case` with array params
- Disable logging in config
- Performance improved
- Fix async batch requests
- Added asyncio support. (Python 3.5+)
- Added a *methods* object to the jsonrpcserver module (so you can import
jsonrpcserver.methods, rather than instantiating your own).
- Added methods.dispatch().
- Fix Methods.serve_forever in python 2 (thanks bplower)
- Updated method of logging exception (thanks bplower)
- Pass Methods named args onto MutableMapping
- Remove unused logger
- Allow passing dict to Methods constructor
- A basic HTTP server has been added.