{ "info": { "author": "NewStore Inc.", "author_email": "engineering@newstore.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation", "Programming Language :: Python :: Implementation :: CPython" ], "description": "Mercator - Data Mapper for Protobuf\n===================================\n\n``version 0.1.10``\n\nPython DSL to leverage translation of dictionaries and SQLAlchemy into Protobuf objects\n\n.. image:: https://img.shields.io/pypi/pyversions/mercator.svg\n :target: https://pypi.python.org/pypi/mercator\n :alt: PyPi Project Page\n.. image:: https://travis-ci.org/NewStore/mercator.svg?branch=master\n :target: https://travis-ci.org/NewStore/mercator\n :alt: Travis Build\n.. image:: https://readthedocs.org/projects/mercator/badge/?version=latest\n :target: http://mercator.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. image:: https://codecov.io/gh/NewStore/mercator/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/NewStore/mercator\n :alt: Test Coverage Reports\n\n\nWhat is Mercator ?\n------------------\n\nMercator is a Python library that simplifies the following of\nserializing dictionary data into Protobuf binary data.\n\nMercator actually supports extracting data from:\n\n- dictionaries\n- SQLAlchemy model instances\n- Any opaque python objects (e.g.: ``collections.namedtuple``)\n\n\nWhen should I use Mercator ?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- When migrating custom implementations of RPC to gGRPC.\n- When migrating in-memory data to Protobuf.\n\n\nWhen should I **not** use Mercator ?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\n- When writing gRPC services from scratch.\n- When writing anything that uses Protobuf gets called.\n\n\nInstall\n-------\n\n.. code:: bash\n\n pip install mercator\n\n\nDocumentation\n-------------\n\n`https://mercator.readthedocs.org `_\n\n\nBasic Usage\n-----------\n\n\n1. Given a protobuf declaration\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\n.. code:: protobuf\n\n syntax = \"proto3\";\n package services.social_platform;\n\n import \"google/protobuf/timestamp.proto\";\n\n message User {\n message AuthToken {\n string value = 1;\n google.protobuf.Timestamp created_at = 2;\n google.protobuf.Timestamp expires_at = 3;\n }\n }\n\n\n2. Declare Mappings\n~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n\n from mercator import (\n ProtoMapping,\n ProtoKey,\n ProtoList,\n SinglePropertyMapping,\n )\n from google.protobuf.timestamp_pb2 import Timestamp\n from google.protobuf.struct_pb2 import Struct\n from google.protobuf import struct_pb2\n\n\n ProtobufTimestamp = SinglePropertyMapping(int, Timestamp, 'seconds')\n\n class UserAuthTokenMapping(ProtoMapping):\n __proto__ = domain_pb2.User.AuthToken\n value = ProtoKey('data', str)\n created_at = ProtoKey('created_at', ProtobufTimestamp)\n expires_at = ProtoKey('expires_at', ProtobufTimestamp)\n\n\n class UserMapping(ProtoMapping):\n __proto__ = domain_pb2.User\n\n tokens = ProtoList('tokens', UserAuthTokenMapping)\n\n\n3. Generate python files\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: shell\n\n python -m grpc_tools.protoc -I ./ --python_out=./ --grpc_python_out=./ ./*.proto\n\n\n4. Process data!\n~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n\n info = {\n 'login': 'Hulk',\n 'email': 'bruce@avengers.world',\n 'tokens': [\n {\n 'data': 'this is the token',\n 'created_at': 1552240433,\n 'expires_at': 1552240733,\n }\n ],\n }\n\n user = UserMapping(info).to_protobuf()\n\n assert isinstance(user, domain_pb2.User)\n\n\nContributing\n------------\n\n#. Check the `code structure documentation `_\n#. Write tests\n#. Write code\n#. Send a pull-request", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "https://github.com/NewStore/mercator/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://mercator.readthedocs.io/en/latest/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "mercator", "package_url": "https://pypi.org/project/mercator/", "platform": "", "project_url": "https://pypi.org/project/mercator/", "project_urls": { "Download": "https://github.com/NewStore/mercator/releases", "Homepage": "https://mercator.readthedocs.io/en/latest/" }, "release_url": "https://pypi.org/project/mercator/0.1.10/", "requires_dist": null, "requires_python": "", "summary": "0.1.10", "version": "0.1.10" }, "last_serial": 5682094, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a026526e9d29286cb090acf178c177c2", "sha256": "0bcbf8acb002be86406d3f8b7655d40bfb1b212815afbacf5e041ed1b8cb9bf0" }, "downloads": -1, "filename": "mercator-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a026526e9d29286cb090acf178c177c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7758, "upload_time": "2019-03-10T21:07:23", "url": "https://files.pythonhosted.org/packages/a7/bc/b854cd7409e038aa6d742c9b455f57faffa6c35104595252b24525d0b889/mercator-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e1e6619245305ee5c71c9a750232871d", "sha256": "c1b569e8008be9518bc5689b36f36a33deb786ee14d448ea647633333156bf50" }, "downloads": -1, "filename": "mercator-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e1e6619245305ee5c71c9a750232871d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8380, "upload_time": "2019-03-10T21:18:09", "url": "https://files.pythonhosted.org/packages/f1/8e/8bcb112e67515129eadc4a156dd48cfb32ee5c899fe2d29e7a2b37a761c0/mercator-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e4634cabfe892b97325742d5732e2c96", "sha256": "3bf423f8acaf9619cf778c23d7d25b795f0c270f10097280c72efaf3e7f2dbcb" }, "downloads": -1, "filename": "mercator-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e4634cabfe892b97325742d5732e2c96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8358, "upload_time": "2019-03-10T21:24:58", "url": "https://files.pythonhosted.org/packages/74/f0/b86f6b03960df5c3285557fee66b0075e5549014e220cfa848f03838cfaf/mercator-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "f5dbb32fea3e9a7db64931a7548bcfe7", "sha256": "c47c5da3aaf74bfbe350a4bfc983637b3f8f16a6b0b5177a9604bb180d0c4a13" }, "downloads": -1, "filename": "mercator-0.0.4.tar.gz", "has_sig": false, "md5_digest": "f5dbb32fea3e9a7db64931a7548bcfe7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7907, "upload_time": "2019-03-15T15:56:19", "url": "https://files.pythonhosted.org/packages/38/a4/e35ed94a1af91113aff683cac753176bc5b74d6fd6b6bbda19a528ddc4fd/mercator-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "ef9334651fd5c1bd73d03b735f4da53b", "sha256": "7e96b3d2e54bc9df8ce1e903d55b15a51477fd3ede8124ccfd22e70aa0fffb08" }, "downloads": -1, "filename": "mercator-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ef9334651fd5c1bd73d03b735f4da53b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7909, "upload_time": "2019-03-15T16:37:38", "url": "https://files.pythonhosted.org/packages/dd/7b/57433caf59e81408b45405d1c5ea5152330a0b6560f7b4b38a74aed1d2a2/mercator-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2a29b47c17855d98b8161a56feae65a8", "sha256": "3b8d38bc86cf1281ca8ba5ff2cda337da6784a5fc9a283db81991198f6980ea2" }, "downloads": -1, "filename": "mercator-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2a29b47c17855d98b8161a56feae65a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9076, "upload_time": "2019-03-15T17:52:00", "url": "https://files.pythonhosted.org/packages/e5/c8/a82d94ea6d4cdb1af2d864625d9347eaa9465885be7477765a02c0a1a131/mercator-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "90a0dc7725cdff7405f5462c5fa34bb7", "sha256": "816dbae8c03822a34249b7232eb9ee5962f4ddd9a69c29cbeef35a4bc9aa3e7c" }, "downloads": -1, "filename": "mercator-0.1.1.tar.gz", "has_sig": false, "md5_digest": "90a0dc7725cdff7405f5462c5fa34bb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9157, "upload_time": "2019-03-15T18:02:59", "url": "https://files.pythonhosted.org/packages/05/ac/37bb29547af665b976c8f163eb524cb250b1217c4d4b005160fbf10435c2/mercator-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "80304b72e94c6feac3e7efe9680b694a", "sha256": "b53d942f67b471721b21408890b784699441e13edd1c6b1d788267a9334db844" }, "downloads": -1, "filename": "mercator-0.1.10.tar.gz", "has_sig": false, "md5_digest": "80304b72e94c6feac3e7efe9680b694a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9626, "upload_time": "2019-08-15T12:53:43", "url": "https://files.pythonhosted.org/packages/5b/b3/001154e1a3ae59073ac5d2f54c68f0dd62ce1830be8d37c6165fdcc25ab9/mercator-0.1.10.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "89cdbc8142aed4dbaab37871ce7028a8", "sha256": "8693e52a93bd9596956312df54ec0d6719bd727868945f9cf0f10b924142a592" }, "downloads": -1, "filename": "mercator-0.1.2.tar.gz", "has_sig": false, "md5_digest": "89cdbc8142aed4dbaab37871ce7028a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9159, "upload_time": "2019-03-15T18:44:48", "url": "https://files.pythonhosted.org/packages/e6/c5/380668840831315436d1c42c3250e1ac8dc017d9a3165652321426e87abd/mercator-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d6f13d4ca4b41a95e06c4bb7453e5788", "sha256": "323c150c01d92171b8bd292a87449c6f1f7f68e4484fea73f589b71bdf1c710d" }, "downloads": -1, "filename": "mercator-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d6f13d4ca4b41a95e06c4bb7453e5788", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9151, "upload_time": "2019-03-15T21:20:42", "url": "https://files.pythonhosted.org/packages/62/fc/f92732aad8354b271b03f8ad4518b258ea8c875007080e2a979f09f5e993/mercator-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bd7fcd0b950b54e4b2b2c9868f02deb2", "sha256": "ce7285211eb6c12a3495aa4857d506fac78216ee219194021560d1ba7d60d4e0" }, "downloads": -1, "filename": "mercator-0.1.4.tar.gz", "has_sig": false, "md5_digest": "bd7fcd0b950b54e4b2b2c9868f02deb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9198, "upload_time": "2019-03-15T21:40:08", "url": "https://files.pythonhosted.org/packages/f0/c9/106811d4976fc6e0323e9cd3779d05534da4e73922f0ec56a02d79812f55/mercator-0.1.4.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d40e88d9e0435299e8a8df86dcec32ea", "sha256": "494e2cb2dae71ea48466d17edf0eb494dcb3600f22488061a648acf6bcaa99bf" }, "downloads": -1, "filename": "mercator-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d40e88d9e0435299e8a8df86dcec32ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9573, "upload_time": "2019-05-08T12:29:38", "url": "https://files.pythonhosted.org/packages/ff/9a/b1399812c4e776dcd3063d515549513f3f06865275a98b6e354f5e668fb6/mercator-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "040715ddfb4a02b1887376342b145fcc", "sha256": "eda5c585aa39ff4cdb900cfbdecf9fc87c834dd5f1bf34dacf991d54256e8837" }, "downloads": -1, "filename": "mercator-0.1.7.tar.gz", "has_sig": false, "md5_digest": "040715ddfb4a02b1887376342b145fcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9571, "upload_time": "2019-05-08T12:38:10", "url": "https://files.pythonhosted.org/packages/63/d0/c367135da657a4f598040ebf2db77880b227a7726eab5fcbefb31238745f/mercator-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "bb63931bb57d0af211a39fffe56eef71", "sha256": "3abf7bcb2f50c8dd1148cb67ff44bf7c8889460da8ecb7b16bfdab0af5e4c912" }, "downloads": -1, "filename": "mercator-0.1.8.tar.gz", "has_sig": false, "md5_digest": "bb63931bb57d0af211a39fffe56eef71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9607, "upload_time": "2019-05-08T12:46:15", "url": "https://files.pythonhosted.org/packages/f1/95/52a1b1f6577d49dce1780eedd24a65d6807b842a521586d00efa576622f7/mercator-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "c607ddfc3973e5844fd5ec48ad43230f", "sha256": "faec2fa9123f72a9631437b02675c5166e2a43f44450878a271c4dfbb12118c7" }, "downloads": -1, "filename": "mercator-0.1.9.tar.gz", "has_sig": false, "md5_digest": "c607ddfc3973e5844fd5ec48ad43230f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9625, "upload_time": "2019-06-27T14:03:18", "url": "https://files.pythonhosted.org/packages/44/01/87d42c97794240afa8e9ef61f163e13f193ea944b21289221186878a8f14/mercator-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "80304b72e94c6feac3e7efe9680b694a", "sha256": "b53d942f67b471721b21408890b784699441e13edd1c6b1d788267a9334db844" }, "downloads": -1, "filename": "mercator-0.1.10.tar.gz", "has_sig": false, "md5_digest": "80304b72e94c6feac3e7efe9680b694a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9626, "upload_time": "2019-08-15T12:53:43", "url": "https://files.pythonhosted.org/packages/5b/b3/001154e1a3ae59073ac5d2f54c68f0dd62ce1830be8d37c6165fdcc25ab9/mercator-0.1.10.tar.gz" } ] }