Changelogs » Jsonrpcserver

PyUp Safety actively tracks 263,166 Python packages for vulnerabilities and notifies you when to upgrade.



- In the case of a method returning a non-serializable value, return a JSON-RPC
  error response. It was previously erroring server-side without responding to
  the client. (119)
  - Fix for Python 3.8 - ensures the same exceptions will be raised in 3.8 and
  pre-3.8. (122)


- 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
  - 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.


- Refactoring


- 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.