0.12.0 (22.04.2017)

  • restructured modules
  • bug fixes
  • improved documentation
  • improved tests

0.11.0 (08.04.2017)

  • added Container.get_io_loop method
  • added Container.get_executor method
  • added RedisEventTransport
  • emit_event now emits just events. Removed the broadcast parameter. A task handling functionality will be added in a further version
  • improved docs (still a work in progress)
  • added some more tests (still a work in progress)

0.10.1 (27.03.2017)

  • removed some forgotten debug messages

0.10.0 (23.03.2017)

  • added broadcast parameter to MicroService.emit_event
  • added the broadcast parameter to BaseEventTransport.emit_event
  • added the broadcast parameter to RabbitMqEventTransport.emit_event
  • improved tests and documentation
  • removed mappings and type parameters from Configurable
  • added gemstone.Module for better modularization of the microservice
  • added gemstone.MicroService.authenticate_request method for a more flexible authentication mechanism
  • deprecated gemstone.MicroService.api_token_is_valid method

0.9.0 (06.03.2017

  • added the gemstone.exposed_method decorator for general usage that allows
    • to customize the name of the method
    • to specify if the method is a coroutine
    • to specify that the method requires a handler reference
    • to specify that the method is public or private
  • deprecated
    • gemstone.public_method decorator
    • gemstone.private_api_method decorator
    • gemstone.async_method decorator
    • gemstone.requires_handler_reference decorator
  • removed gemstone.MicroService.get_cli method in favor of the CommandLineConfigurator
  • improved documentation a little bit

0.8.0 (05.03.2017)

  • added the gemstone.requires_handler_reference decorator to enable the methods to get a reference to the Tornado request handler when called.
  • added the gemstone.async_method decorator to make a method a coroutine and be able to execute things asynchronously on the main thread. For example, a method decorated with async_method will be able to yield self._executor.submit(make_some_network_call) without blocking the main thread.
  • added two new examples:
    • example_coroutine_method - shows a basic usage if the async_method decorator
    • example_handler_ref - shows a basic usage if the requires_handler_reference decorator

0.7.0 (27.02.2017)

  • added gemstone.GemstoneCustomHandler class
  • modified the way one can add custom Tornado handler to the microservice. Now these handlers must inherit gemstone.GemstoneCustomHandler
  • restructured docs, now it is based more on docstrings
  • improved tests and code quality

0.6.0 (14.02.2017)

  • added configurable framework:
    • gemstone.config.configurable.Configurable class
    • gemstone.config.configurator.* classes
    • gemstone.MicroService.configurables and gemstone.MicroService.configurators attributes
    • switched testing to pytest
    • improved documentation (restructured and minor additions). Still a work in progress

0.5.0 (09.02.2017)

  • added support for publisher-subscriber communication method:
    • base class for event transports: gemstone.event.transport.BaseEventTransport
    • first concrete implementation: gemstone.event.transport.RabbitMqEventTransport
    • gemstone.MicroService.emit_event for publishing an event
    • gemstone.event_handler decorator for designating event handlers
  • restructured documentation (added tutorial, examples and howto sections).
  • added asynchronous method calls in gemstone.RemoteService.
  • added gemstone.as_completed, gemstone.first_completed, gemstone.make_callbacks utility functions for dealing with asynchronous method calls.

0.4.0 (25.01.2017)

  • modified accessible_at attribute of the gemstone.MicroService class
  • added the endpoint attribute to the gemstone.MicroService class
  • improved how the microservice communicates with the service registry

0.3.1 (25.01.2017)

  • fixed event loop freezing on Windows
  • fixed a case when a TypeError was silenced when handling the bad parameters error in JSON RPC 2.0 handler (#21)
  • major refactoring (handling of JSON RPC objects as Python objects instead of dicts and lists) to improve readability and maintainability
  • improved documentation

0.3.0 (23.01.2017)

  • added validation strategies (method for extraction of api token from the request)
  • base subclass for implementing validation strategies
  • built in validation strategies: HeaderValidationStrategy, BasicCookieStrategy
  • improved documentation

0.2.0 (17.01.2017)

  • added gemstone.RemoteService.get_service_by_name method
  • added call command to cli
  • added call_raw command to cli
  • improved documentation a little

0.1.3 (16.01.2017)

  • fixed manifest to include required missing files

0.1.2 (16.01.2017)

  • added py36 to travis-ci
  • refactored and reworked description files and documentation for better rendering

0.1.1 (13.01.2017)

  • changed the name of the library from pymicroservice to gemstone
  • added the gemstone.MicroService.accessible_at attribute

0.1.0 (09.01.2017)

  • added the pymicroservice.PyMicroService.get_cli method
  • improved documentation a little bit


  • fixed bug when sending a notification that would result in an error was causing the microservice to respond abnormally (see #10)
  • fixed a bug that was causing the service to never respond with the invalid parameters status when calling a method with invalid parameters


  • added pymicroservice.RemoteService class
  • added the pymicroservice.PyMicroService.get_service(name)
  • improved documentation