{ "info": { "author": "Joseph Wright", "author_email": "joseph@cloudboss.co", "bugtrack_url": null, "classifiers": [], "description": "Friend\n======\n\n.. image:: https://travis-ci.org/cloudboss/friend.svg?branch=master\n :target: https://travis-ci.org/cloudboss/friend\n\nWhat is Friend?\n---------------\n\nFriend is all of those of utilities you keep reimplementing across your Python projects, that all got together and decided to live in harmony.\n\nMaybe you just parsed some YAML that contained some configuration in `\"snake_case\" `_, and you want to pass this configuration to a `boto3 `_ function which takes the same values but in `\"PascalCase\" `_. Then you might find ``snake_to_pascal_obj`` or one of its variants to come in handy.\n\n::\n\n with open('conf.yml') as f:\n conf = yaml.load(f)\n\n ec2 = boto3.resource('ec2')\n ec2.create_instances(\n ImageId='ami-12345678',\n BlockDeviceMappings=snake_to_pascal_obj(conf['block_device_mappings']),\n ....\n )\n\nOr you need to add a retry to that script that keeps breaking your Jenkins job because the corporate proxy fails about 5% of the time. Sure, you can add a ``try/except`` and wrap it in a ``for`` loop, but putting the ``retryable`` decorator on top of that problematic function will do that for you in one configurable line.\n\n::\n\n @retryable(times=5)\n def flaky_function():\n status = requests.get('https://service.corp/v2/status').json()\n if 'error' in status:\n send_important_email(status['error'])\n\nRead the full documentation at `http://friend.readthedocs.io `_.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/pypi/friend", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cloudboss/friend", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "friend", "package_url": "https://pypi.org/project/friend/", "platform": "", "project_url": "https://pypi.org/project/friend/", "project_urls": { "Download": "https://pypi.python.org/pypi/friend", "Homepage": "https://github.com/cloudboss/friend" }, "release_url": "https://pypi.org/project/friend/0.2.1/", "requires_dist": [ "ipaddress" ], "requires_python": "", "summary": "Python utility library", "version": "0.2.1" }, "last_serial": 3677646, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "52eea2a38f3246ed8664e74ad517879d", "sha256": "d42149c6c9bc4374c2ed56a634b63a6d16a60316ebd3daf98eb61ccc22031f7e" }, "downloads": -1, "filename": "friend-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "52eea2a38f3246ed8664e74ad517879d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4343, "upload_time": "2017-08-20T05:55:12", "url": "https://files.pythonhosted.org/packages/08/70/d3f96ef5e6f4bd6e731041e837506997e5b84fa272eb7a36ca4ebfdc8df0/friend-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c116ab6b52df72286951a711671a8b49", "sha256": "13e05549fe9e8d319381aa9798d2385ca49ac6ccfa9b9a7fa529d460b82d285c" }, "downloads": -1, "filename": "friend-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c116ab6b52df72286951a711671a8b49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3030, "upload_time": "2017-08-20T05:55:13", "url": "https://files.pythonhosted.org/packages/c4/48/a660b7b48cce1cee319d008d4db71ab94a27ff750758b43abf80e6c6d1f2/friend-0.1.0.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "2f6785e2cafa07299da0541293afdbc1", "sha256": "43238d89727b3a312b23afb8de20259d0b2316a29d61836f40f4e325c786dad9" }, "downloads": -1, "filename": "friend-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "2f6785e2cafa07299da0541293afdbc1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10601, "upload_time": "2017-08-31T05:52:12", "url": "https://files.pythonhosted.org/packages/06/52/3bb36ef12affb8c3a09983c02553f1b99532e96dd87a568124eef1b85d4f/friend-0.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2032424b372c4a92c623835c7c161146", "sha256": "8cabc3dcbfae7a062baa9934a1baeba11a41414347bd9bc2e5618fc136db6123" }, "downloads": -1, "filename": "friend-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2032424b372c4a92c623835c7c161146", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13027, "upload_time": "2017-08-31T05:52:14", "url": "https://files.pythonhosted.org/packages/1b/4f/b640828cc07daa576aa0d97579306b43f555c33c853c40930cb938e4949c/friend-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9f5fdb0677bc1b48d51418b3146455b4", "sha256": "32db9370e45e538f2d312d591c72084100660c6ccc217558c84c628427cfe524" }, "downloads": -1, "filename": "friend-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "9f5fdb0677bc1b48d51418b3146455b4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10599, "upload_time": "2017-09-01T04:21:47", "url": "https://files.pythonhosted.org/packages/6b/07/976a02871d2a28c6f5bf95d65f60bbc4f494f81a05f3ffadb1a2a4e89b2d/friend-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21bbfaa75c4460ca943cf0c21d909480", "sha256": "9b919f6bc007b3807552586449e5394ebe645383f2624b29143f23c88088ccf6" }, "downloads": -1, "filename": "friend-0.1.3.tar.gz", "has_sig": false, "md5_digest": "21bbfaa75c4460ca943cf0c21d909480", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13771, "upload_time": "2017-09-01T04:21:48", "url": "https://files.pythonhosted.org/packages/cb/81/a5137edb903f4e7f64c1a64740f0152fce3da53d50539529cfdb84fd3307/friend-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fea76eb385d10150cd1f2df5f0f4137c", "sha256": "c9a6ff0ddaabfe27d43d5913dd2ba8214364c4f413c0cd1ec2d1fa7c5c13ade6" }, "downloads": -1, "filename": "friend-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "fea76eb385d10150cd1f2df5f0f4137c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10676, "upload_time": "2017-09-05T02:23:11", "url": "https://files.pythonhosted.org/packages/ef/44/ea7e83bc98333c98d4089e5c7b6e132a69f5e11966f860f80d2e93a4939f/friend-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16e8dd1183fb46ddf0596c5859612aed", "sha256": "2dba3b6cc7db0bc599e066846e888dffa40d198d00948a4b752fbc38cedaf90e" }, "downloads": -1, "filename": "friend-0.2.0.tar.gz", "has_sig": false, "md5_digest": "16e8dd1183fb46ddf0596c5859612aed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13885, "upload_time": "2017-09-05T02:23:13", "url": "https://files.pythonhosted.org/packages/cd/9b/5cf2d3d8b76e38a60c132202b13d4a87230cc6d03eb4ab7f08bbd602f9e0/friend-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "2bdb7308e07ee2aea04e4e98fd10d212", "sha256": "4260ffe877a33784e82197d871b02058ec51e40b7022974154337726cc8131a9" }, "downloads": -1, "filename": "friend-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "2bdb7308e07ee2aea04e4e98fd10d212", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10739, "upload_time": "2018-03-16T21:56:45", "url": "https://files.pythonhosted.org/packages/97/74/b28c915b4183a612fa333926918caedc564f46bcdfbe8390f1309a0f6459/friend-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0253c3d152d261e9ea5e3d199dae9916", "sha256": "55e06ff3a690f91b8616fd47299c61449823b403a1f82565ec45eba25628feec" }, "downloads": -1, "filename": "friend-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0253c3d152d261e9ea5e3d199dae9916", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10694, "upload_time": "2018-03-16T21:56:48", "url": "https://files.pythonhosted.org/packages/ad/d4/c673c03880f680d4c44c93e143717b767baca4cdc286b59835cb5a851ed2/friend-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "807b6eb160f15ab8f45637c8d3da4bec", "sha256": "be432d259d758d5abe6842214ea2f4e4e4021003c27a9c8e129b87e3fc9cd835" }, "downloads": -1, "filename": "friend-0.2.1.tar.gz", "has_sig": false, "md5_digest": "807b6eb160f15ab8f45637c8d3da4bec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13988, "upload_time": "2018-03-16T21:56:46", "url": "https://files.pythonhosted.org/packages/22/6d/046e0e2de30f4e0485af13d2608afc651504cde62d48d64b7de3e8b73b26/friend-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2bdb7308e07ee2aea04e4e98fd10d212", "sha256": "4260ffe877a33784e82197d871b02058ec51e40b7022974154337726cc8131a9" }, "downloads": -1, "filename": "friend-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "2bdb7308e07ee2aea04e4e98fd10d212", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10739, "upload_time": "2018-03-16T21:56:45", "url": "https://files.pythonhosted.org/packages/97/74/b28c915b4183a612fa333926918caedc564f46bcdfbe8390f1309a0f6459/friend-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0253c3d152d261e9ea5e3d199dae9916", "sha256": "55e06ff3a690f91b8616fd47299c61449823b403a1f82565ec45eba25628feec" }, "downloads": -1, "filename": "friend-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0253c3d152d261e9ea5e3d199dae9916", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10694, "upload_time": "2018-03-16T21:56:48", "url": "https://files.pythonhosted.org/packages/ad/d4/c673c03880f680d4c44c93e143717b767baca4cdc286b59835cb5a851ed2/friend-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "807b6eb160f15ab8f45637c8d3da4bec", "sha256": "be432d259d758d5abe6842214ea2f4e4e4021003c27a9c8e129b87e3fc9cd835" }, "downloads": -1, "filename": "friend-0.2.1.tar.gz", "has_sig": false, "md5_digest": "807b6eb160f15ab8f45637c8d3da4bec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13988, "upload_time": "2018-03-16T21:56:46", "url": "https://files.pythonhosted.org/packages/22/6d/046e0e2de30f4e0485af13d2608afc651504cde62d48d64b7de3e8b73b26/friend-0.2.1.tar.gz" } ] }