{ "info": { "author": "davidlatwe", "author_email": "davidlatwe@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Database" ], "description": "\n\"drawing\"\n\n#### Monty, Mongo tinified. MongoDB implemented in Python !\n\n[![Build Status](https://travis-ci.org/davidlatwe/MontyDB.svg?branch=master)](https://travis-ci.org/davidlatwe/MontyDB)\nCoverage Status\n[![Version](http://img.shields.io/pypi/v/MontyDB.svg?style=flat)](https://pypi.python.org/pypi/MontyDB)\n[![Maintainability](https://api.codeclimate.com/v1/badges/1adb14266d05ef3c9b17/maintainability)](https://codeclimate.com/github/davidlatwe/MontyDB/maintainability)\n\n###### Inspired by [TinyDB](https://github.com/msiemens/tinydb) and it's extension [TinyMongo](https://github.com/schapman1974/tinymongo).\n\n---\n\n### MontyDB is:\n* A tiny version of MongoDB, against to **MongoDB 3.6.4** *(4.0 soon)*\n* Written in pure Python, testing on **Python 2.7, 3.6, 3.7, PyPy, PyPy3.5**\n* Literally serverless.\n* Similar to [mongomock](https://github.com/mongomock/mongomock), but a bit more than that.\n\n> All those implemented functions and operators, should behaved just like you were working with MongoDB. Even raising error for same cause.\n\n### Install\n`pip install montydb`\n\n ##### Requirements\n - *`pymongo` (for `bson`)*\n\n### Example Code\n```python\n>>> from montydb import MontyClient\n>>> col = MontyClient(\":memory:\").db.test\n>>> col.insert_many([{\"stock\": \"A\", \"qty\": 6}, {\"stock\": \"A\", \"qty\": 2}])\n\n>>> cur = col.find({\"stock\": \"A\", \"qty\": {\"$gt\": 4}})\n>>> next(cur)\n{'_id': ObjectId('5ad34e537e8dd45d9c61a456'), 'stock': 'A', 'qty': 6}\n```\n\n### Development\n* Adopting [Gitflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) branching model.\n* Adopting Test-driven development.\n* You may visit [Projects' TODO](https://github.com/davidlatwe/montydb/projects/1) to see what's going on.\n* You may visit [This Issue](https://github.com/davidlatwe/montydb/issues/14) to see what's been implemented and what's not.\n\n\n### Storage Engine Configurations\n\nThe configuration process only required on repository creation or modification.\n\n**Currently, one repository can only assign one storage engine.**\n\n - **Memory**\n\n Memory storage does not need nor have any configuration, nothing saved to disk.\n\n ```python\n >>> from montydb import MontyClient\n >>> client = MontyClient(\":memory:\")\n ```\n\n - **FlatFile**\n\n FlatFile is the default on-disk storage engine.\n\n ```python\n >>> from montydb import MontyClient\n >>> client = MontyClient(\"/db/repo\")\n ```\n\n FlatFile config:\n\n ```yaml\n [flatfile]\n cache_modified: 0 # how many document CRUD cached before flush to disk.\n ```\n\n - **SQLite**\n\n SQLite is NOT the default on-disk storage, need configuration first before get client.\n\n ```python\n >>> from montydb import set_storage, MontyClient\n >>> set_storage(\"/db/repo\", storage=\"sqlite\")\n >>> client = MontyClient(\"/db/repo\")\n ```\n\n SQLite config:\n\n ```yaml\n [sqlite]\n journal_mode: WAL\n ```\n\n SQLite write concern:\n\n ```python\n >>> client = MontyClient(\"/db/repo\",\n >>> synchronous=1,\n >>> automatic_index=False,\n >>> busy_timeout=5000)\n ```\n\n### MontyDB URI\n\nYou could prefix the repository path with montydb URI scheme.\n\n```python\n >>> client = MontyClient(\"montydb:///db/repo\")\n```\n\n### Utilities\n\n* #### `montyimport`\n\n Imports content from an Extended JSON file into a MontyCollection instance.\n The JSON file could be generated from `montyexport` or `mongoexport`.\n\n ```python\n >>> from montydb import open_repo, utils\n >>> with open_repo(\"foo/bar\"):\n >>> utils.montyimport(\"db\", \"col\", \"/path/dump.json\")\n >>>\n ```\n\n* #### `montyexport`\n\n Produces a JSON export of data stored in a MontyCollection instance.\n The JSON file could be loaded by `montyimport` or `mongoimport`.\n\n ```python\n >>> from montydb import open_repo, utils\n >>> with open_repo(\"foo/bar\"):\n >>> utils.montyexport(\"db\", \"col\", \"/data/dump.json\")\n >>>\n ```\n\n* #### `montyrestore`\n\n Loads a binary database dump into a MontyCollection instance.\n The BSON file could be generated from `montydump` or `mongodump`.\n\n ```python\n >>> from montydb import open_repo, utils\n >>> with open_repo(\"foo/bar\"):\n >>> utils.montyrestore(\"db\", \"col\", \"/path/dump.bson\")\n >>>\n ```\n\n* #### `montydump`\n\n Creates a binary export from a MontyCollection instance.\n The BSON file could be loaded by `montyrestore` or `mongorestore`.\n\n ```python\n >>> from montydb import open_repo, utils\n >>> with open_repo(\"foo/bar\"):\n >>> utils.montydump(\"db\", \"col\", \"/data/dump.bson\")\n >>>\n ```\n\n* #### `MongoQueryRecorder`\n\n Record MongoDB query results in a period of time.\n *Requires to access databse profiler.*\n\n This works via filtering the database profile data and reproduce the queries of `find` and `distinct` commands.\n\n ```python\n >>> from pymongo import MongoClient\n >>> from montydb.utils import MongoQueryRecorder\n >>> client = MongoClient()\n >>> recorder = MongoQueryRecorder(client[\"mydb\"])\n >>> recorder.start()\n >>> # Make some queries or run the App...\n >>> recorder.stop()\n >>> recorder.extract()\n {: [, , ...], ...}\n ```\n\n* #### `MontyList`\n\n Experimental, a subclass of `list`, combined the common CRUD methods from Mongo's Collection and Cursor.\n\n ```python\n >>> from montydb.utils import MontyList\n >>> mtl = MontyList([1, 2, {\"a\": 1}, {\"a\": 5}, {\"a\": 8}])\n >>> mtl.find({\"a\": {\"$gt\": 3}})\n MontyList([{'a': 5}, {'a': 8}])\n ```\n\n### Why I did this ?\n\nMainly for personal skill practicing and fun.\nI work in VFX industry, some of my production needs (mostly edge-case) requires to run in a limited environment (e.g. outsourced render farms), which may have problem to run or connect a MongoDB instance. And I found this project really helps.\n\n\n---\n\n

\n \"drawing\"\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/davidlatwe/montydb", "keywords": "monty,montydb,mongo,mongodb,pymongo", "license": "BSD-3-Clause", "maintainer": "", "maintainer_email": "", "name": "montydb", "package_url": "https://pypi.org/project/montydb/", "platform": "", "project_url": "https://pypi.org/project/montydb/", "project_urls": { "Homepage": "https://github.com/davidlatwe/montydb" }, "release_url": "https://pypi.org/project/montydb/1.2.1/", "requires_dist": [ "pymongo" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "MongoDB's unofficial Python implementation.", "version": "1.2.1" }, "last_serial": 5659430, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "b7902999d8ccf0db3c6ac8cb125c6c13", "sha256": "d87c2be3b818ea836ae94be611ce38757792b9259c788b997ac7bb7e6cbffc72" }, "downloads": -1, "filename": "montydb-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b7902999d8ccf0db3c6ac8cb125c6c13", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42328, "upload_time": "2018-05-25T12:23:52", "url": "https://files.pythonhosted.org/packages/aa/27/4d363531c73c9c104e8afce730c874806100b07726f274fb2d56afa42287/montydb-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b77efdc66ce2331f6e6bf14aef36563c", "sha256": "635236b8bfc9efb1e4bc73235e595e30e38d799aac3229dfd316143fcd031082" }, "downloads": -1, "filename": "montydb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b77efdc66ce2331f6e6bf14aef36563c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34176, "upload_time": "2018-05-25T12:23:53", "url": "https://files.pythonhosted.org/packages/a2/1d/961076de947c92ee49be8b754aebe342833314f36da4adaff8f307990e5a/montydb-0.0.1.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "c49d161fb76464195d7b12fd89138f4d", "sha256": "2c184a5d5fda4d174b6baaedf410a3784e0b7b29b6f144bf666f9407d017587d" }, "downloads": -1, "filename": "montydb-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c49d161fb76464195d7b12fd89138f4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43739, "upload_time": "2018-05-30T22:00:09", "url": "https://files.pythonhosted.org/packages/b8/4d/eaea2cc10a079d9be938b87e15ae6ffe01c0d589e1b2160dfc8ddf085d63/montydb-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a4d39c67f630f81f4c9598d1d1a1f6b", "sha256": "5e01375d8ce2fc9b3cf751091e6487453f4294dd991f220b8020d63420d5e1fd" }, "downloads": -1, "filename": "montydb-0.0.3.tar.gz", "has_sig": false, "md5_digest": "1a4d39c67f630f81f4c9598d1d1a1f6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34241, "upload_time": "2018-05-30T22:00:11", "url": "https://files.pythonhosted.org/packages/c3/32/4cfa7550c180e76c27bd036add514acbf58d5600b5d88fcbba290d616491/montydb-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5d80038f23a1dcc12742c669d2bfbb59", "sha256": "02a22e9769d3ea859f2b5705bac0157df2f3c5acf505716908d66e0b645f92a7" }, "downloads": -1, "filename": "montydb-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5d80038f23a1dcc12742c669d2bfbb59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43730, "upload_time": "2018-05-31T11:44:33", "url": "https://files.pythonhosted.org/packages/57/43/b3809ed222aa8bdd2e2244ed2d108ec334743bd1d3caa5fccdbf75c13582/montydb-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "413cec566edf7b1fe3958b6c58dc76c2", "sha256": "57c5ff305ece596bfac608a1f1197be4b3c41b4a94028aaa48637a8e8d26a8fd" }, "downloads": -1, "filename": "montydb-0.0.4.tar.gz", "has_sig": false, "md5_digest": "413cec566edf7b1fe3958b6c58dc76c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34760, "upload_time": "2018-05-31T11:44:35", "url": "https://files.pythonhosted.org/packages/b6/83/2d1edbcf26a011c6782181c4eadd5fd0207ec2e4c69ce5a3209c737b62a5/montydb-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "d931399ebda77663550f9fe4857468b5", "sha256": "2a9540efd6c211572e0fea92abd6c58c13bb91f4f296fcf247410a59c7fb24d0" }, "downloads": -1, "filename": "montydb-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d931399ebda77663550f9fe4857468b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45852, "upload_time": "2018-06-03T20:49:31", "url": "https://files.pythonhosted.org/packages/74/b8/d2940cf31f42702695f613c2c6e7c8733ea5a49b2ada57873d00dee1b8d7/montydb-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b35db726bd14b82280fde50e3ab562c", "sha256": "680dd2d2bb413022692c11bf42ab88d73614aa51ec0ad6810c0f729ade567782" }, "downloads": -1, "filename": "montydb-0.0.5.tar.gz", "has_sig": false, "md5_digest": "9b35db726bd14b82280fde50e3ab562c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35962, "upload_time": "2018-06-03T20:49:33", "url": "https://files.pythonhosted.org/packages/0e/fc/65cc83896616508ad806a383901b43b5297b23f9edd35ec724d874cb77d7/montydb-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "f626e86da3b0fab5f86c8c00ebf7439b", "sha256": "3f3e73f4aa3a9363ca109cc067b1633819b7a74ae96bb4648fcdd198c4590ed2" }, "downloads": -1, "filename": "montydb-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f626e86da3b0fab5f86c8c00ebf7439b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45853, "upload_time": "2018-06-03T21:03:11", "url": "https://files.pythonhosted.org/packages/1f/d6/026f99f4031085a627ffa57d19b21865468f9bbd04253ce3108d507bc0b0/montydb-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "683a5e5a80d2a96f0719286197462ec2", "sha256": "2cca87f1aea96ba7cfa41c68d68789aa9b8ac54dd1c84494ebc9c594068eb62f" }, "downloads": -1, "filename": "montydb-0.0.6.tar.gz", "has_sig": false, "md5_digest": "683a5e5a80d2a96f0719286197462ec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36456, "upload_time": "2018-06-03T21:03:16", "url": "https://files.pythonhosted.org/packages/6b/e8/0bc7241cdbb523a015b320825a087ae7b0934b0c3384d7b6ab4475629db9/montydb-0.0.6.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "793847fc99daeaa3712f8f719a04b653", "sha256": "2f050a59c5c075cca4754b389773b99f6317e241d6507c358d53566934ea0ca7" }, "downloads": -1, "filename": "montydb-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "793847fc99daeaa3712f8f719a04b653", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 53414, "upload_time": "2019-07-28T15:04:22", "url": "https://files.pythonhosted.org/packages/14/3a/53d97a5b6c93dd5dba7318cc55e58789bcd1ec73f8765c31bdd600b2a7bc/montydb-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d61b805fc95de3227a2901c9ba1c9e5", "sha256": "96a924e1e573fddb8b1990c6cb5f001940466bcca44313cb4324e57897273dde" }, "downloads": -1, "filename": "montydb-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3d61b805fc95de3227a2901c9ba1c9e5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 42504, "upload_time": "2019-07-28T15:04:24", "url": "https://files.pythonhosted.org/packages/72/ed/d6f50cb84fee677725931584e5fc3501363c586ba4609b4f61e89747e9f1/montydb-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "585c40440805de6f5a56d430e7dd3ea0", "sha256": "f041f062d235c2b7d24704ea4624c8fe8234468db904d88312fb63f77fe85e42" }, "downloads": -1, "filename": "montydb-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "585c40440805de6f5a56d430e7dd3ea0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 53426, "upload_time": "2019-07-28T15:44:54", "url": "https://files.pythonhosted.org/packages/5d/0e/c05abf42dcbeee593f7e513c56b150200f5af74fbf3873b8acf865763707/montydb-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dd4370979f237da8f6376be54d0adb7", "sha256": "531b9b39977959d27579b09c9f5a835322c282f918dd5f2581b76aa05ec5f5d1" }, "downloads": -1, "filename": "montydb-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3dd4370979f237da8f6376be54d0adb7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 42526, "upload_time": "2019-07-28T15:44:56", "url": "https://files.pythonhosted.org/packages/32/22/82a5079f7bbb1b8890a370e4d70282c0b7ff669218cce81dcef3cdbdbc07/montydb-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "31e44bb1a14ebb28f2068fee0891ffc9", "sha256": "f26cd39e916b75193b130369cf2d857c239e564d6e08aa348507808b683acb2f" }, "downloads": -1, "filename": "montydb-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "31e44bb1a14ebb28f2068fee0891ffc9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 57485, "upload_time": "2019-08-03T21:31:17", "url": "https://files.pythonhosted.org/packages/61/e4/acfa3819b231a09e3e851c5bc56dfc8bab49cf023fedd3564fd46e1ea589/montydb-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9ef89a238bbefb6183d228dd28b1698", "sha256": "03ad561fcaa758f3878b2139809bc5c492a1512979b8a3132d486c9f64bc63a4" }, "downloads": -1, "filename": "montydb-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a9ef89a238bbefb6183d228dd28b1698", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 57487, "upload_time": "2019-08-03T21:30:57", "url": "https://files.pythonhosted.org/packages/2b/0c/77de33df775e5ec4fec23e3e5cf4b2849f3370882f0310c309e93b2aa1bd/montydb-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73653a2d8975061b3442ec45398611dc", "sha256": "94594ba681abb6d699dd3b208e9718cf805f4545dc1b96b828710d52ea1e23c4" }, "downloads": -1, "filename": "montydb-1.1.0.tar.gz", "has_sig": false, "md5_digest": "73653a2d8975061b3442ec45398611dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 47949, "upload_time": "2019-08-03T21:30:59", "url": "https://files.pythonhosted.org/packages/b9/50/94d38e00c8652932e6b9feb7fe9b0b7d723656996af684714fa063b1c978/montydb-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "3ef4ed5c22b2658eee40c410533aac0c", "sha256": "62ac06d349ff1131fdaf4ba0bc7a992b8fe9467c9a9ba7b2b340559bcc8173cd" }, "downloads": -1, "filename": "montydb-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3ef4ed5c22b2658eee40c410533aac0c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 59505, "upload_time": "2019-08-07T19:52:03", "url": "https://files.pythonhosted.org/packages/4b/73/51468170ffd0fbd20e3bff57e2d2cd2b3ad769dad71830b99c8c924f3b03/montydb-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72cebd98be3e64bad78a07f08162e0da", "sha256": "7db86119a9b68a69628d61f7a325737f37b6b999f700490d196a1c8989f83059" }, "downloads": -1, "filename": "montydb-1.2.0.tar.gz", "has_sig": false, "md5_digest": "72cebd98be3e64bad78a07f08162e0da", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 47872, "upload_time": "2019-08-07T19:52:05", "url": "https://files.pythonhosted.org/packages/5e/14/72cf364c107f4091f62424432e12c925d4551d14e19d53a89cd73e5fb38b/montydb-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "bc2ca933c2e4d42c7ebce355d687c240", "sha256": "bbe8deaa2344693f12674c875d102d6fb300fafd8e682cf7a94799b339d1e74a" }, "downloads": -1, "filename": "montydb-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bc2ca933c2e4d42c7ebce355d687c240", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 61009, "upload_time": "2019-08-10T13:09:19", "url": "https://files.pythonhosted.org/packages/30/a6/afa337195d7972c8316341c2ccb849d32ceca150cf66d776b9f6ee03fdbe/montydb-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28caa848b3e90920a1a0933b3c8ff6f5", "sha256": "ddc6d7894986a77ee57264ee788910d1310abcfc188ab44973e5d19ec0f9850f" }, "downloads": -1, "filename": "montydb-1.2.1.tar.gz", "has_sig": false, "md5_digest": "28caa848b3e90920a1a0933b3c8ff6f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 49245, "upload_time": "2019-08-10T13:09:22", "url": "https://files.pythonhosted.org/packages/12/9f/cff6c77fea76ac7bf6125ba5d35234576741aa4a2e244c36a91eeef5fd04/montydb-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc2ca933c2e4d42c7ebce355d687c240", "sha256": "bbe8deaa2344693f12674c875d102d6fb300fafd8e682cf7a94799b339d1e74a" }, "downloads": -1, "filename": "montydb-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bc2ca933c2e4d42c7ebce355d687c240", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 61009, "upload_time": "2019-08-10T13:09:19", "url": "https://files.pythonhosted.org/packages/30/a6/afa337195d7972c8316341c2ccb849d32ceca150cf66d776b9f6ee03fdbe/montydb-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28caa848b3e90920a1a0933b3c8ff6f5", "sha256": "ddc6d7894986a77ee57264ee788910d1310abcfc188ab44973e5d19ec0f9850f" }, "downloads": -1, "filename": "montydb-1.2.1.tar.gz", "has_sig": false, "md5_digest": "28caa848b3e90920a1a0933b3c8ff6f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 49245, "upload_time": "2019-08-10T13:09:22", "url": "https://files.pythonhosted.org/packages/12/9f/cff6c77fea76ac7bf6125ba5d35234576741aa4a2e244c36a91eeef5fd04/montydb-1.2.1.tar.gz" } ] }