{ "info": { "author": "Gergely Svigruha", "author_email": "gergely.svigruha@prodmodel.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "![Prodmodel](https://github.com/prodmodel/prodmodel/blob/master/logo.png)\n\nProdmodel is a [build system](https://en.wikipedia.org/wiki/List_of_build_automation_software) for data science pipelines.\nUsers, testers, contributors are welcome!\n\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

\n\n

\n Motivation\n \u00b7 \n Concepts\n \u00b7 \n Installation\n \u00b7 \n Usage\n \u00b7 \n Contributing\n \u00b7 \n Contact\n \u00b7 \n Licence\n

\n\n## Motivation\n\n * Performance. No need to rerun things, everything is cached, switching between multiple versions is super easy. Prodmodel can\n **figure out if a particular partial code path has already been executed using a particular piece of data** and just use the cached output.\n * Easy debugging. Every single dependency - code or data - is version controlled and tracked.\n * Deploy to production. Models are more than just a file. Prodmodel makes sure that the correct version of label encoders,\n feature transformation code and data and model files are all packaged together.\n\n## Concepts\n\nA build system is a [DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph) of `rules` (transformations), `inputs` and `targets`.\nIn Prodmodel `inputs` can be\n * data,\n * Python code,\n * and configuration.\n\nA `rule` is transforming any of the above to an output (which can in turn be depended on by other rules). Therefore rules need to be\nre-executed (and their outputs re-created) if any of their dependencies change. Prodmodel keeps track all of these dependencies.\n\nThe outputs of the `rules` are `targets`. Every `target` corresponds to an output (e.g. a model or a dataset). These outputs\nare cached and version controlled.\n\nProdmodel therefore ensures\n * correctness, by executing every code (e.g. feature transformation, model building, tests) which can potentially be affected by a change, and\n * performance, by executing only the necessary code, saving time compared to rerunning the whole pipeline.\n\n### Rules\n\nEvery rule is a statically typed function, where the inputs are targets, data, or configs. The execution of\na rule outputs some data (e.g. a different feature set or a model), which can be used in other rules.\n\nIn order to use Prodmodel your code has to be structured as functions which the rules can call into.\n\n### Targets\n\nTargets are created by rule functions. Targets can be executed to generate output files. `IterableDataTarget` is a special target\nwhich can be used as an iterable of `dicts` to make iterating over datasets easier. Regular `DataTargets` can represent any\nPython object.\n\n## Installation\n\nProdmodel requires at least Python3.6. Use [pip](https://pip.pypa.io/en/stable/) to install prodmodel.\n\n```bash\npip install prodmodel --user\n```\n\n## Usage\n\nCreate a `build.py` file in your data science folder. The build file contains references to your inputs and the build rules you can execute.\n\n```python\nfrom prodmodel.rules import rules\n\ncsv_data = rules.data_source(file='data.csv', type='csv', dtypes={...})\n\nmy_model = rules.transform(objects={'data': csv_data}, file='kmeans.py', fn='compute_kmeans')\n```\n\nNow you can build your model by running `prodmodel my_model` from the directory of `build.py`,\nor `prodmodel :my_model` from any directory.\n\nProdmodel creates a `.prodmodel` directory under the home directory of the user to store log and config files.\n\n### Documentation\n\nCheck out a complete [example project](https://github.com/prodmodel/prodmodel/tree/master/example) for more examples.\n\nThe complete list of build rules can be found [here](https://github.com/prodmodel/prodmodel/blob/master/doc/api_doc.md).\n\nProdmodel searches for a config file under `/.prodmodel/config`. The config file can be created manually\nbased on this [template](https://github.com/prodmodel/prodmodel/blob/master/doc/config).\n\n### Arguments\n\n * `--force_external`: Some data sources are remote (e.g. an SQL server), therefore tracking changes is not always feasible.\n This argument gives the user manual control over when to reload these data sources.\n * `--cache_data`: Cache local data files if changed. This can be useful for debugging / reproducibility by making sure every\n data source used for a specific build is saved.\n * `--output_format`: One of `none`, `str`, `bytes` and `log`. The output format of the data produced by the build target\n written to stdout.\n\n### List targets in build file\n\n * Run `prodmodel ls ` to list targets in a build file where `` to the build file or its directory.\n\n### Cleaning old cache files\n\n * Run `prodmodel clean --cutoff_date=` to delete output cache files of a target created before\n the cutoff datetime, which has to be in `%Y-%m-%dT%H:%M%S` (`YYYY-mm-ddTHH:MM:SS`) format.\n\n## Contributing\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## Contact\nFeel free to email me at gergely.svigruha@prodmodel.com if you have any question, need help or would like to contribute to the code.\n\n## Licence\n[Apache 2.0](https://github.com/prodmodel/prodmodel/blob/master/LICENCE)\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/prodmodel/prodmodel", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "prodmodel", "package_url": "https://pypi.org/project/prodmodel/", "platform": "", "project_url": "https://pypi.org/project/prodmodel/", "project_urls": { "Homepage": "https://github.com/prodmodel/prodmodel" }, "release_url": "https://pypi.org/project/prodmodel/0.4.3/", "requires_dist": null, "requires_python": "", "summary": "Build data science pipelines and models", "version": "0.4.3" }, "last_serial": 5532889, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "1bad78ee96f5f1901321604847b3b3de", "sha256": "d28a66da2bda1521cfd6b4c9039a0aa45eb89b1c2a4c7f2c68419b855f74dcb7" }, "downloads": -1, "filename": "prodmodel-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1bad78ee96f5f1901321604847b3b3de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18780, "upload_time": "2019-04-24T04:06:27", "url": "https://files.pythonhosted.org/packages/f9/cb/3f28febcd0cdceeeedbf9eb28cf097bbfa193ddf910a1d7711219a213439/prodmodel-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a2433383e5f1247bde2d7ec34f2072a", "sha256": "7a1b61580733a6e9a57692bcbb6b47f98db00626da4d73ceff24a54fccf878cd" }, "downloads": -1, "filename": "prodmodel-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8a2433383e5f1247bde2d7ec34f2072a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8344, "upload_time": "2019-04-24T04:06:29", "url": "https://files.pythonhosted.org/packages/f8/4d/e0d8ccc87cdad9ecaa2c0d483765845fce2526dc4f2353dc38a303198cdd/prodmodel-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "1f4781805957f45fee5f9f51eb8a7221", "sha256": "331e6d9c8311767807888b7121250e37b2c259483136a41ebd640c1d2996abb2" }, "downloads": -1, "filename": "prodmodel-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1f4781805957f45fee5f9f51eb8a7221", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20847, "upload_time": "2019-04-25T02:59:32", "url": "https://files.pythonhosted.org/packages/20/8f/bd0b605986e65f210ac77aae7eb8a6673dd2a4e928936f5568fb2027fcc8/prodmodel-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c246601870c8d82f743d8b3986fefaf", "sha256": "97cca02541605e397754b2b96ad253e0a2e427da8a4c94395f858542a6cdf3ff" }, "downloads": -1, "filename": "prodmodel-0.0.2.tar.gz", "has_sig": false, "md5_digest": "5c246601870c8d82f743d8b3986fefaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7594, "upload_time": "2019-04-25T02:59:34", "url": "https://files.pythonhosted.org/packages/1b/71/1a39ae9a10fba90be9e0f656022bffff45b85408a7a2308a2311873fac3d/prodmodel-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "4e1743e566640e616fa935cd7ff88f86", "sha256": "5236db8de473ddc82ad8547dc66388209264abd7763757e2b6fccc8f83418ab7" }, "downloads": -1, "filename": "prodmodel-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4e1743e566640e616fa935cd7ff88f86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22537, "upload_time": "2019-04-25T03:05:55", "url": "https://files.pythonhosted.org/packages/1d/d4/3dd988ce93cae3a8e61d40155f71aa75669d2b3e108c741c3ad9166afc63/prodmodel-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "785493d3a07eb95b98f28413e0f1bdde", "sha256": "481863d41dc880c776a9d969b46f4fbd33aa7e78886c76b0c0d150ec8b25d7ac" }, "downloads": -1, "filename": "prodmodel-0.0.3.tar.gz", "has_sig": false, "md5_digest": "785493d3a07eb95b98f28413e0f1bdde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8517, "upload_time": "2019-04-25T03:05:56", "url": "https://files.pythonhosted.org/packages/8a/7b/a506aed195a14f3fd0acbbd45c829f75550718eca8b76b7579b66b4f4877/prodmodel-0.0.3.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cf4c85a026f296a633c5faedb7d6da11", "sha256": "1316431a3fe0e5a76a980ab41ed882ce187f462bdcc490ab35a8b82fdd35d30b" }, "downloads": -1, "filename": "prodmodel-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cf4c85a026f296a633c5faedb7d6da11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36262, "upload_time": "2019-04-28T02:46:10", "url": "https://files.pythonhosted.org/packages/84/c3/28cd8a1a96b6e0f7cce00938efea41eddd01731f1cb15e1576585a747c70/prodmodel-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99c4e34195cb9dcde2a0ffb011f26661", "sha256": "a92c4435a42e49a34835a3c0461d7f4d387fb517086731d80d8aeb8b55fe0f9c" }, "downloads": -1, "filename": "prodmodel-0.1.1.tar.gz", "has_sig": false, "md5_digest": "99c4e34195cb9dcde2a0ffb011f26661", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12760, "upload_time": "2019-04-28T02:46:14", "url": "https://files.pythonhosted.org/packages/66/b6/002518134fddf67067406b7574da108930fc388b343127b2f989ea1a9ea2/prodmodel-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "6c433883c543b1683c1b1968123d602f", "sha256": "b5dbcbc1b9043b74767aa03831dd1d30a19b4c450d5110d4af7f26139fbb5ff3" }, "downloads": -1, "filename": "prodmodel-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6c433883c543b1683c1b1968123d602f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 38347, "upload_time": "2019-05-02T02:51:29", "url": "https://files.pythonhosted.org/packages/93/06/4c58cfb3acccd91892f21458a2aa7f24be8c2291f9e9cddbb42dd4876145/prodmodel-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed45c766db67278775f1c0f663780c12", "sha256": "1e7d3c96572c684617b573526529f1c84c0023f89989717624996b81a3e77140" }, "downloads": -1, "filename": "prodmodel-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ed45c766db67278775f1c0f663780c12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14343, "upload_time": "2019-05-02T02:51:30", "url": "https://files.pythonhosted.org/packages/7c/9e/558433b3901e8264cff7db292fc404adceb6e160e4b7bf62350bb167b4b2/prodmodel-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d5f70a25fd50eae921876d57c5e19d7b", "sha256": "fdda2fc0970dee8c7a2130a1769134af8aa9ab93402709532afa50701dd53c88" }, "downloads": -1, "filename": "prodmodel-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d5f70a25fd50eae921876d57c5e19d7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 38546, "upload_time": "2019-05-12T00:47:46", "url": "https://files.pythonhosted.org/packages/64/d4/156e31909b504789d41a8e4f6d123806b7dadc22a51eb3a4ac3eece3d94d/prodmodel-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f55d0f842a8bd3791dbfd95446f9ab1", "sha256": "fe5a883b5885f21a37dd941690b5420068f55de3fa7dd901fc934b97951ca7d3" }, "downloads": -1, "filename": "prodmodel-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9f55d0f842a8bd3791dbfd95446f9ab1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14797, "upload_time": "2019-05-12T00:47:47", "url": "https://files.pythonhosted.org/packages/c8/df/092518d549860effb45f9dd555a4e79dcf81a7b0cc24f060f10f37e75db5/prodmodel-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c6e948ffe5c85ccea4ae526306a243d6", "sha256": "9f2f480c75b363d37f1efad7980aab493d72fb54a0002042b1dc9f58d19c912c" }, "downloads": -1, "filename": "prodmodel-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c6e948ffe5c85ccea4ae526306a243d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 38605, "upload_time": "2019-05-13T01:25:10", "url": "https://files.pythonhosted.org/packages/f2/53/0b0c4ea2a721ee7113d09315dd993e0ab8bbd5fd6e6ac5562f2cc67ad377/prodmodel-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "441cefd5ef6b31415d7ce1220b6ad94f", "sha256": "2c767fb59bc407acc740e399518b229fd05759cca11ad344d4533950d6f7f922" }, "downloads": -1, "filename": "prodmodel-0.1.4.tar.gz", "has_sig": false, "md5_digest": "441cefd5ef6b31415d7ce1220b6ad94f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14915, "upload_time": "2019-05-13T01:25:12", "url": "https://files.pythonhosted.org/packages/b8/37/6ea543414dad8164243c9cd2a7bf527ef9fbe5fd60ed74b4e92f4ecd17fd/prodmodel-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "587469eb98ca582276eca8a90dd1b139", "sha256": "f58987ec46534417c84fb745a96b5f9101b0b27cc59360043fbcf258556317b2" }, "downloads": -1, "filename": "prodmodel-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "587469eb98ca582276eca8a90dd1b139", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39037, "upload_time": "2019-05-19T20:59:41", "url": "https://files.pythonhosted.org/packages/26/12/a6161a0d4e109be1a393e9967335c694a1c341a3a85a722194675b2c1eb2/prodmodel-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7a1d4f273793235294f1c6a1ab1bdce", "sha256": "93a047ca5b4ad6dc4c588b5ad6fa6c31072c1424087530f7b1e91ab2935a58cb" }, "downloads": -1, "filename": "prodmodel-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e7a1d4f273793235294f1c6a1ab1bdce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15516, "upload_time": "2019-05-19T20:59:43", "url": "https://files.pythonhosted.org/packages/fe/95/6141fa6812859f40a93273b7cc9b379aaaadecd949b350b23e336ac8699d/prodmodel-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "49d921d91bb0f922b814726fa55a4226", "sha256": "0c048041bcd9de08178e79642b00b02f9ef051d89fd20568602cb33dfd149b6e" }, "downloads": -1, "filename": "prodmodel-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "49d921d91bb0f922b814726fa55a4226", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39035, "upload_time": "2019-05-19T21:04:52", "url": "https://files.pythonhosted.org/packages/9a/02/9e365694c5ac2dfbfd832538fb9c00ded2bcfd5fa801df7959678ac6012f/prodmodel-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6a5566475b0d8f74bff4577ddd95ac9", "sha256": "a8137a1e3c1b75f36f0768107f68139ae8297a09e95583392a52622f42d29847" }, "downloads": -1, "filename": "prodmodel-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d6a5566475b0d8f74bff4577ddd95ac9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15516, "upload_time": "2019-05-19T21:04:53", "url": "https://files.pythonhosted.org/packages/a8/fb/ffa3d21963b66ca49fdf5ec93be7e025a74ddc24260765e0a74a924a5b55/prodmodel-0.1.6.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "5b95548541dbf84338c9b987ed1e4ef0", "sha256": "8cc2fee5d2c79f35548b0b80ccaac085e6054f9efaffd9b1838b226f3145fe08" }, "downloads": -1, "filename": "prodmodel-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5b95548541dbf84338c9b987ed1e4ef0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39251, "upload_time": "2019-05-19T22:49:13", "url": "https://files.pythonhosted.org/packages/1a/61/c123b5aa98d3f32ffe758cddbbf8f194debba7c24adb054a307b88fc8b8c/prodmodel-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "294bf78152eb01a4f3999e510d497f3d", "sha256": "e84e911e1b6638fefabfc93fe955e67b61a31debf8f73e9ef48d04041a6d9bca" }, "downloads": -1, "filename": "prodmodel-0.1.8.tar.gz", "has_sig": false, "md5_digest": "294bf78152eb01a4f3999e510d497f3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15649, "upload_time": "2019-05-19T22:49:15", "url": "https://files.pythonhosted.org/packages/b3/51/5b9548e6fa9f4c19723e17d06be07cf3bc944e301b7b87cce0fdd791f887/prodmodel-0.1.8.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "7f18993b430bab2414c2c1ce69b07fcb", "sha256": "cbde3cc3ea0b39b7ccf53fe068178afe03e34efd9e0a66280f7fa98761dc1b3f" }, "downloads": -1, "filename": "prodmodel-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7f18993b430bab2414c2c1ce69b07fcb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39342, "upload_time": "2019-05-29T03:37:44", "url": "https://files.pythonhosted.org/packages/b6/e1/d4bb146838400273ef740bf99f171f7f0690fc291e859617cc5cfcb9badf/prodmodel-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44ab8c2673b3f274aee19bccd052303e", "sha256": "850756950247209c5d521fe56d22815f9105e0f317cfef8876601c375a9ae008" }, "downloads": -1, "filename": "prodmodel-0.2.3.tar.gz", "has_sig": false, "md5_digest": "44ab8c2673b3f274aee19bccd052303e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15661, "upload_time": "2019-05-29T03:37:46", "url": "https://files.pythonhosted.org/packages/63/c1/ffe33218f2bf96ff76e50d516810c980f6829e2eb02e0862b8fd71949366/prodmodel-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "7a57a9a43884cfe9fa559d4241f07502", "sha256": "4af02bef309ebbeab2aa4caa0276ef5bd0f1c3452eb3d0829185167ef156b1f3" }, "downloads": -1, "filename": "prodmodel-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7a57a9a43884cfe9fa559d4241f07502", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39411, "upload_time": "2019-06-09T20:59:06", "url": "https://files.pythonhosted.org/packages/91/22/4a12a1e6db42b53bfc35f88a71696b17e39b36954c40deb5ee62b01673e4/prodmodel-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "948e84513568d52865d9cca280b563ad", "sha256": "cee64c4cfa4c2ee21154063418d2b1c0cc3f3ca9e04a2cf7d4bd38b3181adca6" }, "downloads": -1, "filename": "prodmodel-0.2.4.tar.gz", "has_sig": false, "md5_digest": "948e84513568d52865d9cca280b563ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15726, "upload_time": "2019-06-09T20:59:08", "url": "https://files.pythonhosted.org/packages/d7/3a/1fe7b46d8d502468e2cdfa7c4ef137ee77694ca4c8bb9a2e60888739431c/prodmodel-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "0b6d1835eb15996002c308a3a280721f", "sha256": "2c19fbc93a3fb6f88a6dc806e786d19c89a3b86e4c382134263f79c3eff3f21d" }, "downloads": -1, "filename": "prodmodel-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "0b6d1835eb15996002c308a3a280721f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39411, "upload_time": "2019-06-09T21:01:14", "url": "https://files.pythonhosted.org/packages/13/8e/a6de1abd0562187203bb23d1e12edc811bea8f108a6d619c0b872af1849d/prodmodel-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5b55f13588474c92c8770da4aeb9db7", "sha256": "a5dc203eaf1a6540d1c44c8efe562d5d30106ad6136dd034a3ec9d9e1ebc17fa" }, "downloads": -1, "filename": "prodmodel-0.2.5.tar.gz", "has_sig": false, "md5_digest": "d5b55f13588474c92c8770da4aeb9db7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15724, "upload_time": "2019-06-09T21:01:16", "url": "https://files.pythonhosted.org/packages/16/1b/3cff4088b6b46d5e788463af88ec00a128e6a5b128f9be73df0324976987/prodmodel-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "532053eba4fb56fe8a8cfea618f5e000", "sha256": "e1648b3f5dac500199ffca018acbdad354cb6d7c890782528a3a21c50225d51e" }, "downloads": -1, "filename": "prodmodel-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "532053eba4fb56fe8a8cfea618f5e000", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39435, "upload_time": "2019-06-16T18:38:46", "url": "https://files.pythonhosted.org/packages/31/84/c9c997ce78ac4c47d25a9d44c7379506ade31487d062a88ee584bac64fb3/prodmodel-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85539686385b6a18a6598bc94ae078b6", "sha256": "56a5aa9a1754a500ddf500093f24a1045711f501d3b664423665298cd816d6b4" }, "downloads": -1, "filename": "prodmodel-0.2.6.tar.gz", "has_sig": false, "md5_digest": "85539686385b6a18a6598bc94ae078b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15748, "upload_time": "2019-06-16T18:38:47", "url": "https://files.pythonhosted.org/packages/29/2e/09661325377af919c9aced8f02f35aa149174bdf4278acc46de31d241cd9/prodmodel-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "18ccb9228d88162309d1a5c505a06db8", "sha256": "9a49d3a83cb114e7d98218ecb317bfdffa4494f4c54d23f07df4b072f209faa3" }, "downloads": -1, "filename": "prodmodel-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "18ccb9228d88162309d1a5c505a06db8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40733, "upload_time": "2019-06-16T22:08:31", "url": "https://files.pythonhosted.org/packages/27/3d/1f132ed7f83029a6cf88413c00b5aae6b006b442c2c8b37476c7ecdd1003/prodmodel-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5be08a5433571970c4542f906e96060", "sha256": "1d7d3f9aaf7a7c7bc0d1e365bd91444c244ec0fa62b02d8ace28de500aff8a7a" }, "downloads": -1, "filename": "prodmodel-0.2.7.tar.gz", "has_sig": false, "md5_digest": "d5be08a5433571970c4542f906e96060", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16284, "upload_time": "2019-06-16T22:08:32", "url": "https://files.pythonhosted.org/packages/af/4b/9b6e9fd589d443b243f6db8941ccec0042a73f7e7b72f60d705143cb9595/prodmodel-0.2.7.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "fb7b923d80d60dd62c34999b5ebdadc1", "sha256": "94e9f1cd12a0c493d0e9eb79a04b68b8a0206ec5ecf556086289ae38bdc873ce" }, "downloads": -1, "filename": "prodmodel-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fb7b923d80d60dd62c34999b5ebdadc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42091, "upload_time": "2019-06-22T21:42:06", "url": "https://files.pythonhosted.org/packages/17/5e/777d2db40c3052509774ee745ffcfb2cd67456a57119e9e58493e30ad258/prodmodel-0.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1295f8ed2ddbb99bcd1446799daab81a", "sha256": "a98701e4507a9f571cae491182a796c1c70f09a05cb24901c9f97b8ee70992d0" }, "downloads": -1, "filename": "prodmodel-0.2.9.tar.gz", "has_sig": false, "md5_digest": "1295f8ed2ddbb99bcd1446799daab81a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17457, "upload_time": "2019-06-22T21:42:08", "url": "https://files.pythonhosted.org/packages/7c/62/3efb2eaa72d050889b2bc304f77159fcce00e01eaa3e70ccc365a9946219/prodmodel-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3d425fc4a191151cf8284d08b81e0d3a", "sha256": "95354d6fdfc70c269425ddf1da89cdb3e113beee0c4d8076818914163a84af3c" }, "downloads": -1, "filename": "prodmodel-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3d425fc4a191151cf8284d08b81e0d3a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42078, "upload_time": "2019-06-23T18:08:57", "url": "https://files.pythonhosted.org/packages/83/dd/659a15de02699373f5b0ff2bf38bc1272018bc6805a4e231be01a9790f89/prodmodel-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7301c5963124fd5ab7b04b3117516dec", "sha256": "acd55aa9fa29d1213ea1610b1afc11ecb2ee874439d31bd3cc414c005409f47b" }, "downloads": -1, "filename": "prodmodel-0.3.0.tar.gz", "has_sig": false, "md5_digest": "7301c5963124fd5ab7b04b3117516dec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17447, "upload_time": "2019-06-23T18:08:58", "url": "https://files.pythonhosted.org/packages/2e/46/e8a20791494f6dec96dacbeab8d4b2457021f5b53af427cd24cadb23bcd6/prodmodel-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "53334f288befb628fed639f87ac8f1b7", "sha256": "720b0142b8c683cfd9582e78dbb4d358cde685a37301ec935d73b8d0463bde07" }, "downloads": -1, "filename": "prodmodel-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "53334f288befb628fed639f87ac8f1b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42810, "upload_time": "2019-06-28T03:33:21", "url": "https://files.pythonhosted.org/packages/14/03/65d53913dbe7dbe53bd6e64ac8e3cedcdfb03be39d06027640999c93cbbc/prodmodel-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "677cda1be93e24b21e60a6cbaed5a423", "sha256": "2d8cb4f674713f3c08c58c95cb2143820fbc086b873ba76110ca769cb9b1d0e8" }, "downloads": -1, "filename": "prodmodel-0.3.1.tar.gz", "has_sig": false, "md5_digest": "677cda1be93e24b21e60a6cbaed5a423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17968, "upload_time": "2019-06-28T03:33:23", "url": "https://files.pythonhosted.org/packages/7b/4b/8a7631ae739d1888ee89fc09e6add96a31da8619ed71163fb0a6f4c058af/prodmodel-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "52531d4a194a584e33a993da21c00c42", "sha256": "e8984e1ffba93113c8302ecb7ba916e6395e12b027ceab942f9332960a85f8db" }, "downloads": -1, "filename": "prodmodel-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "52531d4a194a584e33a993da21c00c42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43097, "upload_time": "2019-06-30T02:00:32", "url": "https://files.pythonhosted.org/packages/3c/56/0ee2b71d5077068e21eff9050f3ccc28174f91d16499c77c0dd34fee5f24/prodmodel-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c68b454946091b88af1c3cae3cd57823", "sha256": "638cc81eed350d0fa1c14eaa3a1c608aea3b1c9c2e19a8c460a042e533232c2c" }, "downloads": -1, "filename": "prodmodel-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c68b454946091b88af1c3cae3cd57823", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18286, "upload_time": "2019-06-30T02:00:34", "url": "https://files.pythonhosted.org/packages/37/ca/9bd7d0503092c1b8b2e2011fb10fd64235146d56fef87b1ff407a07c926f/prodmodel-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "40b43f35c1082c32ffdf703e8921b324", "sha256": "113c264767d3fd36959d8b0bb86508d20cd34b39dd29e1d5c01f6d80b8eddbb1" }, "downloads": -1, "filename": "prodmodel-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "40b43f35c1082c32ffdf703e8921b324", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43311, "upload_time": "2019-07-04T00:12:43", "url": "https://files.pythonhosted.org/packages/c2/d1/23f979e3e8df5b741376571fdfde0e0a44025867974c8a8811dda152270a/prodmodel-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ffdadb19c6fc87ec7e6b828c2ffe4af", "sha256": "9197dca9bceaa8704a89de4333f680c0b8664dfd54fcb7ca305f24da3a4db66a" }, "downloads": -1, "filename": "prodmodel-0.3.3.tar.gz", "has_sig": false, "md5_digest": "9ffdadb19c6fc87ec7e6b828c2ffe4af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18566, "upload_time": "2019-07-04T00:12:45", "url": "https://files.pythonhosted.org/packages/c5/d0/b01799e150626526346233b5dbf6583ab4a149184bf7aa14f89731be05a0/prodmodel-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "644a6fcfaf8954123c58383e36954e84", "sha256": "6e5fc9069f5338f109ab0d368496131af2e831a7d6721088d1c05fd68f0c911c" }, "downloads": -1, "filename": "prodmodel-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "644a6fcfaf8954123c58383e36954e84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45252, "upload_time": "2019-07-07T19:01:06", "url": "https://files.pythonhosted.org/packages/98/13/0e0081a6c047c32824bd80bf0ae35d0c09fa61f0064d5aeaa60f4c31e8b5/prodmodel-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "213efe8ba3a05524d8b6d18281c6b6c9", "sha256": "92f50fe0533d3c3bb53027a5683c6c91a2ec09b692021e2c343f0041928c79df" }, "downloads": -1, "filename": "prodmodel-0.3.4.tar.gz", "has_sig": false, "md5_digest": "213efe8ba3a05524d8b6d18281c6b6c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19646, "upload_time": "2019-07-07T19:01:08", "url": "https://files.pythonhosted.org/packages/e1/e7/f81856e941add43fc0ff8e33bdb1fb08faa2264059991e09eafdeb45bad6/prodmodel-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "5abf8dc3e322e441a7d1adeb0cce2649", "sha256": "a3d2d46a35f789c442ae17bdbfb4d022dc47aa362628c4553fbf1539bbbfdd86" }, "downloads": -1, "filename": "prodmodel-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5abf8dc3e322e441a7d1adeb0cce2649", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45765, "upload_time": "2019-07-09T01:12:07", "url": "https://files.pythonhosted.org/packages/61/44/f13105c5ab0a5ab1ad0e25c97f9ac5e00516d8b4d6c002d4294f67cd5a29/prodmodel-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "423975230ca3d67864c49420b117c7f8", "sha256": "4e4756e550e18c4827e968622e912160e8f239773543809bf605147563a27bf4" }, "downloads": -1, "filename": "prodmodel-0.4.0.tar.gz", "has_sig": false, "md5_digest": "423975230ca3d67864c49420b117c7f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20039, "upload_time": "2019-07-09T01:12:09", "url": "https://files.pythonhosted.org/packages/fe/4d/0d87e3b3ae46daf444e6d0fa92daee44525d5713c76f9730635bcfc59dab/prodmodel-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "6b635f4444cc5dbf6f0e118ed99f7538", "sha256": "4d0d0ce833c981b0cd5c98e4d18a8ca7c649125ab69263e913f6674e4f180718" }, "downloads": -1, "filename": "prodmodel-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b635f4444cc5dbf6f0e118ed99f7538", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45791, "upload_time": "2019-07-11T01:40:04", "url": "https://files.pythonhosted.org/packages/9b/85/ebbe98975d56e938657e10bc472915111c646802eb4e49081d248e7f73c7/prodmodel-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc0336d8398353639a09ff3087230fbe", "sha256": "62d5bd78dc0d21220468a63aec2228f3fc8fd77ea86984e2f6b7986c06963e43" }, "downloads": -1, "filename": "prodmodel-0.4.1.tar.gz", "has_sig": false, "md5_digest": "cc0336d8398353639a09ff3087230fbe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20067, "upload_time": "2019-07-11T01:40:06", "url": "https://files.pythonhosted.org/packages/b8/17/a639363e65dcf8d6bda9b9bab3012431d1e6d5c628cd52bbad666b1bfd37/prodmodel-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "33d55b64e6a662e4b9019ac48d965d8b", "sha256": "d822fb82761cef36d2d3284b2aa50340f399cc6489603ec72b6e8a1247a766e5" }, "downloads": -1, "filename": "prodmodel-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "33d55b64e6a662e4b9019ac48d965d8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46384, "upload_time": "2019-07-14T18:21:03", "url": "https://files.pythonhosted.org/packages/f5/01/3c5bd3ff92b654c131c0a6b793bbbd7a6f0bbc603fae96364d76ee1cba9d/prodmodel-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71d338fde3b29dc22108da0be5bc9717", "sha256": "12518adcb1ca617174c33146101c593f46480381a70d560393523faf40131334" }, "downloads": -1, "filename": "prodmodel-0.4.2.tar.gz", "has_sig": false, "md5_digest": "71d338fde3b29dc22108da0be5bc9717", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20390, "upload_time": "2019-07-14T18:21:05", "url": "https://files.pythonhosted.org/packages/14/51/13d0cf99ef5b7e99f54a1c25f3327ccc42fc8a78ecbc76d31cdd3e1fc769/prodmodel-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "77a413e5ea2c161830bae7acc6c3e01e", "sha256": "3d480150305390af5ed02105c0cd6fe5ef35d9375a2f0ab6ac92b5681c5d4fa0" }, "downloads": -1, "filename": "prodmodel-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "77a413e5ea2c161830bae7acc6c3e01e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 47371, "upload_time": "2019-07-15T02:58:55", "url": "https://files.pythonhosted.org/packages/4f/a4/97aa2b3226838d6255a83425238752083f9e84e6f699ec09388ad7980cf5/prodmodel-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ae7f4ed6f815833a37dfc3678e5fba8", "sha256": "4c25a169dc7ee9ccad2af39f46b0202b9a2951bc97a42970a3b164b2d0aebcae" }, "downloads": -1, "filename": "prodmodel-0.4.3.tar.gz", "has_sig": false, "md5_digest": "4ae7f4ed6f815833a37dfc3678e5fba8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20883, "upload_time": "2019-07-15T02:58:57", "url": "https://files.pythonhosted.org/packages/16/9c/6d3fd6af589f3ca78e927bbf067b073df301c629281249aaa44cb4e06722/prodmodel-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77a413e5ea2c161830bae7acc6c3e01e", "sha256": "3d480150305390af5ed02105c0cd6fe5ef35d9375a2f0ab6ac92b5681c5d4fa0" }, "downloads": -1, "filename": "prodmodel-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "77a413e5ea2c161830bae7acc6c3e01e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 47371, "upload_time": "2019-07-15T02:58:55", "url": "https://files.pythonhosted.org/packages/4f/a4/97aa2b3226838d6255a83425238752083f9e84e6f699ec09388ad7980cf5/prodmodel-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ae7f4ed6f815833a37dfc3678e5fba8", "sha256": "4c25a169dc7ee9ccad2af39f46b0202b9a2951bc97a42970a3b164b2d0aebcae" }, "downloads": -1, "filename": "prodmodel-0.4.3.tar.gz", "has_sig": false, "md5_digest": "4ae7f4ed6f815833a37dfc3678e5fba8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20883, "upload_time": "2019-07-15T02:58:57", "url": "https://files.pythonhosted.org/packages/16/9c/6d3fd6af589f3ca78e927bbf067b073df301c629281249aaa44cb4e06722/prodmodel-0.4.3.tar.gz" } ] }