{ "info": { "author": "mdmpy Authors", "author_email": "mdmpyatgithub@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# MDM Py\n\n[![Documentation Status](https://readthedocs.org/projects/mdmpy/badge/?version=latest)](https://mdmpy.readthedocs.io/en/latest/?badge=latest)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/c13f603535364a7ba5a6a18ea6756a64)](https://app.codacy.com/app/justanothergithubber/mdmpy?utm_source=github.com&utm_medium=referral&utm_content=justanothergithubber/mdmpy&utm_campaign=Badge_Grade_Dashboard)\n[![PyPI version](https://badge.fury.io/py/mdmpy.svg)](https://badge.fury.io/py/mdmpy)\n[![Project Status: WIP \u00e2\u20ac\u201c Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)\n\nThis package is a `Python` implementation of [Marginal Distribution Models](https://pubsonline.informs.org/doi/10.1287/mnsc.2014.1906) (MDMs), which can be used in Discrete Choice Modelling.\n\n## Documentation\nDocumentation is kindly hosted by [Read The Docs](https://mdmpy.readthedocs.io/ \"mdmpy Documentation\").\n\n## Install\nThis package is uploaded to [PyPI](https://pypi.org/ \"Python Package Index\"). Hence, \n\n```bat\npip install mdmpy\n```\n\nshould work.\n\n## How to use\n### Simplest Case\n#### Gradient Descent\nIn the simplest case, we will use the Multinomial Logit (MNL) model, which is used as a default. Assuming `numpy`, `scipy` and `pandas` are installed, we generate choice data assuming a random utility model:\n\n```python\nfrom string import ascii_uppercase as letters\nimport pandas as pd\nimport scipy.stats as stats\nimport numpy as np\n\nNUM_INDIV = 57\nNUM_CHOICES = 3\nNUM_ATTR = 4\n\nnp.random.seed(2019)\nX = np.random.random((NUM_ATTR, NUM_INDIV * NUM_CHOICES))\ntrue_beta = np.random.random(NUM_ATTR)\nV = np.dot(true_beta.T, X)\nV = np.reshape(V, (NUM_INDIV,NUM_CHOICES))\neps = stats.gumbel_r.rvs(size=NUM_INDIV * NUM_CHOICES)\neps = np.reshape(eps, (NUM_INDIV, NUM_CHOICES))\nU = V + eps\nhighest_util = np.argmax(U, 1)\n\ndf = pd.DataFrame(X.T)\ndf['choice'] = [1 if idx == x else 0 for idx in highest_util for x in range(NUM_CHOICES)]\ndf['individual'] = [indiv for indiv in range(NUM_INDIV) for _ in range(NUM_CHOICES)]\ndf['altvar'] = [altlvl for _ in range(NUM_INDIV) for altlvl in letters[:NUM_CHOICES]]\n```\n\nWith this package, we will assume that `df` is the dataframe which is simply given to us. Instead of having the code itself find out how many individuals, choices and coefficients or attributes there are, we will simply feed them into the class. To perform a gradient descent with this class, we will use the `grad_desc` method, using the `df` from above as input,\n\n```python\nimport mdmpy\n\n# In a typical case one would load df before this line\nmdm = mdmpy.MDM(df, 4, 3, [0, 1, 2, 3])\nnp.random.seed(4)\ninit_beta = np.random.random(4)\ngrad_beta = mdm.grad_desc(init_beta)\nprint(grad_beta)\n# expected output [0.30238122 0.07955214 0.86779824 0.50951981]\n```\n\n#### Solver\nThe `MDM` class acts as a wrapper and adds the necessary `pyomo` variables and sets to model the problem, but requires a solver. [IPOPT](https://projects.coin-or.org/Ipopt \"Ipopt home page\"), an interior point solver, is recommended. If you have such a solver, it can be called. Assuming IPOPT is being used:\n\n```python\nimport mdmpy\n\nipopt_exec_path = /path/to/ipopt # Replace with proper path\nmdm = mdmpy.MDM(df, 4, 3, [0, 1, 2, 3])\nmdm.model_init()\nmdm.model_solve(\"ipopt\",ipopt_exec_path)\nprint([mdm.m.beta[idx].value for idx in mdm.m.beta])\n# expected output [0.30238834989235025, 0.07953888508425154, 0.8678050334295714, 0.5095096796373667]\n```\n\n## Todo\n\n1. Add documentation and more meaningful comments\n * Add more type hints, especially those involving Python builtins\n\n2. Add tests.\n\n3. Put `pandas` into `extras_require` of `setup.py`, and remove the dependency. \n * Input of `MDM` class will become a `NumPy` array rather than a dataframe.\n\n * Dataframe conversion will be turned into a utility function,\n likely using try-except block for imports\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/justanothergithubber/mdmpy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "mdmpy", "package_url": "https://pypi.org/project/mdmpy/", "platform": "", "project_url": "https://pypi.org/project/mdmpy/", "project_urls": { "Homepage": "https://github.com/justanothergithubber/mdmpy" }, "release_url": "https://pypi.org/project/mdmpy/0.0.15.17/", "requires_dist": [ "pandas", "numpy", "scipy", "pyomo" ], "requires_python": "", "summary": "A package that implements Marginal Distribution Models (MDMs)", "version": "0.0.15.17" }, "last_serial": 4848881, "releases": { "0.0.13": [ { "comment_text": "", "digests": { "md5": "cde0d752ccbd689ccdeb0f0cf4c94388", "sha256": "42633b67464173ddd76d48dfc644c7af58f031b972d19cc280c04b6a17f4812e" }, "downloads": -1, "filename": "mdmpy-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "cde0d752ccbd689ccdeb0f0cf4c94388", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7477, "upload_time": "2019-01-22T05:53:26", "url": "https://files.pythonhosted.org/packages/9d/a5/ae21a5ec860f1b3add930b8ea67574282d51a125c7383bf42e01ed2a7751/mdmpy-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8ecf568cb1179dfa8374dfc311d8f13", "sha256": "8118366abbd78a0858b853e2b2a16ce0b61ad344b1b7e80ae22732887d1e2bf0" }, "downloads": -1, "filename": "mdmpy-0.0.13.tar.gz", "has_sig": false, "md5_digest": "f8ecf568cb1179dfa8374dfc311d8f13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6086, "upload_time": "2019-01-22T05:53:28", "url": "https://files.pythonhosted.org/packages/44/9f/b75fcec75e364b62d1d64662c724cc7d84133a850a96dfd7b2f5d15c0cd6/mdmpy-0.0.13.tar.gz" } ], "0.0.15.1": [ { "comment_text": "", "digests": { "md5": "77868310d4d22475f045be7e0be90c4d", "sha256": "ec30eb350100c3648939a735837dfd7e149a7a24d506a3fc96d7257d08aa37d1" }, "downloads": -1, "filename": "mdmpy-0.0.15.1-py3-none-any.whl", "has_sig": false, "md5_digest": "77868310d4d22475f045be7e0be90c4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12495, "upload_time": "2019-01-24T05:10:41", "url": "https://files.pythonhosted.org/packages/4b/c8/2096fa98a238efd02cbe0bba721b89680aca82b6fa948ef4bed3722cb75e/mdmpy-0.0.15.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3eaaf3853d012265d396ed9b3a19c11", "sha256": "7dd0a681683c4c660412adf0d1526d69ba4ec1c0cbd53f73169d7a13c32a4a5b" }, "downloads": -1, "filename": "mdmpy-0.0.15.1.tar.gz", "has_sig": false, "md5_digest": "a3eaaf3853d012265d396ed9b3a19c11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7154, "upload_time": "2019-01-24T05:10:43", "url": "https://files.pythonhosted.org/packages/dc/1a/46ae4c7eaf7589e138c2302affcfc5f67ff9831f2610d56258efcfa8f461/mdmpy-0.0.15.1.tar.gz" } ], "0.0.15.10": [ { "comment_text": "", "digests": { "md5": "bd39b062f67fc5369da4d605f0545dad", "sha256": "e9dd4d70a337dd417777641526862cd28634d98d3350ffecf43011aab6e53651" }, "downloads": -1, "filename": "mdmpy-0.0.15.10-py3-none-any.whl", "has_sig": false, "md5_digest": "bd39b062f67fc5369da4d605f0545dad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14450, "upload_time": "2019-02-14T06:21:38", "url": "https://files.pythonhosted.org/packages/12/7a/24340f6f7d75acf2d76b4af8a0ffcc026f9bfe1e1898d9d445c2b953dae8/mdmpy-0.0.15.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54d19794944f84dae9f47b27363709b8", "sha256": "394ee55d5c065b505b091895fa8f932126a1a604d2bdf0cc458357067bff73af" }, "downloads": -1, "filename": "mdmpy-0.0.15.10.tar.gz", "has_sig": false, "md5_digest": "54d19794944f84dae9f47b27363709b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9232, "upload_time": "2019-02-14T06:21:40", "url": "https://files.pythonhosted.org/packages/f2/84/9b0bd64e2ecffc4fd128eea5683e871d41b2ac43213aacda20058be141f2/mdmpy-0.0.15.10.tar.gz" } ], "0.0.15.11": [ { "comment_text": "", "digests": { "md5": "faf64d57e9321cbf8e653d88be4670e3", "sha256": "0a68573242ac235a3aa7fbe5ea835c50c67963cc205ca0b52f3e155c1a769a57" }, "downloads": -1, "filename": "mdmpy-0.0.15.11-py3-none-any.whl", "has_sig": false, "md5_digest": "faf64d57e9321cbf8e653d88be4670e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14450, "upload_time": "2019-02-14T06:23:50", "url": "https://files.pythonhosted.org/packages/cf/05/0944803c5613c3de876c0f817eec230c5aa82f47cea16cbe0c5db8609876/mdmpy-0.0.15.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cd2732f122aa30a05b57aa6fa1a5d34", "sha256": "9296425a55bdd88624b68a6d71d0a4499281c3b1897b01a45c0a8ebbd397fb44" }, "downloads": -1, "filename": "mdmpy-0.0.15.11.tar.gz", "has_sig": false, "md5_digest": "3cd2732f122aa30a05b57aa6fa1a5d34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9231, "upload_time": "2019-02-14T06:23:52", "url": "https://files.pythonhosted.org/packages/bf/0f/4259d15ed8c66b6118e9ea2df13ffd4f9a07c33d3fa82cd23c0169bbf6ef/mdmpy-0.0.15.11.tar.gz" } ], "0.0.15.12": [ { "comment_text": "", "digests": { "md5": "ed75688982f3949a7af8faa4592cef18", "sha256": "0cba222b179da65757a40b6641e470f7cd51eabf55af9b42eab94bd6a76c402e" }, "downloads": -1, "filename": "mdmpy-0.0.15.12-py3-none-any.whl", "has_sig": false, "md5_digest": "ed75688982f3949a7af8faa4592cef18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14471, "upload_time": "2019-02-14T06:28:01", "url": "https://files.pythonhosted.org/packages/23/cb/6fd7d31f91a9e574be62473b68b4492898eb7a29071448f4e935fe35b32e/mdmpy-0.0.15.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e98f8298c35943a0137f582c8d87789d", "sha256": "0ae947ee151024d31d944f35f120b8a5edb744209fe97cb37cb0c04ca4617eca" }, "downloads": -1, "filename": "mdmpy-0.0.15.12.tar.gz", "has_sig": false, "md5_digest": "e98f8298c35943a0137f582c8d87789d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9248, "upload_time": "2019-02-14T06:28:03", "url": "https://files.pythonhosted.org/packages/70/89/9ebdf3f872d4380041743e4d8e67e2808c6a3e5186413974a7432fa5499f/mdmpy-0.0.15.12.tar.gz" } ], "0.0.15.13": [ { "comment_text": "", "digests": { "md5": "892e906e9caba68154a217b60f56337b", "sha256": "4fcddbe99f847ccc8241d9e0ed59151c17bc8b6f1f65894665e919c6c0863fec" }, "downloads": -1, "filename": "mdmpy-0.0.15.13-py3-none-any.whl", "has_sig": false, "md5_digest": "892e906e9caba68154a217b60f56337b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14471, "upload_time": "2019-02-15T12:38:05", "url": "https://files.pythonhosted.org/packages/f8/c9/56c4687a0820d62c10451a5753c38e191cc99719d9446c5eaf7d5925e7e3/mdmpy-0.0.15.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdd98b1da64abee6aa9138b8156f7e12", "sha256": "ee1e918989802dd46ec08d8df552ea28d57a99b2ba90ddfc3118715ebf3f7985" }, "downloads": -1, "filename": "mdmpy-0.0.15.13.tar.gz", "has_sig": false, "md5_digest": "cdd98b1da64abee6aa9138b8156f7e12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9249, "upload_time": "2019-02-15T12:38:07", "url": "https://files.pythonhosted.org/packages/85/84/01b91ced8f983c61bcc9d753f25245b766216fae8668c73e5afda92efdc0/mdmpy-0.0.15.13.tar.gz" } ], "0.0.15.14": [ { "comment_text": "", "digests": { "md5": "ab285c91d553d4386c64c7b7831eae22", "sha256": "92fe7eaa70491a644a6a160caddb7fcf7fa92b25051fc7aa9ac05826972cb18b" }, "downloads": -1, "filename": "mdmpy-0.0.15.14-py3-none-any.whl", "has_sig": false, "md5_digest": "ab285c91d553d4386c64c7b7831eae22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14474, "upload_time": "2019-02-15T13:22:39", "url": "https://files.pythonhosted.org/packages/10/ea/7a7717e92deb9c341b61114cc40e7ff2c6b20acb3232dc6d71de5f8c30a7/mdmpy-0.0.15.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82300feb4de92b982b87197f9afec0f3", "sha256": "ad5aba8022899a3d3579df5aace0198e2594cb4389b157f6755d5da99225fbf2" }, "downloads": -1, "filename": "mdmpy-0.0.15.14.tar.gz", "has_sig": false, "md5_digest": "82300feb4de92b982b87197f9afec0f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9248, "upload_time": "2019-02-15T13:22:40", "url": "https://files.pythonhosted.org/packages/6f/eb/d08393329f0add1d8ad00be616d4f66b277da8367fc63148b2bfeea60315/mdmpy-0.0.15.14.tar.gz" } ], "0.0.15.15": [ { "comment_text": "", "digests": { "md5": "39b136002cb37376a7c67a51a1d1c45e", "sha256": "99265d200de5f291412ec53543b6c5f92e6ba86a62ee4d9ead6d6d3aae372d5f" }, "downloads": -1, "filename": "mdmpy-0.0.15.15-py3-none-any.whl", "has_sig": false, "md5_digest": "39b136002cb37376a7c67a51a1d1c45e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14485, "upload_time": "2019-02-15T13:29:39", "url": "https://files.pythonhosted.org/packages/e5/92/b0b85c20306af79fe2f08d1a2e06fcf2ab6331893f870316e9cb19dc960d/mdmpy-0.0.15.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba56bef27aef14826c440d3a7b9bd00e", "sha256": "2e820ae04b898a515553b70e0a22c3ef283130a6b2a01d91b5a4d8f2df7bb6f2" }, "downloads": -1, "filename": "mdmpy-0.0.15.15.tar.gz", "has_sig": false, "md5_digest": "ba56bef27aef14826c440d3a7b9bd00e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9259, "upload_time": "2019-02-15T13:29:41", "url": "https://files.pythonhosted.org/packages/97/2b/85a33a50421451182b77673145c5bdbb8ab6ba84d2c9869661a5f6049c09/mdmpy-0.0.15.15.tar.gz" } ], "0.0.15.16": [ { "comment_text": "", "digests": { "md5": "b95c9280a0f2f1fb382ff3edf5ecf5c2", "sha256": "b51a78d2c4474adbfaaa223759cc05427f1d6cc02c578cc3a1b7b940e13b881c" }, "downloads": -1, "filename": "mdmpy-0.0.15.16-py3-none-any.whl", "has_sig": false, "md5_digest": "b95c9280a0f2f1fb382ff3edf5ecf5c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14486, "upload_time": "2019-02-15T13:54:31", "url": "https://files.pythonhosted.org/packages/db/e3/78336b4d09a2984f96015818b071f38931befe77e851f95e9879c429a172/mdmpy-0.0.15.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c93f1830f39968bc61b79fa92023c593", "sha256": "f94d46dae3fdfef35693c16e2ec9e2a4e0e2b6452aafb1bee40419bcb766f936" }, "downloads": -1, "filename": "mdmpy-0.0.15.16.tar.gz", "has_sig": false, "md5_digest": "c93f1830f39968bc61b79fa92023c593", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9262, "upload_time": "2019-02-15T13:54:33", "url": "https://files.pythonhosted.org/packages/18/6a/697668561555b7676adfabba03210d0157b57fc1e64989f0873eb55e2f13/mdmpy-0.0.15.16.tar.gz" } ], "0.0.15.17": [ { "comment_text": "", "digests": { "md5": "02352be99295998046fb276114bf7482", "sha256": "5c3f231ce159281fafd76df41a9adefc5861d6f45aeb9295b0a5da918b2e80d9" }, "downloads": -1, "filename": "mdmpy-0.0.15.17-py3-none-any.whl", "has_sig": false, "md5_digest": "02352be99295998046fb276114bf7482", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14498, "upload_time": "2019-02-21T06:56:29", "url": "https://files.pythonhosted.org/packages/90/3f/94c5b78e0b601c4ac198ea328b0a6cfa5c322b7b7f30d1104bc909d25f7a/mdmpy-0.0.15.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3bfaf1fd5bfcc91b5081ecf31e6b14f8", "sha256": "59d8a658d69a995e96f898a9a2b7a7b11908efabaaa8c8683afd7accbc4552d7" }, "downloads": -1, "filename": "mdmpy-0.0.15.17.tar.gz", "has_sig": false, "md5_digest": "3bfaf1fd5bfcc91b5081ecf31e6b14f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9280, "upload_time": "2019-02-21T06:56:31", "url": "https://files.pythonhosted.org/packages/f3/1a/cfdb679333ffeb3b03114a45126d5e33260dd85ff279b8c2ed6bf9584ac7/mdmpy-0.0.15.17.tar.gz" } ], "0.0.15.2": [ { "comment_text": "", "digests": { "md5": "51a42dcf56452160b30e58d2bfbf37eb", "sha256": "a7073fc35e02d642d2a23b79f63989bf67160c117941f6b1d1898265d69bcd10" }, "downloads": -1, "filename": "mdmpy-0.0.15.2-py3-none-any.whl", "has_sig": false, "md5_digest": "51a42dcf56452160b30e58d2bfbf37eb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13157, "upload_time": "2019-02-01T09:56:43", "url": "https://files.pythonhosted.org/packages/4a/80/21cb05f337a3531235f44f40d9956055a6b3656db0bdcd4e2e54763decc4/mdmpy-0.0.15.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01fd84db982735952945d4b46dcd52ae", "sha256": "85e2b2bf2a33b1a0454308a3e0f518261238fbc58b9613533dde63d2f689155e" }, "downloads": -1, "filename": "mdmpy-0.0.15.2.tar.gz", "has_sig": false, "md5_digest": "01fd84db982735952945d4b46dcd52ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7795, "upload_time": "2019-02-01T09:56:44", "url": "https://files.pythonhosted.org/packages/ab/d2/d0e06261349240b6e065254ec515ef8496de4bff8a8537f6fd9b391c2cb5/mdmpy-0.0.15.2.tar.gz" } ], "0.0.15.3": [ { "comment_text": "", "digests": { "md5": "43522e0a2adafb17297dbba0806798a7", "sha256": "29dbf9296a53c3168da52996ca4006cecadf41c8bebfb153fdc1ee2d9d471a24" }, "downloads": -1, "filename": "mdmpy-0.0.15.3-py3-none-any.whl", "has_sig": false, "md5_digest": "43522e0a2adafb17297dbba0806798a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16945, "upload_time": "2019-02-04T02:39:46", "url": "https://files.pythonhosted.org/packages/06/6c/f8e1f01451e463c2731012160d691ab6bc33d5fed43549712a644bfd4975/mdmpy-0.0.15.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bdbb8206bd3e87a6fca58ce9f79f5e2", "sha256": "89c77874034a6f4777b6fa98bf6eac7361eb18f65e1c67c5ff2acd6ae16c98be" }, "downloads": -1, "filename": "mdmpy-0.0.15.3.tar.gz", "has_sig": false, "md5_digest": "2bdbb8206bd3e87a6fca58ce9f79f5e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7942, "upload_time": "2019-02-04T02:39:48", "url": "https://files.pythonhosted.org/packages/9d/fc/f0a7e17bc9e9d077777631640441df879e10127fcbbf83230892c007db7d/mdmpy-0.0.15.3.tar.gz" } ], "0.0.15.4": [ { "comment_text": "", "digests": { "md5": "16ec4e16a555793e78ef652feb91caf9", "sha256": "2647e5c8aee86dea8049ce8ce4086de6137a00e48297615ecad5868641258307" }, "downloads": -1, "filename": "mdmpy-0.0.15.4-py3-none-any.whl", "has_sig": false, "md5_digest": "16ec4e16a555793e78ef652feb91caf9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16936, "upload_time": "2019-02-04T03:10:22", "url": "https://files.pythonhosted.org/packages/f5/bd/fc237bb0b35d13a5c38e2aa96c2d8b7637f6757af7e096a965c9a6d57d31/mdmpy-0.0.15.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "589628e11ec67d540c3f1bb422825321", "sha256": "dc2e3e5986b9a1517c496efa7b42bd2553fa845b647c5729838928f1135abb39" }, "downloads": -1, "filename": "mdmpy-0.0.15.4.tar.gz", "has_sig": false, "md5_digest": "589628e11ec67d540c3f1bb422825321", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7766, "upload_time": "2019-02-04T03:10:23", "url": "https://files.pythonhosted.org/packages/9d/6c/ff48ff69e7a08c4fa4b87cbe984dc5f90c5c08c540db95caba5fdbb7e0c9/mdmpy-0.0.15.4.tar.gz" } ], "0.0.15.5": [ { "comment_text": "", "digests": { "md5": "85a094a5df8fa0305c322cff45ff233a", "sha256": "d54ee6ba8c1a82da8324a05b62198c71f652b2cbc49fe2e63391ca6f6285fd4a" }, "downloads": -1, "filename": "mdmpy-0.0.15.5-py3-none-any.whl", "has_sig": false, "md5_digest": "85a094a5df8fa0305c322cff45ff233a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3639, "upload_time": "2019-02-08T08:12:15", "url": "https://files.pythonhosted.org/packages/18/cc/c5cbf193459e3748aa935a188249f140cb46952e8be7be3a72fc9cef6179/mdmpy-0.0.15.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74c2896e6b982d1b01b58f6bff10a191", "sha256": "90a6ade68352cf2f8bbe2f72c1df67a81fe73e7d885bb0d1cf8e3618277d7e28" }, "downloads": -1, "filename": "mdmpy-0.0.15.5.tar.gz", "has_sig": false, "md5_digest": "74c2896e6b982d1b01b58f6bff10a191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3285, "upload_time": "2019-02-08T08:12:17", "url": "https://files.pythonhosted.org/packages/cd/0d/3e2c9326e5634bbda8f0dba10bc19c1d6946396479d73be2a43762046152/mdmpy-0.0.15.5.tar.gz" } ], "0.0.15.6": [ { "comment_text": "", "digests": { "md5": "24f71c2d99575c1b31b775314c58fd17", "sha256": "471de223b1431bb3b325b62164ea5acc60a12eef41625e8f183204e9b613cf84" }, "downloads": -1, "filename": "mdmpy-0.0.15.6-py3-none-any.whl", "has_sig": false, "md5_digest": "24f71c2d99575c1b31b775314c58fd17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9023, "upload_time": "2019-02-08T08:27:50", "url": "https://files.pythonhosted.org/packages/ad/10/f3ba8a9decc845ce71d734db1d4370d9de5253912dc21d770f7921bd1e2e/mdmpy-0.0.15.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54cf5fdd579542e6ea5523163c72cb17", "sha256": "755ef7de62d33f570db689269bc26634dc97ec9f43f62e93be412a59fedbb3b7" }, "downloads": -1, "filename": "mdmpy-0.0.15.6.tar.gz", "has_sig": false, "md5_digest": "54cf5fdd579542e6ea5523163c72cb17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7862, "upload_time": "2019-02-08T08:27:51", "url": "https://files.pythonhosted.org/packages/58/0d/1f7f38aef2103f6ba67855819f36e424513c3196bd9f3f82a9a3a72efe85/mdmpy-0.0.15.6.tar.gz" } ], "0.0.15.7": [ { "comment_text": "", "digests": { "md5": "8fb6855bd21738c89cad53653975ab91", "sha256": "4dfd1dbee48c4cb979a43d17288c71e24f58e37e7fc276d5497a087fda21c00a" }, "downloads": -1, "filename": "mdmpy-0.0.15.7-py3-none-any.whl", "has_sig": false, "md5_digest": "8fb6855bd21738c89cad53653975ab91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13655, "upload_time": "2019-02-11T07:08:32", "url": "https://files.pythonhosted.org/packages/d1/d8/bd51fdea77bc1ab1bca8c75d73e60ae958902e19bf3ac0d13542e40fa4e2/mdmpy-0.0.15.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7b7119e35fa89abefcf05ecd1a38492", "sha256": "1db54a041b295992c03270515ea8bf72ae0b19ace3922e4181a682610945009a" }, "downloads": -1, "filename": "mdmpy-0.0.15.7.tar.gz", "has_sig": false, "md5_digest": "c7b7119e35fa89abefcf05ecd1a38492", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10501, "upload_time": "2019-02-11T07:08:33", "url": "https://files.pythonhosted.org/packages/ed/85/d89476238582ddb71dfe78a0583939ed1a78878550bd0a57efa3d0a56e36/mdmpy-0.0.15.7.tar.gz" } ], "0.0.15.8": [ { "comment_text": "", "digests": { "md5": "1a9e6ef0ed2b6c0aaba65603394a53f6", "sha256": "807c5b30b38021c7530a1d8ec734986058dd57bc991549d66f2371b3fe160afb" }, "downloads": -1, "filename": "mdmpy-0.0.15.8-py3-none-any.whl", "has_sig": false, "md5_digest": "1a9e6ef0ed2b6c0aaba65603394a53f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13705, "upload_time": "2019-02-11T07:36:43", "url": "https://files.pythonhosted.org/packages/df/25/86c74244e00cac3a08340438417dfe2b6e79545dcb3e4129d441de9bdd12/mdmpy-0.0.15.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d488b2e5cf8b2a010011604e5c787ec0", "sha256": "a7b292003b7f2f4cf7e5f72973aeb79c8f74475a1b0e631a56a915dd77446c98" }, "downloads": -1, "filename": "mdmpy-0.0.15.8.tar.gz", "has_sig": false, "md5_digest": "d488b2e5cf8b2a010011604e5c787ec0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10546, "upload_time": "2019-02-11T07:36:45", "url": "https://files.pythonhosted.org/packages/50/78/4a2c6e972e998e67060dea35f3126156887232348c0fe5cdabf482145fd1/mdmpy-0.0.15.8.tar.gz" } ], "0.0.15.9": [ { "comment_text": "", "digests": { "md5": "5c494abd100019afc2694bfe4b63a956", "sha256": "ef52cc518c102a5f1d19d955e6ddcc55ccfa715ce82fa098653218bf72d4655e" }, "downloads": -1, "filename": "mdmpy-0.0.15.9-py3-none-any.whl", "has_sig": false, "md5_digest": "5c494abd100019afc2694bfe4b63a956", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14477, "upload_time": "2019-02-14T06:14:58", "url": "https://files.pythonhosted.org/packages/4d/24/cb5b0ca47a2f24fd38aff43256c949d25331ae8cc21522f390347f4ede76/mdmpy-0.0.15.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d8734ee0dc80856d24ff74afdfe187f", "sha256": "8ea2f1748a70c996433d1a37f7981c89f43d0c5c0c57ea2b494c8018e47ae86e" }, "downloads": -1, "filename": "mdmpy-0.0.15.9.tar.gz", "has_sig": false, "md5_digest": "4d8734ee0dc80856d24ff74afdfe187f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9253, "upload_time": "2019-02-14T06:15:00", "url": "https://files.pythonhosted.org/packages/94/9c/283fa490389fe8c59e4e85911b1924cfae66f973f60f5121aef493326c1b/mdmpy-0.0.15.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "02352be99295998046fb276114bf7482", "sha256": "5c3f231ce159281fafd76df41a9adefc5861d6f45aeb9295b0a5da918b2e80d9" }, "downloads": -1, "filename": "mdmpy-0.0.15.17-py3-none-any.whl", "has_sig": false, "md5_digest": "02352be99295998046fb276114bf7482", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14498, "upload_time": "2019-02-21T06:56:29", "url": "https://files.pythonhosted.org/packages/90/3f/94c5b78e0b601c4ac198ea328b0a6cfa5c322b7b7f30d1104bc909d25f7a/mdmpy-0.0.15.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3bfaf1fd5bfcc91b5081ecf31e6b14f8", "sha256": "59d8a658d69a995e96f898a9a2b7a7b11908efabaaa8c8683afd7accbc4552d7" }, "downloads": -1, "filename": "mdmpy-0.0.15.17.tar.gz", "has_sig": false, "md5_digest": "3bfaf1fd5bfcc91b5081ecf31e6b14f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9280, "upload_time": "2019-02-21T06:56:31", "url": "https://files.pythonhosted.org/packages/f3/1a/cfdb679333ffeb3b03114a45126d5e33260dd85ff279b8c2ed6bf9584ac7/mdmpy-0.0.15.17.tar.gz" } ] }