{ "info": { "author": "v1c77", "author_email": "heyuhuade@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Pre-processors", "Topic :: Software Development :: Quality Assurance" ], "description": "python grpc validator\n~~~~~~~~~~~~~~~~~~~~~\nplugin of validate request field for python grpc server.\n\n.. image:: https://travis-ci.com/v1c77/py_grpc_validator.svg?branch=master\n :target: https://travis-ci.com/v1c77/py_grpc_validator\n.. image:: https://codecov.io/gh/v1c77/py_grpc_validator/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/v1c77/py_grpc_validator\n\nTODO:\n - type hint for different field type.(such as only string field can do\n a string length check.)\n - test case & Makefile.\n - a cli to help protoc with `validator.proto`.\n - anymore bugs or improves?\n\n\n\nHow To\n######\n\n1. install\n\n.. code-block:: bash\n\n pip install grpc-proto-validator\n\n2. copy **validator.proto** to your project proto path and do protoc.(TODO a\ncli help to copy or build proto.)\n\n The **validator.proto** is included in this package, you can find it in\n python site-packages path.\n\n\nA example on how to generate the grpc files:\n\n.. code-block:: bash\n\n $ python -m grpc_tools.protoc \\\n --proto_path={/path/to/validator/proto} \\\n --proto_path={/path/to/your/project/proto} \\\n --python_out={/path/to/project/src} \\\n --grpc_python_out={/path/to/project/src} \\\n path/to/your.proto\n\n\n\n3. change your service and \\*_pb2 code.\n\nTo avoid protobuf import error, change one line in the generated\npython file(like `hello_bro_pb2.py`).\n\nfrom:\n\n.. code-block:: python\n\n import validator_pb2 as validator__pb2\n\nto:\n\n.. code-block:: python\n\n import grpc_proto_validator.validator_pb2 as validator__pb2.\n\nThen create service with validator:\n\n.. code-block:: python\n\n import six\n from grpc_validator.validator import ValidateMetaclass\n\n class YourService(six.with_metaclass(ValidateMetaclass,\n YourService_pb2_grpc.YourServiceServer)):\n\n def behaviour1(self, request, context)\n ...\n\n\nAlso, you can select individual service handler to do the field check:\n\n.. code-block:: python\n\n from grpc_validator.validator import validator_wrap\n\n\n class YourService(YourService_pb2_grpc.YourServiceServer):\n\n def behaviour(self, request, context):\n \"\"\"request will not be validated.\"\"\"\n ...\n\n @validator_wrap\n def behaviour2(self, request, context):\n ...\n\n\n\nNotice\n######\n\nSomeone has used go-proto-validator_ before will notice\nthat I almost reuse its proto file which make it easier\nto co-work with our golang service team.\n\nBut please don't mix these two proto files.\n**!!!THEY ARE NOT IN COMMON USE!!!**\n\nAny help or idea is favourably receive. Please just make a issue_.\n\nLICENSE\n=======\nMIT_.\n\n.. _ecosystem: https://github.com/grpc-ecosystem/go-grpc-middleware/tree/master/validator\n.. _go-proto-validator: https://github.com/mwitkow/go-proto-validators\n.. _issue: https://github.com/v1c77/py_grpc_validator/issues/new\n.. _MIT: https://github.com/v1c77/py_grpc_validator/blob/master/LICENSE\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/v1c77/py_grpc_validator", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "grpc-proto-validator", "package_url": "https://pypi.org/project/grpc-proto-validator/", "platform": "any", "project_url": "https://pypi.org/project/grpc-proto-validator/", "project_urls": { "Homepage": "https://github.com/v1c77/py_grpc_validator" }, "release_url": "https://pypi.org/project/grpc-proto-validator/0.1.2.dev0/", "requires_dist": [ "six (>=1.11.0)", "grpcio (>=1.11.0)", "grpcio-tools (>=1.11.0)", "protobuf (>3.6.0)" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "grpc proto validator.", "version": "0.1.2.dev0" }, "last_serial": 4351604, "releases": { "0.1.2.dev0": [ { "comment_text": "", "digests": { "md5": "c0b3cb1c95e803e8a1a5837284a7e501", "sha256": "bcfcc8f7edaf1077e926a4a97242f5e91c2b8af7ab6e8e4c3f491529ce29644d" }, "downloads": -1, "filename": "grpc_proto_validator-0.1.2.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c0b3cb1c95e803e8a1a5837284a7e501", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 7726, "upload_time": "2018-10-08T11:17:37", "url": "https://files.pythonhosted.org/packages/3b/58/dd770d423655a6a8bdb60e3ce20cebca6f2586013b1de97d9835b86dad43/grpc_proto_validator-0.1.2.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29e9a56ceab689c14ac48fcb1d14255e", "sha256": "735cab0de7f4f3cf9a27c5ac371ac865baed141ed303159d54a0cc1a430271a5" }, "downloads": -1, "filename": "grpc-proto-validator-0.1.2.dev0.tar.gz", "has_sig": false, "md5_digest": "29e9a56ceab689c14ac48fcb1d14255e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9541, "upload_time": "2018-10-08T11:17:39", "url": "https://files.pythonhosted.org/packages/7a/48/317ff82b44d6a6ed97a9cae42f562ad1d091e821f81f28ec34d32921f172/grpc-proto-validator-0.1.2.dev0.tar.gz" } ], "0.1.dev0": [ { "comment_text": "", "digests": { "md5": "30c9ba76f8580aa33a443bb676a58ddc", "sha256": "5b4dcd26d70cc414518997e2f0523c7ffd58a341c16ff2c0af9cbea33792fb07" }, "downloads": -1, "filename": "grpc_proto_validator-0.1.dev0-py2-none-any.whl", "has_sig": false, "md5_digest": "30c9ba76f8580aa33a443bb676a58ddc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 6638, "upload_time": "2018-09-30T09:42:11", "url": "https://files.pythonhosted.org/packages/54/3a/d5099101416a2da8cc3615e0ce7480b08f986548ef48ac7f5dbe6e722338/grpc_proto_validator-0.1.dev0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcc92c359b0d37b334ae3566d0bebc87", "sha256": "525c64d828f2acb6c985d7c2b8357d56d1a72d71c3e42058bcc2f85e74546a1b" }, "downloads": -1, "filename": "grpc-proto-validator-0.1.dev0.tar.gz", "has_sig": false, "md5_digest": "fcc92c359b0d37b334ae3566d0bebc87", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 6374, "upload_time": "2018-09-30T09:42:12", "url": "https://files.pythonhosted.org/packages/8c/d7/c7b67c55fefce20cefb3572252650599c75bebe875a40155cdac9f3be113/grpc-proto-validator-0.1.dev0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c0b3cb1c95e803e8a1a5837284a7e501", "sha256": "bcfcc8f7edaf1077e926a4a97242f5e91c2b8af7ab6e8e4c3f491529ce29644d" }, "downloads": -1, "filename": "grpc_proto_validator-0.1.2.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c0b3cb1c95e803e8a1a5837284a7e501", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 7726, "upload_time": "2018-10-08T11:17:37", "url": "https://files.pythonhosted.org/packages/3b/58/dd770d423655a6a8bdb60e3ce20cebca6f2586013b1de97d9835b86dad43/grpc_proto_validator-0.1.2.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29e9a56ceab689c14ac48fcb1d14255e", "sha256": "735cab0de7f4f3cf9a27c5ac371ac865baed141ed303159d54a0cc1a430271a5" }, "downloads": -1, "filename": "grpc-proto-validator-0.1.2.dev0.tar.gz", "has_sig": false, "md5_digest": "29e9a56ceab689c14ac48fcb1d14255e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9541, "upload_time": "2018-10-08T11:17:39", "url": "https://files.pythonhosted.org/packages/7a/48/317ff82b44d6a6ed97a9cae42f562ad1d091e821f81f28ec34d32921f172/grpc-proto-validator-0.1.2.dev0.tar.gz" } ] }