{ "info": { "author": "RobertoPrevato", "author_email": "roberto.prevato@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![Build status](https://robertoprevato.visualstudio.com/rocore/_apis/build/status/rocore-CI)](https://robertoprevato.visualstudio.com/rocore/_build/latest?definitionId=13) [![pypi](https://img.shields.io/pypi/v/rocore.svg?color=blue)](https://pypi.org/project/rocore/) [![Test coverage](https://img.shields.io/azure-devops/coverage/robertoprevato/rocore/13.svg)](https://robertoprevato.visualstudio.com/rocore/_build?definitionId=13)\n\n# Core classes and functions, reusable in any kind of Python application\n\n**Features:**\n* [exception classes to express common scenarios](https://github.com/RobertoPrevato/rocore/wiki/Common-exceptions)\n* [implementation of models annotations, useful to implement validation of business objects](https://github.com/RobertoPrevato/rocore/wiki/Models-annotations)\n* [friendly JSON encoder](https://github.com/RobertoPrevato/rocore/wiki/User-friendly-JSON-dumps), handling `datetime`, `date`, `time`, `UUID`, `bytes`\n* [implementation of simple in-memory cache, supporting expiration of items and capped lists](https://github.com/RobertoPrevato/rocore/wiki/Caching)\n* utilities to work with `folders` and paths\n* [`StopWatch` implementation](https://github.com/RobertoPrevato/rocore/wiki/StopWatch-implementation)\n* [a base class to handle classes that can be instantiated from configuration dictionaries](https://github.com/RobertoPrevato/rocore/wiki/Registry)\n* [common decorator to support retries](https://github.com/RobertoPrevato/rocore/wiki/Retry-decorator)\n* [common decorator to support logging function calls](https://github.com/RobertoPrevato/rocore/wiki/Logs-decorator)\n* [common decorator to control raised exceptions](https://github.com/RobertoPrevato/rocore/wiki/Exception-handle-decorator)\n\n## Installation\n\n```bash\npip install rocore\n```\n\n## Documentation\nPlease refer to documentation in the project wiki: [https://github.com/RobertoPrevato/rocore/wiki](https://github.com/RobertoPrevato/rocore/wiki).\n\n## Develop and run tests locally\n```bash\npip install -r requirements.txt\n\n# run tests using automatic discovery:\npytest\n\n# with code coverage:\nmake testcov\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/RobertoPrevato/rocore", "keywords": "core utilities", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rocore", "package_url": "https://pypi.org/project/rocore/", "platform": "", "project_url": "https://pypi.org/project/rocore/", "project_urls": { "Homepage": "https://github.com/RobertoPrevato/rocore" }, "release_url": "https://pypi.org/project/rocore/1.0.8/", "requires_dist": null, "requires_python": "", "summary": "Core classes and functions, reusable in any kind of Python application", "version": "1.0.8" }, "last_serial": 5464951, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c125c735d889058f8e51ac71961e8e3c", "sha256": "d1d103e8981b3170eadfa979cc210fc657b2e0b95845ef765ba17ab89c29d436" }, "downloads": -1, "filename": "rocore-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c125c735d889058f8e51ac71961e8e3c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4837, "upload_time": "2018-10-21T14:07:10", "url": "https://files.pythonhosted.org/packages/89/a7/45153851a9c68413d14b2ac0bcd724bf776c24011a52a3256174314bf650/rocore-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0f51d73c617f0a1b2339053abd41811", "sha256": "fbc46beedd434f0332b228f3ab71a30d5f223d2c559780625cd04109bb4affa7" }, "downloads": -1, "filename": "rocore-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f0f51d73c617f0a1b2339053abd41811", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3731, "upload_time": "2018-10-21T14:07:11", "url": "https://files.pythonhosted.org/packages/c8/6c/fec473149e07121627475edf48babdeeba72aa7bcabc739422f4729f5fd6/rocore-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b3d00b8874a0304fc3aa7e7a3ddbab69", "sha256": "f297184d9b1f89e4d65d3173982b169228288d8fcd9fdf53ef858c57bec27431" }, "downloads": -1, "filename": "rocore-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b3d00b8874a0304fc3aa7e7a3ddbab69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4647, "upload_time": "2018-10-21T14:32:52", "url": "https://files.pythonhosted.org/packages/51/4a/39ba4eeea0ff0670db7e1da6baca1c504c3ad9aee4ca387ed14fd767d7ae/rocore-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4058d924114f07b450540db5fa2e43b4", "sha256": "8f34a9151c99ca48d7a1f0289ff276d2b45688e1b3cb93df114d22c119cc363c" }, "downloads": -1, "filename": "rocore-1.0.1.tar.gz", "has_sig": false, "md5_digest": "4058d924114f07b450540db5fa2e43b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3686, "upload_time": "2018-10-21T14:32:53", "url": "https://files.pythonhosted.org/packages/04/71/88ad7574d62353e8cf2cdf5f2058fdc00a6a6d44d82209af6c2ef8300751/rocore-1.0.1.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "5b7e19924bfd9914009e514745d8d681", "sha256": "68c496e953b33cb777af50221b9a7c5de2cc54c03c227023bb21053b73ed416f" }, "downloads": -1, "filename": "rocore-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5b7e19924bfd9914009e514745d8d681", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11203, "upload_time": "2018-10-27T21:56:46", "url": "https://files.pythonhosted.org/packages/1f/b4/8d0b41d62a71382b0a0e0aefbd87e5d7ce70681bc38334a046200a53a2fa/rocore-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abaf67ac8205318a80ed61d65bf20935", "sha256": "b1075fe6ec63563d1039fdd60ff91df40e4dbb27fdcf0c343c7039579ca18572" }, "downloads": -1, "filename": "rocore-1.0.4.tar.gz", "has_sig": false, "md5_digest": "abaf67ac8205318a80ed61d65bf20935", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9508, "upload_time": "2018-10-27T21:56:48", "url": "https://files.pythonhosted.org/packages/0e/21/7f26d25e7f7c3c6ce72a9762fd639c814ea7c92cd5a58126b05438cae774/rocore-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "cd079e69a9a7fcd4d119fd26e8ca9861", "sha256": "f3de0bbfb16b093bca603b3861fde0e9de5a3f9b25a08291026fb2868217c9b7" }, "downloads": -1, "filename": "rocore-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cd079e69a9a7fcd4d119fd26e8ca9861", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11207, "upload_time": "2018-10-27T22:08:28", "url": "https://files.pythonhosted.org/packages/a4/a7/f75b0df68f693bda4f320aa516bd27fb4466a42600ee1d8d13751f9d7ed8/rocore-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f9d0cde506de1591b4e102a7f0e36a4", "sha256": "7faab8e5b052e9feace31d1c8bf484006e411785f195496ba100247146e85f0e" }, "downloads": -1, "filename": "rocore-1.0.5.tar.gz", "has_sig": false, "md5_digest": "8f9d0cde506de1591b4e102a7f0e36a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9511, "upload_time": "2018-10-27T22:08:30", "url": "https://files.pythonhosted.org/packages/2c/4a/7950ee5ce0b4346b63975d819a54085b9b36b7ebfd520863c00226478182/rocore-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "93ff636aed90761b536295cb54fbda6f", "sha256": "99468c437e1ddd2f02e38f8bf747d99a013a0cfe6064fd6f4fc295f116742e69" }, "downloads": -1, "filename": "rocore-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "93ff636aed90761b536295cb54fbda6f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11409, "upload_time": "2019-05-18T12:19:47", "url": "https://files.pythonhosted.org/packages/22/0d/52fef98be4485e1ccea4f7a56e8a6d0c491a0a0042d8b57a0ad4b2195716/rocore-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cc584cc2a449120f7d69df0e609ff25", "sha256": "b92f119f06e8ce619e2bc2e61190599c191f145fb788ea7937c6b895db8cf015" }, "downloads": -1, "filename": "rocore-1.0.6.tar.gz", "has_sig": false, "md5_digest": "0cc584cc2a449120f7d69df0e609ff25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9824, "upload_time": "2019-05-18T12:19:49", "url": "https://files.pythonhosted.org/packages/42/84/577ba48d6966e95f786e1a2e05c993d4a964426ec0592f861639e7eae2f3/rocore-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "33ec8b3888975a571e4b3c9ad627bc14", "sha256": "8bdec57ebfd578d5beee84e8b40f744db158e051710d37ca7ca9595c2c8c44cd" }, "downloads": -1, "filename": "rocore-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "33ec8b3888975a571e4b3c9ad627bc14", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12639, "upload_time": "2019-06-22T17:58:38", "url": "https://files.pythonhosted.org/packages/c8/9d/6a89a95ecee9b2a1fe6a6d9f3bfb0f25abc60c5f9487c8a9c01fed027968/rocore-1.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e94944846fdbdc9d474d99d203774ac0", "sha256": "4cac33bfd7b0dd28306d052b3123936b5d44c515e77e6a89ff7c316cfe5d0893" }, "downloads": -1, "filename": "rocore-1.0.7.tar.gz", "has_sig": false, "md5_digest": "e94944846fdbdc9d474d99d203774ac0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10744, "upload_time": "2019-06-22T17:58:39", "url": "https://files.pythonhosted.org/packages/f1/24/4c4a722272059b42184a7e78d19a83f02934d2cdb70b088106f1cd9a0c39/rocore-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "99bed0ab465fe838582ccb6ff1300cf7", "sha256": "6bc9bab4148ea4c88b45d5c447f7bd9e9b288e854ef8841d240980a7ca168da0" }, "downloads": -1, "filename": "rocore-1.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "99bed0ab465fe838582ccb6ff1300cf7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15008, "upload_time": "2019-06-29T09:41:51", "url": "https://files.pythonhosted.org/packages/f8/65/207de72dce40e73cdb8f6ca1ef860a70d1470ef8945949c1d574046f477a/rocore-1.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db87256a386db03dfad010cee4efdd44", "sha256": "c2e4254eaa11473b27fc9b20d002a6558973b7afe3f6168158909c7ecd0e36a5" }, "downloads": -1, "filename": "rocore-1.0.8.tar.gz", "has_sig": false, "md5_digest": "db87256a386db03dfad010cee4efdd44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12228, "upload_time": "2019-06-29T09:41:53", "url": "https://files.pythonhosted.org/packages/94/06/95176fa607c52014d676ed2ae965186dd7e0ebc0710cab0588d9c8f9368f/rocore-1.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "99bed0ab465fe838582ccb6ff1300cf7", "sha256": "6bc9bab4148ea4c88b45d5c447f7bd9e9b288e854ef8841d240980a7ca168da0" }, "downloads": -1, "filename": "rocore-1.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "99bed0ab465fe838582ccb6ff1300cf7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15008, "upload_time": "2019-06-29T09:41:51", "url": "https://files.pythonhosted.org/packages/f8/65/207de72dce40e73cdb8f6ca1ef860a70d1470ef8945949c1d574046f477a/rocore-1.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db87256a386db03dfad010cee4efdd44", "sha256": "c2e4254eaa11473b27fc9b20d002a6558973b7afe3f6168158909c7ecd0e36a5" }, "downloads": -1, "filename": "rocore-1.0.8.tar.gz", "has_sig": false, "md5_digest": "db87256a386db03dfad010cee4efdd44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12228, "upload_time": "2019-06-29T09:41:53", "url": "https://files.pythonhosted.org/packages/94/06/95176fa607c52014d676ed2ae965186dd7e0ebc0710cab0588d9c8f9368f/rocore-1.0.8.tar.gz" } ] }