Changes ======= 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 setup.py 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 0.0.4 ~~~~~ - 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 0.0.3 ~~~~~ - added ``pymicroservice.RemoteService`` class - added the ``pymicroservice.PyMicroService.get_service(name)`` - improved documentation