grpcalchemy 0.7.3
The Python micro framework for building gPRC application.
License: MIT license
Requires Python: >=3.6.0
Keywords: grpcalchemy

===========
gRPCAlchemy
===========


.. image:: https://img.shields.io/pypi/v/grpcalchemy.svg
        :target: https://pypi.python.org/pypi/grpcalchemy

.. image:: https://github.com/GuangTianLi/grpcalchemy/workflows/test/badge.svg
        :target: https://github.com/GuangTianLi/grpcalchemy/actions

.. image:: https://readthedocs.org/projects/grpcalchemy/badge/?version=latest
        :target: https://grpcalchemy.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. image:: https://img.shields.io/pypi/pyversions/grpcalchemy.svg
        :target: https://pypi.org/project/grpcalchemy/

.. image:: https://codecov.io/gh/GuangTianLi/grpcalchemy/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/GuangTianLi/grpcalchemy



The Python micro framework for building gPRC application based on official `gRPC <https://github.com/grpc/grpc>`_ project.


* Free software: MIT license
* Documentation: https://grpcalchemy.readthedocs.io.

Installation
----------------

.. code-block:: shell

    $ pipenv install grpcalchemy
    ✨🍰✨

Only **Python 3.6+** is supported.

Example
--------

Server
========

.. code-block:: python

    from grpcalchemy.orm import Message, StringField
    from grpcalchemy import Server, Context, grpcmethod

    class HelloMessage(Message):
        text: str

    class HelloService(Server):
        @grpcmethod
        def Hello(self, request: HelloMessage, context: Context) -> HelloMessage:
            return HelloMessage(text=f'Hello {request.text}')

    if __name__ == '__main__':
        HelloService.run()


Then Using gRPC channel to connect the server:

.. code-block:: python

    from grpc import insecure_channel

    from protos.helloservice_pb2_grpc import HelloServiceStub
    from protos.hellomessage_pb2 import HelloMessage

    with insecure_channel("localhost:50051") as channel:
        response = HelloServiceStub(channel).Hello(
            HelloMessage(text="world")
        )

Features
----------

- gPRC Service Support
- gRPC Message Support
    - Scalar Value Types
    - Message Types
    - Repeated Field
    - Maps
- Define Message With Type Hint
- Middleware
- App Context Manger
- Error Handler Support
- Streaming Method Support
- gRPC-Health Checking and Reflection Support (Alpha)
- Multiple Processor Support

TODO
-------

- Test Client Support
- Async Server Support


=======
History
=======

0.7.*(2021-03-20)
--------------------

* Improve initialize function of message
* Remove default feature in message
* Refactor composite message Type
* Support gRPC with xDS
* Add `PROTO_AUTO_GENERATED` setting to make runtime proto generation optional

0.6.*(2020-10-27)
--------------------

* fix [#36] compatibility in windows
* fix [#34] compatibility in windows
* gRPC-Health Checking and Reflection Support (Alpha)
* Multiple Processor Support

0.5.0(2020-04-27)
--------------------

* Support Streaming Method
* Deprecate request parameter in app context and handle exception

0.4.0(2019-09-24)
--------------------

* Support related directory path to generate protocol buffer files
* Enable use type hint to define message
* Add error handle to handle Exception
* Add ``get_blueprints`` to get blueprints need to register

0.3.0(2019-08-19)
--------------------

https://github.com/GuangTianLi/grpcalchemy/projects/1

0.2.7-10(2019-04-16)
----------------------

* Support SSL
* Improve Implement of Server with grpc.server
* Support YAML file in Config Module
* Improve Config Module
* Add context in current rpc

0.2.5-6(2019-03-06)
---------------------

* Implement Rpc Context
* Improve Config Module

0.2.4(2019-03-01)
---------------------

* Implement Globals Variable
* Implement APP Context

0.2.2-3 (2019-02-26)
---------------------

* Improve Config module
* Improve rpc_call_wrap

0.2.1 (2019-02-14)
---------------------

* Implement Own gRPC Server
* Implement gRPC Server Test Client

0.2.0 (2019-01-30)
---------------------

* Change gRPCAlchemy Server register to register_blueprint
* Make gRPCAlchemy Server inherit from Blueprint
* Support Json Format
* Support Inheritance Message

0.1.6 (2019-01-21)
------------------

* Various bug-fixes
* Improve tests
* Change Client API
* Add PreProcess And PostProcess
* Import Config Object
* Add Event Listener
* Change Field Object Into Descriptor

0.1.5 (2018-12-14)
------------------

* Various bug-fixes
* Improve tests
* Add client

0.1.4 (2018-12-11)
------------------

* First release on PyPI.