{ "info": { "author": "Jaumo GmbH", "author_email": "nicola.bova@jaumo.com", "bugtrack_url": null, "classifiers": [], "description": "# pyavro-gen\n\nStandard Avro implementation for Python is typeless and operates on `dict`s.\nWhile this is convenient for small projects, larger ones, often with hundreds of schemas, \ncertainly benefit from the ability to enforce schemas during record construction. \n\nThis library allows Python Avro users to employ Specific Records.\n\n## Usage:\n\n```bash\npip install pyavro-gen\n```\n\nFor now, install this branch of `confluent_kafka`\n```bash\npip install -e git+https://github.com/confluentinc/confluent-kafka-python.git@serde#egg=confluent_kafka\n```\n\n```bash\npyavrogen.py -v \\\n -i my_schemas_dir \\\n -o jaumoavro \\\n -ie 'avsc' \\\n -b com.jaumo.schema \\\n -r com.jaumo.schema.rpc \\\n -t com.jaumo.schema.type\n```\n\nNow you can import your classes like\n\n```python\nfrom jaumoavro.com.jaumo.schema.domain.user import Updated\n\nu = Updated(...)\n```\n\nFor a full stack test with Kafka Avro Serdes and `fastavro`, run\n```bash\npyavrogen_test.py -m jaumoavro -d com.jaumo.schema.domain -n 100 -v\n```\n\n## Generation and test programmatically\n\n```python\nfrom avro_preprocessor.avro_paths import AvroPaths\nfrom pyavro_gen.generator import AvroGenerator\nfrom pyavro_gen.pyavrogen_test import do_test_generated_classes\n\ngenerator = AvroGenerator(\n AvroPaths(\n input_path='myschemas/',\n output_path='avroclasses/',\n input_schema_file_extension='avsc',\n base_namespace='com.jaumo.schema',\n rpc_namespace='com.jaumo.schema.rpc',\n types_namespace='com.jaumo.schema.type',\n )\n)\ngenerator.process()\n\n# Optionally, test the classes using fastavro:\ndo_test_generated_classes(\n module='avroclasses/',\n domain_namespace='com.jaumo.schema.domain',\n number_of_cycles=100\n)\n```\n\n### Generation using custom classes:\n\n```python\nfrom pyavro_gen.generation_classes import GENERATION_CLASSES, GenerationClassesType\nfrom pyavro_gen.codewriters.base import Decorator, ClassWriter, Extension\nfrom typing import Optional\n\n# First define two custom ClassWriters\n\nclass RpcWriter(ClassWriter):\n def __init__(self,\n fully_qualified_name: str,\n doc: Optional[str] = None,\n prefix: Optional[str] = None):\n super().__init__(fully_qualified_name, doc, prefix)\n\n self.extensions = [\n Extension('abc.ABC')\n ]\n\n\nclass UndictifiableClassWriter(ClassWriter):\n def __init__(self,\n fully_qualified_name: str,\n doc: Optional[str] = None,\n prefix: Optional[str] = None):\n super().__init__(fully_qualified_name, doc, prefix)\n\n self.decorators = [\n Decorator('@type_checked_constructor()',\n ClassWriter('undictify.type_checked_constructor')),\n Decorator('@dataclass', ClassWriter('dataclasses.dataclass'))\n ]\n\n\n# Then, register them in the GENERATION_CLASSES variable\n\nGENERATION_CLASSES[GenerationClassesType.RECORD_CLASS] = UndictifiableClassWriter\nGENERATION_CLASSES[GenerationClassesType.RPC_CLASS] = RpcWriter\n\n# Then, generate classes in module `avroclasses` as shown above.\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/Jaumo/pyavro-gen", "keywords": "avro,classes,typing,types,type,typed,generation,creation,schema,schemas,schemata", "license": "Apache2", "maintainer": "", "maintainer_email": "", "name": "pyavro-gen", "package_url": "https://pypi.org/project/pyavro-gen/", "platform": "", "project_url": "https://pypi.org/project/pyavro-gen/", "project_urls": { "Homepage": "https://gitlab.com/Jaumo/pyavro-gen" }, "release_url": "https://pypi.org/project/pyavro-gen/0.2.4/", "requires_dist": [ "networkx (==2.2)", "pygments (==2.2.0)", "pathlib", "factory-boy", "undictify (>=0.6.2)", "faker", "fastavro (>=0.21.18)", "isort", "avro-python3 (==1.8.2)", "avro-preprocessor (>=0.0.55)" ], "requires_python": "", "summary": "A typed class generator for Avro Schemata", "version": "0.2.4" }, "last_serial": 5481950, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "eda2c69f9ab1d3985528626750662f71", "sha256": "a11d8d9c84a37fe9a17172c18274838280242cad021e625c505d10dc7e45695d" }, "downloads": -1, "filename": "pyavro_gen-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eda2c69f9ab1d3985528626750662f71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30858, "upload_time": "2019-02-14T01:31:35", "url": "https://files.pythonhosted.org/packages/6e/2f/0af10e9eb7242db782fade8245c4e49bef4038aebd97815862e26d254741/pyavro_gen-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f26c5ab4f136e6c888baadf1226b182", "sha256": "c778f6cafdc2495d40ca1497c813f028f1e358060b337de6695a4e742a11a30b" }, "downloads": -1, "filename": "pyavro-gen-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5f26c5ab4f136e6c888baadf1226b182", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20433, "upload_time": "2019-02-14T01:31:36", "url": "https://files.pythonhosted.org/packages/d5/b7/b51bb4430fecf1ff2213dea2fc0372b340e735f20967a8ad281eaadd145d/pyavro-gen-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4956e432fcc64a814d0eb91ade325085", "sha256": "f28beb4216b2f6d774b2e1a86250f4e985086bdc1f06e5b2bc2ad2159aa2a5a7" }, "downloads": -1, "filename": "pyavro_gen-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4956e432fcc64a814d0eb91ade325085", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30858, "upload_time": "2019-02-14T11:14:20", "url": "https://files.pythonhosted.org/packages/2c/0d/68a82357109944bbcd82bd99cd359572961314ad02fbe314aae3388d2d8d/pyavro_gen-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09303ef3b24f0cd28fba036fd2301f17", "sha256": "6b4adfc15b125c601cf2e487d44e5132100dfb0ec3c7335276d2501f130756a7" }, "downloads": -1, "filename": "pyavro-gen-0.1.2.tar.gz", "has_sig": false, "md5_digest": "09303ef3b24f0cd28fba036fd2301f17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20436, "upload_time": "2019-02-14T11:14:21", "url": "https://files.pythonhosted.org/packages/2b/4f/a9355b36a7a56a9fc84bed8aa183038720864e71e4e68c69446d4c864442/pyavro-gen-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "10e704f4c961f199093cee3c7c9bdada", "sha256": "c22f92637b560501e7d1383227a51d5fd173fb26b475f86dc32c379e174f51a5" }, "downloads": -1, "filename": "pyavro_gen-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "10e704f4c961f199093cee3c7c9bdada", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31222, "upload_time": "2019-02-14T12:48:31", "url": "https://files.pythonhosted.org/packages/50/16/d3c6b457787d397f19702e743012d3d2ee7a89020a4651acbf912b588aa7/pyavro_gen-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af2f0e3c4d9e7c86a8bcb6f3476a7ff2", "sha256": "e27528b4c3ba964756aa373fc414c2ce31f4cd2a0bd8dbab4a432ee56d69fcd3" }, "downloads": -1, "filename": "pyavro-gen-0.1.4.tar.gz", "has_sig": false, "md5_digest": "af2f0e3c4d9e7c86a8bcb6f3476a7ff2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20593, "upload_time": "2019-02-14T12:48:32", "url": "https://files.pythonhosted.org/packages/85/b4/32d8bf372cf19ca1d0b54bb0f446d11b6520ee5c981dd3892994394e9e9d/pyavro-gen-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "26bbf9dd979956aebf85f605bc116e94", "sha256": "68f0f22cfb375f6e5a5df9d6d5cc27262ff1e9fe1cbdd32d7c059d47e2750c2d" }, "downloads": -1, "filename": "pyavro_gen-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "26bbf9dd979956aebf85f605bc116e94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30927, "upload_time": "2019-02-14T13:44:49", "url": "https://files.pythonhosted.org/packages/1f/d3/a99c7a2367448e62e7d08b22d8ed80b6c1b9164ed8179f1461795ddfd74a/pyavro_gen-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b0fb3f906ab0e6cb2614ccc3fa4e127", "sha256": "dbf123caadc647e66f491e4d7f1be9663e710011254a161aa55d5183819a822b" }, "downloads": -1, "filename": "pyavro-gen-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9b0fb3f906ab0e6cb2614ccc3fa4e127", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20535, "upload_time": "2019-02-14T13:44:50", "url": "https://files.pythonhosted.org/packages/13/2d/61d69b74970b557677b75f988e5623822a96e85d0443a48220929dadea5a/pyavro-gen-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "6dace405d5198450e9920502925bc377", "sha256": "22eb2462db6f06aa0803c0174cb95776f1afcb4f5cde769c6e3d5646ab0820bd" }, "downloads": -1, "filename": "pyavro_gen-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "6dace405d5198450e9920502925bc377", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30997, "upload_time": "2019-02-14T14:24:23", "url": "https://files.pythonhosted.org/packages/ba/3f/5828dbf8f5009a9e2d26754d41293c5b3c00a28934e71a94bd66c0724dd1/pyavro_gen-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "129c6f1287735b0fadd14e3e4d85bd1a", "sha256": "316ac2a61ac6bf2aa770ba621f3ec12f6f6c18d1e3e16255a6cc063c8c62f38f" }, "downloads": -1, "filename": "pyavro-gen-0.1.6.tar.gz", "has_sig": false, "md5_digest": "129c6f1287735b0fadd14e3e4d85bd1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20686, "upload_time": "2019-02-14T14:24:24", "url": "https://files.pythonhosted.org/packages/e5/5c/3474261dc1274604814619e7c7d8571c145d1ca6b5e22982a64045531c74/pyavro-gen-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "413f3573ce1f31f378aeb54b968a2969", "sha256": "be3f424f660c7a7a2b5a4f50eb4f1f6a4615518b42a493f5a3de430b9229bb98" }, "downloads": -1, "filename": "pyavro_gen-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "413f3573ce1f31f378aeb54b968a2969", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32030, "upload_time": "2019-02-14T18:00:38", "url": "https://files.pythonhosted.org/packages/a7/32/d3ec2e1f31128886d1419afd74eec964c32401e5ec9cfb25a9df088a8fe7/pyavro_gen-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48a3eb80ce9dad3fe5641e97b9942fa9", "sha256": "d6e164060a307dcb2d3a63b55952ff9845ad6381ffbf07d94dafd9d24c8e165c" }, "downloads": -1, "filename": "pyavro-gen-0.1.7.tar.gz", "has_sig": false, "md5_digest": "48a3eb80ce9dad3fe5641e97b9942fa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20883, "upload_time": "2019-02-14T18:00:39", "url": "https://files.pythonhosted.org/packages/ed/42/c273edeac605a6ce65a4f5297abc5762b154213ece2cb91e5a0147867a48/pyavro-gen-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "41b2cc7f756f78a4f0f23636c10ad2d9", "sha256": "ee1b0fc1af747105036341933da36f2137ad662a581243bdb19de8c8641eef10" }, "downloads": -1, "filename": "pyavro_gen-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "41b2cc7f756f78a4f0f23636c10ad2d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33846, "upload_time": "2019-02-26T22:43:45", "url": "https://files.pythonhosted.org/packages/e5/08/952093cb775efe62940ba99d46e87e95dfe79cc12bb81faec112c8c8714e/pyavro_gen-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e4186aedd625499054d8a1206d17572", "sha256": "33ef5309b798515e9d973514bbecaf68377fbd736ebf618ca881fc0bea758c43" }, "downloads": -1, "filename": "pyavro-gen-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8e4186aedd625499054d8a1206d17572", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22520, "upload_time": "2019-02-26T22:43:46", "url": "https://files.pythonhosted.org/packages/d8/09/fbae5021c780596977f303d0af305883264a549c263936464c0f8efbe20e/pyavro-gen-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1f3d60c2bd7451111d1662f2ab275f94", "sha256": "66d7ab0e1f7768b7babe29676337a4330c945710cf456910feb262c2b75a5954" }, "downloads": -1, "filename": "pyavro_gen-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1f3d60c2bd7451111d1662f2ab275f94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33844, "upload_time": "2019-02-26T23:14:07", "url": "https://files.pythonhosted.org/packages/f3/79/1bdc6078a3cf4af3f7d19c27f84fa8ec35f910530037c77942a08dcce00c/pyavro_gen-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4235976373c1a3e6d77651414504d677", "sha256": "da8da3fc94585c62d758ed78a8fcb87df3d295b08f566c69321cd70021d60cc8" }, "downloads": -1, "filename": "pyavro-gen-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4235976373c1a3e6d77651414504d677", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22517, "upload_time": "2019-02-26T23:14:08", "url": "https://files.pythonhosted.org/packages/f9/70/b8e2b4fe286c252c248a5e537a868179455aeddf393254240cfea6f483e7/pyavro-gen-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "28103fb58b43f81433f533128c4cddf9", "sha256": "60bf167fef392f8f02700531d825be81efb840d45c2783e1a929b92dd2239cc6" }, "downloads": -1, "filename": "pyavro_gen-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "28103fb58b43f81433f533128c4cddf9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34577, "upload_time": "2019-05-20T09:29:18", "url": "https://files.pythonhosted.org/packages/21/18/97c34a355d99fc66dd92c9bf45fb77d8391da5d10f40e1698cbff9dacaf5/pyavro_gen-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9545e3674970b70802ef18b23ea00747", "sha256": "82e407ac20ab73d38e631d34a21f7c1b049520ebb6e65d430ced5bd8fb614bed" }, "downloads": -1, "filename": "pyavro-gen-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9545e3674970b70802ef18b23ea00747", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22516, "upload_time": "2019-05-20T09:29:19", "url": "https://files.pythonhosted.org/packages/08/28/f76012ce1650c6ebcad600f15dd7c8e3589f5925f7e563eaee077d573ac6/pyavro-gen-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a879413908c0f763eb76a36f3276c25b", "sha256": "0b75c642a486c566cb5772e2f15996a59f64bf628fc8f6f6d3aaad3747f678a5" }, "downloads": -1, "filename": "pyavro_gen-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a879413908c0f763eb76a36f3276c25b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34585, "upload_time": "2019-05-24T13:36:22", "url": "https://files.pythonhosted.org/packages/0c/fa/b47ca33546221ec00bce9cb1df5dd03be61825823aa537f4bec530dca1e7/pyavro_gen-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c02e60ef95852108d5b2984cbfa0435d", "sha256": "1b4438262927a3a2960367f649d93a646bf7c217807d11b04ce94dbb83a8a9c2" }, "downloads": -1, "filename": "pyavro-gen-0.2.3.tar.gz", "has_sig": false, "md5_digest": "c02e60ef95852108d5b2984cbfa0435d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22522, "upload_time": "2019-05-24T13:36:24", "url": "https://files.pythonhosted.org/packages/57/9a/41c5e69c409483e8bac0fe9344ce5fdd6d5b7406839d439157c0cbd378f9/pyavro-gen-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "9640cacfeb7300fe8b8203885909c51c", "sha256": "18dee0f8f9e61edb2b7ec98e93499f7f9d4500bb85301b3ebbefa0db7f8d6447" }, "downloads": -1, "filename": "pyavro_gen-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9640cacfeb7300fe8b8203885909c51c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33857, "upload_time": "2019-07-03T14:09:07", "url": "https://files.pythonhosted.org/packages/fb/08/f9e14dc8708bfa6bbbc60292b99a776017f80b146881249b393bd8133173/pyavro_gen-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a8a57be6d23030147e8bedc872f83c2", "sha256": "2ab07a288ee6364b993a9063d8bfec11c67e7acada888a036d8ba23eddd10515" }, "downloads": -1, "filename": "pyavro-gen-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7a8a57be6d23030147e8bedc872f83c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22531, "upload_time": "2019-07-03T14:09:09", "url": "https://files.pythonhosted.org/packages/3b/d9/9a9002bf736d149a25dd6e6aa9684c1916701381a61b1a7eef4fd5116b01/pyavro-gen-0.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9640cacfeb7300fe8b8203885909c51c", "sha256": "18dee0f8f9e61edb2b7ec98e93499f7f9d4500bb85301b3ebbefa0db7f8d6447" }, "downloads": -1, "filename": "pyavro_gen-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9640cacfeb7300fe8b8203885909c51c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33857, "upload_time": "2019-07-03T14:09:07", "url": "https://files.pythonhosted.org/packages/fb/08/f9e14dc8708bfa6bbbc60292b99a776017f80b146881249b393bd8133173/pyavro_gen-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a8a57be6d23030147e8bedc872f83c2", "sha256": "2ab07a288ee6364b993a9063d8bfec11c67e7acada888a036d8ba23eddd10515" }, "downloads": -1, "filename": "pyavro-gen-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7a8a57be6d23030147e8bedc872f83c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22531, "upload_time": "2019-07-03T14:09:09", "url": "https://files.pythonhosted.org/packages/3b/d9/9a9002bf736d149a25dd6e6aa9684c1916701381a61b1a7eef4fd5116b01/pyavro-gen-0.2.4.tar.gz" } ] }