{ "info": { "author": "Kyle Lahnakoski", "author_email": "kyle@lahnakoski.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# More KWARGS!\n\n|Branch |Status |\n|------------|---------|\n|master | [![Build Status](https://travis-ci.org/klahnakoski/mo-kwargs.svg?branch=master)](https://travis-ci.org/klahnakoski/mo-kwargs) |\n|dev | [![Build Status](https://travis-ci.org/klahnakoski/mo-kwargs.svg?branch=dev)](https://travis-ci.org/klahnakoski/mo-kwargs) [![Coverage Status](https://coveralls.io/repos/github/klahnakoski/mo-kwargs/badge.svg?branch=dev)](https://coveralls.io/github/klahnakoski/mo-kwargs?branch=dev) |\n\n\n\n## Motivation\n\nExtensive use of dependency injection, plus managing the configuration for each of the components being injected, can result in some spectacularly complex system configuration. One way to reduce the complexity is to use configuration templates that contain useful defaults, and then overwrite the properties that need to be changed for the desired configuration. \n\n`@override` has been created to provide this templating system for Python function calls. It is mostly used for class constructors, but any method can benefit. The `@overrides` decorator adds a `kwargs` parameter which can be given a template of default parameters; but unlike `**kwargs`, it will not raise duplicate key exceptions.\n\n## Provide default values\n\nWe decorate the `login()` function with `@override`. In this case, `username` is a required parameter, and `password` will default to `None`. \n\n @override\n def login(username, password=None):\n pass\n\nDefine some `dicts` for use with our `kwargs` parameter:\n\n creds = {\"userame\": \"ekyle\", \"password\": \"password123\"}\n alt_creds = {\"username\": \"klahnakoski\"}\n\n\nThe simplest case is when we use `kwargs` with no overrides\n\n login(kwargs=creds)\n # SAME AS\n login(**creds)\n # SAME AS\n login(username=\"ekyle\", password=\"password123\")\n\nYou may override any property in `kwargs`: In this case it is `password`\n\n login(password=\"123\", kwargs=creds)\n # SAME AS\n login(username=\"ekyle\", password=\"123\")\n\nThere is no problem with overriding everything in `kwargs`:\n\n login(username=\"klahnakoski\", password=\"asd213\", kwargs=creds)\n # SAME AS\n login(username=\"klahnakoski\", password=\"asd213\")\n\nYou may continue to use `**kwargs`; which provides a way to overlay one parameter template (`creds`) with another (`alt_creds`)\n\n login(kwargs=creds, **alt_creds)\n # SAME AS\n login(username=\"klahnakoski\", password=\"password123\")\n\n## Handle too many parameters\n\nSometimes your method parameters come from a configuration file, or some other outside source which is outside your control. There may be more parameters than your method is willing to accept. \n\n creds = {\"username\": \"ekyle\", \"password\": \"password123\", \"port\":9000}\n def login(username, password=None):\n print(kwargs.get(\"port\"))\n\nWithout `mo-kwargs`, passing the `creds` dictionary directly to `login()` would raise a key error\n\n >>> login(**creds)\n Traceback (most recent call last):\n File \"\", line 1, in \n TypeError: login() got an unexpected keyword argument 'port'\n \nThe traditional solution is to pass the parameters explicitly:\n\n login(username=creds.username, password=creds.password)\n\nbut that can get get tedious when done often, or the parameter list get long. `mo-kwargs` allows you to pass the whole dictionary to the `kwargs` parameter; only the parameters used by the method are used:\n\n @override\n def login(username, password=None):\n pass\n \n login(kwargs=creds)\n # SAME AS\n login(**creds)\n\n## Package all parameters\n\nYour method can accept `kwargs` as a parameter. If it does, ensure it defaults to `None` so that it's not required.\n\n @override\n def login(username, password=None, kwargs=None):\n print(kwargs.get(\"username\"))\n print(kwargs.get(\"port\"))\n\n`kwargs` will always be a dict, possibly empty, with the full set of parameters. This is different from using `**kwargs` which contains only the remainder of the keyword parameters.\n\n >>> creds = {\"username\": \"ekyle\", \"password\": \"password123\", \"port\":9000}\n >>> login(**creds)\n ekyle\n 9000", "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/klahnakoski/mo-kwargs", "keywords": "", "license": "MPL 2.0", "maintainer": "", "maintainer_email": "", "name": "mo-kwargs", "package_url": "https://pypi.org/project/mo-kwargs/", "platform": "", "project_url": "https://pypi.org/project/mo-kwargs/", "project_urls": { "Homepage": "https://github.com/klahnakoski/mo-kwargs" }, "release_url": "https://pypi.org/project/mo-kwargs/2.53.19239/", "requires_dist": null, "requires_python": "", "summary": "More KWARGS! Let call parameters override kwargs", "version": "2.53.19239" }, "last_serial": 5738207, "releases": { "1.0.17035": [ { "comment_text": "", "digests": { "md5": "0b80abbd860186547c468fccc465bdba", "sha256": "d3f10e0c87073ddf99f16893d63ec5dbc949bd7724fcbb765decccc14907cee6" }, "downloads": -1, "filename": "mo_kwargs-1.0.17035-py2.7.egg", "has_sig": false, "md5_digest": "0b80abbd860186547c468fccc465bdba", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5569, "upload_time": "2017-02-03T15:03:19", "url": "https://files.pythonhosted.org/packages/3b/c9/6466a7521d892f6cde7a1f3b127df2134c637760b538aaa9d368b887d687/mo_kwargs-1.0.17035-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "bff9a7681a64018e1a269c3f95d2e318", "sha256": "f802e4d0f434e6cad3f4d6f50639c71781961e9555eebf5853fd379df5e36c2f" }, "downloads": -1, "filename": "mo-kwargs-1.0.17035.zip", "has_sig": false, "md5_digest": "bff9a7681a64018e1a269c3f95d2e318", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7567, "upload_time": "2017-02-03T15:03:25", "url": "https://files.pythonhosted.org/packages/85/ac/f4d4ea680789e4853501d18e1318a13c3ed8f7a8db5c923a808a0951db9f/mo-kwargs-1.0.17035.zip" } ], "1.0.17036": [ { "comment_text": "", "digests": { "md5": "a147c60f0e24808043f1c3d7000526c1", "sha256": "8e5b2fe057358746379fcd55b84a74b491c1e96daf33491a9cff5de24be888f5" }, "downloads": -1, "filename": "mo_kwargs-1.0.17036-py2.7.egg", "has_sig": false, "md5_digest": "a147c60f0e24808043f1c3d7000526c1", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5594, "upload_time": "2017-02-04T16:19:51", "url": "https://files.pythonhosted.org/packages/98/ca/ca66af1f1feec0123b03a73b52c7068af1010d8312f243c8fde0073d9819/mo_kwargs-1.0.17036-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3464f416539670309938f18b81789ff2", "sha256": "e7612af7c0f32ea0897abf656d99527e5e0b50a64fb2dd9b7a2da3a6392c98e7" }, "downloads": -1, "filename": "mo-kwargs-1.0.17036.zip", "has_sig": false, "md5_digest": "3464f416539670309938f18b81789ff2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7584, "upload_time": "2017-02-04T16:19:56", "url": "https://files.pythonhosted.org/packages/e8/f8/4955704ac50d20a01a464ac487f1e84b4a2ca72d39af40c515ba714a6087/mo-kwargs-1.0.17036.zip" } ], "1.0.17039": [ { "comment_text": "", "digests": { "md5": "59fae176697c25ac9cae55cb421a7baa", "sha256": "121bfe11f4851e72b1b4ef9d2be0f8936831675523aa538ca28082f6a6295e2c" }, "downloads": -1, "filename": "mo_kwargs-1.0.17039-py2.7.egg", "has_sig": false, "md5_digest": "59fae176697c25ac9cae55cb421a7baa", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5601, "upload_time": "2017-02-07T14:46:56", "url": "https://files.pythonhosted.org/packages/08/d6/2e71d1b153a9e7b8f5f9a60ee10d446b23dc74de3df2cafa4485ae07efc0/mo_kwargs-1.0.17039-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "e3b5f6e7003ddeac7084cbf083006c49", "sha256": "902b716d206762c5437ed82d4024c22dc419846c5d284e703a329f3162a1ea10" }, "downloads": -1, "filename": "mo-kwargs-1.0.17039.zip", "has_sig": false, "md5_digest": "e3b5f6e7003ddeac7084cbf083006c49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7576, "upload_time": "2017-02-07T14:46:59", "url": "https://files.pythonhosted.org/packages/9f/e9/f34b71a3ca4848fbb7d3c9b6171e86d0f5e933f5e815a20777723675a1d5/mo-kwargs-1.0.17039.zip" } ], "1.0.17041": [ { "comment_text": "", "digests": { "md5": "25f05e6598bd98bcfd6a711ad0dc5aed", "sha256": "baa34c8705b2c687744fb40edfe627f02adcb39497f22ae7005d1148e4f6c9df" }, "downloads": -1, "filename": "mo_kwargs-1.0.17041-py2.7.egg", "has_sig": false, "md5_digest": "25f05e6598bd98bcfd6a711ad0dc5aed", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 3540, "upload_time": "2017-02-09T16:43:49", "url": "https://files.pythonhosted.org/packages/ed/93/5524e6142698fb255b9d566102c2098220986622d4843138d23301de070f/mo_kwargs-1.0.17041-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "5fd70217633310012da73ae0bd6dbc32", "sha256": "f583cbe35dadffaee3d7d30d2a5c9fd9d5c827b5b7d8ecf67ff6c48ac6aba308" }, "downloads": -1, "filename": "mo-kwargs-1.0.17041.zip", "has_sig": false, "md5_digest": "5fd70217633310012da73ae0bd6dbc32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7566, "upload_time": "2017-02-09T16:43:53", "url": "https://files.pythonhosted.org/packages/8c/99/102b98cc5972f7c983e5962f3b636a82ff6dc8335472225fdd0554487df3/mo-kwargs-1.0.17041.zip" } ], "1.0.17049": [ { "comment_text": "", "digests": { "md5": "6768eaf554c39d5c7c05be8e4c238bd2", "sha256": "dd01bbbb71de60f544fe9b6367b6f23d208a5cc6b9f64d74caa270a72a7a9001" }, "downloads": -1, "filename": "mo_kwargs-1.0.17049-py2.7.egg", "has_sig": false, "md5_digest": "6768eaf554c39d5c7c05be8e4c238bd2", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 3541, "upload_time": "2017-02-18T02:08:34", "url": "https://files.pythonhosted.org/packages/ba/31/ceb0fc9286865e90c94b985808a9c681e900451b270e25e422a75867c64e/mo_kwargs-1.0.17049-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "543a143f9928e0e519c88e0651394b63", "sha256": "b4e16475cc2fe23551a8607d8c1ad678867f81711c24e36e4f622dc00d26b137" }, "downloads": -1, "filename": "mo-kwargs-1.0.17049.zip", "has_sig": false, "md5_digest": "543a143f9928e0e519c88e0651394b63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7568, "upload_time": "2017-02-18T02:08:37", "url": "https://files.pythonhosted.org/packages/b3/d9/d8ba7dfdc34c9c67a8205fd21cdaaf97dcfa2fa45cf376f53112fc636d1a/mo-kwargs-1.0.17049.zip" } ], "1.0.17056": [ { "comment_text": "", "digests": { "md5": "5330ddd3f17cae2f5c36256359a9c2f1", "sha256": "2e807002da264e340f4d2833a32b86535ad9581bb70ecbedae11975ebca2d91b" }, "downloads": -1, "filename": "mo_kwargs-1.0.17056-py2.7.egg", "has_sig": false, "md5_digest": "5330ddd3f17cae2f5c36256359a9c2f1", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 3541, "upload_time": "2017-02-25T20:28:02", "url": "https://files.pythonhosted.org/packages/df/d3/641cecad29d251f643361712956859312f5b3da54d7e1c6720ccb2910730/mo_kwargs-1.0.17056-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "a462b42de477f31af72f6a4fbd4f6b9d", "sha256": "03b36ecb40e88ead4c2568e7aaceed9036fce1fd62cb61de9959e8b73922e269" }, "downloads": -1, "filename": "mo-kwargs-1.0.17056.zip", "has_sig": false, "md5_digest": "a462b42de477f31af72f6a4fbd4f6b9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7568, "upload_time": "2017-02-25T20:28:06", "url": "https://files.pythonhosted.org/packages/42/dc/70228433bd50afe8e7cf94a74e4357ef80b8874b9131c329b5f09e7e9d4a/mo-kwargs-1.0.17056.zip" } ], "1.0.17085": [ { "comment_text": "", "digests": { "md5": "32fea25ff21d15e3a9136030f8d6ac84", "sha256": "a22750fb66755bb4739b4f1304b03ef95354b19675cfb948c2a259e98556c77a" }, "downloads": -1, "filename": "mo_kwargs-1.0.17085-py2.7.egg", "has_sig": false, "md5_digest": "32fea25ff21d15e3a9136030f8d6ac84", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 3675, "upload_time": "2017-03-26T12:35:55", "url": "https://files.pythonhosted.org/packages/c4/d8/bec9b21d554f6ed095c9adf07b157f7e98bd9a3f3f0b0645a22ca82c0772/mo_kwargs-1.0.17085-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "4d91565a22fbeb792cdab0293a6497fe", "sha256": "3e368128e12f22909de222d51a80e651b7ebef43d025604c7b44961846662f55" }, "downloads": -1, "filename": "mo-kwargs-1.0.17085.zip", "has_sig": false, "md5_digest": "4d91565a22fbeb792cdab0293a6497fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7767, "upload_time": "2017-03-26T12:35:58", "url": "https://files.pythonhosted.org/packages/db/99/1fedf27929e9dfab97b2dc19397545530121d3c4d22ba772dd83137b2ecf/mo-kwargs-1.0.17085.zip" } ], "1.0.17131": [ { "comment_text": "", "digests": { "md5": "abd896a0aedd3a755546c06931e419de", "sha256": "399335a2cb82fea4e5ab8f6cf050a3e6d08a129b6b032d404279562973569301" }, "downloads": -1, "filename": "mo-kwargs-1.0.17131.zip", "has_sig": false, "md5_digest": "abd896a0aedd3a755546c06931e419de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8978, "upload_time": "2017-05-11T13:41:26", "url": "https://files.pythonhosted.org/packages/f1/31/39b340ec1219b108b2fbf1891894f9afbadc72b120c47d553e885f824be1/mo-kwargs-1.0.17131.zip" } ], "1.0.17227": [ { "comment_text": "", "digests": { "md5": "4ba32078162d8d2facba27d9afdc52ce", "sha256": "9bc2d90d755711be0ca5d95e9b6d57cd78880c45f122f90edcc1e6ba32242d1d" }, "downloads": -1, "filename": "mo-kwargs-1.0.17227.zip", "has_sig": false, "md5_digest": "4ba32078162d8d2facba27d9afdc52ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9027, "upload_time": "2017-08-15T12:55:56", "url": "https://files.pythonhosted.org/packages/29/ed/7501689ef234ac2a553191a2bd3703c0d0e11048e5edb720f280e968bc58/mo-kwargs-1.0.17227.zip" } ], "1.6.18072": [ { "comment_text": "", "digests": { "md5": "97e5a5ee9476aa5e93962db6789477da", "sha256": "76785029126dcc11262f31b3a997cfb0100490d0f70ad16d31eeb8435e4d0966" }, "downloads": -1, "filename": "mo-kwargs-1.6.18072.tar.gz", "has_sig": false, "md5_digest": "97e5a5ee9476aa5e93962db6789477da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4866, "upload_time": "2018-03-13T18:38:28", "url": "https://files.pythonhosted.org/packages/07/61/c86a96d32424bf2a9c08440599596e133d73454aa62fec9f55bde3f03c27/mo-kwargs-1.6.18072.tar.gz" } ], "1.7.18072": [ { "comment_text": "", "digests": { "md5": "8e05f145813742e005296b16629de14a", "sha256": "40765db8cb2dc3281af9bce4d52acd705844502d78f72efdd3fb24b3544cfc81" }, "downloads": -1, "filename": "mo-kwargs-1.7.18072.tar.gz", "has_sig": false, "md5_digest": "8e05f145813742e005296b16629de14a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4867, "upload_time": "2018-03-13T18:48:54", "url": "https://files.pythonhosted.org/packages/1b/dc/eb269ce402f5817aed3ab426c969cde17f802b357eb7fc08201fe8e89fd7/mo-kwargs-1.7.18072.tar.gz" } ], "2.13.18154": [ { "comment_text": "", "digests": { "md5": "5366e6617d808a650f574024d2339002", "sha256": "283d154a065379a44a2a46a741f79105634333761f3e5a0cb2de3d6a7c2439ad" }, "downloads": -1, "filename": "mo-kwargs-2.13.18154.tar.gz", "has_sig": false, "md5_digest": "5366e6617d808a650f574024d2339002", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4911, "upload_time": "2018-06-03T23:56:56", "url": "https://files.pythonhosted.org/packages/1a/ac/e99f9d800e06591ce0507e22a2b8836915d1e79ea55b3f856d42ec573a29/mo-kwargs-2.13.18154.tar.gz" } ], "2.14.18155": [ { "comment_text": "", "digests": { "md5": "05414e3d649c8e05832aaf22bd96aa97", "sha256": "d6691dcd8470084aa703b7d1ac536c1a4e963b2f0e78f2e049d93c481821f1f5" }, "downloads": -1, "filename": "mo-kwargs-2.14.18155.tar.gz", "has_sig": false, "md5_digest": "05414e3d649c8e05832aaf22bd96aa97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4904, "upload_time": "2018-06-04T00:01:38", "url": "https://files.pythonhosted.org/packages/34/0a/34a104fcca5e15a6c7b6afb68d06561fa5159e964ad2e6a64fafed24912a/mo-kwargs-2.14.18155.tar.gz" } ], "2.16.18199": [ { "comment_text": "", "digests": { "md5": "f1590621b19a69c762e13e249389ba16", "sha256": "a2c87c99e89cc5679d442422ea304568fa75acfa1c8dcb977a013edb331b4b7c" }, "downloads": -1, "filename": "mo-kwargs-2.16.18199.tar.gz", "has_sig": false, "md5_digest": "f1590621b19a69c762e13e249389ba16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4901, "upload_time": "2018-07-18T12:15:53", "url": "https://files.pythonhosted.org/packages/7c/71/660e634945dcfbdc1fc2bfb065d180dd8fb3fb086485ea0283911bad819a/mo-kwargs-2.16.18199.tar.gz" } ], "2.18.18240": [ { "comment_text": "", "digests": { "md5": "c0fcf2d3aee9b019df246f4131f90a0d", "sha256": "b5d9a8c2d48ff72be6509d2ecd76114ec40f466dd67b029080900ea7916f0676" }, "downloads": -1, "filename": "mo-kwargs-2.18.18240.tar.gz", "has_sig": false, "md5_digest": "c0fcf2d3aee9b019df246f4131f90a0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5474, "upload_time": "2018-08-28T13:01:29", "url": "https://files.pythonhosted.org/packages/50/7a/13257e86d2aad44d7785b8a53d3b7b902a7eaa426ba105515c1654f61ac2/mo-kwargs-2.18.18240.tar.gz" } ], "2.26.18331": [ { "comment_text": "", "digests": { "md5": "e0d58c36bd03a8736b38a60568c7ac61", "sha256": "b512402927975749bbeca66ba18af3a8f69d4aa0275770d129b63540b9ef4189" }, "downloads": -1, "filename": "mo-kwargs-2.26.18331.tar.gz", "has_sig": false, "md5_digest": "e0d58c36bd03a8736b38a60568c7ac61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3923, "upload_time": "2018-11-27T12:32:14", "url": "https://files.pythonhosted.org/packages/fd/70/edbe9f6b3adfe8516363e3a0986e3af5676e2d575a40c5fbc7466ec4a313/mo-kwargs-2.26.18331.tar.gz" } ], "2.31.19025": [ { "comment_text": "", "digests": { "md5": "3f701cc0ce09bf1de5d8f6fde1b14193", "sha256": "f900e61fd6e04ae2ec823caeaf6dd46c5cd572667a6e7f1ffe1f1d755a1a4445" }, "downloads": -1, "filename": "mo-kwargs-2.31.19025.tar.gz", "has_sig": false, "md5_digest": "3f701cc0ce09bf1de5d8f6fde1b14193", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3905, "upload_time": "2019-01-25T23:49:54", "url": "https://files.pythonhosted.org/packages/2f/c1/7402f12e1a52a48abd5a5b1911ca2cb7deb9296d89b5c53445221631fedd/mo-kwargs-2.31.19025.tar.gz" } ], "2.32.19026": [ { "comment_text": "", "digests": { "md5": "83af140afdaa66af8a6c5ebb3d78e1bc", "sha256": "e6503c7bf68a23161bd09c494361b79ee3b27c4ea1f159104bce2598dc7e6131" }, "downloads": -1, "filename": "mo-kwargs-2.32.19026.tar.gz", "has_sig": false, "md5_digest": "83af140afdaa66af8a6c5ebb3d78e1bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3900, "upload_time": "2019-01-26T01:37:22", "url": "https://files.pythonhosted.org/packages/10/27/340abd399d37ea9329b98d335fdecb6ee82c81d9dafb8b624432caeddabc/mo-kwargs-2.32.19026.tar.gz" } ], "2.43.19055": [ { "comment_text": "", "digests": { "md5": "e5f392774a3bf1258d4c05df018e7d70", "sha256": "2fe2eda30b65f9bc7e6d9d73beadc8fb27cee677dcbef8682bc8aecc9622ef2e" }, "downloads": -1, "filename": "mo-kwargs-2.43.19055.tar.gz", "has_sig": false, "md5_digest": "e5f392774a3bf1258d4c05df018e7d70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3852, "upload_time": "2019-02-24T18:43:33", "url": "https://files.pythonhosted.org/packages/fb/fd/8dbe89aa2109b1d796ee504e9c282915c73303230fe455c4f267b3372667/mo-kwargs-2.43.19055.tar.gz" } ], "2.45.19103": [ { "comment_text": "", "digests": { "md5": "19b4b31c6eef17ce16e1b6ebe739fa20", "sha256": "e8c3472909a0143b7a4ff61237f0609a6290f78303802f769ad1be54079ffef7" }, "downloads": -1, "filename": "mo-kwargs-2.45.19103.tar.gz", "has_sig": false, "md5_digest": "19b4b31c6eef17ce16e1b6ebe739fa20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4682, "upload_time": "2019-04-13T20:09:31", "url": "https://files.pythonhosted.org/packages/4c/7f/bf8530b77b9d91ca6dc234c113e2189c05e93fb060c59093091a1793d925/mo-kwargs-2.45.19103.tar.gz" } ], "2.53.19239": [ { "comment_text": "", "digests": { "md5": "d2436dde776e169193d723b5125ed5b0", "sha256": "3c6444fe2a6f5c1156f45c718c300934dce23f6a74bf034b0dba8b955544e2ce" }, "downloads": -1, "filename": "mo-kwargs-2.53.19239.tar.gz", "has_sig": false, "md5_digest": "d2436dde776e169193d723b5125ed5b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4867, "upload_time": "2019-08-27T17:16:15", "url": "https://files.pythonhosted.org/packages/cb/f9/dc787c75e0d76ab7d938225a821d7bdb9a7703b844970ec4be83ad1c100d/mo-kwargs-2.53.19239.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d2436dde776e169193d723b5125ed5b0", "sha256": "3c6444fe2a6f5c1156f45c718c300934dce23f6a74bf034b0dba8b955544e2ce" }, "downloads": -1, "filename": "mo-kwargs-2.53.19239.tar.gz", "has_sig": false, "md5_digest": "d2436dde776e169193d723b5125ed5b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4867, "upload_time": "2019-08-27T17:16:15", "url": "https://files.pythonhosted.org/packages/cb/f9/dc787c75e0d76ab7d938225a821d7bdb9a7703b844970ec4be83ad1c100d/mo-kwargs-2.53.19239.tar.gz" } ] }