{ "info": { "author": "MP Team", "author_email": "feedback@materialsproject.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Database", "Topic :: Database :: Database Engines/Servers", "Topic :: Database :: Front-Ends", "Topic :: System :: Systems Administration" ], "description": "## Quickstart for users\n\nSo, your friendly neighborhood mongogranter says you know have access to a\ndatabase through your email address. What now? First, install mongogrant:\n```bash\npip install mongogrant\n```\nNext, request a token link to be sent to your email:\n```\nmgrant init mcurie@espci.fr \\\n --endpoint https://grantmedb.materialsproject.org\n```\nClick the link in your email to prove you're you, copy the fetch token from the\nloaded page, and then run:\n```\nmgrant settoken wh054900d70k3ny35y0u423\n```\nFinally, get credentials for your database. Here, Marie is asking mongogrant to\nprint out db.json and my_launchpad.yaml starter files for\n[FireWorks](https://materialsproject.github.io/fireworks/) and\n[atomate](https://atomate.org/):\n```\nmgrant db mongodb03.nersc.gov fw_mc_polonium \\\n --role readWrite \\\n --atomate-starters\n```\n## About mongogrant\n\nMongogrant is a utility to grant username and password\ncredentials for read and readWrite roles on various databases\non various hosts to owners of email addresses.\n\nA server administrator has fine-grained control via\nallow/deny rules for granting tokens and credentials.\nPeople request an email that contains a one-time link. That\nlink gives a user a fetch token. All tokens expire and\nexpiration time is customizable. People then use the\nmongogrant client to make requests like\n\n```python\nfrom mongogrant.client import Client\n\n# config file on disk has tokens and host/db aliases\n# `Client()` with no args looks to\n# ~/.mongogrant.json for config\nclient = Client()\n\n# No config yet? Set one up with at least one remote for fetching credentials\n# See below for how to obtain for a given .\nclient.set_remote(\"https://grantmedb.materialsproject.org\", \"\")\n\n# Set some aliases if you'd like:\nclient.set_alias(\"dev\", \"mongodb03.nersc.gov\", \"host\")\nclient.set_alias(\"prod\", \"mongodb04.nersc.gov\", \"host\")\nclient.set_alias(\"fireworks\", \"fw_dw_phonons\", \"db\")\n\n# pymongo.database.Database with read role\nsource_db = client.db(\"ro:dev/fireworks\")\n# readWrite role: config stores \"prod\" host alias and \"fireworks\" db alias\ntarget_db = client.db(\"rw:prod/fireworks\")\n\n# ...Do database stuff!\n```\n\nOne can also go entirely through a running app's API:\n\n```bash\n> # Using the HTTPie command line HTTP client (https://httpie.org/)\n> # Install via `{brew,apt-get,pip,...} install httpie`\n> http GET https://grantmedb.materialsproject.org/gettoken/\nHTTP/1.1 200 OK\nConnection: keep-alive\nContent-Length: 59\nContent-Type: application/json\nDate: Thu, 17 May 2018 18:05:30 GMT\nServer: nginx/1.10.3\n\n{\n \"msg\": \"Sent link to to retrieve token.\"\n}\n\n> http GET https://grantmedb.materialsproject.org/verifytoken/\nHTTP/1.1 200 OK\nConnection: keep-alive\nContent-Encoding: gzip\nContent-Type: text/html; charset=utf-8\nDate: Thu, 17 May 2018 18:06:17 GMT\nServer: nginx/1.10.3\nTransfer-Encoding: chunked\n\nFetch token: (expires 2018-06-19 18:05:30.508000 UTC)\n\n> # end-of-line \"\\\" below only necessary if command spans two lines.\n> http --form POST https://grantmedb.materialsproject.org/grant/ \\\n> role=readWrite host=mongodb03.nersc.gov db=dw_phonons\nHTTP/1.1 200 OK\nConnection: keep-alive\nContent-Length: 108\nContent-Type: application/json\nDate: Thu, 17 May 2018 18:11:22 GMT\nServer: nginx/1.10.3\n\n{\n \"password\": \"\",\n \"username\": \"dwinston_lbl.gov_readWrite\"\n}\n\n>\n```\n\nYou can run a \"server\" on your laptop in a Jupyer notebook\nand manage allow/deny rules, grant / revoke grants of\ncredentials, etc. A small Flask app\nis included as an example for deploying a server to which\nclients can connect to obtain tokens and credentials. \n\n## Set up a server\n\n```python\nfrom mongogrant.config import Config\nfrom mongogrant.server import Server, check, path, seed, Mailgun\n\nserver = Server(Config(check=check, path=path, seed=seed()))\nserver.set_mgdb(\"mongodb://mgserver:mgserverpass@my.host.com/mongogrant\")\nserver.set_mailer(Mailgun, dict(\n api_key=\"YOUR_KEY\",\n base_url=\"https://api.mailgun.net/v3/YOUR_DOMAIN\",\n from_addr=\"mongogrant@YOUR_DOMAIN\"))\nserver.set_admin_client(\n host=\"other1.host.com\",\n username=\"mongoadmin\",\n password=\"mongoadminpass\")\nserver.set_admin_client(\n host=\"other2.host.com\",\n username=\"mongoadmin\",\n password=\"mongoadminpass\")\n```\n\n### Appointing others to set allow/deny rules\n\nA mongogrant server admin can add \"ruler\" users who can set allow/deny rules for users via the `mgrant` CLI. An admin sets a ruler document in the `server.mgdb` collection, e.g.\n```python\nserver.mgdb.rulers.replace_one(\n {\"email\": \"starlord@lbl.gov\"},\n {\n \"email\": \"starlord@lbl.gov\",\n \"hosts\": [\"mongodb03.nersc.gov\"],\n \"dbs\": [\"mp_\", \"fw_\"],\n \"emails\": [\"@lbl.gov\"],\n \"which\": [\"allow\"]\n },\n upsert=True)\n```\nAllows user `starlord@lbl.gov` to set `allow` rules for any user with an \"@lbl.gov\" email address on the Mongo host \"mongodb03.nersc.gov\" for any database name prefixed with \"mp_\" or \"fw_\". Any field in a ruler document can be set to \"all\" rather than an array.\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://github.com/materialsproject/mongogrant/", "keywords": "mongodb pymongo authentication authorization", "license": "modified BSD", "maintainer": "", "maintainer_email": "", "name": "mongogrant", "package_url": "https://pypi.org/project/mongogrant/", "platform": "", "project_url": "https://pypi.org/project/mongogrant/", "project_urls": { "Homepage": "https://github.com/materialsproject/mongogrant/" }, "release_url": "https://pypi.org/project/mongogrant/0.3.0/", "requires_dist": [ "Click", "pymongo (>=3.8)", "Flask (>=1.0)", "requests" ], "requires_python": ">=3", "summary": "Generate and grant credentials for MongoDB databases", "version": "0.3.0" }, "last_serial": 5421872, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8f2e36bc1fb300570ade985fd0abbbab", "sha256": "00804b3c313f2ebad41336e917496bc12ce689568f879ba3762d043cbbd443a9" }, "downloads": -1, "filename": "mongogrant-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8f2e36bc1fb300570ade985fd0abbbab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13399, "upload_time": "2018-05-02T22:02:34", "url": "https://files.pythonhosted.org/packages/9b/ca/f91857959e090632a423621546798550f0891738c8565ebff9a5dd6df8b9/mongogrant-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f7f5d565b70ef595e4093d9879a7b46", "sha256": "b960c9de4644cfb7997826a8dbcc9cbacf160ea048f188b698f17d65e19f8c9f" }, "downloads": -1, "filename": "mongogrant-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9f7f5d565b70ef595e4093d9879a7b46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10181, "upload_time": "2018-05-02T22:02:36", "url": "https://files.pythonhosted.org/packages/cb/a2/cd28559977bdd7a38c5d7d2a28a63391869b3a704e5a53bd0d1ce137c05c/mongogrant-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d6cbd38eaff60bb8f2a80d0716f26a06", "sha256": "209d14c9f6b31b1a3764f984fcd352c4f29e45d4c659e83b25997eef2e933968" }, "downloads": -1, "filename": "mongogrant-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d6cbd38eaff60bb8f2a80d0716f26a06", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13420, "upload_time": "2018-05-02T23:05:12", "url": "https://files.pythonhosted.org/packages/3c/76/6ba47ff38342b808c3dccff3ad848f33a6b45754d8056f096567fa9345ce/mongogrant-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3a3b995bc4302adbd64692ea7d3bbdd", "sha256": "7dace7e721fcf18122220a06635da1e07943384030c73b3acd3ef660343c97d2" }, "downloads": -1, "filename": "mongogrant-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e3a3b995bc4302adbd64692ea7d3bbdd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10200, "upload_time": "2018-05-02T23:05:13", "url": "https://files.pythonhosted.org/packages/ac/20/8762e03a787067ca1e5f78a655302177a335f740a2a701b5e26dfa0cf873/mongogrant-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "dde3616f643310c7451d47cb2e511ca2", "sha256": "5e0b799bf15ba517496a44da8a36757e66424482316dbbd06c6b189bff95337c" }, "downloads": -1, "filename": "mongogrant-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "dde3616f643310c7451d47cb2e511ca2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14745, "upload_time": "2018-06-06T19:18:43", "url": "https://files.pythonhosted.org/packages/be/c2/cd2b847dad9502043bbb963471b67e57e359a921e5def3ad794aefa708a6/mongogrant-0.1.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5df3b335d9d9e69aa7a770a070cf4065", "sha256": "ae9a99477695f51daaa133632ccf4160710c61517edf5595b640d9bfbe48632f" }, "downloads": -1, "filename": "mongogrant-0.1.10.tar.gz", "has_sig": false, "md5_digest": "5df3b335d9d9e69aa7a770a070cf4065", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11626, "upload_time": "2018-06-06T19:18:45", "url": "https://files.pythonhosted.org/packages/84/5d/4682eaf2ff63bb73f109ae55e752e4b55b13f0d54bc3f67f40ea1b2998b3/mongogrant-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "759eaad7e46f710f48843d96af2d205e", "sha256": "2ad288577f63d0ad2a5fec195e6bca0f478bf8a1e0edd7fbf765403bae1da006" }, "downloads": -1, "filename": "mongogrant-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "759eaad7e46f710f48843d96af2d205e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14787, "upload_time": "2018-06-18T18:57:58", "url": "https://files.pythonhosted.org/packages/f9/7f/82d1963f69a3fa2f7de8e9596a475d1e3acb01d436d5ca6e4c70e061a2bd/mongogrant-0.1.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a9b4ab85fcc19fcdeacde26854711dd", "sha256": "7b3f861d431e02085fede5afc70a251bc200a9b877634e51fbced283b01b532f" }, "downloads": -1, "filename": "mongogrant-0.1.11.tar.gz", "has_sig": false, "md5_digest": "6a9b4ab85fcc19fcdeacde26854711dd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11652, "upload_time": "2018-06-18T18:57:59", "url": "https://files.pythonhosted.org/packages/ac/09/0fc9fae092511aa69db26e92fd25ac54037837210d337d1392777b10a6e9/mongogrant-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "a1dd1129bb54982653745b557afc4428", "sha256": "d392e362b667ad78308f5603d930e4b32172fbc60d5fe05dcf274cc99b11412f" }, "downloads": -1, "filename": "mongogrant-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "a1dd1129bb54982653745b557afc4428", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14927, "upload_time": "2018-06-28T20:40:17", "url": "https://files.pythonhosted.org/packages/da/84/0da3be7ec9785fb44c6655f0b6176c5ff7310fd158c94d92e61db957e189/mongogrant-0.1.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db52711fe25441a3e29046934b8700a0", "sha256": "cc8e8e9e07521c4a269e99c475a4ed93eeebbcae1c0c5e4d04c837046f7bfc64" }, "downloads": -1, "filename": "mongogrant-0.1.12.tar.gz", "has_sig": false, "md5_digest": "db52711fe25441a3e29046934b8700a0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11787, "upload_time": "2018-06-28T20:40:18", "url": "https://files.pythonhosted.org/packages/c4/ee/3cda0167fb632f68532610afaeca6f2987a7a49651406c8654af56adc7e2/mongogrant-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "42e408c8578686c16ba86aac1b8828e8", "sha256": "548ccbe899b565759c9a3e9e71fa5391b54c621ef4ab70d519ee032b338beb7d" }, "downloads": -1, "filename": "mongogrant-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "42e408c8578686c16ba86aac1b8828e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14970, "upload_time": "2018-06-28T22:34:33", "url": "https://files.pythonhosted.org/packages/4c/08/afee73247e15f4b911e9d93cb90b8793f36d0650d29f027f717bffc5d60d/mongogrant-0.1.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f65ac40b1505b1ffcfb686249a8262c", "sha256": "42d4fad9659bc539ff1a88eb5744a328535f72e67a4a026744d3e6ce4d3b7a05" }, "downloads": -1, "filename": "mongogrant-0.1.13.tar.gz", "has_sig": false, "md5_digest": "9f65ac40b1505b1ffcfb686249a8262c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11822, "upload_time": "2018-06-28T22:34:35", "url": "https://files.pythonhosted.org/packages/c1/9c/188b9945a4700ac2015f7cf44d22deebbd04ba70764f1aa0e85a0ee45b2f/mongogrant-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "43978c3e56ba0071da1ea125c4cbc564", "sha256": "3dd2d62322e10f3a99699dbad9db40fc943cccdd8be023382077686223b3292e" }, "downloads": -1, "filename": "mongogrant-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "43978c3e56ba0071da1ea125c4cbc564", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14942, "upload_time": "2018-07-24T00:22:46", "url": "https://files.pythonhosted.org/packages/ae/a2/fee12e7cf12e9e50a045fade3c8b7be65166cebbd34696c67aa98c13b3f0/mongogrant-0.1.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c714d061683475cc7e6c63cb11fccf72", "sha256": "1afb6fa142dd34108d6579519065257223b9886a5c2083b57bbf31b52b3a75db" }, "downloads": -1, "filename": "mongogrant-0.1.14.tar.gz", "has_sig": false, "md5_digest": "c714d061683475cc7e6c63cb11fccf72", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11812, "upload_time": "2018-07-24T00:22:48", "url": "https://files.pythonhosted.org/packages/31/93/b474b478d8654cd5b993c960fa20dc6532439d923a0b9579d079f52eb730/mongogrant-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "f8f143a8b347c0617404d33660ff93bf", "sha256": "10cd012cc7b1ade6dc1f06ad832a4ea04d3f1833c4fb1e036df1fbf815a269c8" }, "downloads": -1, "filename": "mongogrant-0.1.15-py3-none-any.whl", "has_sig": false, "md5_digest": "f8f143a8b347c0617404d33660ff93bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15009, "upload_time": "2018-08-16T19:27:14", "url": "https://files.pythonhosted.org/packages/78/41/b6abd5a1ae6b6239a6450249c710498acbd2d02f8fbd7afd227735a316da/mongogrant-0.1.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb72c9e1af5c1855d3c77ae2afc2e132", "sha256": "5012751f3728a31e5490b2383ec9aea3e310d068bea7bdd0352e7dfd9307ef7c" }, "downloads": -1, "filename": "mongogrant-0.1.15.tar.gz", "has_sig": false, "md5_digest": "eb72c9e1af5c1855d3c77ae2afc2e132", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11879, "upload_time": "2018-08-16T19:27:15", "url": "https://files.pythonhosted.org/packages/a2/77/09b6104304abd2a638976acc95742712fe18a2babee8c5c4ebbc8adf16b9/mongogrant-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "a18e39e613ec0ea65981a661e3c41a55", "sha256": "5b2c08deb31165188fca17233c4cd0fca444b275ac1b6af0477d2f980c3ff091" }, "downloads": -1, "filename": "mongogrant-0.1.16-py3-none-any.whl", "has_sig": false, "md5_digest": "a18e39e613ec0ea65981a661e3c41a55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15004, "upload_time": "2018-09-13T17:39:13", "url": "https://files.pythonhosted.org/packages/ae/fb/7052acd5e571a77ead12d58147675c82773e5f4d9d3a53fd992965bedb9c/mongogrant-0.1.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6d81043ef1225437cee07b91f878413", "sha256": "f08fb1f97ae761dafca14c3cb7a69711179b5bd5b017da9bcf855b034bf8660e" }, "downloads": -1, "filename": "mongogrant-0.1.16.tar.gz", "has_sig": false, "md5_digest": "d6d81043ef1225437cee07b91f878413", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11874, "upload_time": "2018-09-13T17:39:15", "url": "https://files.pythonhosted.org/packages/d6/96/729090af7bd23d88e7e3333d71643fef5f38b0e3330d3e3f209f5730b8e9/mongogrant-0.1.16.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "1351c3dd6d8e5cad436a4586d2be4bc0", "sha256": "7de2af89b58d6bf7986907ec24704ab7c3ee6018a1fa4d4206ead1ce4175c237" }, "downloads": -1, "filename": "mongogrant-0.1.17-py3-none-any.whl", "has_sig": false, "md5_digest": "1351c3dd6d8e5cad436a4586d2be4bc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 21831, "upload_time": "2018-09-18T23:56:22", "url": "https://files.pythonhosted.org/packages/e7/ab/3df3546ca3ea74436f5ba12d372d048a12c6414bd91b9d3110cbe5581d85/mongogrant-0.1.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b233910900501ed620ee9c51c1c953d5", "sha256": "5d0e7781bf14970381de6f2e5ef6bfe143e29a686c73b2172692632aa6c55104" }, "downloads": -1, "filename": "mongogrant-0.1.17.tar.gz", "has_sig": false, "md5_digest": "b233910900501ed620ee9c51c1c953d5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16112, "upload_time": "2018-09-18T23:56:23", "url": "https://files.pythonhosted.org/packages/2f/63/32dade0d1608d2a1637b2f795a7a02c2dbbc1c2735256dca24584ce36b02/mongogrant-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "2583ac5ddd564362a403282d1bc2e299", "sha256": "8fa4406e98f32e3631dc15ff56a9bf595481ee14bf797408fb9736e3ff232dc1" }, "downloads": -1, "filename": "mongogrant-0.1.18-py3-none-any.whl", "has_sig": false, "md5_digest": "2583ac5ddd564362a403282d1bc2e299", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22206, "upload_time": "2018-09-19T00:25:39", "url": "https://files.pythonhosted.org/packages/a2/15/ffc0e70840f59b7f127b69d0c16158e71c3d82756380eab268b5cb90ca0b/mongogrant-0.1.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3674d84e23fdae0f14a39609db52e942", "sha256": "62ce8840aa1676a261748229469b9201a28266ea90536d8b642862dea2bae21a" }, "downloads": -1, "filename": "mongogrant-0.1.18.tar.gz", "has_sig": false, "md5_digest": "3674d84e23fdae0f14a39609db52e942", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16588, "upload_time": "2018-09-19T00:25:40", "url": "https://files.pythonhosted.org/packages/b1/e1/a8c2913ee19370a5942551735b6046f1b3d9b2ef1dadf26719da905ba60d/mongogrant-0.1.18.tar.gz" } ], "0.1.19": [ { "comment_text": "", "digests": { "md5": "5e71c1b40e70ebf23ef8e08f694830e5", "sha256": "f75b43946b7936ed02b4f9da7f7f58d4b835e87cfa2ae51e987c3d8922aab5c0" }, "downloads": -1, "filename": "mongogrant-0.1.19-py3-none-any.whl", "has_sig": false, "md5_digest": "5e71c1b40e70ebf23ef8e08f694830e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23248, "upload_time": "2018-09-26T19:18:40", "url": "https://files.pythonhosted.org/packages/56/8d/81f2f61f89e16e8232d00f96b2432321a318bf92a712c7fc85ba73810ed8/mongogrant-0.1.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bd2367eaf770c2b74f061b3ff13986a", "sha256": "ecf22f9e7a9e7e71ab2c2951dbb95c3a5139a6d6f02587b310a6813e5af84364" }, "downloads": -1, "filename": "mongogrant-0.1.19.tar.gz", "has_sig": false, "md5_digest": "8bd2367eaf770c2b74f061b3ff13986a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17416, "upload_time": "2018-09-26T19:18:42", "url": "https://files.pythonhosted.org/packages/f6/96/941785bbce524078e5987f2995a37709ca2ca0e4e95304aa1bbb843812c4/mongogrant-0.1.19.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0ec584de95dadc5398bcd7e140855a93", "sha256": "26c3d1bbd9b02122c5b83469effc9e622a7fe1efc1db8d49656ae62cf958e3a8" }, "downloads": -1, "filename": "mongogrant-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0ec584de95dadc5398bcd7e140855a93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13420, "upload_time": "2018-05-02T23:30:50", "url": "https://files.pythonhosted.org/packages/01/3f/ca0f99d3553380716c3703ccc0c311850089ba2206a3ede6ea10d6908878/mongogrant-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9578d0fb9a5c484c4a5421b478f04e21", "sha256": "b5eb84b1fa9a4f1d7eefde7925818df0dea3edef1306f15206b4bd4a50c0716b" }, "downloads": -1, "filename": "mongogrant-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9578d0fb9a5c484c4a5421b478f04e21", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10195, "upload_time": "2018-05-02T23:30:51", "url": "https://files.pythonhosted.org/packages/15/3d/3b3d142005e63d603d8d554963d4d239c3a86e828173030acb62cac911d2/mongogrant-0.1.2.tar.gz" } ], "0.1.20": [ { "comment_text": "", "digests": { "md5": "0d8144932b24743d452305942860e142", "sha256": "be649187561850044162ebb527826573aedb5065741241f8341bba93978c77d0" }, "downloads": -1, "filename": "mongogrant-0.1.20-py3-none-any.whl", "has_sig": false, "md5_digest": "0d8144932b24743d452305942860e142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23244, "upload_time": "2018-09-26T19:22:59", "url": "https://files.pythonhosted.org/packages/bf/0d/192ba75908b65eef971322984a09fc0148dd7990d263578e58d24b6f3e56/mongogrant-0.1.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4bb77927de1895fc024ed0835963fc37", "sha256": "107f3efac6801d9449ac0708ae57559179f963334db6fd29a76f92d853f50869" }, "downloads": -1, "filename": "mongogrant-0.1.20.tar.gz", "has_sig": false, "md5_digest": "4bb77927de1895fc024ed0835963fc37", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17412, "upload_time": "2018-09-26T19:23:01", "url": "https://files.pythonhosted.org/packages/0e/aa/bc318d86f9a8b9b318e4b9d3cd694fd07a864e773b05c5428532de4bc24e/mongogrant-0.1.20.tar.gz" } ], "0.1.21": [ { "comment_text": "", "digests": { "md5": "9aa873cad844856230f4ebf503af4dab", "sha256": "00c9687365533a9e2c2de96add8cd8239febed9515acec5f555808fa7f0b8655" }, "downloads": -1, "filename": "mongogrant-0.1.21-py3-none-any.whl", "has_sig": false, "md5_digest": "9aa873cad844856230f4ebf503af4dab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23247, "upload_time": "2018-09-26T19:28:08", "url": "https://files.pythonhosted.org/packages/d5/10/c9566b2a2731b9249a16ed037fe2b1da600602e16a0fea316f0687670bff/mongogrant-0.1.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7bfd43a5ba172ba39a534e28ed71d98", "sha256": "deac1c5cb62c8ae7836622f4beb2faa87a371d4f5fd02334253ffca032ff21ce" }, "downloads": -1, "filename": "mongogrant-0.1.21.tar.gz", "has_sig": false, "md5_digest": "c7bfd43a5ba172ba39a534e28ed71d98", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17414, "upload_time": "2018-09-26T19:28:09", "url": "https://files.pythonhosted.org/packages/22/26/1b0c1c02ce22b74546d3d1fa246a6e8927e10820dc93c064354fe323f49f/mongogrant-0.1.21.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f1d8648abbe1e7dafafffb0c631eaf88", "sha256": "9db8987b3918c87af58e0537702e11618012515bcf757d1974cb5eb6ad68c2d4" }, "downloads": -1, "filename": "mongogrant-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f1d8648abbe1e7dafafffb0c631eaf88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13647, "upload_time": "2018-05-03T00:00:17", "url": "https://files.pythonhosted.org/packages/e8/1d/9b5ac3273b4a398c3aa0b6298282f82e3c818a11b3a7aaf6b949a60c903b/mongogrant-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7ceb372eebb75fdbf180541aa433e77", "sha256": "0a6134ab1888bc0f5503cf9ba9b1846ddbabbc89050c8818e588878e9a108794" }, "downloads": -1, "filename": "mongogrant-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a7ceb372eebb75fdbf180541aa433e77", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10420, "upload_time": "2018-05-03T00:00:19", "url": "https://files.pythonhosted.org/packages/c8/cd/bc1fb82a544fb423b86ae68fd5c1845c75fdbb894efd6b88f3a1c5e63570/mongogrant-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bff69f5d0c7ac0f6cd86f8635894eebf", "sha256": "07fd2dcbcc99099617a563e3d59fe4eaae32d74e6f980cf93d53672c2d7dce5a" }, "downloads": -1, "filename": "mongogrant-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "bff69f5d0c7ac0f6cd86f8635894eebf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13700, "upload_time": "2018-05-08T21:46:39", "url": "https://files.pythonhosted.org/packages/66/42/d4fc4c0e558434f982dfc16714ff38366d7ef6e9d21d1c2000d6208dd97c/mongogrant-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d604434bc98e5fd75488b4999c17336a", "sha256": "9b14b9dcb0420747557d2485113881d67bee0435ddcb6729457a9ef675aaf38b" }, "downloads": -1, "filename": "mongogrant-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d604434bc98e5fd75488b4999c17336a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10453, "upload_time": "2018-05-08T21:46:40", "url": "https://files.pythonhosted.org/packages/f0/3a/6313e65292fc06162f2829f0e7cc754ba6cb0e200a6dbe6a605fc1b360de/mongogrant-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "4d9999cbbaae74200ce55622112a7614", "sha256": "cc9934d2cf66c6cfbd4b9a2ac683ea8e3c47eb41fcfdb5295352b40704b19c0c" }, "downloads": -1, "filename": "mongogrant-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4d9999cbbaae74200ce55622112a7614", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13707, "upload_time": "2018-05-08T21:56:25", "url": "https://files.pythonhosted.org/packages/33/a0/c3e995feeb01787990a161110f3416c526965f2155927881ffde9d476ea8/mongogrant-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44e9d7aaeb306fff1e335b3d9993722c", "sha256": "ab30ab1f27c2012b581c0a9c5ef23773694c8bb53193e447333bde1510665cd6" }, "downloads": -1, "filename": "mongogrant-0.1.5.tar.gz", "has_sig": false, "md5_digest": "44e9d7aaeb306fff1e335b3d9993722c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10458, "upload_time": "2018-05-08T21:56:26", "url": "https://files.pythonhosted.org/packages/ed/3d/98192b2f5fa481499bf6c2fd2d1d5673e182bfcfd78862db070d69779077/mongogrant-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c512ca7adf97638d9c64971475a262aa", "sha256": "ba08f024a1984328911c1fdef97f5f177b379112a008406778f900833074b488" }, "downloads": -1, "filename": "mongogrant-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "c512ca7adf97638d9c64971475a262aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13996, "upload_time": "2018-05-08T23:32:16", "url": "https://files.pythonhosted.org/packages/8e/b4/ed87523ea9b36611e846744ba61dd0dd8c383682eea2652aee4f48fdbc19/mongogrant-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa70911b84628d9f97f38762da08ba87", "sha256": "df453d575fbdbe1644a144f64cb6f738edd0fc5300cd02a87826364b51d23162" }, "downloads": -1, "filename": "mongogrant-0.1.6.tar.gz", "has_sig": false, "md5_digest": "aa70911b84628d9f97f38762da08ba87", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10734, "upload_time": "2018-05-08T23:32:18", "url": "https://files.pythonhosted.org/packages/c2/f2/28dc7804274bc567642f45f6d2884fe3c4fd2bae8ba60a0ead0761d4577c/mongogrant-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "7cd5b6302bb6e849db1eea134e5e81e5", "sha256": "b42f5dfe6eec7057e90bc00e5e58ace0fcb044de640f901b3a49ad24146c7ddd" }, "downloads": -1, "filename": "mongogrant-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7cd5b6302bb6e849db1eea134e5e81e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14036, "upload_time": "2018-05-09T00:28:16", "url": "https://files.pythonhosted.org/packages/54/de/00f291165f85a23663ff80270ad9fe084bd36dcbd5c9f1f3c546b13aa7e1/mongogrant-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cec67ff02fd8ad26fb524a010c6bdfc2", "sha256": "06a9bbd61a20c4265a8a4cb67043a7dc05670d86d6c977f43e164ae1399715b9" }, "downloads": -1, "filename": "mongogrant-0.1.7.tar.gz", "has_sig": false, "md5_digest": "cec67ff02fd8ad26fb524a010c6bdfc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10752, "upload_time": "2018-05-09T00:28:17", "url": "https://files.pythonhosted.org/packages/f6/4a/6ff64135d0eefeb2016ccdd4452a50f4f9ba69f33b44f948048579a7414e/mongogrant-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "8c6394574df712dfe6f908354fd22e5b", "sha256": "1ca419193c158043bfef64fc847d69ce3b4b2dd6adc8a56e0448d430f0aba94f" }, "downloads": -1, "filename": "mongogrant-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8c6394574df712dfe6f908354fd22e5b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14066, "upload_time": "2018-05-09T00:41:07", "url": "https://files.pythonhosted.org/packages/37/34/05cf62a7da5678b56c2d839c2802415b908233b37da71448be50d188f91a/mongogrant-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0cd59ff359c30b4da5ca0cc4a961cc5", "sha256": "8ccc8b9309eb9b76c8bac0a0568f9173609c9140fc4c39bdbc03e41aa84d2767" }, "downloads": -1, "filename": "mongogrant-0.1.8.tar.gz", "has_sig": false, "md5_digest": "d0cd59ff359c30b4da5ca0cc4a961cc5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10763, "upload_time": "2018-05-09T00:41:09", "url": "https://files.pythonhosted.org/packages/65/55/70e76a0ca9ff1ad4fe9bb37026d2a0c533672645be920baab42729fbeb18/mongogrant-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "3e13bc22665dd579532687d865060e8a", "sha256": "57681eb356d8c06578c863346a4a695c7a1eee4d039d1959bf099fb091ecd1e9" }, "downloads": -1, "filename": "mongogrant-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "3e13bc22665dd579532687d865060e8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14075, "upload_time": "2018-06-06T19:14:53", "url": "https://files.pythonhosted.org/packages/60/67/cf776e3d23bdbd12e318954c8dfb4f568a2111135613679ce6aae1931690/mongogrant-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "779773a7e49856916e4af31ddd271edd", "sha256": "8ff22a0a51d041e039c54256d58c5145e5aca49f418ad8b22015b7a30f13fa41" }, "downloads": -1, "filename": "mongogrant-0.1.9.tar.gz", "has_sig": false, "md5_digest": "779773a7e49856916e4af31ddd271edd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10787, "upload_time": "2018-06-06T19:14:54", "url": "https://files.pythonhosted.org/packages/66/d9/180b19c46aca7239e791948445045772d7bc8ff8136df027a37368258e2a/mongogrant-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "140966cf51319c9fbc351fbc93659cd0", "sha256": "6e9a10bd14bd21bb22079a9ac3e2600aff81ed018b7d9e6a61b700ca44728740" }, "downloads": -1, "filename": "mongogrant-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "140966cf51319c9fbc351fbc93659cd0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23224, "upload_time": "2018-09-26T19:37:54", "url": "https://files.pythonhosted.org/packages/7c/83/487f891f26418f6ce95b015ac688d741f417515f7f6d4760d78a681f374b/mongogrant-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "010157e9b9f6ce37351d4e8d5fb70ac2", "sha256": "4a3954044f64f30a1cc652c561c7532ad9d928f0d365dda498ccf1078cbb493e" }, "downloads": -1, "filename": "mongogrant-0.2.0.tar.gz", "has_sig": false, "md5_digest": "010157e9b9f6ce37351d4e8d5fb70ac2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17408, "upload_time": "2018-09-26T19:37:56", "url": "https://files.pythonhosted.org/packages/79/de/b427bbba55ce6d36def147c4fd0acc3249f822078b1913605cac901ec591/mongogrant-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "26be19d91d6e6bac736958537e0a7f05", "sha256": "a2bcca393ef96625ebe0b8e95b9167d137475e16acdf1f34a6fb140aa31b46f0" }, "downloads": -1, "filename": "mongogrant-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "26be19d91d6e6bac736958537e0a7f05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23524, "upload_time": "2018-09-26T19:56:55", "url": "https://files.pythonhosted.org/packages/8b/9e/141a796abd7b4acb7bc71e4d92518a8b9f1d6ff2136e2e92afb249377eb5/mongogrant-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e894316e95e56f07152f4627288b851", "sha256": "9e5d0d7d7a42c8a77c714193e4538cbc87ead809f5ecf9605b192b615672e01b" }, "downloads": -1, "filename": "mongogrant-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7e894316e95e56f07152f4627288b851", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17806, "upload_time": "2018-09-26T19:56:56", "url": "https://files.pythonhosted.org/packages/97/5d/e0c621d0178da8a55246656c676fa80ba6a17784ccfb45b2c41a9aa1dc5a/mongogrant-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "a1b8250123b237c3bf279940ba6b8c37", "sha256": "b152df9cc187fdddf16d293106ee71b50644117a4126cc3f3e5651106244064b" }, "downloads": -1, "filename": "mongogrant-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a1b8250123b237c3bf279940ba6b8c37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 23552, "upload_time": "2018-09-26T20:42:57", "url": "https://files.pythonhosted.org/packages/ea/f9/a75652213c6915a4f0b94323f59e6c01618515dbeeb3f3c74ec96089ba48/mongogrant-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b80a9b213edf2b2dc875542b26b643d6", "sha256": "bf87f5d3c3dfc9830803a239533f0d8b1e4822ba9f8a3f0899221b2cf4fd082e" }, "downloads": -1, "filename": "mongogrant-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b80a9b213edf2b2dc875542b26b643d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 17848, "upload_time": "2018-09-26T20:42:59", "url": "https://files.pythonhosted.org/packages/a7/89/2b13bdc109f01c14eb98402b721dbf2c1d35fc9a7951a9ab5bea4ab3f981/mongogrant-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0f34e3ffa2b4ed173666712be1cbdf10", "sha256": "a91434dc9a04481065167190b5ffba6c896c1d20e35413b2d6c66219213dfb95" }, "downloads": -1, "filename": "mongogrant-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0f34e3ffa2b4ed173666712be1cbdf10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 24840, "upload_time": "2019-06-19T17:40:42", "url": "https://files.pythonhosted.org/packages/bc/cf/e6d2af418ee7b0ebb251721fe26a6f0678d67e5e055013a97f7bc19b579a/mongogrant-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e65e3943a057507908317d3bab9c31fc", "sha256": "d43f59f444ef91fb0ac2be3f72fc4e8a2e28ab26165eb577e2cc2bc098c8210f" }, "downloads": -1, "filename": "mongogrant-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e65e3943a057507908317d3bab9c31fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 22117, "upload_time": "2019-06-19T17:40:45", "url": "https://files.pythonhosted.org/packages/7f/dd/d5c9977d8afe727e34e5d4fec9fbda264c711ef22c3edcd956ea9d84aba3/mongogrant-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0f34e3ffa2b4ed173666712be1cbdf10", "sha256": "a91434dc9a04481065167190b5ffba6c896c1d20e35413b2d6c66219213dfb95" }, "downloads": -1, "filename": "mongogrant-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0f34e3ffa2b4ed173666712be1cbdf10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 24840, "upload_time": "2019-06-19T17:40:42", "url": "https://files.pythonhosted.org/packages/bc/cf/e6d2af418ee7b0ebb251721fe26a6f0678d67e5e055013a97f7bc19b579a/mongogrant-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e65e3943a057507908317d3bab9c31fc", "sha256": "d43f59f444ef91fb0ac2be3f72fc4e8a2e28ab26165eb577e2cc2bc098c8210f" }, "downloads": -1, "filename": "mongogrant-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e65e3943a057507908317d3bab9c31fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 22117, "upload_time": "2019-06-19T17:40:45", "url": "https://files.pythonhosted.org/packages/7f/dd/d5c9977d8afe727e34e5d4fec9fbda264c711ef22c3edcd956ea9d84aba3/mongogrant-0.3.0.tar.gz" } ] }