{ "info": { "author": "TUNE Inc.", "author_email": "jefft@tune.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy" ], "description": ".. -*- mode: rst -*-\n\n\nsafe-cast\n---------\n\nSafe casting of Python base types.\n\n\nBadges\n------\n\n.. start-badges\n\n.. list-table::\n :stub-columns: 1\n\n * - docs\n - |docs| |license|\n * - info\n - |hits| |contributors|\n * - tests\n - |travis| |coveralls|\n * - package\n - |version| |supported-versions|\n * - other\n - |requires|\n\n\n.. |docs| image:: https://readthedocs.org/projects/safe-cast/badge/?style=flat\n :target: http://safe-cast.readthedocs.io\n :alt: Documentation Status\n\n.. |hits| image:: http://hits.dwyl.io/TuneLab/safe-cast.svg\n :target: http://hits.dwyl.io/TuneLab/safe-cast\n :alt: Hit Count\n\n.. |contributors| image:: https://img.shields.io/github/contributors/TuneLab/safe-cast.svg\n :target: https://github.com/TuneLab/safe-cast/graphs/contributors\n :alt: Contributors\n\n.. |license| image:: https://img.shields.io/badge/License-MIT-yellow.svg\n :alt: License Status\n :target: https://opensource.org/licenses/MIT\n\n.. |travis| image:: https://travis-ci.org/TuneLab/safe-cast.svg?branch=master\n :target: https://travis-ci.org/TuneLab/safe-cast\n :alt: Travis\n\n.. |coveralls| image:: https://coveralls.io/repos/github/TuneLab/safe-cast/badge.svg?branch=master\n :target: https://coveralls.io/github/TuneLab/safe-cast?branch=master\n :alt: Code Coverage Status\n\n.. |requires| image:: https://requires.io/github/TuneLab/safe-cast/requirements.svg?branch=master\n :target: https://requires.io/github/TuneLab/safe-cast/requirements/?branch=master\n :alt: Requirements Status\n\n.. |version| image:: https://img.shields.io/pypi/v/safe-cast.svg?style=flat\n :target: https://pypi.python.org/pypi/safe-cast\n :alt: PyPI Package latest release\n\n.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/safe-cast.svg?style=flat\n :target: https://pypi.python.org/pypi/safe-cast\n :alt: Supported versions\n\n.. end-badges\n\n\nFunctions\n---------\n\n+-----------------------------------------------+------------------------------------------------------------------+\n| Function | Purpose |\n+===============================================+==================================================================+\n| ``safe_cast(val, to_type, default=None)`` | Cast value to requested type, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_str(val, default=None)`` | Cast value to type string, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_float(val, ndigits=2, default=None)`` | Cast value to type float, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_int(val, default=None)`` | Cast value to type int, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_dict(val, default=None)`` | Cast value to type dictionary, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_smart_cast(val)`` | Determine type based upon value, and cast to that type. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_cost(val)`` | Cast value to type float by 4 decimal points. |\n+-----------------------------------------------+------------------------------------------------------------------+\n| ``safe_fraction(val)`` | Cast fraction to type float, if failed, then used default. |\n+-----------------------------------------------+------------------------------------------------------------------+\n\n\nUsage\n-----\n\n``safe_cast(val, to_type, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to type, and if failed, returned default if exists.\n\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be cast.\n :param to_type: Safely cast to a specific type.\n :param default: Default if casting fails.\n :return: Return casted value or default.\n\n``safe_int(val, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to an integer.\n\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be cast to int.\n :param default: Default if casting fails.\n :return: Return int casted value or default.\n\n``safe_float(val, ndigits=2, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to float, remove ',' if exists to ensure strings \"1,234.5\" are transformed to become \"1234.5\".\n\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be cast to float.\n :param ndigits: Number of digits in float.\n :param default: Default if casting fails.\n :return: Return float casted value or default.\n\n``safe_str(val, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to a string.\n\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be cast to string.\n :param default: Default if casting fails.\n :return: Return string casted value or default.\n\n``safe_dict(val, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to a dictionary.\n\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be cast to dictionary.\n :param default: Default if casting fails.\n :return: Return dictionary casted value or default.\n\n``safe_smart_cast(val)``\n~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a value to the best matching type.\n Optional: Pass default value. Returned if casting fails.\n\n :param val: Value to be smartly cast.\n :return: Typed value\n\n``safe_fraction(fraction, ndigits=2, default=None)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Safely cast a fraction string to float.\n\n Optional: Pass default value. Returned if casting fails.\n\n :param fraction: Value of fraction to be cast to float.\n :param ndigits: Number of digits in float.\n :param default: Default if casting fails.\n :return: Return float casted value or default.\n\n\n.. :changelog:\n\nRelease History\n===============\n\n0.3.4 (2018-04-20)\n------------------\n* Update requirements.txt\n\n0.3.2 (2018-02-16)\n------------------\n- Python 2.7 supported\n- Travis CI testing both Python 2.7 and 3.6.\n\n0.3.1 (2018-02-15)\n------------------\n- migrate to github/TuneLab.\n\n0.3.0 (2018-02-05)\n------------------\n- Added safe_fraction.\n- Verbose exceptions handling.\n- More examples.\n- More tests.\n\n0.2.4 (2018-01-25)\n------------------\n- migrate to github/tuneinc.\n- LICENSE: MIT\n\n0.2.3 (2017-12-10)\n------------------\n- readthedocs.org\n\n0.2.0 (2017-12-05)\n-------------------\n* README\n\n0.1.3 (2017-10-31)\n------------------\n* Added comments.\n\n0.1.2 (2017-10-19)\n------------------\n* Update requirements.txt\n\n0.1.1 (2017-03-15)\n------------------\n* Handle empty string -> int/float/dict casting\n* Added relevant testing\n\n0.1.0 (2017-03-14)\n------------------\n* Production ready\n* Cleanup\n\n0.0.9 (2017-03-14)\n------------------\n* Handle None input\n\n0.0.8 (2017-03-12)\n------------------\n* Rename package to 'safe-cast'\n\n0.0.7 (2017-03-09)\n------------------\n* Renamed inner package folder to underscore: 'smart_cast. To comply with Python standard.\n* Updated casting logic\n* Updated testing\n* Activate Continues deployment and testing with Travis.CI\n* Activate coverage testing: Coveralls.io\n\n0.0.6 (2017-03-08)\n------------------\n* Renamed from 'safecast' to 'smart-cast'\n\n0.0.1 (2017-03-07)\n------------------\n* Conception\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/TuneLab/safe-cast/archive/v0.3.4.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/TuneLab/safe-cast", "keywords": "safe casting tune", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "safe-cast", "package_url": "https://pypi.org/project/safe-cast/", "platform": "", "project_url": "https://pypi.org/project/safe-cast/", "project_urls": { "Download": "https://github.com/TuneLab/safe-cast/archive/v0.3.4.tar.gz", "Homepage": "https://github.com/TuneLab/safe-cast" }, "release_url": "https://pypi.org/project/safe-cast/0.3.4/", "requires_dist": null, "requires_python": "", "summary": "Safe casting of Python base types", "version": "0.3.4" }, "last_serial": 3852701, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "902d2c2ebd25c801d62cafe473b48f3d", "sha256": "e2e10f8d5a2da93dee71e46c0af848102359bf4713a784f499239676a50b540b" }, "downloads": -1, "filename": "safe_cast-0.2.2-py3.6.egg", "has_sig": false, "md5_digest": "902d2c2ebd25c801d62cafe473b48f3d", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 5411, "upload_time": "2017-12-05T22:33:41", "url": "https://files.pythonhosted.org/packages/06/e2/d1e39afab10a91030b49ebd754aecc1da5346fd6aeb280d4ab5f66e9025c/safe_cast-0.2.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "56f4e5305c407304af9c7204fa46b982", "sha256": "31467614e3cf9f1a0aee740afa7465eff7699505d58bbcb7b51ef84544613778" }, "downloads": -1, "filename": "safe_cast-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "56f4e5305c407304af9c7204fa46b982", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6438, "upload_time": "2017-12-05T22:33:37", "url": "https://files.pythonhosted.org/packages/f5/5b/027d06adc36bb38296ce47f1ef09a7acbe2da27b4545d935465e7d7e231e/safe_cast-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dd28b72778a83432c9ec258ea4c3836", "sha256": "f74504d268c54bfd19dc0f7c5bfd1ea7b0146899bac4d12547d8af59a2d612e0" }, "downloads": -1, "filename": "safe-cast-0.2.2.tar.gz", "has_sig": false, "md5_digest": "0dd28b72778a83432c9ec258ea4c3836", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8845, "upload_time": "2017-12-05T22:33:43", "url": "https://files.pythonhosted.org/packages/bc/36/d33a118e491472993f2404147d89b53375a7ebb64f9a698c30ce293a1aad/safe-cast-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ca8d2a505fe0e66197e0eb76311fa239", "sha256": "cc3b12e25fe72bba8e7bd553038f08a556650c21bbbfd08de88e94365ca91993" }, "downloads": -1, "filename": "safe_cast-0.2.3-py3.6.egg", "has_sig": false, "md5_digest": "ca8d2a505fe0e66197e0eb76311fa239", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 5411, "upload_time": "2017-12-10T21:02:36", "url": "https://files.pythonhosted.org/packages/f9/9b/38873814c207cca3f442254f2cbf083c08bea286b058b2b7cef0858eaaa3/safe_cast-0.2.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "9463777d483cc094fad0d4f81d8e082e", "sha256": "efa09a6629ddcb2fbe0641b86a228e828879d2c64870c4dcecbcf7ce83f557ed" }, "downloads": -1, "filename": "safe_cast-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9463777d483cc094fad0d4f81d8e082e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6473, "upload_time": "2017-12-10T21:02:32", "url": "https://files.pythonhosted.org/packages/4f/c2/d6db0f3379d5bc52ae7b5471fef8ba68ed70a0f0afcc13b5de9fe261b8c3/safe_cast-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6c427c36408e45784a980ee7bd4ad7c", "sha256": "075f2ddb510041e1e3f61b17e7c4f55a11b50d07755b0230388b407d3d77780a" }, "downloads": -1, "filename": "safe-cast-0.2.3.tar.gz", "has_sig": false, "md5_digest": "e6c427c36408e45784a980ee7bd4ad7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8894, "upload_time": "2017-12-10T21:02:40", "url": "https://files.pythonhosted.org/packages/a2/d1/a30efb408a52049813ea98355bb2b77aa684d25abbf554c3ba7aa27c4096/safe-cast-0.2.3.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "9efbde152e9ec89344068b3df1807fb7", "sha256": "188aefc2ba5bd479ea24ba1e2cddab7e4c0206c3eae38d42e5ae4c36096dd04a" }, "downloads": -1, "filename": "safe_cast-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9efbde152e9ec89344068b3df1807fb7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6666, "upload_time": "2018-01-28T18:27:40", "url": "https://files.pythonhosted.org/packages/d4/b2/378c8728d48897ef40217445fbe3b9d3ac241fa473cad1b1d2d4007dc40c/safe_cast-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35e23267b17d029386b3b7816d5f8d23", "sha256": "22c4076e1f734f20fa31083c87464fbcb25ae3ec6c2f8571f50fd5baee00584a" }, "downloads": -1, "filename": "safe-cast-0.2.7.tar.gz", "has_sig": false, "md5_digest": "35e23267b17d029386b3b7816d5f8d23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5751, "upload_time": "2018-01-28T18:27:38", "url": "https://files.pythonhosted.org/packages/af/7f/30aa6f91cda5aa4118a0807a8e1ece7a05cdfd1ddde7a6eb7ef391e275e9/safe-cast-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "22a15f04bf0e2222a9d7888384866b53", "sha256": "8e0d1446a94519a03f342bac75071abfdf7f5e4d9b8d066f492acab949fc705a" }, "downloads": -1, "filename": "safe_cast-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "22a15f04bf0e2222a9d7888384866b53", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6896, "upload_time": "2018-02-05T15:54:47", "url": "https://files.pythonhosted.org/packages/39/d1/a63e5e5d28c8d50b898c00427824d998f126b63c5ae6f55cd1fb7bfd5c41/safe_cast-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23b8d301ed3463fe1d5be1bdce43bbfc", "sha256": "c3db834547e106b679134a9047a3582bcf77ccb757b893d7253b0f3a0350166b" }, "downloads": -1, "filename": "safe-cast-0.2.8.tar.gz", "has_sig": false, "md5_digest": "23b8d301ed3463fe1d5be1bdce43bbfc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6057, "upload_time": "2018-02-05T15:54:50", "url": "https://files.pythonhosted.org/packages/b8/70/2e995f81f43c5c188259ec59f539c1d5fb97b2c3e81e374e425775f2cf0c/safe-cast-0.2.8.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2e858dae962990d35506ed6d0726ced4", "sha256": "cdb442c6ab059c5d251a63927a7acc16134505c7a7a6e615a4638140eb7a88a9" }, "downloads": -1, "filename": "safe_cast-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2e858dae962990d35506ed6d0726ced4", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6990, "upload_time": "2018-02-05T16:19:54", "url": "https://files.pythonhosted.org/packages/4b/5e/d2678882eb3822cdfb36786c0e1dc4bc80c0636f732bb106817e15def98d/safe_cast-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64676998f84e9b73f1bd010973aeca1e", "sha256": "e2c1d12cb7c27817f4c552b689031dd8d765a25d0df78b54d37b28c31eddc29a" }, "downloads": -1, "filename": "safe-cast-0.3.0.tar.gz", "has_sig": false, "md5_digest": "64676998f84e9b73f1bd010973aeca1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6131, "upload_time": "2018-02-05T16:19:57", "url": "https://files.pythonhosted.org/packages/34/dc/ecd0011596b85658456a49ece8c4bbb039ae86ef8abfa0e1e7cecd8f8940/safe-cast-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a418a4778e0622d46fc43a45b2df9a96", "sha256": "5f3089812f1e3e94c4d45e06a91e931323ac453243802a7f808ac75d1b5c09f8" }, "downloads": -1, "filename": "safe_cast-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a418a4778e0622d46fc43a45b2df9a96", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7018, "upload_time": "2018-02-16T00:27:22", "url": "https://files.pythonhosted.org/packages/28/83/beef135eeff95666a0ece41178d71bd7a26a78542f20a0de95f05bdb7148/safe_cast-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "530dc401e4487e05d241e2906c687393", "sha256": "5660a8a3d7e83f4d29fe47532fe8f10a955e3a3995d58e3f49d0bbeee9fcfbec" }, "downloads": -1, "filename": "safe-cast-0.3.1.tar.gz", "has_sig": false, "md5_digest": "530dc401e4487e05d241e2906c687393", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6154, "upload_time": "2018-02-16T00:27:25", "url": "https://files.pythonhosted.org/packages/96/d2/46e3d962c788e49a8bc77eab383b403a5dcfb30cbf9c567ebeb92187fdca/safe-cast-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "98940b7e529e6b14029ae0f6b3160e2a", "sha256": "926e4b9f1c2c4383e3d18ff526312d5a21f71c44c418be4859d462a8d06ba899" }, "downloads": -1, "filename": "safe_cast-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "98940b7e529e6b14029ae0f6b3160e2a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7140, "upload_time": "2018-02-18T17:38:40", "url": "https://files.pythonhosted.org/packages/dc/86/b0bc0ab177c325128a2b8719e02820103f7aae8be18ce40a80352f63f98d/safe_cast-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dacc3ff6b5854f7706d27301853a3e8", "sha256": "b41a5cdb67d8ab52c36d0b7fe5216204157d282e191969729fea2366a24a563e" }, "downloads": -1, "filename": "safe-cast-0.3.2.tar.gz", "has_sig": false, "md5_digest": "6dacc3ff6b5854f7706d27301853a3e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6218, "upload_time": "2018-02-18T17:38:37", "url": "https://files.pythonhosted.org/packages/f0/9c/49b87a76d7af78107b40100d5871e8ad7ad06a78bf484ffaff172a082f6a/safe-cast-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "9f4f54f1dc315957b06ad490b295c6f2", "sha256": "b11a1c4f8572dd3970c91165a6cbe337f9c77ccdef3ce9b74e1fc586aec3a8a4" }, "downloads": -1, "filename": "safe_cast-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9f4f54f1dc315957b06ad490b295c6f2", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4343, "upload_time": "2018-04-20T23:43:06", "url": "https://files.pythonhosted.org/packages/f0/08/aff456b9f000216b83625d4fa8f4aad0e72dcbd4b6e63208a9ac07da4439/safe_cast-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79547d19e9c00e205ba775c318b69832", "sha256": "3cc87c4075e94dcfcb35726371c87b4181d33843d67aa509d1ee9fd36958fefc" }, "downloads": -1, "filename": "safe-cast-0.3.3.tar.gz", "has_sig": false, "md5_digest": "79547d19e9c00e205ba775c318b69832", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6213, "upload_time": "2018-04-20T23:43:04", "url": "https://files.pythonhosted.org/packages/8d/19/7ec7a2b47cf876f4eb3b1c6e630924449f862870104c6e923e1c8631dd36/safe-cast-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "fe72c91b17a5a191d6c629fb1afbb8f2", "sha256": "8d5fb7860b39472b7969978a283241dd2168b470af7e9d913d46f0a55e3e4be0" }, "downloads": -1, "filename": "safe_cast-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fe72c91b17a5a191d6c629fb1afbb8f2", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4355, "upload_time": "2018-04-20T23:46:20", "url": "https://files.pythonhosted.org/packages/e1/c6/646da9c460924804418f08b9385b7c17aa9111e3061bf1900f8d4f2fd6f6/safe_cast-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1e8edf05111271c1fee4ca193595a7b", "sha256": "85138fe595f4502a90e8c1b4e7314e370752ed696a22f9a100f3503302f88884" }, "downloads": -1, "filename": "safe-cast-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a1e8edf05111271c1fee4ca193595a7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6242, "upload_time": "2018-04-20T23:46:19", "url": "https://files.pythonhosted.org/packages/b7/da/fdcb123e8558d07560d23c3626eade79dadf2250cec182a3525ebccdca81/safe-cast-0.3.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe72c91b17a5a191d6c629fb1afbb8f2", "sha256": "8d5fb7860b39472b7969978a283241dd2168b470af7e9d913d46f0a55e3e4be0" }, "downloads": -1, "filename": "safe_cast-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fe72c91b17a5a191d6c629fb1afbb8f2", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4355, "upload_time": "2018-04-20T23:46:20", "url": "https://files.pythonhosted.org/packages/e1/c6/646da9c460924804418f08b9385b7c17aa9111e3061bf1900f8d4f2fd6f6/safe_cast-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1e8edf05111271c1fee4ca193595a7b", "sha256": "85138fe595f4502a90e8c1b4e7314e370752ed696a22f9a100f3503302f88884" }, "downloads": -1, "filename": "safe-cast-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a1e8edf05111271c1fee4ca193595a7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6242, "upload_time": "2018-04-20T23:46:19", "url": "https://files.pythonhosted.org/packages/b7/da/fdcb123e8558d07560d23c3626eade79dadf2250cec182a3525ebccdca81/safe-cast-0.3.4.tar.gz" } ] }