{ "info": { "author": "21 Buttons APP S.L.", "author_email": "jairo@21buttons.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Razemax\n[![Build Status](https://travis-ci.com/21Buttons/razemax.svg?branch=master)](https://travis-ci.com/21Buttons/razemax)\n\n\u2709\ufe0f Async communications using AWS SNS + SQS for Python services \u2728\n\n## Documentation\n\n### In-Memory event manager\n\n_Show me the code_\n\n```python\nfrom razemax.event_manager import EventManager\n\n\nclass NorthKoreaThreatCreatedEvent:\n def __init__(self, id, target):\n self.id = id\n self.target = target\n\n\ndef trump_subscriber(event: NorthKoreaThreatCreatedEvent):\n print(f\"North korea will attack us or {event.target}!\")\n \n \nEventManager.subscribe(trump_subscriber, NorthKoreaThreatCreatedEvent)\nEventManager.trigger(NorthKoreaThreatCreatedEvent(0, \"Mexico\"))\n```\n\nResult:\n```\nNorth korea will attack us or Mexico!\n```\n\n### Trigger subscribers from SQS\n\n#### Preconditions\n\nSQS queue has to be subscribed to SNS topic before running the consumer\n\n#### Code\n\n```python\nfrom razemax.consumers import MessageConsumer\nfrom razemax.drivers import SQSDriver\nfrom razemax.event_manager import EventManager\nfrom razemax.publisher import SNSMessagePublisher\n\n\ndef kp_message_to_event(message):\n # Highly recommended to use Marshmallow to validate\n return NorthKoreaThreatCreatedEvent(message.body['id'], message.body['target_name'])\n\nmapper = {\n 'KPThreatCreated': kp_message_to_event\n}\n\naws_settings = {\n 'region_name': \"\",\n 'aws_access_key_id': \"\",\n 'aws_secret_access_key': \"\",\n 'endpoint_url': \"\"\n}\n\nqueue_driver = SQSDriver.build(\"korea-threats-queue\", aws_settings)\nMessageConsumer(mapper, EventManager, queue_driver).process_message()\n\npublisher = SNSMessagePublisher.build(aws_settings, 'korea-topic')\npublisher.publish('KPThreatCreated', {'id': 21, 'target_name': 'Portugal'})\n```\n\nResult:\n\n```\nNorth korea will attack us or Portugal!\n```\n\n## Installing (TODO)\n\n`pip install git@github.com/transporter`\n\n\n## Running the tests\n\nTo run end to end tests do:\n```\nmake unit-tests\nmake integration-tests\n```\n\n## Authors\n\n* Jairo Vadillo ([@jairovadillo](https://github.com/jairovadillo))\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/21buttons/razemax", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "razemax", "package_url": "https://pypi.org/project/razemax/", "platform": "", "project_url": "https://pypi.org/project/razemax/", "project_urls": { "Homepage": "https://github.com/21buttons/razemax" }, "release_url": "https://pypi.org/project/razemax/0.0.8/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "SNS + SQS Communications made easy", "version": "0.0.8" }, "last_serial": 5159616, "releases": { "0.0.4": [ { "comment_text": "", "digests": { "md5": "bc799f2ed86b7a00b7b48405e0737162", "sha256": "c249028705474bcb9662ab269ce23b1f5ffe52117e9ad7ec9a26fd8353ffb009" }, "downloads": -1, "filename": "razemax-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "bc799f2ed86b7a00b7b48405e0737162", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9537, "upload_time": "2019-01-14T22:01:04", "url": "https://files.pythonhosted.org/packages/fa/d9/2dc34db7edf1e05f77444b8cd840ff980efb9de3e4a3ab6f6a6da9cd152d/razemax-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4c1fd08d91e99adacff7065c7db228e", "sha256": "cd8a54d68f31eae51c304ac96fd0be6dab6c60eb02c5768dbc0041c8598e828c" }, "downloads": -1, "filename": "razemax-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c4c1fd08d91e99adacff7065c7db228e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4310, "upload_time": "2019-01-14T22:01:06", "url": "https://files.pythonhosted.org/packages/99/8a/962f5cb1fd17c741b264a56feeb265fc84d23d9df0d88ce00c615d8ebdf7/razemax-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2f2b249dec08133e4f06b8926fd364c6", "sha256": "a7c47ed8e7673436b7e66c0982639c6ee550e7973b0e436fcd418d69d020a68f" }, "downloads": -1, "filename": "razemax-0.0.5.tar.gz", "has_sig": false, "md5_digest": "2f2b249dec08133e4f06b8926fd364c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4399, "upload_time": "2019-03-05T09:30:10", "url": "https://files.pythonhosted.org/packages/12/83/9385eb488cb4b5979f25b7acb9ff5e4c40db91f36c78c211be7d268055d4/razemax-0.0.5.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "f21a19986e5384ce04d2943773a4568c", "sha256": "7fd0cbea0e863e4654fa74ab39f6fb8c0b94f43f96b565ee11c04761649c6ba1" }, "downloads": -1, "filename": "razemax-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f21a19986e5384ce04d2943773a4568c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4395, "upload_time": "2019-03-13T14:22:00", "url": "https://files.pythonhosted.org/packages/fb/3f/627c357f61ab17f723a99806c6a0a16d68ab4c5c6a0935f51f733dcce15d/razemax-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d572fb21fd596f21860d1a44f18b8387", "sha256": "b5b8eb8cdb2257cf19e9baae176741ec14b67ab30712c13d7ed7ac7405b32656" }, "downloads": -1, "filename": "razemax-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d572fb21fd596f21860d1a44f18b8387", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4453, "upload_time": "2019-04-18T10:56:31", "url": "https://files.pythonhosted.org/packages/69/49/4849e1ac79fa126cc761e5cf580446399d96ee25fd28eb4d77c0cdf4d4ef/razemax-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d572fb21fd596f21860d1a44f18b8387", "sha256": "b5b8eb8cdb2257cf19e9baae176741ec14b67ab30712c13d7ed7ac7405b32656" }, "downloads": -1, "filename": "razemax-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d572fb21fd596f21860d1a44f18b8387", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4453, "upload_time": "2019-04-18T10:56:31", "url": "https://files.pythonhosted.org/packages/69/49/4849e1ac79fa126cc761e5cf580446399d96ee25fd28eb4d77c0cdf4d4ef/razemax-0.0.8.tar.gz" } ] }